Revamped code for VPD parser

The commit removes all the pre-existing code from the branch
and pushes the revamped code.

Major modification includes:
- Movement from multi exe to single daemon model.
- Multithreaded approach to parse FRU VPD.
- Better error handling.
- Refactored code for performance optimization.

Note: This code supports all the existing functionalities as it is.

Change-Id: I1ddce1f0725ac59020b72709689a1013643bda8b
Signed-off-by: Sunny Srivastava <sunnsr25@in.ibm.com>
diff --git a/README.md b/README.md
index 134ec1c..f29880e 100644
--- a/README.md
+++ b/README.md
@@ -28,7 +28,7 @@
 
 - It parses all the records and keywords from the VPD, including large keywords
   (Keywords that begin with a `#` and are > 255 bytes in length).
-- It relies on a runtime JSON configuration (see examples/inventory.json) tocf
+- It relies on a runtime JSON configuration (see examples/inventory.json) to
   determine the D-Bus object path(s) that hold interfaces and properties
   representing the VPD for a given VPD file path.
 
@@ -38,10 +38,10 @@
 
 ## TODOs and Future Improvements
 
-1. The long-term goal is to completely do away with the build time YAML driven
-   configurations and instead reconcile the OpenPower VPD parser and the IBM VPD
-   parser applications into a single runtime JSON driven application.
-2. Add details to the README on how to configure and build the application.
-3. More JSON documentation.
-4. Support for more IBM VPD formats.
-5. VPD Write and tool documentation.
+1.  The long-term goal is to completely do away with the build time YAML driven
+    configurations and instead reconcile the OpenPower VPD parser and the IBM
+    VPD parser applications into a single runtime JSON driven application.
+2.  Add details to the README on how to configure and build the application.
+3.  More JSON documentation.
+4.  Support for more IBM VPD formats.
+5.  VPD Write and tool documentation.
diff --git a/app.cpp b/app.cpp
deleted file mode 100644
index 63290de..0000000
--- a/app.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-#include "args.hpp"
-#include "defines.hpp"
-#include "ipz_parser.hpp"
-#include "write.hpp"
-
-#include <exception>
-#include <fstream>
-#include <iostream>
-#include <iterator>
-#include <string>
-#include <variant>
-#include <vector>
-
-int main(int argc, char** argv)
-{
-    int rc = 0;
-
-    try
-    {
-        using namespace openpower::vpd;
-        using namespace openpower::vpd::ipz::parser;
-
-        args::Args arguments = args::parse(argc, argv);
-
-        bool haveVpd = arguments.count("vpd");
-        bool doDump = arguments.count("dump");
-        bool doFru = arguments.count("fru") && arguments.count("object");
-
-        if (!haveVpd)
-        {
-            std::cerr << "VPD file required (--vpd=<filename>)\n";
-            return -1;
-        }
-
-        if (!doDump && !doFru)
-        {
-            std::cerr << "No task to perform\n\n";
-            std::cerr << "  Update FRU: --fru <type> --object <path>\n";
-            std::cerr << "              --fru <t1>,<t2> --object <p1>,<p2>\n\n";
-            std::cerr << "  Dump VPD: --dump\n\n";
-            return -1;
-        }
-
-        // Read binary VPD file
-        auto file = arguments.at("vpd")[0];
-        std::ifstream vpdFile(file, std::ios::binary);
-        Binary vpd((std::istreambuf_iterator<char>(vpdFile)),
-                   std::istreambuf_iterator<char>());
-
-        // Parse VPD
-        uint32_t vpdStartOffset = 0;
-        IpzVpdParser ipzParser(std::move(vpd), std::string{}, file,
-                               vpdStartOffset);
-        auto vpdStore = std::move(std::get<Store>(ipzParser.parse()));
-
-        if (doDump)
-        {
-            vpdStore.dump();
-        }
-
-        // Set FRU based on FRU type and object path
-        if (doFru)
-        {
-            using argList = std::vector<std::string>;
-            argList frus = std::move(arguments.at("fru"));
-            argList objects = std::move(arguments.at("object"));
-
-            if (frus.size() != objects.size())
-            {
-                std::cerr << "Unequal number of FRU types and object paths "
-                             "specified\n";
-                rc = -1;
-            }
-            else
-            {
-                // Write VPD to FRU inventory
-                for (std::size_t index = 0; index < frus.size(); ++index)
-                {
-                    inventory::write(frus[index], vpdStore, objects[index]);
-                }
-            }
-        }
-    }
-    catch (const std::exception& e)
-    {
-        std::cerr << e.what() << "\n";
-    }
-
-    return rc;
-}
diff --git a/args.cpp b/args.cpp
deleted file mode 100644
index e210b42..0000000
--- a/args.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-#include "args.hpp"
-
-#include <getopt.h>
-
-#include <iostream>
-#include <sstream>
-#include <string>
-#include <utility>
-#include <vector>
-
-namespace openpower
-{
-namespace vpd
-{
-namespace args
-{
-
-static constexpr auto shortForm = "v:f:o:dh";
-static const option longForm[] = {
-    {"vpd", required_argument, nullptr, 'v'},
-    {"fru", required_argument, nullptr, 'f'},
-    {"object", required_argument, nullptr, 'o'},
-    {"dump", no_argument, nullptr, 'd'},
-    {"help", no_argument, nullptr, 'h'},
-    {0, 0, 0, 0},
-};
-
-void usage(char** argv)
-{
-    std::cerr << "\nUsage: " << argv[0] << " args\n";
-    std::cerr << "args:\n";
-    std::cerr << "--vpd=<vpd file> pathname of file containing vpd,";
-    std::cerr << " for eg an eeprom file\n";
-    std::cerr << "--dump output contents of parsed VPD\n";
-    std::cerr << "--fru=<FRU type>, supported types:\n";
-    std::cerr << "\t"
-              << "bmc\n";
-    std::cerr << "\t"
-              << "ethernet\n";
-    std::cerr << "Specify multiple FRU types via comma-separated list\n";
-    std::cerr << "--object=<FRU object path> for eg,";
-    std::cerr << " chassis/bmc0/planar\n";
-    std::cerr << "Specify multiple object paths via comma-separated list, "
-                 "ordered as the FRU types\n";
-    std::cerr << "--help display usage\n";
-}
-
-Args parse(int argc, char** argv)
-{
-    Args args;
-    int option = 0;
-    if (1 == argc)
-    {
-        usage(argv);
-    }
-    while (-1 !=
-           (option = getopt_long(argc, argv, shortForm, longForm, nullptr)))
-    {
-        if (('h' == option) || ('?' == option))
-        {
-            usage(argv);
-        }
-        else
-        {
-            auto which = &longForm[0];
-            // Figure out which option
-            while ((which->val != option) && (which->val != 0))
-            {
-                ++which;
-            }
-            // If option needs an argument, note the argument value
-            if ((no_argument != which->has_arg) && optarg)
-            {
-                using argList = std::vector<std::string>;
-                argList values;
-                // There could be a comma-separated list
-                std::string opts(optarg);
-                std::istringstream stream(std::move(opts));
-                std::string input{};
-                while (std::getline(stream, input, ','))
-                {
-                    values.push_back(std::move(input));
-                }
-                args.emplace(which->name, std::move(values));
-            }
-            else
-            {
-                // Add options that do not have arguments to the arglist
-                args.emplace(which->name, std::vector<std::string>{});
-            }
-        }
-    }
-
-    return args;
-}
-
-} // namespace args
-} // namespace vpd
-} // namespace openpower
diff --git a/args.hpp b/args.hpp
deleted file mode 100644
index 02afc67..0000000
--- a/args.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-#pragma once
-
-#include <string>
-#include <unordered_map>
-#include <vector>
-
-namespace openpower
-{
-namespace vpd
-{
-namespace args
-{
-
-using Args = std::unordered_map<std::string, std::vector<std::string>>;
-
-/** @brief Command-line argument parser for openpower-read-vpd
- *
- *  @param[in] argc - argument count
- *  @param[in] argv - argument array
- *
- *  @returns map of argument:value
- */
-Args parse(int argc, char** argv);
-
-/** @brief Display usage of openpower-vpd-read
- *
- *  @param[in] argv - argument array
- */
-void usage(char** argv);
-
-} // namespace args
-} // namespace vpd
-} // namespace openpower
diff --git a/common_utility.cpp b/common_utility.cpp
deleted file mode 100644
index 0497d0f..0000000
--- a/common_utility.cpp
+++ /dev/null
@@ -1,76 +0,0 @@
-#include "common_utility.hpp"
-
-#include "const.hpp"
-
-#include <phosphor-logging/log.hpp>
-
-#include <iostream>
-
-namespace openpower
-{
-namespace vpd
-{
-namespace common
-{
-namespace utility
-{
-using namespace constants;
-using namespace inventory;
-using namespace phosphor::logging;
-
-std::string getService(sdbusplus::bus_t& bus, const std::string& path,
-                       const std::string& interface)
-{
-    auto mapper = bus.new_method_call(mapperDestination, mapperObjectPath,
-                                      mapperInterface, "GetObject");
-    mapper.append(path, std::vector<std::string>({interface}));
-
-    std::map<std::string, std::vector<std::string>> response;
-    try
-    {
-        auto reply = bus.call(mapper);
-        reply.read(response);
-    }
-    catch (const sdbusplus::exception_t& e)
-    {
-        log<level::ERR>("D-Bus call exception",
-                        entry("OBJPATH=%s", mapperObjectPath),
-                        entry("INTERFACE=%s", mapperInterface),
-                        entry("EXCEPTION=%s", e.what()));
-
-        throw std::runtime_error("Service name is not found");
-    }
-
-    if (response.empty())
-    {
-        throw std::runtime_error("Service name response is empty");
-    }
-
-    return response.begin()->first;
-}
-
-void callPIM(ObjectMap&& objects)
-{
-    try
-    {
-        auto bus = sdbusplus::bus::new_default();
-        auto service = getService(bus, pimPath, pimIntf);
-        auto pimMsg =
-            bus.new_method_call(service.c_str(), pimPath, pimIntf, "Notify");
-        pimMsg.append(std::move(objects));
-        auto result = bus.call(pimMsg);
-        if (result.is_method_error())
-        {
-            std::cerr << "PIM Notify() failed\n";
-        }
-    }
-    catch (const std::runtime_error& e)
-    {
-        log<level::ERR>(e.what());
-    }
-}
-
-} // namespace utility
-} // namespace common
-} // namespace vpd
-} // namespace openpower
diff --git a/common_utility.hpp b/common_utility.hpp
deleted file mode 100644
index 5a900b8..0000000
--- a/common_utility.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#pragma once
-#include "types.hpp"
-
-namespace openpower
-{
-namespace vpd
-{
-namespace common
-{
-namespace utility
-{
-
-/** @brief Api to Get d-bus service for given interface
- *  @param[in] bus - Bus object
- *  @param[in] path - object path of the service
- *  @param[in] interface - interface under the object path
- *  @return service name
- */
-std::string getService(sdbusplus::bus_t& bus, const std::string& path,
-                       const std::string& interface);
-
-/** @brief Call inventory-manager to add objects
- *
- *  @param [in] objects - Map of inventory object paths
- */
-void callPIM(inventory::ObjectMap&& objects);
-
-} // namespace utility
-} // namespace common
-} // namespace vpd
-} // namespace openpower
diff --git a/config/ibm/50001001.json b/config/ibm/50001001.json
deleted file mode 100644
index 2d11a2a..0000000
--- a/config/ibm/50001001.json
+++ /dev/null
@@ -1,4463 +0,0 @@
-{
-    "commonInterfaces": {
-        "xyz.openbmc_project.Inventory.Decorator.Asset": {
-            "PartNumber": {
-                "recordName": "VINI",
-                "keywordName": "PN"
-            },
-            "SerialNumber": {
-                "recordName": "VINI",
-                "keywordName": "SN"
-            },
-            "SparePartNumber": {
-                "recordName": "VINI",
-                "keywordName": "FN"
-            },
-            "Model": {
-                "recordName": "VINI",
-                "keywordName": "CC"
-            },
-            "BuildDate": {
-                "recordName": "VR10",
-                "keywordName": "DC",
-                "encoding": "DATE"
-            }
-        }
-    },
-    "frus": {
-        "/sys/bus/i2c/drivers/at24/8-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard",
-                "isSystemVpd": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Board.Motherboard": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System backplane"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Oscillator Reference Clock"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system",
-                "inherit": false,
-                "isSystemVpd": true,
-                "copyRecords": ["VSYS"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.System": null,
-                    "xyz.openbmc_project.Inventory.Decorator.Asset": {
-                        "SerialNumber": {
-                            "recordName": "VSYS",
-                            "keywordName": "SE"
-                        },
-                        "Model": {
-                            "recordName": "VSYS",
-                            "keywordName": "TM"
-                        },
-                        "SubModel": {
-                            "recordName": "VSYS",
-                            "keywordName": "BR"
-                        }
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Umts"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis",
-                "isSystemVpd": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Chassis": {
-                        "Type": "xyz.openbmc_project.Inventory.Item.Chassis.ChassisType.RackMount"
-                    },
-                    "xyz.openbmc_project.Inventory.Item.Global": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Chassis"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C2"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C3"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C4"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C6"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C7"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C8"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C9"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C10"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C11"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.OEM"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T18"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 3.0 port (front)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot12/pcie_card12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T18"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 12
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 3.0 port (front)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/powersupply0",
-                "inherit": false,
-                "embedded": false,
-                "synthesized": true,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-E0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/powersupply1",
-                "inherit": false,
-                "embedded": false,
-                "synthesized": true,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-E1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/fan0",
-                "inherit": false,
-                "embedded": false,
-                "synthesized": true,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-A0"
-                    },
-                    "com.ibm.ipzvpd.VINI": {
-                        "FN": [48, 50, 89, 75, 50, 51, 55],
-                        "CC": [55, 66, 53, 71],
-                        "PN": [48, 50, 89, 75, 50, 48, 48],
-                        "DR": [70, 97, 110],
-                        "SN": [89, 83, 49, 48, 74, 80, 49, 50, 86, 48, 84, 89],
-                        "RT": [86, 73, 78, 73]
-                    },
-                    "com.ibm.ipzvpd.DINF": {
-                        "RI": [0, 5, 33, 0],
-                        "RT": [68, 73, 78, 70]
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Asset": {
-                        "Model": "7B5G",
-                        "Manufacturer": "Delta",
-                        "PartNumber": "02YK200",
-                        "SparePartNumber": "02YK237",
-                        "SerialNumber": "YS10JP12V0TY"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/fan1",
-                "inherit": false,
-                "embedded": false,
-                "synthesized": true,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-A1"
-                    },
-                    "com.ibm.ipzvpd.VINI": {
-                        "FN": [48, 50, 89, 75, 50, 51, 55],
-                        "CC": [55, 66, 53, 71],
-                        "PN": [48, 50, 89, 75, 50, 48, 48],
-                        "DR": [70, 97, 110],
-                        "SN": [89, 83, 49, 48, 74, 80, 49, 50, 86, 48, 84, 89],
-                        "RT": [86, 73, 78, 73]
-                    },
-                    "com.ibm.ipzvpd.DINF": {
-                        "RI": [0, 5, 33, 1],
-                        "RT": [68, 73, 78, 70]
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Asset": {
-                        "Model": "7B5G",
-                        "Manufacturer": "Delta",
-                        "PartNumber": "02YK200",
-                        "SparePartNumber": "02YK237",
-                        "SerialNumber": "YS10JP12V0TY"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/fan2",
-                "inherit": false,
-                "embedded": false,
-                "synthesized": true,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-A2"
-                    },
-                    "com.ibm.ipzvpd.VINI": {
-                        "FN": [48, 50, 89, 75, 50, 51, 55],
-                        "CC": [55, 66, 53, 71],
-                        "PN": [48, 50, 89, 75, 50, 48, 48],
-                        "DR": [70, 97, 110],
-                        "SN": [89, 83, 49, 48, 74, 80, 49, 50, 86, 48, 84, 89],
-                        "RT": [86, 73, 78, 73]
-                    },
-                    "com.ibm.ipzvpd.DINF": {
-                        "RI": [0, 5, 33, 2],
-                        "RT": [68, 73, 78, 70]
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Asset": {
-                        "Model": "7B5G",
-                        "Manufacturer": "Delta",
-                        "PartNumber": "02YK200",
-                        "SparePartNumber": "02YK237",
-                        "SerialNumber": "YS10JP12V0TY"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/fan3",
-                "inherit": false,
-                "embedded": false,
-                "synthesized": true,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-A3"
-                    },
-                    "com.ibm.ipzvpd.VINI": {
-                        "FN": [48, 50, 89, 75, 50, 51, 55],
-                        "CC": [55, 66, 53, 71],
-                        "PN": [48, 50, 89, 75, 50, 48, 48],
-                        "DR": [70, 97, 110],
-                        "SN": [89, 83, 49, 48, 74, 80, 49, 50, 86, 48, 84, 89],
-                        "RT": [86, 73, 78, 73]
-                    },
-                    "com.ibm.ipzvpd.DINF": {
-                        "RI": [0, 5, 33, 3],
-                        "RT": [68, 73, 78, 70]
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Asset": {
-                        "Model": "7B5G",
-                        "Manufacturer": "Delta",
-                        "PartNumber": "02YK200",
-                        "SparePartNumber": "02YK237",
-                        "SerialNumber": "YS10JP12V0TY"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/fan4",
-                "inherit": false,
-                "embedded": false,
-                "synthesized": true,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-A4"
-                    },
-                    "com.ibm.ipzvpd.VINI": {
-                        "FN": [48, 50, 89, 75, 50, 51, 55],
-                        "CC": [55, 66, 53, 71],
-                        "PN": [48, 50, 89, 75, 50, 48, 48],
-                        "DR": [70, 97, 110],
-                        "SN": [89, 83, 49, 48, 74, 80, 49, 50, 86, 48, 84, 89],
-                        "RT": [86, 73, 78, 73]
-                    },
-                    "com.ibm.ipzvpd.DINF": {
-                        "RI": [0, 5, 33, 4],
-                        "RT": [68, 73, 78, 70]
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Asset": {
-                        "Model": "7B5G",
-                        "Manufacturer": "Delta",
-                        "PartNumber": "02YK200",
-                        "SparePartNumber": "02YK237",
-                        "SerialNumber": "YS10JP12V0TY"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/fan5",
-                "inherit": false,
-                "embedded": false,
-                "synthesized": true,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-A5"
-                    },
-                    "com.ibm.ipzvpd.VINI": {
-                        "FN": [48, 50, 89, 75, 50, 51, 55],
-                        "CC": [55, 66, 53, 71],
-                        "PN": [48, 50, 89, 75, 50, 48, 48],
-                        "DR": [70, 97, 110],
-                        "SN": [89, 83, 49, 48, 74, 80, 49, 50, 86, 48, 84, 89],
-                        "RT": [86, 73, 78, 73]
-                    },
-                    "com.ibm.ipzvpd.DINF": {
-                        "RI": [0, 5, 33, 5],
-                        "RT": [68, 73, 78, 70]
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Asset": {
-                        "Model": "7B5G",
-                        "Manufacturer": "Delta",
-                        "PartNumber": "02YK200",
-                        "SparePartNumber": "02YK237",
-                        "SerialNumber": "YS10JP12V0TY"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/tod_battery",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Battery": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-E0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Time-of-day battery"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Connector for OpenCAPI Port DCM-0 P0 OP3B"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Connector for OpenCAPI Port DCM-0 P0 OP3A"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T2"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Connector for OpenCAPI Port DCM-0 P1 OP0B"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T3"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Connector for OpenCAPI Port DCM-0 P1 OP0A"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T4"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Power signal cable port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T5"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Connector for OpenCAPI Port DCM-1 P0 OP3A"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T6"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Connector for OpenCAPI Port DCM-1 P1 OP0B"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T7"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 3.0 port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T8"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Drive backplane signal cable port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T9"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Drive backplane signal cable port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T11"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Control panel cable port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T12"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Fan signal cable port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector13",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T13"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Control panel display cable port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector14",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T14"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Drive backplane power cable port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector15",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T15"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Drive backplane power cable port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector17",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T17"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Fan signal cable port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector18",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T18"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 3.0 port (front)"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/8-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Bmc": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "eBMC card"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/ethernet0",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Ethernet": null,
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item.NetworkInterface": {
-                        "MACAddress": {
-                            "recordName": "VCFG",
-                            "keywordName": "Z0",
-                            "encoding": "MAC"
-                        }
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "HMC port 0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/ethernet1",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Ethernet": null,
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item.NetworkInterface": {
-                        "MACAddress": {
-                            "recordName": "VCFG",
-                            "keywordName": "Z1",
-                            "encoding": "MAC"
-                        }
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "HMC port 1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/usb0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5-T2"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 3.0 port (rear)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/displayport0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5-T3"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Display Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/usb1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5-T4"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 2.0 port (rear)"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/0-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/tpm_wilson",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Tpm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C22"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Trusted platform module card"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/7-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/base_op_panel_blyth",
-                "essentialFru": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Panel": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-D0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Control panel"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/7-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/lcd_op_panel_hill",
-                "devAddress": "7-0051",
-                "driverType": "at24",
-                "busType": "i2c",
-                "presence": {
-                    "pollingRequired": true,
-                    "pin": "RUSSEL_OPPANEL_PRESENCE_N",
-                    "value": 0,
-                    "gpioI2CAddress": "0-0020"
-                },
-                "preAction": {
-                    "pin": "RUSSEL_FW_I2C_ENABLE_N",
-                    "value": 0,
-                    "gpioI2CAddress": "0-0020"
-                },
-                "postActionFail": {
-                    "pin": "RUSSEL_FW_I2C_ENABLE_N",
-                    "value": 1,
-                    "gpioI2CAddress": "0-0020"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Panel": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-D1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Control panel display"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/9-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vdd_vrm0",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C14"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Voltage regulator module for system processor module 0"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/10-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vdd_vrm1",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C23"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Voltage regulator module for system processor module 1"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi12.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0",
-                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi13.0/eeprom",
-                "cpuType": "primary",
-                "powerOffOnly": true,
-                "offset": 196608,
-                "size": 65504,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C15"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System processor module 0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Quad"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "High speed SMP/OpenCAPI Link"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller Channel"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor To Memory Buffer Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Nest Memory Management Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Accelerator"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCI Express controllers"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe host bridge (PHB)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit13",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OBUS End Point"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit14",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Cache-Only Core"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi22.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1",
-                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi23.0/eeprom",
-                "powerOffOnly": true,
-                "offset": 196608,
-                "size": 65504,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C15"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System processor module 0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Quad"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "High speed SMP/OpenCAPI Link"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller Channel"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor To Memory Buffer Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Nest Memory Management Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Accelerator"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCI Express controllers"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe host bridge (PHB)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit13",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OBUS End Point"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit14",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Cache-Only Core"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi32.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0",
-                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi33.0/eeprom",
-                "powerOffOnly": true,
-                "offset": 196608,
-                "size": 65504,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C24"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System processor module 1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Quad"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "High speed SMP/OpenCAPI Link"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller Channel"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor To Memory Buffer Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Nest Memory Management Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Accelerator"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCI Express controllers"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe host bridge (PHB)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit13",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OBUS End Point"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit14",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Cache-Only Core"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi42.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1",
-                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi43.0/eeprom",
-                "powerOffOnly": true,
-                "offset": 196608,
-                "size": 65504,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C24"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System processor module 1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Quad"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "High speed SMP/OpenCAPI Link"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller Channel"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor To Memory Buffer Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Nest Memory Management Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Accelerator"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCI Express controllers"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe host bridge (PHB)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit13",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OBUS End Point"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit14",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Cache-Only Core"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/4-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot0/pcie_card0",
-                "devAddress": "4-0050",
-                "pcaChipAddress": "4-0060",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "preAction": {
-                    "pin": "SLOT0_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
-                },
-                "postActionFail": {
-                    "pin": "SLOT0_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 4,
-                        "Address": 80
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 0
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "ccin": ["2CE2", "58FF", "6B92", "6B99"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "ccin": ["2CE2", "58FF", "6B92", "6B99"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/5-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3/pcie_card3",
-                "devAddress": "5-0050",
-                "pcaChipAddress": "5-0060",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "preAction": {
-                    "pin": "SLOT3_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
-                },
-                "postActionFail": {
-                    "pin": "SLOT3_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C3"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 5,
-                        "Address": 80
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 3
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "ccin": ["2CE2", "58FF", "6B92", "6B99"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C3-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "ccin": ["2CE2", "58FF", "6B92", "6B99"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C3-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/5-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4/pcie_card4",
-                "devAddress": "5-0051",
-                "pcaChipAddress": "5-0061",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "preAction": {
-                    "pin": "SLOT4_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
-                },
-                "postActionFail": {
-                    "pin": "SLOT4_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C4"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 5,
-                        "Address": 81
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 4
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "ccin": ["2CE2", "58FF", "6B92", "6B99"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C4-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "ccin": ["2CE2", "58FF", "6B92", "6B99"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C4-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/11-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10",
-                "devAddress": "11-0050",
-                "pcaChipAddress": "11-0060",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "preAction": {
-                    "pin": "SLOT10_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
-                },
-                "postActionFail": {
-                    "pin": "SLOT10_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C10"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 11,
-                        "Address": 80
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 10
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "ccin": ["2CE2", "58FF", "6B92", "6B99"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C10-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "ccin": ["2CE2", "58FF", "6B92", "6B99"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C10-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector0",
-                "inherit": false,
-                "noprime": true,
-                "ccin": ["6B87"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C10-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe Internal Connector"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector1",
-                "inherit": false,
-                "noprime": true,
-                "ccin": ["6B87"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C10-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe Internal Connector"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector2",
-                "inherit": false,
-                "noprime": true,
-                "ccin": ["6B87"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C10-T2"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe Internal Connector"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector3",
-                "inherit": false,
-                "noprime": true,
-                "ccin": ["6B87"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C10-T3"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe Internal Connector"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/4-0052/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot2/pcie_card2",
-                "devAddress": "4-0052",
-                "pcaChipAddress": "4-0062",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "preAction": {
-                    "pin": "SLOT2_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
-                },
-                "postActionFail": {
-                    "pin": "SLOT2_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C2"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 4,
-                        "Address": 82
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 2
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe5 x8 adapter"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/6-0053/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot6/pcie_card6",
-                "devAddress": "6-0053",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "preAction": {
-                    "pin": "SLOT6_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
-                },
-                "postActionFail": {
-                    "pin": "SLOT6_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C6"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI adapter"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/6-0052/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot7/pcie_card7",
-                "devAddress": "6-0052",
-                "pcaChipAddress": "6-0062",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "preAction": {
-                    "pin": "SLOT7_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
-                },
-                "postActionFail": {
-                    "pin": "SLOT7_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C7"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 6,
-                        "Address": 82
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 7
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe5 x8 adapter"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/6-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot9/pcie_card9",
-                "devAddress": "6-0050",
-                "pcaChipAddress": "6-0060",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "preAction": {
-                    "pin": "SLOT9_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
-                },
-                "postActionFail": {
-                    "pin": "SLOT9_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C9"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 6,
-                        "Address": 80
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 9
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe5 x8 adapter"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/11-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11",
-                "devAddress": "11-0051",
-                "pcaChipAddress": "11-0061",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "preAction": {
-                    "pin": "SLOT11_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
-                },
-                "postActionFail": {
-                    "pin": "SLOT11_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C11"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 11,
-                        "Address": 81
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 11
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector0",
-                "inherit": false,
-                "noprime": true,
-                "ccin": ["6B87"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C11-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe Internal Connector"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector1",
-                "inherit": false,
-                "noprime": true,
-                "ccin": ["6B87"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C11-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe Internal Connector"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector2",
-                "inherit": false,
-                "noprime": true,
-                "ccin": ["6B87"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C11-T2"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe Internal Connector"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector3",
-                "inherit": false,
-                "noprime": true,
-                "ccin": ["6B87"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C11-T3"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe Internal Connector"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/4-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot1/pcie_card1",
-                "devAddress": "4-0051",
-                "pcaChipAddress": "4-0061",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "preAction": {
-                    "pin": "SLOT1_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
-                },
-                "postActionFail": {
-                    "pin": "SLOT1_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C1"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 4,
-                        "Address": 81
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 1
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x8 adapter"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/6-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8",
-                "devAddress": "6-0051",
-                "pcaChipAddress": "6-0061",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "preAction": {
-                    "pin": "SLOT8_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
-                },
-                "postActionFail": {
-                    "pin": "SLOT8_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C8"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 6,
-                        "Address": 81
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 8
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector0",
-                "inherit": false,
-                "noprime": true,
-                "ccin": ["6B87"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C8-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe Internal Connector"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector1",
-                "inherit": false,
-                "noprime": true,
-                "ccin": ["6B87"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C8-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe Internal Connector"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector2",
-                "inherit": false,
-                "noprime": true,
-                "ccin": ["6B87"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C8-T2"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe Internal Connector"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector3",
-                "inherit": false,
-                "noprime": true,
-                "ccin": ["6B87"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C8-T3"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe Internal Connector"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/13-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.DiskBackplane": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Drive backplane 0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C2"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme2/dp0_drive2",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C2"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 1
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C3"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme3/dp0_drive3",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C3"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 2
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C4"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme4/dp0_drive4",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C4"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 3
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C5"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 3"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme5/dp0_drive5",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C5"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 4
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 3"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Drive cable port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-T2"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Drive cable port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-T4"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Drive backplane signal cable port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-T5"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Drive backplane power cable port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/cables/dp0_cable0",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cable": null,
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe Backplane Cable"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/cables/dp0_cable1",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cable": null,
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe Backplane Cable"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/14-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.DiskBackplane": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Drive backplane 1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2-C10"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 4"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme2/dp1_drive2",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2-C10"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 5
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 4"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2-C11"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 5"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme3/dp1_drive3",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2-C11"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 6
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 5"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2-C12"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 6"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme4/dp1_drive4",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2-C12"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 7
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 6"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2-C13"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 7"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme5/dp1_drive5",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2-C13"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 8
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 7"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Drive cable port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2-T2"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Drive cable port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2-T4"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Drive backplane signal cable port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2-T5"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Drive backplane power cable port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/cables/dp1_cable0",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cable": null,
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe Backplane Cable"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/cables/dp1_cable1",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cable": null,
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe Backplane Cable"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/111-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm0",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C12"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 0"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/110-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm1",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C13"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 1"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/214-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm10",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C16"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 2"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/210-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm9",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C17"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 3"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/202-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm8",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C18"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 4"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/311-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm16",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C19"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 5"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/310-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm17",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C20"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 6"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/312-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm18",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C21"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 7"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/402-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm24",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C25"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 8"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/410-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm25",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C26"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 9"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/112-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm2",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C27"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 10"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/115-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm4",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C28"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 11"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/100-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm5",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C29"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 12"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/101-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm7",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C30"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 13"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/114-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm6",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C31"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 14"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/113-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm3",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C32"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 15"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/216-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm15",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C33"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 16"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/203-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm14",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C34"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 17"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/217-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm11",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C35"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 18"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/211-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm13",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C36"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 19"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/215-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm12",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C37"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 20"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/315-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm20",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C38"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 21"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/300-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm21",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C39"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 22"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/313-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm19",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C40"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 23"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/314-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm22",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C41"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 24"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/301-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm23",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C42"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 25"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/417-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm27",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C43"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 26"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/403-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm30",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C44"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 27"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/416-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm31",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C45"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 28"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/411-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm29",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C46"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 29"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/415-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm28",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C47"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 30"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/414-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm26",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C48"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 31"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ]
-    }
-}
diff --git a/config/ibm/50003000.json b/config/ibm/50003000.json
deleted file mode 100644
index a8d71dd..0000000
--- a/config/ibm/50003000.json
+++ /dev/null
@@ -1,6702 +0,0 @@
-{
-    "commonInterfaces": {
-        "xyz.openbmc_project.Inventory.Decorator.Asset": {
-            "PartNumber": {
-                "recordName": "VINI",
-                "keywordName": "PN"
-            },
-            "SerialNumber": {
-                "recordName": "VINI",
-                "keywordName": "SN"
-            },
-            "SparePartNumber": {
-                "recordName": "VINI",
-                "keywordName": "FN"
-            },
-            "Model": {
-                "recordName": "VINI",
-                "keywordName": "CC"
-            },
-            "BuildDate": {
-                "recordName": "VR10",
-                "keywordName": "DC",
-                "encoding": "DATE"
-            }
-        }
-    },
-    "muxes": [
-        {
-            "i2bus": "4",
-            "deviceaddress": "0xE0",
-            "holdidlepath": "/sys/bus/i2c/drivers/pca954x/4-0070/hold_idle"
-        },
-        {
-            "i2bus": "5",
-            "deviceaddress": "0xE0",
-            "holdidlepath": "/sys/bus/i2c/drivers/pca954x/5-0070/hold_idle"
-        },
-        {
-            "i2bus": "6",
-            "deviceaddress": "0xE0",
-            "holdidlepath": "/sys/bus/i2c/drivers/pca954x/6-0070/hold_idle"
-        }
-    ],
-    "frus": {
-        "/sys/bus/i2c/drivers/at24/8-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard",
-                "isSystemVpd": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Board.Motherboard": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System backplane"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Oscillator Reference Clock"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system",
-                "inherit": false,
-                "isSystemVpd": true,
-                "copyRecords": ["VSYS"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.System": null,
-                    "xyz.openbmc_project.Inventory.Decorator.Asset": {
-                        "SerialNumber": {
-                            "recordName": "VSYS",
-                            "keywordName": "SE"
-                        },
-                        "Model": {
-                            "recordName": "VSYS",
-                            "keywordName": "TM"
-                        },
-                        "SubModel": {
-                            "recordName": "VSYS",
-                            "keywordName": "BR"
-                        }
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Umts"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis",
-                "isSystemVpd": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Chassis": {
-                        "Type": "xyz.openbmc_project.Inventory.Item.Chassis.ChassisType.RackMount"
-                    },
-                    "xyz.openbmc_project.Inventory.Item.Global": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Chassis"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C2"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C3"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C4"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C6"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C7"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C8"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C9"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C10"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C11"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.OEM"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 3.0 port 2 (front)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot12/pcie_card12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 12
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 3.0 port 2 (front)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/powersupply0",
-                "inherit": false,
-                "embedded": false,
-                "synthesized": true,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-E0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/powersupply1",
-                "inherit": false,
-                "embedded": false,
-                "synthesized": true,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-E1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/powersupply2",
-                "inherit": false,
-                "embedded": false,
-                "synthesized": true,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-E2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/powersupply3",
-                "inherit": false,
-                "embedded": false,
-                "synthesized": true,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-E3"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Open CAPI Conn 0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Open CAPI Conn 1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T2"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Open CAPI Conn 2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T3"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Open CAPI Conn 3"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T4"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Open CAPI Conn 4"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T5"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Open CAPI Conn 5"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/8-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/bmc",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Bmc": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "eBMC card assembly"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/bmc/ethernet0",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Item.Ethernet": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0-T2"
-                    },
-                    "xyz.openbmc_project.Inventory.Item.NetworkInterface": {
-                        "MACAddress": {
-                            "recordName": "VCFG",
-                            "keywordName": "Z0",
-                            "encoding": "MAC"
-                        }
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "HMC port 1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/bmc/ethernet1",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Item.Ethernet": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0-T3"
-                    },
-                    "xyz.openbmc_project.Inventory.Item.NetworkInterface": {
-                        "MACAddress": {
-                            "recordName": "VCFG",
-                            "keywordName": "Z1",
-                            "encoding": "MAC"
-                        }
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "HMC port 2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/bmc/usb2_conn0",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 3.0 port 1 (rear)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/bmc/usb2_conn1",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 3.0 port 2 (rear)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/bmc/usb3_conn0",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0-T4"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 2.0 port 1 (rear)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/bmc/usb3_conn1",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0-T5"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 2.0 port 2 (rear)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/bmc/tod_battery",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Battery": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0-E0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Time-of-day battery"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/9-0052/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm8",
-                "readOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C54"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Miscellaneous voltage regulator module for system processor module 3"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/9-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm9",
-                "readOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C55"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor voltage regulator module for system processor module 3"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/9-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm10",
-                "readOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C57"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor voltage regulator module for system processor module 3"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/9-0053/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm11",
-                "readOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C58"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Shared voltage regulator module"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/10-0052/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm0",
-                "readOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C12"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Miscellaneous voltage regulator module for system processor module 1"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/10-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm1",
-                "readOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C13"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor voltage regulator module for system processor module 1"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/10-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm2",
-                "readOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C15"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor voltage regulator module for system processor module 1"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/10-0053/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm3",
-                "readOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C16"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Shared voltage regulator module"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/11-0053/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm12",
-                "readOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C59"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "I/O and standby voltage regulator module"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/11-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm13",
-                "readOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C60"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor voltage regulator module for system processor module 0"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/11-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm14",
-                "readOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C62"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor voltage regulator module for system processor module 0"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/11-0052/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm15",
-                "readOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C63"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Miscellaneous voltage regulator module for system processor module 0"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/13-0053/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm4",
-                "readOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C17"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "I/O and standby voltage regulator module"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/13-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm5",
-                "readOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C18"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor voltage regulator module for system processor module 2"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/13-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm6",
-                "readOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C20"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor voltage regulator module for system processor module 2"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/13-0052/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm7",
-                "readOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C21"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Miscellaneous voltage regulator module for system processor module 2"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/0-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/tpm",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Tpm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C96"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Trusted platform module card"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi12.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0",
-                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi13.0/eeprom",
-                "offset": 196608,
-                "powerOffOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C61"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System processor module 0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Quad"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "High speed SMP/OpenCAPI Link"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller Channel"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor To Memory Buffer Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Nest Memory Management Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Accelerator"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCI Express controllers"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe host bridge (PHB)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit13",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OBUS End Point"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit14",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Cache-Only Core"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi22.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1",
-                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi23.0/eeprom",
-                "offset": 196608,
-                "powerOffOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C61"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System processor module 0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Quad"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "High speed SMP/OpenCAPI Link"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller Channel"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor To Memory Buffer Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Nest Memory Management Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Accelerator"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCI Express controllers"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe host bridge (PHB)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit13",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OBUS End Point"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit14",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Cache-Only Core"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi32.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0",
-                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi33.0/eeprom",
-                "cpuType": "primary",
-                "offset": 196608,
-                "powerOffOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C14"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System processor module 1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Quad"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "High speed SMP/OpenCAPI Link"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller Channel"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor To Memory Buffer Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Nest Memory Management Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Accelerator"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCI Express controllers"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe host bridge (PHB)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit13",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OBUS End Point"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit14",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Cache-Only Core"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi42.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1",
-                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi43.0/eeprom",
-                "offset": 196608,
-                "powerOffOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C14"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System processor module 1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Quad"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "High speed SMP/OpenCAPI Link"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller Channel"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor To Memory Buffer Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Nest Memory Management Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Accelerator"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCI Express controllers"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe host bridge (PHB)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit13",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OBUS End Point"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit14",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Cache-Only Core"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi52.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0",
-                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi53.0/eeprom",
-                "offset": 196608,
-                "powerOffOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C19"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System processor module 2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Quad"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "High speed SMP/OpenCAPI Link"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller Channel"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor To Memory Buffer Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Nest Memory Management Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Accelerator"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCI Express controllers"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe host bridge (PHB)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit13",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OBUS End Point"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit14",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Cache-Only Core"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi62.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1",
-                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi63.0/eeprom",
-                "offset": 196608,
-                "powerOffOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C19"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System processor module 2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Quad"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "High speed SMP/OpenCAPI Link"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller Channel"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor To Memory Buffer Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Nest Memory Management Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Accelerator"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCI Express controllers"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe host bridge (PHB)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit13",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OBUS End Point"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit14",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Cache-Only Core"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi72.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0",
-                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi73.0/eeprom",
-                "offset": 196608,
-                "powerOffOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C56"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System processor module 3"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Quad"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "High speed SMP/OpenCAPI Link"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller Channel"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor To Memory Buffer Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Nest Memory Management Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Accelerator"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCI Express controllers"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe host bridge (PHB)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit13",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OBUS End Point"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit14",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Cache-Only Core"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi82.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1",
-                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi83.0/eeprom",
-                "offset": 196608,
-                "powerOffOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C56"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System processor module 3"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Quad"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "High speed SMP/OpenCAPI Link"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller Channel"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor To Memory Buffer Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Nest Memory Management Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Accelerator"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCI Express controllers"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe host bridge (PHB)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit13",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OBUS End Point"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit14",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Cache-Only Core"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/27-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.DiskBackplane": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Drive backplane"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme0/drive0",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "27-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C0"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 1
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme1/drive1",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "27-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C1"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 2
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C2"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme2/drive2",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "27-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C2"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 3
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C3"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 3"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme3/drive3",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "27-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C3"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 4
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 3"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C4"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 4"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme4/drive4",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "27-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C4"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 5
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 4"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C5"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 5"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme5/drive5",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "27-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C5"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 6
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 5"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C6"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 6"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme6/drive6",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "27-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C6"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 7
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 6"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C7"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 7"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme7/drive7",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "27-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C7"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 8
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 7"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C8"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 8"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme8/drive8",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "27-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C8"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 9
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 8"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C9"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 9"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme9/drive9",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "27-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C9"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 10
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 9"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/dp_connector0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 3.0 port 1 (front)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/dp_connector1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 3.0 port 2 (front)"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/28-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/panel1",
-                "devAddress": "28-0051",
-                "driverType": "at24",
-                "busType": "i2c",
-                "concurrentlyMaintainable": true,
-                "essentialFru": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Panel": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-D1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Control panel display"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/29-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/panel0",
-                "devAddress": "29-0050",
-                "driverType": "at24",
-                "busType": "i2c",
-                "concurrentlyMaintainable": true,
-                "essentialFru": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Panel": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-D0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Control panel"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/31-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/fan0",
-                "devAddress": "31-0050",
-                "driverType": "at24",
-                "busType": "i2c",
-                "handlePresence": false,
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Fan": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-A0"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/32-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/fan1",
-                "devAddress": "32-0050",
-                "driverType": "at24",
-                "busType": "i2c",
-                "handlePresence": false,
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Fan": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-A1"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/33-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/fan2",
-                "devAddress": "33-0050",
-                "driverType": "at24",
-                "busType": "i2c",
-                "handlePresence": false,
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Fan": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-A2"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/34-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/fan3",
-                "devAddress": "34-0050",
-                "driverType": "at24",
-                "busType": "i2c",
-                "concurrentlyMaintainable": true,
-                "handlePresence": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Fan": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-A3"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/16-0052/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot1/pcie_card1",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "devAddress": "16-0052",
-                "pcaChipAddress": "16-0062",
-                "presence": {
-                    "pin": "expander-cable-card1",
-                    "value": 0,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card1",
-                    "value": 1,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card1",
-                    "value": 0,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C1"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 16,
-                        "Address": 82
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 1
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot1/pcie_card1/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C1-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot1/pcie_card1/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C1-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/17-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot2/pcie_card2",
-                "devAddress": "17-0050",
-                "pcaChipAddress": "17-0060",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "expander-cable-card2",
-                    "value": 0,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card2",
-                    "value": 1,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card2",
-                    "value": 0,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C2"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 17,
-                        "Address": 80
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 2
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot2/pcie_card2/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C2-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot2/pcie_card2/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C2-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/18-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3/pcie_card3",
-                "devAddress": "18-0051",
-                "pcaChipAddress": "18-0061",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "expander-cable-card3",
-                    "value": 0,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card3",
-                    "value": 1,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card3",
-                    "value": 0,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C3"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 18,
-                        "Address": 81
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 3
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C3-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C3-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/19-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4/pcie_card4",
-                "devAddress": "19-0050",
-                "pcaChipAddress": "19-0060",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "expander-cable-card4",
-                    "value": 0,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card4",
-                    "value": 1,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card4",
-                    "value": 0,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C4"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 19,
-                        "Address": 80
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 4
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C4-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C4-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/20-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot5/pcie_card5",
-                "devAddress": "20-0051",
-                "pcaChipAddress": "20-0061",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "expander-cable-card5",
-                    "value": 0,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card5",
-                    "value": 1,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card5",
-                    "value": 0,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 20,
-                        "Address": 81
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 5
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot5/pcie_card5/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot5/pcie_card5/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/21-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot6/pcie_card6",
-                "devAddress": "21-0051",
-                "pcaChipAddress": "21-0061",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "expander-cable-card6",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card6",
-                    "value": 1,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card6",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C6"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 21,
-                        "Address": 81
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 6
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x8 adapter"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/22-0053/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot7/pcie_card7",
-                "devAddress": "22-0053",
-                "pcaChipAddress": "22-0063",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "expander-cable-card7",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card7",
-                    "value": 1,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card7",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C7"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 22,
-                        "Address": 83
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 7
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot7/pcie_card7/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C7-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot7/pcie_card7/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C7-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/23-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8",
-                "devAddress": "23-0050",
-                "pcaChipAddress": "23-0060",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "expander-cable-card8",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card8",
-                    "value": 1,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card8",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C8"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 23,
-                        "Address": 80
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 8
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C8-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C8-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/24-0052/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot9/pcie_card9",
-                "devAddress": "24-0052",
-                "pcaChipAddress": "24-0062",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "expander-cable-card9",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card9",
-                    "value": 1,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card9",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C9"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 24,
-                        "Address": 82
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 9
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x8 adapter"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/25-0053/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10",
-                "devAddress": "25-0053",
-                "pcaChipAddress": "25-0063",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "expander-cable-card10",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card10",
-                    "value": 1,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card10",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C10"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 25,
-                        "Address": 83
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 10
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C10-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C10-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/26-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11",
-                "devAddress": "26-0051",
-                "pcaChipAddress": "26-0061",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "expander-cable-card11",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card11",
-                    "value": 1,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card11",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C11"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 26,
-                        "Address": 81
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 11
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C11-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C11-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/300-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm0",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C22"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 0"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/301-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm1",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C23"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 1"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/310-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm2",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C24"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 2"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/312-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm3",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C25"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 3"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/313-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm4",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C26"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 4"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/315-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm5",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C27"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 5"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/311-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm6",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C28"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 6"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/314-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm7",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C29"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 7"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/416-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm8",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C30"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 8"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/417-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm9",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C31"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 9"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/411-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm10",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C32"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 10"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/415-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm11",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C33"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 11"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/414-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm12",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C34"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 12"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/410-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm13",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C35"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 13"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/403-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm14",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C36"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 14"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/402-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm15",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C37"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 15"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/500-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm16",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C38"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 16"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/501-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm17",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C39"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 17"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/510-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm18",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C40"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 18"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/512-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm19",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C41"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 19"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/515-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm20",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C42"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 20"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/513-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm21",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C43"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 21"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/511-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm22",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C44"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 22"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/514-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm23",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C45"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 23"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/616-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm24",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C46"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 24"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/611-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm25",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C47"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 25"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/615-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm26",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C48"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 26"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/617-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm27",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C49"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 27"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/614-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm28",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C50"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 28"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/610-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm29",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C51"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 29"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/602-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm30",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C52"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 30"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/603-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm31",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C53"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 31"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/816-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm32",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C64"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 32"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm32/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm32/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm32/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm32/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/811-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm33",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C65"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 33"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm33/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm33/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm33/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm33/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/815-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm34",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C66"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 34"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm34/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm34/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm34/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm34/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/817-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm35",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C67"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 35"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm35/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm35/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm35/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm35/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/814-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm36",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C68"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 36"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm36/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm36/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm36/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm36/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/810-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm37",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C69"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 37"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm37/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm37/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm37/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm37/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/802-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm38",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C70"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 38"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm38/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm38/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm38/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm38/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/803-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm39",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C71"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Module 39"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm39/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm39/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm39/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm39/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/701-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm40",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C72"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 40"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm40/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm40/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm40/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm40/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/700-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm41",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C73"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 41"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm41/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm41/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm41/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm41/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/710-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm42",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C74"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 42"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm42/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm42/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm42/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm42/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/712-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm43",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C75"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 43"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm43/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm43/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm43/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm43/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/715-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm44",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C76"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 44"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm44/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm44/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm44/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm44/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/713-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm45",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C77"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 45"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm45/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm45/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm45/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm45/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/711-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm46",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C78"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 46"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm46/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm46/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm46/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm46/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/714-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm47",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C79"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 47"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm47/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm47/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm47/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm47/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/216-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm48",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C80"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 48"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm48/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm48/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm48/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm48/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/217-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm49",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C81"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 49"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm49/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm49/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm49/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm49/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/211-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm50",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C82"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 50"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm50/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm50/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm50/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm50/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/215-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm51",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C83"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 51"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm51/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm51/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm51/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm51/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/214-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm52",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C84"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 52"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm52/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm52/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm52/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm52/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/210-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm53",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C85"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 53"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm53/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm53/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm53/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm53/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/203-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm54",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C86"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 54"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm54/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm54/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm54/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm54/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/202-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm55",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C87"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 55"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm55/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm55/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm55/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm55/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/100-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm56",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C88"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 56"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm56/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm56/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm56/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm56/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/101-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm57",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C89"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 57"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm57/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm57/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm57/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm57/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/110-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm58",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C90"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 58"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm58/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm58/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm58/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm58/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/112-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm59",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C91"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 59"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm59/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm59/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm59/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm59/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/113-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm60",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C92"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 60"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm60/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm60/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm60/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm60/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/115-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm61",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C93"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 61"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm61/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm61/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm61/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm61/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/111-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm62",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C94"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 62"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm62/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm62/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm62/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm62/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/114-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm63",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C95"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 63"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm63/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm63/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm63/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm63/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ]
-    }
-}
diff --git a/config/ibm/50003000_v2.json b/config/ibm/50003000_v2.json
deleted file mode 100644
index f6101e5..0000000
--- a/config/ibm/50003000_v2.json
+++ /dev/null
@@ -1,6686 +0,0 @@
-{
-    "commonInterfaces": {
-        "xyz.openbmc_project.Inventory.Decorator.Asset": {
-            "PartNumber": {
-                "recordName": "VINI",
-                "keywordName": "PN"
-            },
-            "SerialNumber": {
-                "recordName": "VINI",
-                "keywordName": "SN"
-            },
-            "SparePartNumber": {
-                "recordName": "VINI",
-                "keywordName": "FN"
-            },
-            "Model": {
-                "recordName": "VINI",
-                "keywordName": "CC"
-            },
-            "BuildDate": {
-                "recordName": "VR10",
-                "keywordName": "DC",
-                "encoding": "DATE"
-            }
-        }
-    },
-    "muxes": [
-        {
-            "i2bus": "4",
-            "deviceaddress": "0xE0",
-            "holdidlepath": "/sys/bus/i2c/drivers/pca954x/4-0070/hold_idle"
-        },
-        {
-            "i2bus": "5",
-            "deviceaddress": "0xE0",
-            "holdidlepath": "/sys/bus/i2c/drivers/pca954x/5-0070/hold_idle"
-        },
-        {
-            "i2bus": "6",
-            "deviceaddress": "0xE0",
-            "holdidlepath": "/sys/bus/i2c/drivers/pca954x/6-0070/hold_idle"
-        }
-    ],
-    "frus": {
-        "/sys/bus/i2c/drivers/at24/8-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard",
-                "isSystemVpd": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Board.Motherboard": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System backplane"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Oscillator Reference Clock"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system",
-                "inherit": false,
-                "isSystemVpd": true,
-                "copyRecords": ["VSYS"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.System": null,
-                    "xyz.openbmc_project.Inventory.Decorator.Asset": {
-                        "SerialNumber": {
-                            "recordName": "VSYS",
-                            "keywordName": "SE"
-                        },
-                        "Model": {
-                            "recordName": "VSYS",
-                            "keywordName": "TM"
-                        },
-                        "SubModel": {
-                            "recordName": "VSYS",
-                            "keywordName": "BR"
-                        }
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Umts"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis",
-                "isSystemVpd": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Chassis": {
-                        "Type": "xyz.openbmc_project.Inventory.Item.Chassis.ChassisType.RackMount"
-                    },
-                    "xyz.openbmc_project.Inventory.Item.Global": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Chassis"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C2"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C3"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C4"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C6"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C7"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C8"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C9"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C10"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C11"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.OEM"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 3.0 port 2 (front)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot12/pcie_card12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 12
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 3.0 port 2 (front)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/powersupply0",
-                "inherit": false,
-                "embedded": false,
-                "synthesized": true,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-E0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/powersupply1",
-                "inherit": false,
-                "embedded": false,
-                "synthesized": true,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-E1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/powersupply2",
-                "inherit": false,
-                "embedded": false,
-                "synthesized": true,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-E2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/powersupply3",
-                "inherit": false,
-                "embedded": false,
-                "synthesized": true,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-E3"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Port Conn 0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Port Conn 1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T2"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Port Conn 2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T3"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Port Conn 3"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T4"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Port Conn 4"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T5"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Port Conn 5"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/8-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/bmc",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Bmc": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "eBMC card assembly"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/bmc/ethernet0",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Item.Ethernet": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0-T2"
-                    },
-                    "xyz.openbmc_project.Inventory.Item.NetworkInterface": {
-                        "MACAddress": {
-                            "recordName": "VCFG",
-                            "keywordName": "Z0",
-                            "encoding": "MAC"
-                        }
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "HMC port 1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/bmc/ethernet1",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Item.Ethernet": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0-T3"
-                    },
-                    "xyz.openbmc_project.Inventory.Item.NetworkInterface": {
-                        "MACAddress": {
-                            "recordName": "VCFG",
-                            "keywordName": "Z1",
-                            "encoding": "MAC"
-                        }
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "HMC port 2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/bmc/usb2_conn0",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 3.0 port 1 (rear)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/bmc/usb2_conn1",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 3.0 port 2 (rear)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/bmc/usb3_conn0",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0-T4"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 2.0 port 1 (rear)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/bmc/usb3_conn1",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0-T5"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 2.0 port 2 (rear)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/bmc/tod_battery",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Battery": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0-E0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Time-of-day battery"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/9-0052/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm8",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C54"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Miscellaneous voltage regulator module for system processor module 3"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/9-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm9",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C55"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor voltage regulator module for system processor module 3"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/9-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm10",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C57"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor voltage regulator module for system processor module 3"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/9-0053/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm11",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C58"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Shared voltage regulator module"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/10-0052/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm0",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C12"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Miscellaneous voltage regulator module for system processor module 1"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/10-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm1",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C13"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor voltage regulator module for system processor module 1"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/10-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm2",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C15"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor voltage regulator module for system processor module 1"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/10-0053/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm3",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C16"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Shared voltage regulator module"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/11-0053/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm12",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C59"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "I/O and standby voltage regulator module"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/11-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm13",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C60"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor voltage regulator module for system processor module 0"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/11-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm14",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C62"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor voltage regulator module for system processor module 0"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/11-0052/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm15",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C63"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Miscellaneous voltage regulator module for system processor module 0"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/13-0053/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm4",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C17"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "I/O and standby voltage regulator module"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/13-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm5",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C18"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor voltage regulator module for system processor module 2"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/13-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm6",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C20"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor voltage regulator module for system processor module 2"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/13-0052/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vrm7",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C21"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Miscellaneous voltage regulator module for system processor module 2"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/0-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/tpm",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Tpm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C96"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Trusted platform module card"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi12.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0",
-                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi13.0/eeprom",
-                "offset": 196608,
-                "powerOffOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C61"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System processor module 0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Quad"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "High speed SMP/OpenCAPI Link"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller Channel"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor To Memory Buffer Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Nest Memory Management Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Accelerator"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCI Express controllers"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe host bridge (PHB)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit13",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OBUS End Point"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit14",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Cache-Only Core"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi22.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1",
-                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi23.0/eeprom",
-                "offset": 196608,
-                "powerOffOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C61"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System processor module 0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Quad"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "High speed SMP/OpenCAPI Link"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller Channel"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor To Memory Buffer Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Nest Memory Management Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Accelerator"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCI Express controllers"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe host bridge (PHB)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit13",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OBUS End Point"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit14",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Cache-Only Core"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi32.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0",
-                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi33.0/eeprom",
-                "cpuType": "primary",
-                "offset": 196608,
-                "powerOffOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C14"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System processor module 1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Quad"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "High speed SMP/OpenCAPI Link"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller Channel"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor To Memory Buffer Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Nest Memory Management Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Accelerator"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCI Express controllers"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe host bridge (PHB)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit13",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OBUS End Point"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit14",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Cache-Only Core"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi42.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1",
-                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi43.0/eeprom",
-                "offset": 196608,
-                "powerOffOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C14"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System processor module 1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Quad"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "High speed SMP/OpenCAPI Link"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller Channel"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor To Memory Buffer Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Nest Memory Management Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Accelerator"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCI Express controllers"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe host bridge (PHB)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit13",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OBUS End Point"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit14",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Cache-Only Core"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi52.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0",
-                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi53.0/eeprom",
-                "offset": 196608,
-                "powerOffOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C19"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System processor module 2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Quad"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "High speed SMP/OpenCAPI Link"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller Channel"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor To Memory Buffer Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Nest Memory Management Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Accelerator"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCI Express controllers"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe host bridge (PHB)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit13",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OBUS End Point"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu0/unit14",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Cache-Only Core"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi62.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1",
-                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi63.0/eeprom",
-                "offset": 196608,
-                "powerOffOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C19"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System processor module 2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Quad"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "High speed SMP/OpenCAPI Link"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller Channel"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor To Memory Buffer Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Nest Memory Management Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Accelerator"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCI Express controllers"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe host bridge (PHB)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit13",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OBUS End Point"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm2/cpu1/unit14",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Cache-Only Core"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi72.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0",
-                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi73.0/eeprom",
-                "offset": 196608,
-                "powerOffOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C56"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System processor module 3"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Quad"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "High speed SMP/OpenCAPI Link"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller Channel"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor To Memory Buffer Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Nest Memory Management Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Accelerator"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCI Express controllers"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe host bridge (PHB)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit13",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OBUS End Point"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu0/unit14",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Cache-Only Core"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi82.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1",
-                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi83.0/eeprom",
-                "offset": 196608,
-                "powerOffOnly": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C56"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "System processor module 3"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Quad"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "High speed SMP/OpenCAPI Link"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory Controller Channel"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Processor To Memory Buffer Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Nest Memory Management Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Accelerator"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Interface Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "POWER Accelerator Unit Controller"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCI Express controllers"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit12",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe host bridge (PHB)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit13",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OBUS End Point"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dcm3/cpu1/unit14",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Cache-Only Core"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/27-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.DiskBackplane": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Drive backplane"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme0/drive0",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "27-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C0"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 1
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme1/drive1",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "27-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C1"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 2
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C2"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme2/drive2",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "27-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C2"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 3
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C3"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 3"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme3/drive3",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "27-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C3"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 4
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 3"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C4"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 4"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme4/drive4",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "27-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C4"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 5
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 4"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C5"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 5"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme5/drive5",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "27-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C5"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 6
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 5"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C6"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 6"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme6/drive6",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "27-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C6"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 7
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 6"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C7"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 7"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme7/drive7",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "27-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C7"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 8
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 7"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C8"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 8"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme8/drive8",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "27-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C8"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 9
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 8"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C9"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 9"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/nvme9/drive9",
-                "inherit": false,
-                "embedded": false,
-                "devAddress": "27-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C9"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 10
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "NVMe U.2 drive 9"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/dp_connector0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 3.0 port 1 (front)"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/dp_connector1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 3.0 port 2 (front)"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/28-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/panel1",
-                "devAddress": "28-0051",
-                "driverType": "at24",
-                "busType": "i2c",
-                "concurrentlyMaintainable": true,
-                "essentialFru": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Panel": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-D1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Control panel display"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/29-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dasd_backplane/panel0",
-                "devAddress": "29-0050",
-                "driverType": "at24",
-                "busType": "i2c",
-                "concurrentlyMaintainable": true,
-                "essentialFru": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Panel": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-D0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Control panel"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/31-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/fan0",
-                "devAddress": "31-0050",
-                "driverType": "at24",
-                "busType": "i2c",
-                "handlePresence": false,
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Fan": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-A0"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/32-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/fan1",
-                "devAddress": "32-0050",
-                "driverType": "at24",
-                "busType": "i2c",
-                "handlePresence": false,
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Fan": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-A1"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/33-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/fan2",
-                "devAddress": "33-0050",
-                "driverType": "at24",
-                "busType": "i2c",
-                "handlePresence": false,
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Fan": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-A2"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/34-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/fan3",
-                "devAddress": "34-0050",
-                "driverType": "at24",
-                "busType": "i2c",
-                "handlePresence": false,
-                "concurrentlyMaintainable": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Fan": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-A3"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/16-0052/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot1/pcie_card1",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "devAddress": "16-0052",
-                "pcaChipAddress": "16-0062",
-                "presence": {
-                    "pin": "expander-cable-card1",
-                    "value": 0,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card1",
-                    "value": 1,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card1",
-                    "value": 0,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C1"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 16,
-                        "Address": 82
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 1
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot1/pcie_card1/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C1-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot1/pcie_card1/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C1-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/17-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot2/pcie_card2",
-                "devAddress": "17-0050",
-                "pcaChipAddress": "17-0060",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "expander-cable-card2",
-                    "value": 0,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card2",
-                    "value": 1,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card2",
-                    "value": 0,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C2"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 17,
-                        "Address": 80
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 2
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot2/pcie_card2/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C2-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot2/pcie_card2/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C2-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/18-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3/pcie_card3",
-                "devAddress": "18-0051",
-                "pcaChipAddress": "18-0061",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "expander-cable-card3",
-                    "value": 0,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card3",
-                    "value": 1,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card3",
-                    "value": 0,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C3"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 18,
-                        "Address": 81
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 3
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C3-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C3-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/19-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4/pcie_card4",
-                "devAddress": "19-0050",
-                "pcaChipAddress": "19-0060",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "expander-cable-card4",
-                    "value": 0,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card4",
-                    "value": 1,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card4",
-                    "value": 0,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C4"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 19,
-                        "Address": 80
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 4
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C4-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C4-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/20-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot5/pcie_card5",
-                "devAddress": "20-0051",
-                "pcaChipAddress": "20-0061",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "expander-cable-card5",
-                    "value": 0,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card5",
-                    "value": 1,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card5",
-                    "value": 0,
-                    "gpioI2CAddress": "4-0065"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 20,
-                        "Address": 81
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 5
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot5/pcie_card5/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot5/pcie_card5/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/21-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot6/pcie_card6",
-                "devAddress": "21-0051",
-                "pcaChipAddress": "21-0061",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "expander-cable-card6",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card6",
-                    "value": 1,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card6",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C6"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 21,
-                        "Address": 81
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 6
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x8 adapter"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/22-0053/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot7/pcie_card7",
-                "devAddress": "22-0053",
-                "pcaChipAddress": "22-0063",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "expander-cable-card7",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card7",
-                    "value": 1,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card7",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C7"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 22,
-                        "Address": 83
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 7
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot7/pcie_card7/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C7-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot7/pcie_card7/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C7-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/23-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8",
-                "devAddress": "23-0050",
-                "pcaChipAddress": "23-0060",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "expander-cable-card8",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card8",
-                    "value": 1,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card8",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C8"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 23,
-                        "Address": 80
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 8
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C8-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C8-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/24-0052/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot9/pcie_card9",
-                "devAddress": "24-0052",
-                "pcaChipAddress": "24-0062",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "expander-cable-card9",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card9",
-                    "value": 1,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card9",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C9"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 24,
-                        "Address": 82
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 9
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x8 adapter"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/25-0053/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10",
-                "devAddress": "25-0053",
-                "pcaChipAddress": "25-0063",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "expander-cable-card10",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card10",
-                    "value": 1,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card10",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C10"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 25,
-                        "Address": 83
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 10
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C10-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C10-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/26-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11",
-                "devAddress": "26-0051",
-                "pcaChipAddress": "26-0061",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "expander-cable-card11",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "preAction": {
-                    "pin": "presence-cable-card11",
-                    "value": 1,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "postActionFail": {
-                    "pin": "presence-cable-card11",
-                    "value": 0,
-                    "gpioI2CAddress": "5-0066"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C11"
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 26,
-                        "Address": 81
-                    },
-                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
-                        "SlotNumber": 11
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C11-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "xyz.openbmc_project.Inventory.Connector.Port": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C11-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "CXP Port"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/300-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm0",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C22"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 0"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/301-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm1",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C23"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 1"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/310-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm2",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C24"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 2"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/312-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm3",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C25"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 3"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/313-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm4",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C26"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 4"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/315-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm5",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C27"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 5"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/311-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm6",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C28"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 6"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/314-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm7",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C29"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 7"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/416-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm8",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C30"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 8"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/417-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm9",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C31"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 9"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/411-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm10",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C32"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 10"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/415-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm11",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C33"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 11"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/414-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm12",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C34"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 12"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/410-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm13",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C35"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 13"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/403-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm14",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C36"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 14"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/402-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm15",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C37"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 15"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/500-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm16",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C38"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 16"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/501-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm17",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C39"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 17"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/510-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm18",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C40"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 18"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/512-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm19",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C41"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 19"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/515-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm20",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C42"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 20"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/513-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm21",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C43"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 21"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/511-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm22",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C44"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 22"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/514-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm23",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C45"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 23"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/616-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm24",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C46"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 24"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/611-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm25",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C47"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 25"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/615-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm26",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C48"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 26"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/617-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm27",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C49"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 27"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/614-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm28",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C50"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 28"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/610-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm29",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C51"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 29"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/602-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm30",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C52"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 30"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/603-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm31",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C53"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 31"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/816-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm32",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C64"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 32"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm32/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm32/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm32/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm32/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/811-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm33",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C65"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 33"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm33/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm33/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm33/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm33/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/815-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm34",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C66"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 34"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm34/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm34/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm34/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm34/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/817-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm35",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C67"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 35"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm35/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm35/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm35/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm35/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/814-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm36",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C68"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 36"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm36/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm36/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm36/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm36/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/810-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm37",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C69"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 37"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm37/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm37/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm37/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm37/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/802-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm38",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C70"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 38"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm38/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm38/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm38/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm38/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/803-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm39",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C71"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 39"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm39/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm39/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm39/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm39/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/701-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm40",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C72"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 40"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm40/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm40/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm40/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm40/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/700-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm41",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C73"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 41"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm41/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm41/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm41/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm41/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/710-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm42",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C74"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 42"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm42/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm42/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm42/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm42/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/712-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm43",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C75"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 43"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm43/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm43/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm43/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm43/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/715-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm44",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C76"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 44"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm44/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm44/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm44/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm44/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/713-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm45",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C77"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 45"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm45/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm45/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm45/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm45/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/711-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm46",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C78"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 46"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm46/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm46/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm46/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm46/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/714-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm47",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C79"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 47"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm47/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm47/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm47/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm47/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/216-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm48",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C80"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 48"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm48/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm48/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm48/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm48/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/217-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm49",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C81"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 49"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm49/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm49/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm49/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm49/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/211-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm50",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C82"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 50"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm50/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm50/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm50/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm50/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/215-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm51",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C83"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 51"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm51/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm51/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm51/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm51/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/214-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm52",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C84"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 52"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm52/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm52/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm52/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm52/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/210-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm53",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C85"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 53"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm53/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm53/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm53/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm53/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/203-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm54",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C86"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 54"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm54/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm54/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm54/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm54/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/202-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm55",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C87"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 55"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm55/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm55/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm55/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm55/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/100-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm56",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C88"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 56"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm56/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm56/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm56/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm56/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/101-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm57",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C89"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 57"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm57/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm57/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm57/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm57/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/110-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm58",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C90"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 58"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm58/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm58/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm58/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm58/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/112-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm59",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C91"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 59"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm59/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm59/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm59/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm59/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/113-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm60",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C92"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 60"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm60/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm60/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm60/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm60/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/115-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm61",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C93"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 61"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm61/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm61/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm61/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm61/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/111-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm62",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C94"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 62"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm62/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm62/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm62/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm62/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/114-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm63",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C95"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Memory module 63"
-                    },
-                    "xyz.openbmc_project.State.Decorator.Availability": {
-                        "Available": false
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm63/unit0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI Memory Buffer"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm63/unit1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "DDR Memory Port"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm63/unit2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Control Device"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm63/unit3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Onboard Memory Power Management IC"
-                    }
-                }
-            }
-        ]
-    }
-}
diff --git a/config/ibm/systems.json b/config/ibm/systems.json
deleted file mode 100644
index 6b66e56..0000000
--- a/config/ibm/systems.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
-    "system": {
-        "50001001": {
-            "constraint": {
-                "HW": ["0001"],
-                "json": "50001001.json"
-            },
-            "default": "50001001_v2.json"
-        },
-        "50001000": {
-            "constraint": {
-                "HW": ["0001"],
-                "json": "50001000.json"
-            },
-            "default": "50001000_v2.json"
-        },
-        "50001002": {
-            "default": "50001002.json"
-        },
-        "50003000": {
-            "constraint": {
-                "HW": ["000A", "000B", "000C", "0014"],
-                "json": "50003000.json"
-            },
-            "default": "50003000_v2.json"
-        },
-        "50004000": {
-            "default": "50004000.json"
-        },
-        "60001001": {
-            "constraint": {
-                "HW": ["0001"],
-                "json": "60001001.json"
-            },
-            "default": "60001001_v2.json"
-        },
-        "60001000": {
-            "constraint": {
-                "HW": ["0001"],
-                "json": "60001000.json"
-            },
-            "default": "60001000_v2.json"
-        },
-        "60001002": {
-            "default": "60001002.json"
-        },
-        "60002000": {
-            "constraint": {
-                "HW": ["000A", "000B", "000C", "0014"],
-                "json": "60002000.json"
-            },
-            "default": "60002000_v2.json"
-        },
-        "70001000": {
-            "default": "70001000.json"
-        }
-    }
-}
diff --git a/configuration/configuration.hpp b/configuration/configuration.hpp
new file mode 100644
index 0000000..d234a75
--- /dev/null
+++ b/configuration/configuration.hpp
@@ -0,0 +1,31 @@
+#pragma once
+
+#include "types.hpp"
+
+namespace vpd
+{
+namespace config
+{
+
+/**
+ * @brief Map of IM to HW version.
+ *
+ * The map holds HW version corresponding to a given IM value.
+ * To add a new system, just update the below map.
+ * {IM value, {Default, {HW_version, version}}}
+ */
+types::SystemTypeMap systemType{
+    {"50001001", {"50001001_v2", {{"0001", ""}}}},
+    {"50001000", {"50001000_v2", {{"0001", ""}}}},
+    {"50001002", {"50001002", {}}},
+    {"50003000",
+     {"50003000_v2", {{"000A", ""}, {"000B", ""}, {"000C", ""}, {"0014", ""}}}},
+    {"50004000", {"50004000", {}}},
+    {"60001001", {"60001001_v2", {{"0001", ""}}}},
+    {"60001000", {"60001000_v2", {{"0001", ""}}}},
+    {"60001002", {"60001002", {}}},
+    {"60002000",
+     {"60002000_v2", {{"000A", ""}, {"000B", ""}, {"000C", ""}, {"0014", ""}}}},
+    {"60004000", {"60004000", {}}}};
+} // namespace config
+} // namespace vpd
diff --git a/config/ibm/50001000.json b/configuration/ibm/50001000.json
similarity index 62%
rename from config/ibm/50001000.json
rename to configuration/ibm/50001000.json
index 677394c..8dbee4d 100644
--- a/config/ibm/50001000.json
+++ b/configuration/ibm/50001000.json
@@ -1,4 +1,6 @@
 {
+    "devTree": "conf-aspeed-bmc-ibm-rainier-4u-p1.dtb",
+    "backupRestoreConfigPath": "/usr/share/vpd/backup_restore_50001000.json",
     "commonInterfaces": {
         "xyz.openbmc_project.Inventory.Decorator.Asset": {
             "PartNumber": {
@@ -27,7 +29,8 @@
     "frus": {
         "/sys/bus/i2c/drivers/at24/8-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "isSystemVpd": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Board.Motherboard": null,
@@ -40,7 +43,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -49,7 +53,8 @@
                 }
             },
             {
-                "inventoryPath": "/system",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "isSystemVpd": true,
                 "copyRecords": ["VSYS"],
@@ -78,7 +83,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "isSystemVpd": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Chassis": {
@@ -94,7 +100,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -111,7 +118,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -128,7 +136,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -145,7 +154,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -162,7 +172,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -179,7 +190,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -196,7 +208,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -213,7 +226,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -230,7 +244,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -247,7 +262,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -264,7 +280,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -281,7 +298,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -297,7 +315,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot12/pcie_card12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot12/pcie_card12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -313,7 +332,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/powersupply0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -324,7 +344,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/powersupply1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -335,7 +356,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/powersupply2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -346,7 +368,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/powersupply3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -357,7 +380,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -387,7 +411,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -417,7 +442,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -447,7 +473,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -477,7 +504,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -507,7 +535,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -537,7 +566,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/tod_battery",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/tod_battery",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Battery": null,
                     "com.ibm.ipzvpd.Location": {
@@ -549,7 +579,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -562,7 +593,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -575,7 +607,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -588,7 +621,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -601,7 +635,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -614,7 +649,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -627,7 +663,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -640,7 +677,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -653,7 +691,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -666,7 +705,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -679,7 +719,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -692,7 +733,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -705,7 +747,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -718,7 +761,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -731,7 +775,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -744,7 +789,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector15",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector15",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -757,7 +803,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector16",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector16",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -770,7 +817,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector17",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector17",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -783,7 +831,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector18",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector18",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -796,7 +845,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector19",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector19",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -809,7 +859,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector20",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector20",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -822,7 +873,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector21",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector21",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -835,7 +887,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/rdx0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/rdx0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "extraInterfaces": {
@@ -849,7 +902,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/rdx0/media0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/rdx0/media0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "extraInterfaces": {
@@ -863,7 +917,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/rdx0/rdx_power_connector",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/rdx0/rdx_power_connector",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "extraInterfaces": {
@@ -877,7 +932,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/rdx0/rdx_usb_connector",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/rdx0/rdx_usb_connector",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "extraInterfaces": {
@@ -893,7 +949,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/8-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Bmc": null,
                     "com.ibm.ipzvpd.Location": {
@@ -905,7 +962,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/ethernet0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/ethernet0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -927,7 +985,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/ethernet1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/ethernet1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -949,7 +1008,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/usb0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/usb0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -962,7 +1022,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/displayport0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/displayport0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -975,7 +1036,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/usb1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/usb1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -990,7 +1052,16 @@
         ],
         "/sys/bus/i2c/drivers/at24/0-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/tpm_wilson",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/tpm_wilson",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "CPU_TPM_CARD_PRESENT_N",
+                            "value": 0
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Tpm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -1004,8 +1075,17 @@
         ],
         "/sys/bus/i2c/drivers/at24/7-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/base_op_panel_blyth",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/base_op_panel_blyth",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "essentialFru": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "BLYTH_OPPANEL_PRESENCE_N",
+                            "value": 0
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Panel": null,
                     "com.ibm.ipzvpd.Location": {
@@ -1019,25 +1099,56 @@
         ],
         "/sys/bus/i2c/drivers/at24/7-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/lcd_op_panel_hill",
-                "devAddress": "7-0051",
-                "driverType": "at24",
-                "busType": "i2c",
-                "presence": {
-                    "pollingRequired": true,
-                    "pin": "RUSSEL_OPPANEL_PRESENCE_N",
-                    "value": 0,
-                    "gpioI2CAddress": "0-0020"
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/lcd_op_panel_hill",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "pollingRequired": {
+                    "hotPlugging": {
+                        "gpioPresence": {
+                            "pin": "RUSSEL_OPPANEL_PRESENCE_N",
+                            "value": 0
+                        }
+                    }
                 },
                 "preAction": {
-                    "pin": "RUSSEL_FW_I2C_ENABLE_N",
-                    "value": 0,
-                    "gpioI2CAddress": "0-0020"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "RUSSEL_OPPANEL_PRESENCE_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "RUSSEL_FW_I2C_ENABLE_N",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 7-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "RUSSEL_FW_I2C_ENABLE_N",
-                    "value": 1,
-                    "gpioI2CAddress": "0-0020"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 7-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "RUSSEL_FW_I2C_ENABLE_N",
+                            "value": 1
+                        }
+                    }
+                },
+                "postFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "RUSSEL_FW_I2C_ENABLE_N",
+                            "value": 1
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "RUSSEL_FW_I2C_ENABLE_N",
+                            "value": 1
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Panel": null,
@@ -1052,7 +1163,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/9-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/vdd_vrm0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vdd_vrm0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Vrm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -1066,7 +1178,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/10-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/vdd_vrm1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vdd_vrm1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Vrm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -1080,7 +1193,8 @@
         ],
         "/sys/bus/spi/drivers/at25/spi12.0/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "redundantEeprom": "/sys/bus/spi/drivers/at25/spi13.0/eeprom",
                 "cpuType": "primary",
                 "powerOffOnly": true,
@@ -1097,7 +1211,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1106,7 +1221,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1115,7 +1231,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1124,7 +1241,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1133,7 +1251,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1142,7 +1261,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1151,7 +1271,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1160,7 +1281,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1169,7 +1291,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1178,7 +1301,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1187,7 +1311,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1196,7 +1321,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1205,7 +1331,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1214,7 +1341,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1223,7 +1351,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1234,7 +1363,8 @@
         ],
         "/sys/bus/spi/drivers/at25/spi22.0/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "redundantEeprom": "/sys/bus/spi/drivers/at25/spi23.0/eeprom",
                 "powerOffOnly": true,
                 "offset": 196608,
@@ -1250,7 +1380,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1259,7 +1390,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1268,7 +1400,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1277,7 +1410,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1286,7 +1420,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1295,7 +1430,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1304,7 +1440,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1313,7 +1450,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1322,7 +1460,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1331,7 +1470,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1340,7 +1480,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1349,7 +1490,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1358,7 +1500,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1367,7 +1510,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1376,7 +1520,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1387,7 +1532,8 @@
         ],
         "/sys/bus/spi/drivers/at25/spi32.0/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "redundantEeprom": "/sys/bus/spi/drivers/at25/spi33.0/eeprom",
                 "powerOffOnly": true,
                 "offset": 196608,
@@ -1403,7 +1549,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1412,7 +1559,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1421,7 +1569,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1430,7 +1579,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1439,7 +1589,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1448,7 +1599,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1457,7 +1609,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1466,7 +1619,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1475,7 +1629,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1484,7 +1639,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1493,7 +1649,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1502,7 +1659,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1511,7 +1669,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1520,7 +1679,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1529,7 +1689,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1540,7 +1701,8 @@
         ],
         "/sys/bus/spi/drivers/at25/spi42.0/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "redundantEeprom": "/sys/bus/spi/drivers/at25/spi43.0/eeprom",
                 "powerOffOnly": true,
                 "offset": 196608,
@@ -1556,7 +1718,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1565,7 +1728,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1574,7 +1738,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1583,7 +1748,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1592,7 +1758,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1601,7 +1768,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1610,7 +1778,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1619,7 +1788,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1628,7 +1798,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1637,7 +1808,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1646,7 +1818,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1655,7 +1828,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1664,7 +1838,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1673,7 +1848,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1682,7 +1858,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1693,22 +1870,56 @@
         ],
         "/sys/bus/i2c/drivers/at24/4-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot0/pcie_card0",
-                "devAddress": "4-0050",
-                "pcaChipAddress": "4-0060",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT0_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT0_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 4-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 4-0060 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT0_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
+                "postAction": {
+                    "collection": {
+                        "ccin": ["2CE2", "58FF", "6B92", "6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 4-0060 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 4-0050 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT0_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "postFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT0_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT0_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1729,7 +1940,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_top",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1745,7 +1957,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_bot",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1763,22 +1976,56 @@
         ],
         "/sys/bus/i2c/drivers/at24/5-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3/pcie_card3",
-                "devAddress": "5-0050",
-                "pcaChipAddress": "5-0060",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3/pcie_card3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT3_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT3_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 5-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 5-0060 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT3_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
+                "postAction": {
+                    "collection": {
+                        "ccin": ["2CE2", "58FF", "6B92", "6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 5-0060 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 5-0050 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT3_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT3_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT3_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1799,7 +2046,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_top",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1815,7 +2063,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_bot",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1833,22 +2082,56 @@
         ],
         "/sys/bus/i2c/drivers/at24/5-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4/pcie_card4",
-                "devAddress": "5-0051",
-                "pcaChipAddress": "5-0061",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4/pcie_card4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT4_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT4_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 5-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 5-0061 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT4_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
+                "postAction": {
+                    "collection": {
+                        "ccin": ["2CE2", "58FF", "6B92", "6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 5-0061 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 5-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT4_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "postFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT4_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT4_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1866,7 +2149,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_top",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1882,7 +2166,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_bot",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1900,22 +2185,56 @@
         ],
         "/sys/bus/i2c/drivers/at24/11-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10",
-                "devAddress": "11-0050",
-                "pcaChipAddress": "11-0060",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT10_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT10_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 11-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 11-0060 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT10_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "collection": {
+                        "ccin": ["2CE2", "58FF", "6B92", "6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 11-0060 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 11-0050 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT10_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT10_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT10_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1936,7 +2255,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_top",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1952,7 +2272,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_bot",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1968,7 +2289,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -1984,7 +2306,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2000,7 +2323,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2016,7 +2340,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2034,22 +2359,45 @@
         ],
         "/sys/bus/i2c/drivers/at24/4-0052/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot2/pcie_card2",
-                "devAddress": "4-0052",
-                "pcaChipAddress": "4-0062",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot2/pcie_card2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT2_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT2_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 4-0052 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT2_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 4-0052 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT2_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT2_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT2_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2071,21 +2419,45 @@
         ],
         "/sys/bus/i2c/drivers/at24/6-0053/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot6/pcie_card6",
-                "devAddress": "6-0053",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot6/pcie_card6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT6_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT6_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 6-0053 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT6_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 6-0053 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT6_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT6_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT6_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2100,22 +2472,45 @@
         ],
         "/sys/bus/i2c/drivers/at24/6-0052/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot7/pcie_card7",
-                "devAddress": "6-0052",
-                "pcaChipAddress": "6-0062",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot7/pcie_card7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT7_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT7_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 6-0052 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT7_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 6-0052 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT7_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT7_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT7_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2137,22 +2532,45 @@
         ],
         "/sys/bus/i2c/drivers/at24/6-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot9/pcie_card9",
-                "devAddress": "6-0050",
-                "pcaChipAddress": "6-0060",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot9/pcie_card9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT9_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT9_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 6-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT9_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 6-0050 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT9_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT9_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT9_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2174,22 +2592,45 @@
         ],
         "/sys/bus/i2c/drivers/at24/11-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11",
-                "devAddress": "11-0051",
-                "pcaChipAddress": "11-0061",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT11_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT11_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 11-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT11_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 11-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT11_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT11_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT11_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2210,7 +2651,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2226,7 +2668,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2242,7 +2685,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2258,7 +2702,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2276,22 +2721,45 @@
         ],
         "/sys/bus/i2c/drivers/at24/4-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot1/pcie_card1",
-                "devAddress": "4-0051",
-                "pcaChipAddress": "4-0061",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot1/pcie_card1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT1_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT1_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 4-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT1_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 4-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT1_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT1_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT1_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2313,22 +2781,45 @@
         ],
         "/sys/bus/i2c/drivers/at24/6-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8",
-                "devAddress": "6-0051",
-                "pcaChipAddress": "6-0061",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT8_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT8_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 6-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT8_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 6-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT8_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT8_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT8_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2349,7 +2840,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2365,7 +2857,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2381,7 +2874,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2397,7 +2891,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2415,7 +2910,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/13-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.DiskBackplane": null,
                     "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
@@ -2428,7 +2924,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2445,13 +2942,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme0/dp0_drive0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme0/dp0_drive0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2466,7 +2961,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2483,13 +2979,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme1/dp0_drive1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme1/dp0_drive1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2504,7 +2998,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2521,13 +3016,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme2/dp0_drive2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme2/dp0_drive2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2542,7 +3035,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2559,13 +3053,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme3/dp0_drive3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme3/dp0_drive3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2580,7 +3072,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2597,13 +3090,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme4/dp0_drive4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme4/dp0_drive4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2618,7 +3109,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2635,13 +3127,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme5/dp0_drive5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme5/dp0_drive5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2656,7 +3146,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2673,13 +3164,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme6/dp0_drive6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme6/dp0_drive6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2694,7 +3183,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2711,13 +3201,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme7/dp0_drive7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme7/dp0_drive7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2732,7 +3220,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2746,7 +3235,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2760,7 +3250,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2774,7 +3265,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2788,7 +3280,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2802,7 +3295,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2816,7 +3310,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp0_cable0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp0_cable0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2827,7 +3322,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp0_cable1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp0_cable1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2838,7 +3334,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp0_cable2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp0_cable2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2849,7 +3346,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp0_cable3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp0_cable3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2862,7 +3360,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/14-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.DiskBackplane": null,
                     "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
@@ -2875,7 +3374,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
@@ -2891,13 +3391,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme0/dp1_drive0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme0/dp1_drive0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2912,7 +3410,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
@@ -2928,13 +3427,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme1/dp1_drive1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme1/dp1_drive1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2949,7 +3446,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
@@ -2965,13 +3463,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme2/dp1_drive2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme2/dp1_drive2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2986,7 +3482,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
@@ -3002,13 +3499,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme3/dp1_drive3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme3/dp1_drive3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3023,7 +3518,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
@@ -3039,13 +3535,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme4/dp1_drive4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme4/dp1_drive4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3060,7 +3554,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
@@ -3076,13 +3571,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme5/dp1_drive5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme5/dp1_drive5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3097,7 +3590,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
@@ -3113,13 +3607,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme6/dp1_drive6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme6/dp1_drive6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3134,7 +3626,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
@@ -3150,13 +3643,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme7/dp1_drive7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme7/dp1_drive7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3171,7 +3662,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -3185,7 +3677,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -3199,7 +3692,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -3213,7 +3707,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -3227,7 +3722,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -3241,7 +3737,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -3255,7 +3752,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp1_cable0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp1_cable0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -3266,7 +3764,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp1_cable1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp1_cable1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -3277,7 +3776,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp1_cable2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp1_cable2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -3288,7 +3788,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp1_cable3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp1_cable3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -3301,7 +3802,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/111-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-111/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3316,7 +3830,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3325,7 +3840,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3334,7 +3850,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3343,7 +3860,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3354,7 +3872,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/110-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-110/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3369,7 +3900,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3378,7 +3910,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3387,7 +3920,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3396,7 +3930,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3407,7 +3942,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/214-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-214/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3422,7 +3970,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3431,7 +3980,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3440,7 +3990,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3449,7 +4000,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3460,7 +4012,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/210-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-210/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3475,7 +4040,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3484,7 +4050,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3493,7 +4060,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3502,7 +4070,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3513,7 +4082,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/202-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-202/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3528,7 +4110,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3537,7 +4120,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3546,7 +4130,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3555,7 +4140,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3566,7 +4152,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/311-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm16",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-311/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3581,7 +4180,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3590,7 +4190,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3599,7 +4200,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3608,7 +4210,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3619,7 +4222,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/310-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm17",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-310/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3634,7 +4250,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3643,7 +4260,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3652,7 +4270,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3661,7 +4280,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3672,7 +4292,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/312-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm18",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-312/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3687,7 +4320,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3696,7 +4330,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3705,7 +4340,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3714,7 +4350,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3725,7 +4362,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/402-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm24",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-402/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3740,7 +4390,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3749,7 +4400,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3758,7 +4410,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3767,7 +4420,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3778,7 +4432,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/410-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm25",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-410/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3793,7 +4460,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3802,7 +4470,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3811,7 +4480,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3820,7 +4490,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3831,7 +4502,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/112-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-112/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3846,7 +4530,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3855,7 +4540,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3864,7 +4550,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3873,7 +4560,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3884,7 +4572,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/115-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-115/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3899,7 +4600,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3908,7 +4610,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3917,7 +4620,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3926,7 +4630,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3937,7 +4642,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/100-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-100/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3952,7 +4670,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3961,7 +4680,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3970,7 +4690,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3979,7 +4700,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3990,7 +4712,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/101-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-101/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4005,7 +4740,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4014,7 +4750,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4023,7 +4760,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4032,7 +4770,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4043,7 +4782,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/114-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-114/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4058,7 +4810,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4067,7 +4820,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4076,7 +4830,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4085,7 +4840,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4096,7 +4852,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/113-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-113/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4111,7 +4880,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4120,7 +4890,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4129,7 +4900,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4138,7 +4910,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4149,7 +4922,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/216-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm15",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-216/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4164,7 +4950,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4173,7 +4960,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4182,7 +4970,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4191,7 +4980,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4202,7 +4992,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/203-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-203/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4217,7 +5020,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4226,7 +5030,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4235,7 +5040,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4244,7 +5050,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4255,7 +5062,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/217-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-217/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4270,7 +5090,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4279,7 +5100,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4288,7 +5110,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4297,7 +5120,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4308,7 +5132,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/211-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-211/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4323,7 +5160,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4332,7 +5170,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4341,7 +5180,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4350,7 +5190,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4361,7 +5202,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/215-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-215/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4376,7 +5230,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4385,7 +5240,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4394,7 +5250,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4403,7 +5260,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4414,7 +5272,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/315-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm20",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-315/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4429,7 +5300,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4438,7 +5310,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4447,7 +5320,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4456,7 +5330,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4467,7 +5342,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/300-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm21",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-300/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4482,7 +5370,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4491,7 +5380,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4500,7 +5390,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4509,7 +5400,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4520,7 +5412,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/313-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm19",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-313/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4535,7 +5440,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4544,7 +5450,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4553,7 +5460,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4562,7 +5470,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4573,7 +5482,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/314-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm22",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-314/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4588,7 +5510,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4597,7 +5520,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4606,7 +5530,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4615,7 +5540,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4626,7 +5552,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/301-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm23",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-301/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4641,7 +5580,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4650,7 +5590,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4659,7 +5600,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4668,7 +5610,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4679,7 +5622,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/417-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm27",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-417/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4694,7 +5650,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4703,7 +5660,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4712,7 +5670,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4721,7 +5680,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4732,7 +5692,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/403-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm30",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-403/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4747,7 +5720,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4756,7 +5730,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4765,7 +5740,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4774,7 +5750,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4785,7 +5762,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/416-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm31",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-416/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4800,7 +5790,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4809,7 +5800,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4818,7 +5810,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4827,7 +5820,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4838,7 +5832,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/411-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm29",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-411/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4853,7 +5860,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4862,7 +5870,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4871,7 +5880,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4880,7 +5890,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4891,7 +5902,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/415-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm28",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-415/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4906,7 +5930,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4915,7 +5940,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4924,7 +5950,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4933,7 +5960,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4944,7 +5972,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/414-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm26",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-414/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4959,7 +6000,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4968,7 +6010,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4977,7 +6020,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4986,7 +6030,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
diff --git a/config/ibm/50001000_v2.json b/configuration/ibm/50001000_v2.json
similarity index 62%
rename from config/ibm/50001000_v2.json
rename to configuration/ibm/50001000_v2.json
index f80f61d..ea66635 100644
--- a/config/ibm/50001000_v2.json
+++ b/configuration/ibm/50001000_v2.json
@@ -1,4 +1,6 @@
 {
+    "devTree": "conf-aspeed-bmc-ibm-rainier-4u.dtb",
+    "backupRestoreConfigPath": "/usr/share/vpd/backup_restore_50001000.json",
     "commonInterfaces": {
         "xyz.openbmc_project.Inventory.Decorator.Asset": {
             "PartNumber": {
@@ -49,7 +51,8 @@
     "frus": {
         "/sys/bus/i2c/drivers/at24/8-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "isSystemVpd": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Board.Motherboard": null,
@@ -62,7 +65,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -71,7 +75,8 @@
                 }
             },
             {
-                "inventoryPath": "/system",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "isSystemVpd": true,
                 "copyRecords": ["VSYS"],
@@ -100,7 +105,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "isSystemVpd": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Chassis": {
@@ -116,7 +122,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -133,7 +140,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -150,7 +158,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -167,7 +176,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -184,7 +194,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -201,7 +212,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -218,7 +230,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -235,7 +248,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -252,7 +266,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -269,7 +284,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -286,7 +302,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -303,7 +320,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -319,7 +337,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot12/pcie_card12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot12/pcie_card12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -335,7 +354,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/powersupply0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -346,7 +366,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/powersupply1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -357,7 +378,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/powersupply2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -368,7 +390,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/powersupply3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -379,7 +402,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -409,7 +433,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -439,7 +464,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -469,7 +495,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -499,7 +526,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -529,7 +557,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -559,7 +588,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/tod_battery",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/tod_battery",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Battery": null,
                     "com.ibm.ipzvpd.Location": {
@@ -571,7 +601,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -584,7 +615,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -597,7 +629,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -610,7 +643,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -623,7 +657,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -636,7 +671,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -649,7 +685,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -662,7 +699,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -675,7 +713,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -688,7 +727,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -701,7 +741,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -714,7 +755,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -727,7 +769,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -740,7 +783,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -753,7 +797,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -766,7 +811,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector15",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector15",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -779,7 +825,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector16",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector16",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -792,7 +839,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector17",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector17",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -805,7 +853,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector18",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector18",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -818,7 +867,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector19",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector19",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -831,7 +881,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector20",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector20",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -844,7 +895,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector21",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector21",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -857,7 +909,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/rdx0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/rdx0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "extraInterfaces": {
@@ -871,7 +924,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/rdx0/media0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/rdx0/media0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "extraInterfaces": {
@@ -885,7 +939,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/rdx0/rdx_power_connector",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/rdx0/rdx_power_connector",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "extraInterfaces": {
@@ -899,7 +954,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/rdx0/rdx_usb_connector",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/rdx0/rdx_usb_connector",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "extraInterfaces": {
@@ -915,7 +971,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/8-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Bmc": null,
                     "com.ibm.ipzvpd.Location": {
@@ -927,7 +984,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/ethernet0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/ethernet0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -949,7 +1007,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/ethernet1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/ethernet1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -971,7 +1030,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/usb0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/usb0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -984,7 +1044,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/displayport0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/displayport0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -997,7 +1058,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/usb1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/usb1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -1012,7 +1074,16 @@
         ],
         "/sys/bus/i2c/drivers/at24/0-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/tpm_wilson",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/tpm_wilson",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "CPU_TPM_CARD_PRESENT_N",
+                            "value": 0
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Tpm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -1026,7 +1097,16 @@
         ],
         "/sys/bus/i2c/drivers/at24/7-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/base_op_panel_blyth",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/base_op_panel_blyth",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "BLYTH_OPPANEL_PRESENCE_N",
+                            "value": 0
+                        }
+                    }
+                },
                 "essentialFru": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Panel": null,
@@ -1041,25 +1121,56 @@
         ],
         "/sys/bus/i2c/drivers/at24/7-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/lcd_op_panel_hill",
-                "devAddress": "7-0051",
-                "driverType": "at24",
-                "busType": "i2c",
-                "presence": {
-                    "pollingRequired": true,
-                    "pin": "RUSSEL_OPPANEL_PRESENCE_N",
-                    "value": 0,
-                    "gpioI2CAddress": "0-0020"
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/lcd_op_panel_hill",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "pollingRequired": {
+                    "hotPlugging": {
+                        "gpioPresence": {
+                            "pin": "RUSSEL_OPPANEL_PRESENCE_N",
+                            "value": 0
+                        }
+                    }
                 },
                 "preAction": {
-                    "pin": "RUSSEL_FW_I2C_ENABLE_N",
-                    "value": 0,
-                    "gpioI2CAddress": "0-0020"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "RUSSEL_OPPANEL_PRESENCE_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "RUSSEL_FW_I2C_ENABLE_N",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 7-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "RUSSEL_FW_I2C_ENABLE_N",
-                    "value": 1,
-                    "gpioI2CAddress": "0-0020"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 7-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "RUSSEL_FW_I2C_ENABLE_N",
+                            "value": 1
+                        }
+                    }
+                },
+                "postFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "RUSSEL_FW_I2C_ENABLE_N",
+                            "value": 1
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "RUSSEL_FW_I2C_ENABLE_N",
+                            "value": 1
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Panel": null,
@@ -1074,7 +1185,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/9-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/vdd_vrm0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vdd_vrm0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Vrm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -1088,7 +1200,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/10-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/vdd_vrm1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vdd_vrm1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Vrm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -1102,7 +1215,8 @@
         ],
         "/sys/bus/spi/drivers/at25/spi12.0/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "redundantEeprom": "/sys/bus/spi/drivers/at25/spi13.0/eeprom",
                 "cpuType": "primary",
                 "powerOffOnly": true,
@@ -1119,7 +1233,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1128,7 +1243,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1137,7 +1253,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1146,7 +1263,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1155,7 +1273,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1164,7 +1283,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1173,7 +1293,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1182,7 +1303,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1191,7 +1313,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1200,7 +1323,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1209,7 +1333,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1218,7 +1343,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1227,7 +1353,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1236,7 +1363,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1245,7 +1373,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1256,7 +1385,8 @@
         ],
         "/sys/bus/spi/drivers/at25/spi22.0/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "redundantEeprom": "/sys/bus/spi/drivers/at25/spi23.0/eeprom",
                 "powerOffOnly": true,
                 "offset": 196608,
@@ -1272,7 +1402,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1281,7 +1412,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1290,7 +1422,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1299,7 +1432,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1308,7 +1442,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1317,7 +1452,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1326,7 +1462,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1335,7 +1472,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1344,7 +1482,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1353,7 +1492,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1362,7 +1502,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1371,7 +1512,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1380,7 +1522,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1389,7 +1532,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1398,7 +1542,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1409,7 +1554,8 @@
         ],
         "/sys/bus/spi/drivers/at25/spi32.0/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "redundantEeprom": "/sys/bus/spi/drivers/at25/spi33.0/eeprom",
                 "powerOffOnly": true,
                 "offset": 196608,
@@ -1425,7 +1571,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1434,7 +1581,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1443,7 +1591,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1452,7 +1601,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1461,7 +1611,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1470,7 +1621,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1479,7 +1631,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1488,7 +1641,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1497,7 +1651,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1506,7 +1661,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1515,7 +1671,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1524,7 +1681,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1533,7 +1691,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1542,7 +1701,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1551,7 +1711,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1562,7 +1723,8 @@
         ],
         "/sys/bus/spi/drivers/at25/spi42.0/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "redundantEeprom": "/sys/bus/spi/drivers/at25/spi43.0/eeprom",
                 "powerOffOnly": true,
                 "offset": 196608,
@@ -1578,7 +1740,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1587,7 +1750,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1596,7 +1760,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1605,7 +1770,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1614,7 +1780,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1623,7 +1790,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1632,7 +1800,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1641,7 +1810,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1650,7 +1820,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1659,7 +1830,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1668,7 +1840,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1677,7 +1850,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1686,7 +1860,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1695,7 +1870,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1704,7 +1880,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1715,27 +1892,62 @@
         ],
         "/sys/bus/i2c/drivers/at24/20-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot0/pcie_card0",
-                "devAddress": "20-0050",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "pcaChipAddress": "20-0060",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT0_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
-                },
+
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT0_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT0_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT0_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 20-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 20-0060 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT0_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
+                "postAction": {
+                    "collection": {
+                        "ccin": ["2CE2", "58FF", "6B92", "6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 20-0060 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 20-0050 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT0_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "postFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT0_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT0_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1756,7 +1968,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_top",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1772,7 +1985,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_bot",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1790,27 +2004,60 @@
         ],
         "/sys/bus/i2c/drivers/at24/23-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3/pcie_card3",
-                "devAddress": "23-0050",
-                "pcaChipAddress": "23-0060",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3/pcie_card3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT3_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT3_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT3_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT3_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 23-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 23-0060 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT3_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
+                "postAction": {
+                    "collection": {
+                        "ccin": ["2CE2", "58FF", "6B92", "6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 23-0060 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 23-0050 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT3_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT3_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT3_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1831,7 +2078,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_top",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1847,7 +2095,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_bot",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1865,27 +2114,60 @@
         ],
         "/sys/bus/i2c/drivers/at24/24-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4/pcie_card4",
-                "devAddress": "24-0051",
-                "pcaChipAddress": "24-0061",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4/pcie_card4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT4_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT4_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT4_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT4_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 24-0060 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT4_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
+                "postAction": {
+                    "collection": {
+                        "ccin": ["2CE2", "58FF", "6B92", "6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 24-0061 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 24-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT4_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "postFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT4_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT4_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1906,7 +2188,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_top",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1922,7 +2205,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_bot",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1940,27 +2224,60 @@
         ],
         "/sys/bus/i2c/drivers/at24/29-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10",
-                "devAddress": "29-0050",
-                "pcaChipAddress": "29-0060",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT10_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT10_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT10_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT10_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 29-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 29-0060 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT10_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "collection": {
+                        "ccin": ["2CE2", "58FF", "6B92", "6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 29-0060 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 29-0050 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT10_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT10_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT10_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1981,7 +2298,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_top",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1997,7 +2315,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_bot",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -2013,7 +2332,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2029,7 +2349,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2045,7 +2366,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2061,7 +2383,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2079,27 +2402,49 @@
         ],
         "/sys/bus/i2c/drivers/at24/22-0052/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot2/pcie_card2",
-                "devAddress": "22-0052",
-                "pcaChipAddress": "22-0062",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot2/pcie_card2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT2_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT2_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT2_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT2_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 22-0052 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT2_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 22-0052 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT2_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT2_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT2_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2121,26 +2466,49 @@
         ],
         "/sys/bus/i2c/drivers/at24/25-0053/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot6/pcie_card6",
-                "devAddress": "25-0053",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot6/pcie_card6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT6_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT6_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT6_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT6_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 25-0053 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT6_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 25-0053 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT6_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT6_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT6_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2155,27 +2523,49 @@
         ],
         "/sys/bus/i2c/drivers/at24/26-0052/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot7/pcie_card7",
-                "devAddress": "26-0052",
-                "pcaChipAddress": "26-0062",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot7/pcie_card7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT7_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT7_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT7_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT7_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 26-0052 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT7_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 26-0052 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT7_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT7_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT7_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2197,27 +2587,49 @@
         ],
         "/sys/bus/i2c/drivers/at24/27-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot9/pcie_card9",
-                "devAddress": "27-0050",
-                "pcaChipAddress": "27-0060",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot9/pcie_card9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT9_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT9_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT9_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT9_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 27-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT9_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 27-0050 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT9_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT9_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT9_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2239,27 +2651,49 @@
         ],
         "/sys/bus/i2c/drivers/at24/30-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11",
-                "devAddress": "30-0051",
-                "pcaChipAddress": "30-0061",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT11_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT11_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT11_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT11_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 30-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT11_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 30-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT11_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT11_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT11_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2280,7 +2714,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2296,7 +2731,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2312,7 +2748,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2328,7 +2765,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2346,27 +2784,50 @@
         ],
         "/sys/bus/i2c/drivers/at24/21-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot1/pcie_card1",
-                "devAddress": "21-0051",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot1/pcie_card1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "pcaChipAddress": "21-0061",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT1_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT1_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT1_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT1_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 21-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT1_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 21-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT1_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT1_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT1_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2388,27 +2849,49 @@
         ],
         "/sys/bus/i2c/drivers/at24/28-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8",
-                "devAddress": "28-0051",
-                "pcaChipAddress": "28-0061",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT8_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT8_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT8_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT8_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 28-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT8_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 28-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT8_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT8_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT8_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2429,7 +2912,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2445,7 +2929,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2461,7 +2946,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2477,7 +2963,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2495,7 +2982,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/13-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.DiskBackplane": null,
                     "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
@@ -2508,7 +2996,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2525,13 +3014,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme0/dp0_drive0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme0/dp0_drive0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2546,7 +3033,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2563,13 +3051,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme1/dp0_drive1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme1/dp0_drive1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2584,7 +3070,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2601,13 +3088,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme2/dp0_drive2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme2/dp0_drive2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2622,7 +3107,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2639,13 +3125,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme3/dp0_drive3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme3/dp0_drive3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2660,7 +3144,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2677,13 +3162,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme4/dp0_drive4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme4/dp0_drive4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2698,7 +3181,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2715,13 +3199,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme5/dp0_drive5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme5/dp0_drive5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2736,7 +3218,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2753,13 +3236,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme6/dp0_drive6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme6/dp0_drive6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2774,7 +3255,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2791,13 +3273,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme7/dp0_drive7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme7/dp0_drive7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2812,7 +3292,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2826,7 +3307,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2840,7 +3322,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2854,7 +3337,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2868,7 +3352,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2882,7 +3367,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2896,7 +3382,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp0_cable0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp0_cable0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2907,7 +3394,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp0_cable1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp0_cable1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2918,7 +3406,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp0_cable2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp0_cable2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2929,7 +3418,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp0_cable3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp0_cable3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2942,7 +3432,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/14-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.DiskBackplane": null,
                     "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
@@ -2955,7 +3446,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2972,13 +3464,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme0/dp1_drive0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme0/dp1_drive0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2993,7 +3483,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -3010,13 +3501,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme1/dp1_drive1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme1/dp1_drive1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3031,7 +3520,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -3048,13 +3538,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme2/dp1_drive2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme2/dp1_drive2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3069,7 +3557,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -3086,13 +3575,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme3/dp1_drive3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme3/dp1_drive3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3107,7 +3594,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -3124,13 +3612,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme4/dp1_drive4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme4/dp1_drive4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3145,7 +3631,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -3162,13 +3649,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme5/dp1_drive5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme5/dp1_drive5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3183,7 +3668,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -3200,13 +3686,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme6/dp1_drive6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme6/dp1_drive6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3221,7 +3705,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -3238,13 +3723,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme7/dp1_drive7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme7/dp1_drive7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3259,7 +3742,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -3273,7 +3757,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -3287,7 +3772,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -3301,7 +3787,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -3315,7 +3802,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -3329,7 +3817,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -3343,7 +3832,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp1_cable0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp1_cable0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -3354,7 +3844,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp1_cable1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp1_cable1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -3365,7 +3856,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp1_cable2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp1_cable2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -3376,7 +3868,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp1_cable3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp1_cable3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -3389,7 +3882,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/111-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-111/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3404,7 +3910,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3413,7 +3920,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3422,7 +3930,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3431,7 +3940,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3442,7 +3952,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/110-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-110/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3457,7 +3980,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3466,7 +3990,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3475,7 +4000,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3484,7 +4010,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3495,7 +4022,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/214-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-214/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3510,7 +4050,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3519,7 +4060,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3528,7 +4070,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3537,7 +4080,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3548,7 +4092,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/210-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-210/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3563,7 +4120,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3572,7 +4130,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3581,7 +4140,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3590,7 +4150,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3601,7 +4162,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/202-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-202/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3616,7 +4190,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3625,7 +4200,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3634,7 +4210,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3643,7 +4220,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3654,7 +4232,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/311-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm16",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-311/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3669,7 +4260,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3678,7 +4270,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3687,7 +4280,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3696,7 +4290,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3707,7 +4302,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/310-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm17",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-310/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3722,7 +4330,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3731,7 +4340,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3740,7 +4350,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3749,7 +4360,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3760,7 +4372,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/312-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm18",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-312/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3775,7 +4400,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3784,7 +4410,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3793,7 +4420,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3802,7 +4430,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3813,7 +4442,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/402-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm24",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-402/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3828,7 +4470,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3837,7 +4480,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3846,7 +4490,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3855,7 +4500,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3866,7 +4512,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/410-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm25",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-410/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3881,7 +4540,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3890,7 +4550,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3899,7 +4560,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3908,7 +4570,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3919,7 +4582,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/112-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-112/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3934,7 +4610,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3943,7 +4620,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3952,7 +4630,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3961,7 +4640,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3972,7 +4652,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/115-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-115/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3987,7 +4680,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3996,7 +4690,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4005,7 +4700,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4014,7 +4710,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4025,7 +4722,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/100-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-100/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4040,7 +4750,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4049,7 +4760,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4058,7 +4770,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4067,7 +4780,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4078,7 +4792,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/101-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-101/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4093,7 +4820,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4102,7 +4830,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4111,7 +4840,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4120,7 +4850,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4131,7 +4862,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/114-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-114/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4146,7 +4890,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4155,7 +4900,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4164,7 +4910,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4173,7 +4920,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4184,7 +4932,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/113-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-113/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4199,7 +4960,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4208,7 +4970,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4217,7 +4980,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4226,7 +4990,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4237,7 +5002,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/216-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm15",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-216/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4252,7 +5030,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4261,7 +5040,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4270,7 +5050,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4279,7 +5060,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4290,7 +5072,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/203-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-203/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4305,7 +5100,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4314,7 +5110,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4323,7 +5120,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4332,7 +5130,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4343,7 +5142,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/217-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-217/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4358,7 +5170,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4367,7 +5180,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4376,7 +5190,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4385,7 +5200,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4396,7 +5212,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/211-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-211/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4411,7 +5240,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4420,7 +5250,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4429,7 +5260,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4438,7 +5270,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4449,7 +5282,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/215-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-215/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4464,7 +5310,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4473,7 +5320,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4482,7 +5330,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4491,7 +5340,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4502,7 +5352,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/315-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm20",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-315/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4517,7 +5380,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4526,7 +5390,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4535,7 +5400,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4544,7 +5410,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4555,7 +5422,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/300-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm21",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-300/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4570,7 +5450,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4579,7 +5460,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4588,7 +5470,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4597,7 +5480,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4608,7 +5492,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/313-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm19",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-313/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4623,7 +5520,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4632,7 +5530,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4641,7 +5540,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4650,7 +5550,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4661,7 +5562,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/314-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm22",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-314/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4676,7 +5590,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4685,7 +5600,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4694,7 +5610,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4703,7 +5620,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4714,7 +5632,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/301-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm23",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-301/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4729,7 +5660,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4738,7 +5670,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4747,7 +5680,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4756,7 +5690,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4767,7 +5702,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/417-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm27",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-417/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4782,7 +5730,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4791,7 +5740,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4800,7 +5750,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4809,7 +5760,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4820,7 +5772,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/403-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm30",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-403/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4835,7 +5800,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4844,7 +5810,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4853,7 +5820,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4862,7 +5830,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4873,7 +5842,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/416-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm31",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-416/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4888,7 +5870,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4897,7 +5880,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4906,7 +5890,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4915,7 +5900,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4926,7 +5912,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/411-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm29",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-411/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4941,7 +5940,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4950,7 +5950,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4959,7 +5960,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4968,7 +5970,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4979,7 +5982,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/415-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm28",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-415/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4994,7 +6010,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -5003,7 +6020,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -5012,7 +6030,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -5021,7 +6040,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -5032,7 +6052,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/414-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm26",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-414/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -5047,7 +6080,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -5056,7 +6090,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -5065,7 +6100,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -5074,7 +6110,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
diff --git a/config/ibm/50001001_v2.json b/configuration/ibm/50001001.json
similarity index 60%
copy from config/ibm/50001001_v2.json
copy to configuration/ibm/50001001.json
index ae7e7c6..502c0a9 100644
--- a/config/ibm/50001001_v2.json
+++ b/configuration/ibm/50001001.json
@@ -1,4 +1,6 @@
 {
+    "devTree": "conf-aspeed-bmc-ibm-rainier-p1.dtb",
+    "backupRestoreConfigPath": "/usr/share/vpd/backup_restore_50001001.json",
     "commonInterfaces": {
         "xyz.openbmc_project.Inventory.Decorator.Asset": {
             "PartNumber": {
@@ -24,32 +26,11 @@
             }
         }
     },
-    "muxes": [
-        {
-            "i2bus": "4",
-            "deviceaddress": "0xE0",
-            "holdidlepath": "/sys/bus/i2c/drivers/pca954x/4-0070/hold_idle"
-        },
-        {
-            "i2bus": "5",
-            "deviceaddress": "0xE0",
-            "holdidlepath": "/sys/bus/i2c/drivers/pca954x/5-0070/hold_idle"
-        },
-        {
-            "i2bus": "6",
-            "deviceaddress": "0xE0",
-            "holdidlepath": "/sys/bus/i2c/drivers/pca954x/6-0070/hold_idle"
-        },
-        {
-            "i2bus": "11",
-            "deviceaddress": "0xE0",
-            "holdidlepath": "/sys/bus/i2c/drivers/pca954x/11-0070/hold_idle"
-        }
-    ],
     "frus": {
         "/sys/bus/i2c/drivers/at24/8-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "isSystemVpd": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Board.Motherboard": null,
@@ -62,7 +43,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -71,7 +53,8 @@
                 }
             },
             {
-                "inventoryPath": "/system",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "isSystemVpd": true,
                 "copyRecords": ["VSYS"],
@@ -100,7 +83,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "isSystemVpd": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Chassis": {
@@ -116,7 +100,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -133,7 +118,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -150,7 +136,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -167,7 +154,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -184,7 +172,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -201,7 +190,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -218,7 +208,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -235,7 +226,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -252,7 +244,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -269,7 +262,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -286,7 +280,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -303,7 +298,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -319,7 +315,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot12/pcie_card12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot12/pcie_card12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -335,7 +332,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/powersupply0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -346,7 +344,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/powersupply1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -357,7 +356,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -387,7 +387,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -417,7 +418,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -447,7 +449,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -477,7 +480,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -507,7 +511,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -537,7 +542,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/tod_battery",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/tod_battery",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Battery": null,
                     "com.ibm.ipzvpd.Location": {
@@ -549,7 +555,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -562,7 +569,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -575,7 +583,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -588,7 +597,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -601,7 +611,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -614,7 +625,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -627,7 +639,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -640,7 +653,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -653,7 +667,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -666,7 +681,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -679,7 +695,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -692,7 +709,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -705,7 +723,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -718,7 +737,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -731,7 +751,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector15",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector15",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -744,7 +765,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector17",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector17",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -757,7 +779,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector18",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector18",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -772,7 +795,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/8-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Bmc": null,
                     "com.ibm.ipzvpd.Location": {
@@ -784,7 +808,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/ethernet0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/ethernet0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -806,7 +831,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/ethernet1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/ethernet1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -828,7 +854,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/usb0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/usb0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -841,7 +868,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/displayport0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/displayport0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -854,7 +882,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/usb1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/usb1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -869,7 +898,16 @@
         ],
         "/sys/bus/i2c/drivers/at24/0-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/tpm_wilson",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/tpm_wilson",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "CPU_TPM_CARD_PRESENT_N",
+                            "value": 0
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Tpm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -883,8 +921,17 @@
         ],
         "/sys/bus/i2c/drivers/at24/7-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/base_op_panel_blyth",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/base_op_panel_blyth",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "essentialFru": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "BLYTH_OPPANEL_PRESENCE_N",
+                            "value": 0
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Panel": null,
                     "com.ibm.ipzvpd.Location": {
@@ -898,25 +945,56 @@
         ],
         "/sys/bus/i2c/drivers/at24/7-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/lcd_op_panel_hill",
-                "devAddress": "7-0051",
-                "driverType": "at24",
-                "busType": "i2c",
-                "presence": {
-                    "pollingRequired": true,
-                    "pin": "RUSSEL_OPPANEL_PRESENCE_N",
-                    "value": 0,
-                    "gpioI2CAddress": "0-0020"
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/lcd_op_panel_hill",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "pollingRequired": {
+                    "hotPlugging": {
+                        "gpioPresence": {
+                            "pin": "RUSSEL_OPPANEL_PRESENCE_N",
+                            "value": 0
+                        }
+                    }
                 },
                 "preAction": {
-                    "pin": "RUSSEL_FW_I2C_ENABLE_N",
-                    "value": 0,
-                    "gpioI2CAddress": "0-0020"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "RUSSEL_OPPANEL_PRESENCE_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "RUSSEL_FW_I2C_ENABLE_N",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 7-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "RUSSEL_FW_I2C_ENABLE_N",
-                    "value": 1,
-                    "gpioI2CAddress": "0-0020"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 7-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "RUSSEL_FW_I2C_ENABLE_N",
+                            "value": 1
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "RUSSEL_FW_I2C_ENABLE_N",
+                            "value": 1
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "RUSSEL_FW_I2C_ENABLE_N",
+                            "value": 1
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Panel": null,
@@ -931,7 +1009,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/9-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/vdd_vrm0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vdd_vrm0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Vrm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -945,7 +1024,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/10-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/vdd_vrm1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vdd_vrm1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Vrm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -959,7 +1039,8 @@
         ],
         "/sys/bus/spi/drivers/at25/spi12.0/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "redundantEeprom": "/sys/bus/spi/drivers/at25/spi13.0/eeprom",
                 "cpuType": "primary",
                 "powerOffOnly": true,
@@ -976,7 +1057,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -985,7 +1067,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -994,7 +1077,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1003,7 +1087,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1012,7 +1097,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1021,7 +1107,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1030,7 +1117,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1039,7 +1127,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1048,7 +1137,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1057,7 +1147,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1066,7 +1157,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1075,7 +1167,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1084,7 +1177,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1093,7 +1187,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1102,7 +1197,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1113,7 +1209,8 @@
         ],
         "/sys/bus/spi/drivers/at25/spi22.0/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "redundantEeprom": "/sys/bus/spi/drivers/at25/spi23.0/eeprom",
                 "powerOffOnly": true,
                 "offset": 196608,
@@ -1129,7 +1226,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1138,7 +1236,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1147,7 +1246,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1156,7 +1256,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1165,7 +1266,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1174,7 +1276,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1183,7 +1286,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1192,7 +1296,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1201,7 +1306,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1210,7 +1316,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1219,7 +1326,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1228,7 +1336,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1237,7 +1346,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1246,7 +1356,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1255,7 +1366,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1266,7 +1378,8 @@
         ],
         "/sys/bus/spi/drivers/at25/spi32.0/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "redundantEeprom": "/sys/bus/spi/drivers/at25/spi33.0/eeprom",
                 "powerOffOnly": true,
                 "offset": 196608,
@@ -1282,7 +1395,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1291,7 +1405,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1300,7 +1415,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1309,7 +1425,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1318,7 +1435,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1327,7 +1445,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1336,7 +1455,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1345,7 +1465,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1354,7 +1475,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1363,7 +1485,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1372,7 +1495,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1381,7 +1505,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1390,7 +1515,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1399,7 +1525,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1408,7 +1535,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1419,7 +1547,8 @@
         ],
         "/sys/bus/spi/drivers/at25/spi42.0/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "redundantEeprom": "/sys/bus/spi/drivers/at25/spi43.0/eeprom",
                 "powerOffOnly": true,
                 "offset": 196608,
@@ -1435,7 +1564,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1444,7 +1574,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1453,7 +1584,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1462,7 +1594,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1471,7 +1604,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1480,7 +1614,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1489,7 +1624,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1498,7 +1634,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1507,7 +1644,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1516,7 +1654,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1525,7 +1664,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1534,7 +1674,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1543,7 +1684,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1552,7 +1694,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1561,7 +1704,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1570,29 +1714,58 @@
                 }
             }
         ],
-        "/sys/bus/i2c/drivers/at24/20-0050/eeprom": [
+        "/sys/bus/i2c/drivers/at24/4-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot0/pcie_card0",
-                "devAddress": "20-0050",
-                "pcaChipAddress": "20-0060",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT0_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT0_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT0_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 4-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 4-0060 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT0_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
+                "postAction": {
+                    "collection": {
+                        "ccin": ["2CE2", "58FF", "6B92", "6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 4-0060 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 4-0050 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT0_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT0_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT0_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1601,7 +1774,7 @@
                         "LocationCode": "Ufcs-P0-C0"
                     },
                     "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 20,
+                        "Bus": 4,
                         "Address": 80
                     },
                     "xyz.openbmc_project.Inventory.Decorator.Slot": {
@@ -1613,7 +1786,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_top",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1629,7 +1803,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_bot",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1645,29 +1820,58 @@
                 }
             }
         ],
-        "/sys/bus/i2c/drivers/at24/23-0050/eeprom": [
+        "/sys/bus/i2c/drivers/at24/5-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3/pcie_card3",
-                "devAddress": "23-0050",
-                "pcaChipAddress": "23-0060",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3/pcie_card3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT3_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT3_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT3_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 5-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 5-0060 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT3_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
+                "postAction": {
+                    "collection": {
+                        "ccin": ["2CE2", "58FF", "6B92", "6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 5-0060 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 5-0050 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT3_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT3_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT3_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1676,7 +1880,7 @@
                         "LocationCode": "Ufcs-P0-C3"
                     },
                     "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 23,
+                        "Bus": 5,
                         "Address": 80
                     },
                     "xyz.openbmc_project.Inventory.Decorator.Slot": {
@@ -1688,7 +1892,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_top",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1704,7 +1909,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_bot",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1720,29 +1926,58 @@
                 }
             }
         ],
-        "/sys/bus/i2c/drivers/at24/24-0051/eeprom": [
+        "/sys/bus/i2c/drivers/at24/5-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4/pcie_card4",
-                "devAddress": "24-0051",
-                "pcaChipAddress": "24-0061",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4/pcie_card4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT4_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT4_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT4_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 5-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 5-0061 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT4_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
+                "postAction": {
+                    "collection": {
+                        "ccin": ["2CE2", "58FF", "6B92", "6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 5-0061 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 5-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT4_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT4_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT4_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1751,7 +1986,7 @@
                         "LocationCode": "Ufcs-P0-C4"
                     },
                     "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 24,
+                        "Bus": 5,
                         "Address": 81
                     },
                     "xyz.openbmc_project.Inventory.Decorator.Slot": {
@@ -1763,7 +1998,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_top",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1779,7 +2015,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_bot",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1795,29 +2032,58 @@
                 }
             }
         ],
-        "/sys/bus/i2c/drivers/at24/29-0050/eeprom": [
+        "/sys/bus/i2c/drivers/at24/11-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10",
-                "devAddress": "29-0050",
-                "pcaChipAddress": "29-0060",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT10_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT10_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT10_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 11-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 11-0060 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT10_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "collection": {
+                        "ccin": ["2CE2", "58FF", "6B92", "6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 11-0060 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 11-0050 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT10_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT10_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT10_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1826,7 +2092,7 @@
                         "LocationCode": "Ufcs-P0-C10"
                     },
                     "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 29,
+                        "Bus": 11,
                         "Address": 80
                     },
                     "xyz.openbmc_project.Inventory.Decorator.Slot": {
@@ -1838,7 +2104,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_top",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1854,7 +2121,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_bot",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1870,7 +2138,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -1886,7 +2155,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -1902,7 +2172,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -1918,7 +2189,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -1934,29 +2206,47 @@
                 }
             }
         ],
-        "/sys/bus/i2c/drivers/at24/22-0052/eeprom": [
+        "/sys/bus/i2c/drivers/at24/4-0052/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot2/pcie_card2",
-                "devAddress": "22-0052",
-                "pcaChipAddress": "22-0062",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot2/pcie_card2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT2_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT2_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT2_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 4-0052 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT2_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 4-0052 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT2_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT2_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT2_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1964,7 +2254,7 @@
                         "LocationCode": "Ufcs-P0-C2"
                     },
                     "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 22,
+                        "Bus": 4,
                         "Address": 82
                     },
                     "xyz.openbmc_project.Inventory.Decorator.Slot": {
@@ -1976,28 +2266,47 @@
                 }
             }
         ],
-        "/sys/bus/i2c/drivers/at24/25-0053/eeprom": [
+        "/sys/bus/i2c/drivers/at24/6-0053/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot6/pcie_card6",
-                "devAddress": "25-0053",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot6/pcie_card6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT6_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT6_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT6_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 6-0053 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT6_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 6-0053 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT6_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT6_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT6_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2010,29 +2319,47 @@
                 }
             }
         ],
-        "/sys/bus/i2c/drivers/at24/26-0052/eeprom": [
+        "/sys/bus/i2c/drivers/at24/6-0052/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot7/pcie_card7",
-                "devAddress": "26-0052",
-                "pcaChipAddress": "26-0062",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot7/pcie_card7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT7_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT7_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT7_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 6-0052 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT7_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 6-0052 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT7_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT7_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT7_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2040,7 +2367,7 @@
                         "LocationCode": "Ufcs-P0-C7"
                     },
                     "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 26,
+                        "Bus": 6,
                         "Address": 82
                     },
                     "xyz.openbmc_project.Inventory.Decorator.Slot": {
@@ -2052,29 +2379,47 @@
                 }
             }
         ],
-        "/sys/bus/i2c/drivers/at24/27-0050/eeprom": [
+        "/sys/bus/i2c/drivers/at24/6-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot9/pcie_card9",
-                "devAddress": "27-0050",
-                "pcaChipAddress": "27-0060",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot9/pcie_card9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT9_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT9_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT9_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 6-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT9_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 6-0050 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT9_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT9_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT9_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2082,7 +2427,7 @@
                         "LocationCode": "Ufcs-P0-C9"
                     },
                     "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 27,
+                        "Bus": 6,
                         "Address": 80
                     },
                     "xyz.openbmc_project.Inventory.Decorator.Slot": {
@@ -2094,29 +2439,47 @@
                 }
             }
         ],
-        "/sys/bus/i2c/drivers/at24/30-0051/eeprom": [
+        "/sys/bus/i2c/drivers/at24/11-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11",
-                "devAddress": "30-0051",
-                "pcaChipAddress": "30-0061",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT11_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT11_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT11_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 11-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT11_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 11-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT11_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT11_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT11_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2125,7 +2488,7 @@
                         "LocationCode": "Ufcs-P0-C11"
                     },
                     "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 30,
+                        "Bus": 11,
                         "Address": 81
                     },
                     "xyz.openbmc_project.Inventory.Decorator.Slot": {
@@ -2137,7 +2500,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2153,7 +2517,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2169,7 +2534,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2185,7 +2551,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2201,29 +2568,47 @@
                 }
             }
         ],
-        "/sys/bus/i2c/drivers/at24/21-0051/eeprom": [
+        "/sys/bus/i2c/drivers/at24/4-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot1/pcie_card1",
-                "devAddress": "21-0051",
-                "pcaChipAddress": "21-0061",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot1/pcie_card1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT1_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT1_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT1_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 4-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT1_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 4-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT1_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT1_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT1_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2231,7 +2616,7 @@
                         "LocationCode": "Ufcs-P0-C1"
                     },
                     "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 21,
+                        "Bus": 4,
                         "Address": 81
                     },
                     "xyz.openbmc_project.Inventory.Decorator.Slot": {
@@ -2243,29 +2628,47 @@
                 }
             }
         ],
-        "/sys/bus/i2c/drivers/at24/28-0051/eeprom": [
+        "/sys/bus/i2c/drivers/at24/6-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8",
-                "devAddress": "28-0051",
-                "pcaChipAddress": "28-0061",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT8_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT8_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT8_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 6-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT8_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 6-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT8_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT8_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT8_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2274,7 +2677,7 @@
                         "LocationCode": "Ufcs-P0-C8"
                     },
                     "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
-                        "Bus": 28,
+                        "Bus": 6,
                         "Address": 81
                     },
                     "xyz.openbmc_project.Inventory.Decorator.Slot": {
@@ -2286,7 +2689,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2302,7 +2706,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2318,7 +2723,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2334,7 +2740,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2352,7 +2759,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/13-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.DiskBackplane": null,
                     "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
@@ -2365,7 +2773,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2382,13 +2791,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme2/dp0_drive2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme2/dp0_drive2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2403,7 +2810,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2420,13 +2828,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme3/dp0_drive3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme3/dp0_drive3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2441,7 +2847,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2458,13 +2865,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme4/dp0_drive4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme4/dp0_drive4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2479,7 +2884,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2496,13 +2902,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme5/dp0_drive5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme5/dp0_drive5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2517,7 +2921,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2531,7 +2936,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2545,7 +2951,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2559,7 +2966,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2573,7 +2981,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp0_cable0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp0_cable0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2584,7 +2993,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp0_cable1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp0_cable1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2597,7 +3007,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/14-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.DiskBackplane": null,
                     "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
@@ -2610,7 +3021,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2627,13 +3039,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme2/dp1_drive2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme2/dp1_drive2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2648,7 +3058,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2665,13 +3076,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme3/dp1_drive3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme3/dp1_drive3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2686,7 +3095,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2703,13 +3113,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme4/dp1_drive4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme4/dp1_drive4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2724,7 +3132,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2741,13 +3150,11 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme5/dp1_drive5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme5/dp1_drive5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2762,7 +3169,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2776,7 +3184,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2790,7 +3199,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2804,7 +3214,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2818,7 +3229,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp1_cable0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp1_cable0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2829,7 +3241,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp1_cable1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp1_cable1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2842,7 +3255,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/111-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-111/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2857,7 +3283,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2866,7 +3293,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2875,7 +3303,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2884,7 +3313,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2895,7 +3325,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/110-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-110/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2910,7 +3353,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2919,7 +3363,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2928,7 +3373,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2937,7 +3383,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2948,7 +3395,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/214-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-214/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2963,7 +3423,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2972,7 +3433,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2981,7 +3443,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2990,7 +3453,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3001,7 +3465,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/210-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-210/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3016,7 +3493,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3025,7 +3503,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3034,7 +3513,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3043,7 +3523,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3054,7 +3535,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/202-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-202/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3069,7 +3563,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3078,7 +3573,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3087,7 +3583,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3096,7 +3593,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3107,7 +3605,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/311-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm16",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-311/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3122,7 +3633,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3131,7 +3643,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3140,7 +3653,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3149,7 +3663,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3160,7 +3675,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/310-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm17",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-310/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3175,7 +3703,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3184,7 +3713,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3193,7 +3723,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3202,7 +3733,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3213,7 +3745,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/312-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm18",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-312/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3228,7 +3773,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3237,7 +3783,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3246,7 +3793,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3255,7 +3803,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3266,7 +3815,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/402-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm24",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-402/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3281,7 +3843,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3290,7 +3853,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3299,7 +3863,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3308,7 +3873,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3319,7 +3885,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/410-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm25",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-410/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3334,7 +3913,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3343,7 +3923,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3352,7 +3933,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3361,7 +3943,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3372,7 +3955,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/112-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-112/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3387,7 +3983,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3396,7 +3993,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3405,7 +4003,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3414,7 +4013,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3425,7 +4025,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/115-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-115/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3440,7 +4053,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3449,7 +4063,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3458,7 +4073,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3467,7 +4083,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3478,7 +4095,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/100-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-100/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3493,7 +4123,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3502,7 +4133,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3511,7 +4143,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3520,7 +4153,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3531,7 +4165,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/101-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-101/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3546,7 +4193,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3555,7 +4203,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3564,7 +4213,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3573,7 +4223,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3584,7 +4235,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/114-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-114/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3599,7 +4263,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3608,7 +4273,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3617,7 +4283,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3626,7 +4293,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3637,7 +4305,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/113-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-113/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3652,7 +4333,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3661,7 +4343,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3670,7 +4353,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3679,7 +4363,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3690,7 +4375,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/216-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm15",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-216/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3705,7 +4403,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3714,7 +4413,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3723,7 +4423,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3732,7 +4433,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3743,7 +4445,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/203-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-203/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3758,7 +4473,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3767,7 +4483,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3776,7 +4493,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3785,7 +4503,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3796,7 +4515,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/217-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-217/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3811,7 +4543,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3820,7 +4553,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3829,7 +4563,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3838,7 +4573,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3849,7 +4585,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/211-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-211/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3864,7 +4613,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3873,7 +4623,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3882,7 +4633,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3891,7 +4643,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3902,7 +4655,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/215-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-215/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3917,7 +4683,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3926,7 +4693,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3935,7 +4703,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3944,7 +4713,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3955,7 +4725,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/315-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm20",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-315/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3970,7 +4753,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3979,7 +4763,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3988,7 +4773,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3997,7 +4783,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4008,7 +4795,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/300-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm21",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-300/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4023,7 +4823,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4032,7 +4833,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4041,7 +4843,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4050,7 +4853,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4061,7 +4865,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/313-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm19",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-313/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4076,7 +4893,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4085,7 +4903,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4094,7 +4913,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4103,7 +4923,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4114,7 +4935,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/314-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm22",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-314/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4129,7 +4963,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4138,7 +4973,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4147,7 +4983,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4156,7 +4993,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4167,7 +5005,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/301-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm23",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-301/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4182,7 +5033,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4191,7 +5043,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4200,7 +5053,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4209,7 +5063,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4220,7 +5075,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/417-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm27",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-417/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4235,7 +5103,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4244,7 +5113,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4253,7 +5123,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4262,7 +5133,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4273,7 +5145,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/403-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm30",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-403/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4288,7 +5173,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4297,7 +5183,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4306,7 +5193,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4315,7 +5203,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4326,7 +5215,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/416-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm31",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-416/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4341,7 +5243,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4350,7 +5253,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4359,7 +5263,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4368,7 +5273,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4379,7 +5285,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/411-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm29",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-411/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4394,7 +5313,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4403,7 +5323,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4412,7 +5333,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4421,7 +5343,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4432,7 +5355,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/415-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm28",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-415/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4447,7 +5383,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4456,7 +5393,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4465,7 +5403,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4474,7 +5413,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4485,7 +5425,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/414-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm26",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-414/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4500,7 +5453,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4509,7 +5463,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4518,7 +5473,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4527,7 +5483,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
diff --git a/config/ibm/50001001_v2.json b/configuration/ibm/50001001_v2.json
similarity index 61%
rename from config/ibm/50001001_v2.json
rename to configuration/ibm/50001001_v2.json
index ae7e7c6..5e6621d 100644
--- a/config/ibm/50001001_v2.json
+++ b/configuration/ibm/50001001_v2.json
@@ -1,4 +1,6 @@
 {
+    "devTree": "conf-aspeed-bmc-ibm-rainier.dtb",
+    "backupRestoreConfigPath": "/usr/share/vpd/backup_restore_50001001.json",
     "commonInterfaces": {
         "xyz.openbmc_project.Inventory.Decorator.Asset": {
             "PartNumber": {
@@ -49,7 +51,8 @@
     "frus": {
         "/sys/bus/i2c/drivers/at24/8-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "isSystemVpd": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Board.Motherboard": null,
@@ -62,7 +65,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -71,7 +75,8 @@
                 }
             },
             {
-                "inventoryPath": "/system",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "isSystemVpd": true,
                 "copyRecords": ["VSYS"],
@@ -100,7 +105,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "isSystemVpd": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Chassis": {
@@ -116,7 +122,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -133,7 +140,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -150,7 +158,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -167,7 +176,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -184,7 +194,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -201,7 +212,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -218,7 +230,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -235,7 +248,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -252,7 +266,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -269,7 +284,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -286,7 +302,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -303,7 +320,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -314,12 +332,13 @@
                         "LocationCode": "Ufcs-P0-T18"
                     },
                     "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 3.0 port (front)"
+                        "PrettyName": "USB 3.0 port"
                     }
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot12/pcie_card12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot12/pcie_card12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -330,12 +349,13 @@
                         "SlotNumber": 12
                     },
                     "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 3.0 port (front)"
+                        "PrettyName": "USB 3.0 port"
                     }
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/powersupply0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -346,7 +366,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/powersupply1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -357,7 +378,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -387,7 +409,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -417,7 +440,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -447,7 +471,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -477,7 +502,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -507,7 +533,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -537,7 +564,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/tod_battery",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/tod_battery",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Battery": null,
                     "com.ibm.ipzvpd.Location": {
@@ -549,7 +577,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -562,7 +591,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -575,7 +605,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -588,7 +619,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -601,7 +633,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -614,7 +647,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -627,7 +661,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -640,7 +675,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -653,7 +689,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -666,7 +703,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -679,7 +717,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -692,7 +731,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -705,7 +745,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -718,7 +759,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -731,7 +773,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector15",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector15",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -744,7 +787,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector17",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector17",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -757,7 +801,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector18",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector18",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -765,14 +810,15 @@
                         "LocationCode": "Ufcs-P0-T18"
                     },
                     "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 3.0 port (front)"
+                        "PrettyName": "USB 3.0 port"
                     }
                 }
             }
         ],
         "/sys/bus/i2c/drivers/at24/8-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Bmc": null,
                     "com.ibm.ipzvpd.Location": {
@@ -784,7 +830,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/ethernet0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/ethernet0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -806,7 +853,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/ethernet1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/ethernet1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -828,7 +876,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/usb0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/usb0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -836,12 +885,13 @@
                         "LocationCode": "Ufcs-P0-C5-T2"
                     },
                     "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 3.0 port (rear)"
+                        "PrettyName": "USB 3.0 port"
                     }
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/displayport0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/displayport0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -854,7 +904,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/usb1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/usb1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -862,14 +913,23 @@
                         "LocationCode": "Ufcs-P0-C5-T4"
                     },
                     "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "USB 2.0 port (rear)"
+                        "PrettyName": "USB 2.0 port"
                     }
                 }
             }
         ],
         "/sys/bus/i2c/drivers/at24/0-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/tpm_wilson",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/tpm_wilson",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "CPU_TPM_CARD_PRESENT_N",
+                            "value": 0
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Tpm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -883,8 +943,17 @@
         ],
         "/sys/bus/i2c/drivers/at24/7-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/base_op_panel_blyth",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/base_op_panel_blyth",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "essentialFru": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "BLYTH_OPPANEL_PRESENCE_N",
+                            "value": 0
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Panel": null,
                     "com.ibm.ipzvpd.Location": {
@@ -898,25 +967,56 @@
         ],
         "/sys/bus/i2c/drivers/at24/7-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/lcd_op_panel_hill",
-                "devAddress": "7-0051",
-                "driverType": "at24",
-                "busType": "i2c",
-                "presence": {
-                    "pollingRequired": true,
-                    "pin": "RUSSEL_OPPANEL_PRESENCE_N",
-                    "value": 0,
-                    "gpioI2CAddress": "0-0020"
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/lcd_op_panel_hill",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "pollingRequired": {
+                    "hotPlugging": {
+                        "gpioPresence": {
+                            "pin": "RUSSEL_OPPANEL_PRESENCE_N",
+                            "value": 0
+                        }
+                    }
                 },
                 "preAction": {
-                    "pin": "RUSSEL_FW_I2C_ENABLE_N",
-                    "value": 0,
-                    "gpioI2CAddress": "0-0020"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "RUSSEL_OPPANEL_PRESENCE_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "RUSSEL_FW_I2C_ENABLE_N",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 7-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "RUSSEL_FW_I2C_ENABLE_N",
-                    "value": 1,
-                    "gpioI2CAddress": "0-0020"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 7-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "RUSSEL_FW_I2C_ENABLE_N",
+                            "value": 1
+                        }
+                    }
+                },
+                "postFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "RUSSEL_FW_I2C_ENABLE_N",
+                            "value": 1
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "RUSSEL_FW_I2C_ENABLE_N",
+                            "value": 1
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Panel": null,
@@ -931,7 +1031,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/9-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/vdd_vrm0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vdd_vrm0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Vrm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -945,7 +1046,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/10-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/vdd_vrm1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vdd_vrm1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Vrm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -959,7 +1061,8 @@
         ],
         "/sys/bus/spi/drivers/at25/spi12.0/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "redundantEeprom": "/sys/bus/spi/drivers/at25/spi13.0/eeprom",
                 "cpuType": "primary",
                 "powerOffOnly": true,
@@ -976,7 +1079,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -985,7 +1089,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -994,7 +1099,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1003,7 +1109,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1012,7 +1119,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1021,7 +1129,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1030,7 +1139,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1039,7 +1149,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1048,7 +1159,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1057,7 +1169,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1066,7 +1179,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1075,7 +1189,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1084,7 +1199,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1093,7 +1209,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1102,7 +1219,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1113,7 +1231,8 @@
         ],
         "/sys/bus/spi/drivers/at25/spi22.0/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "redundantEeprom": "/sys/bus/spi/drivers/at25/spi23.0/eeprom",
                 "powerOffOnly": true,
                 "offset": 196608,
@@ -1129,7 +1248,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1138,7 +1258,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1147,7 +1268,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1156,7 +1278,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1165,7 +1288,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1174,7 +1298,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1183,7 +1308,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1192,7 +1318,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1201,7 +1328,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1210,7 +1338,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1219,7 +1348,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1228,7 +1358,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1237,7 +1368,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1246,7 +1378,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1255,7 +1388,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1266,7 +1400,8 @@
         ],
         "/sys/bus/spi/drivers/at25/spi32.0/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "redundantEeprom": "/sys/bus/spi/drivers/at25/spi33.0/eeprom",
                 "powerOffOnly": true,
                 "offset": 196608,
@@ -1282,7 +1417,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1291,7 +1427,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1300,7 +1437,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1309,7 +1447,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1318,7 +1457,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1327,7 +1467,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1336,7 +1477,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1345,7 +1487,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1354,7 +1497,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1363,7 +1507,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1372,7 +1517,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1381,7 +1527,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1390,7 +1537,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1399,7 +1547,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1408,7 +1557,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu0/unit14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1419,7 +1569,8 @@
         ],
         "/sys/bus/spi/drivers/at25/spi42.0/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "redundantEeprom": "/sys/bus/spi/drivers/at25/spi43.0/eeprom",
                 "powerOffOnly": true,
                 "offset": 196608,
@@ -1435,7 +1586,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1444,7 +1596,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1453,7 +1606,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1462,7 +1616,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1471,7 +1626,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1480,7 +1636,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1489,7 +1646,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1498,7 +1656,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1507,7 +1666,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1516,7 +1676,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1525,7 +1686,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1534,7 +1696,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1543,7 +1706,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1552,7 +1716,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1561,7 +1726,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm1/cpu1/unit14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1572,27 +1738,60 @@
         ],
         "/sys/bus/i2c/drivers/at24/20-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot0/pcie_card0",
-                "devAddress": "20-0050",
-                "pcaChipAddress": "20-0060",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT0_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT0_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT0_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT0_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 20-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 20-0060 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT0_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
+                "postAction": {
+                    "collection": {
+                        "ccin": ["2CE2", "58FF", "6B92", "6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 20-0060 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 20-0050 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT0_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "postFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT0_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT0_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1613,7 +1812,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_top",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1629,7 +1829,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_bot",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1647,27 +1848,60 @@
         ],
         "/sys/bus/i2c/drivers/at24/23-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3/pcie_card3",
-                "devAddress": "23-0050",
-                "pcaChipAddress": "23-0060",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3/pcie_card3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT3_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT3_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT3_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT3_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 23-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 23-0060 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT3_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
+                "postAction": {
+                    "collection": {
+                        "ccin": ["2CE2", "58FF", "6B92", "6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 23-0060 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 23-0050 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT3_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "postFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT3_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT3_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1688,7 +1922,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_top",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1704,7 +1939,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_bot",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1722,27 +1958,60 @@
         ],
         "/sys/bus/i2c/drivers/at24/24-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4/pcie_card4",
-                "devAddress": "24-0051",
-                "pcaChipAddress": "24-0061",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4/pcie_card4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT4_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT4_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT4_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT4_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 24-0061 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT4_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
+                "postAction": {
+                    "collection": {
+                        "ccin": ["2CE2", "58FF", "6B92", "6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 24-0061 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 24-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT4_EXPANDER_PRSNT_N",
+                            "value": 0
+                        }
+                    }
+                },
+                "postFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT4_EXPANDER_PRSNT_N",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT4_EXPANDER_PRSNT_N",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1763,7 +2032,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_top",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1779,7 +2049,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_bot",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1797,27 +2068,60 @@
         ],
         "/sys/bus/i2c/drivers/at24/29-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10",
-                "devAddress": "29-0050",
-                "pcaChipAddress": "29-0060",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT10_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT10_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT10_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT10_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 29-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 29-0060 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT10_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "collection": {
+                        "ccin": ["2CE2", "58FF", "6B92", "6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 29-0060 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 29-0050 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT10_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "postFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT10_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT10_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1838,7 +2142,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_top",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1854,7 +2159,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_bot",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1870,7 +2176,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -1886,7 +2193,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -1902,7 +2210,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -1918,7 +2227,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -1936,27 +2246,49 @@
         ],
         "/sys/bus/i2c/drivers/at24/22-0052/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot2/pcie_card2",
-                "devAddress": "22-0052",
-                "pcaChipAddress": "22-0062",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot2/pcie_card2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT2_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT2_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT2_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT2_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 22-0052 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT2_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 22-0052 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT2_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "postFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT2_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT2_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1978,26 +2310,49 @@
         ],
         "/sys/bus/i2c/drivers/at24/25-0053/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot6/pcie_card6",
-                "devAddress": "25-0053",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot6/pcie_card6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT6_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT6_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT6_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT6_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 25-0053 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT6_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 25-0053 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT6_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "postFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT6_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT6_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2012,27 +2367,49 @@
         ],
         "/sys/bus/i2c/drivers/at24/26-0052/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot7/pcie_card7",
-                "devAddress": "26-0052",
-                "pcaChipAddress": "26-0062",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot7/pcie_card7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT7_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT7_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT7_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT7_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 26-0052 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT7_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 26-0052 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT7_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "postFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT7_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT7_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2054,27 +2431,49 @@
         ],
         "/sys/bus/i2c/drivers/at24/27-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot9/pcie_card9",
-                "devAddress": "27-0050",
-                "pcaChipAddress": "27-0060",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot9/pcie_card9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT9_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT9_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT9_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT9_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 27-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT9_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 27-0050 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT9_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "postFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT9_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT9_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2096,27 +2495,49 @@
         ],
         "/sys/bus/i2c/drivers/at24/30-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11",
-                "devAddress": "30-0051",
-                "pcaChipAddress": "30-0061",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT11_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT11_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT11_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT11_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 30-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT11_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 30-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT11_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "postFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT11_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT11_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2137,7 +2558,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2153,7 +2575,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2169,7 +2592,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2185,7 +2609,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2203,27 +2628,49 @@
         ],
         "/sys/bus/i2c/drivers/at24/21-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot1/pcie_card1",
-                "devAddress": "21-0051",
-                "pcaChipAddress": "21-0061",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot1/pcie_card1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT1_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT1_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "3-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT1_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT1_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 21-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT1_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "3-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 21-0051 /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT1_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "postFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT1_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT1_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2245,27 +2692,49 @@
         ],
         "/sys/bus/i2c/drivers/at24/28-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8",
-                "devAddress": "28-0051",
-                "pcaChipAddress": "28-0061",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT8_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
+                "replaceableAtRuntime": true,
                 "preAction": {
-                    "pin": "SLOT8_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT8_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT8_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 28-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT8_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 28-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "SLOT8_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
+                },
+                "postFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT8_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "SLOT8_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2286,7 +2755,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2302,7 +2772,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2318,7 +2789,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2334,7 +2806,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -2352,7 +2825,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/13-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.DiskBackplane": null,
                     "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
@@ -2365,7 +2839,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2382,13 +2857,14 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme2/dp0_drive2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme2/dp0_drive2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "devAddress": "13-0050",
                 "busType": "i2c",
                 "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2403,7 +2879,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2420,13 +2897,14 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme3/dp0_drive3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme3/dp0_drive3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "devAddress": "13-0050",
                 "busType": "i2c",
                 "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2441,7 +2919,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2458,13 +2937,14 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme4/dp0_drive4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme4/dp0_drive4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "devAddress": "13-0050",
                 "busType": "i2c",
                 "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2479,7 +2959,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2496,13 +2977,14 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme5/dp0_drive5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme5/dp0_drive5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "devAddress": "13-0050",
                 "busType": "i2c",
                 "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2517,7 +2999,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2531,7 +3014,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2545,7 +3029,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2559,7 +3044,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2573,7 +3059,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp0_cable0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp0_cable0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2584,7 +3071,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp0_cable1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp0_cable1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2597,7 +3085,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/14-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.DiskBackplane": null,
                     "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
@@ -2610,7 +3099,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2627,13 +3117,14 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme2/dp1_drive2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme2/dp1_drive2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "devAddress": "14-0050",
                 "busType": "i2c",
                 "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2648,7 +3139,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2665,13 +3157,14 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme3/dp1_drive3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme3/dp1_drive3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "devAddress": "14-0050",
                 "busType": "i2c",
                 "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2686,7 +3179,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2703,13 +3197,14 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme4/dp1_drive4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme4/dp1_drive4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "devAddress": "14-0050",
                 "busType": "i2c",
                 "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2724,7 +3219,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2741,13 +3237,14 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme5/dp1_drive5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme5/dp1_drive5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "devAddress": "14-0050",
                 "busType": "i2c",
                 "driverType": "at24",
-                "concurrentlyMaintainable": true,
+                "replaceableAtRuntime": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2762,7 +3259,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2776,7 +3274,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2790,7 +3289,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2804,7 +3304,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2818,7 +3319,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp1_cable0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp1_cable0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2829,7 +3331,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp1_cable1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp1_cable1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2842,7 +3345,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/111-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-111/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2857,7 +3372,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2866,7 +3382,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2875,7 +3392,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2884,7 +3402,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2895,7 +3414,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/110-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-110/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2910,7 +3441,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2919,7 +3451,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2928,7 +3461,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2937,7 +3471,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2948,7 +3483,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/214-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-214/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2963,7 +3510,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2972,7 +3520,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2981,7 +3530,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2990,7 +3540,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm10/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3001,7 +3552,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/210-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-210/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3016,7 +3579,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3025,7 +3589,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3034,7 +3599,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3043,7 +3609,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm9/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3054,7 +3621,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/202-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-202/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3069,7 +3648,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3078,7 +3658,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3087,7 +3668,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3096,7 +3678,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm8/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3107,7 +3690,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/311-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm16",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-311/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3122,7 +3717,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3131,7 +3727,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3140,7 +3737,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3149,7 +3747,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm16/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3160,7 +3759,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/310-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm17",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-310/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3175,7 +3786,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3184,7 +3796,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3193,7 +3806,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3202,7 +3816,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm17/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3213,7 +3828,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/312-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm18",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-312/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3228,7 +3855,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3237,7 +3865,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3246,7 +3875,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3255,7 +3885,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm18/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3266,7 +3897,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/402-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm24",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-402/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3281,7 +3924,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3290,7 +3934,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3299,7 +3944,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3308,7 +3954,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm24/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3319,7 +3966,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/410-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm25",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-410/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3334,7 +3993,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3343,7 +4003,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3352,7 +4013,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3361,7 +4023,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm25/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3372,7 +4035,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/112-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-112/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3387,7 +4062,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3396,7 +4072,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3405,7 +4082,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3414,7 +4092,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3425,7 +4104,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/115-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-115/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3440,7 +4131,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3449,7 +4141,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3458,7 +4151,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3467,7 +4161,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3478,7 +4173,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/100-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-100/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3493,7 +4200,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3502,7 +4210,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3511,7 +4220,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3520,7 +4230,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3531,7 +4242,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/101-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-101/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3546,7 +4269,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3555,7 +4279,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3564,7 +4289,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3573,7 +4299,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3584,7 +4311,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/114-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-114/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3599,7 +4338,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3608,7 +4348,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3617,7 +4358,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3626,7 +4368,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3637,7 +4380,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/113-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-113/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3652,7 +4407,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3661,7 +4417,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3670,7 +4427,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3679,7 +4437,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3690,7 +4449,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/216-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm15",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-216/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3705,7 +4476,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3714,7 +4486,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3723,7 +4496,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3732,7 +4506,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm15/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3743,7 +4518,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/203-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-203/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3758,7 +4545,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3767,7 +4555,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3776,7 +4565,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3785,7 +4575,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm14/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3796,7 +4587,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/217-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-217/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3811,7 +4614,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3820,7 +4624,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3829,7 +4634,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3838,7 +4644,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm11/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3849,7 +4656,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/211-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-211/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3864,7 +4683,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3873,7 +4693,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3882,7 +4703,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3891,7 +4713,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm13/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3902,7 +4725,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/215-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-215/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3917,7 +4752,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3926,7 +4762,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3935,7 +4772,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3944,7 +4782,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm12/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3955,7 +4794,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/315-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm20",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-315/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -3970,7 +4821,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3979,7 +4831,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3988,7 +4841,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -3997,7 +4851,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm20/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4008,7 +4863,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/300-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm21",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-300/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4023,7 +4890,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4032,7 +4900,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4041,7 +4910,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4050,7 +4920,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm21/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4061,7 +4932,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/313-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm19",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-313/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4076,7 +4959,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4085,7 +4969,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4094,7 +4979,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4103,7 +4989,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm19/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4114,7 +5001,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/314-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm22",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-314/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4129,7 +5028,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4138,7 +5038,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4147,7 +5048,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4156,7 +5058,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm22/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4167,7 +5070,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/301-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm23",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-301/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4182,7 +5097,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4191,7 +5107,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4200,7 +5117,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4209,7 +5127,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm23/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4220,7 +5139,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/417-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm27",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-417/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4235,7 +5166,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4244,7 +5176,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4253,7 +5186,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4262,7 +5196,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm27/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4273,7 +5208,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/403-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm30",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-403/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4288,7 +5235,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4297,7 +5245,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4306,7 +5255,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4315,7 +5265,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm30/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4326,7 +5277,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/416-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm31",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-416/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4341,7 +5304,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4350,7 +5314,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4359,7 +5324,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4368,7 +5334,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm31/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4379,7 +5346,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/411-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm29",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-411/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4394,7 +5373,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4403,7 +5383,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4412,7 +5393,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4421,7 +5403,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm29/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4432,7 +5415,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/415-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm28",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-415/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4447,7 +5442,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4456,7 +5452,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4465,7 +5462,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4474,7 +5472,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm28/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4485,7 +5484,19 @@
         ],
         "/sys/bus/i2c/drivers/at24/414-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm26",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM1_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-414/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -4500,7 +5511,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4509,7 +5521,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4518,7 +5531,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -4527,7 +5541,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm26/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
diff --git a/config/ibm/50001002.json b/configuration/ibm/50001002.json
similarity index 68%
rename from config/ibm/50001002.json
rename to configuration/ibm/50001002.json
index 0f5a0ab..6699efa 100644
--- a/config/ibm/50001002.json
+++ b/configuration/ibm/50001002.json
@@ -1,4 +1,6 @@
 {
+    "devTree": "conf-aspeed-bmc-ibm-rainier-1s4u.dtb",
+    "backupRestoreConfigPath": "/usr/share/vpd/backup_restore_50001002.json",
     "commonInterfaces": {
         "xyz.openbmc_project.Inventory.Decorator.Asset": {
             "PartNumber": {
@@ -39,7 +41,8 @@
     "frus": {
         "/sys/bus/i2c/drivers/at24/8-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "isSystemVpd": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Board.Motherboard": null,
@@ -52,7 +55,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -61,7 +65,8 @@
                 }
             },
             {
-                "inventoryPath": "/system",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "isSystemVpd": true,
                 "copyRecords": ["VSYS"],
@@ -90,7 +95,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "isSystemVpd": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Chassis": {
@@ -106,24 +112,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.Control.Host.PCIeLink": null,
-                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
-                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C6"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI adapter"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -140,7 +130,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -157,7 +148,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -174,7 +166,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -191,7 +184,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -208,7 +202,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -224,7 +219,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot12/pcie_card12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot12/pcie_card12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -240,7 +236,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/powersupply0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -251,7 +248,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/powersupply1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -262,7 +260,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/powersupply2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -273,7 +272,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/powersupply3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -284,7 +284,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -314,7 +315,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -344,7 +346,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -374,7 +377,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/fan4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "synthesized": true,
@@ -404,7 +408,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/tod_battery",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/tod_battery",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Battery": null,
                     "com.ibm.ipzvpd.Location": {
@@ -416,59 +421,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Connector for OpenCAPI Port DCM-0 P0 OP3B"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Connector for OpenCAPI Port DCM-0 P0 OP3A"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T2"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Connector for OpenCAPI Port DCM-0 P1 OP0B"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-T3"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "Connector for OpenCAPI Port DCM-0 P1 OP0A"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/connector4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -481,7 +435,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -494,7 +449,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -507,7 +463,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -520,7 +477,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -533,7 +491,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -546,7 +505,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -559,7 +519,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -572,7 +533,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector15",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector15",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -585,7 +547,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector17",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector17",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -598,7 +561,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/connector18",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector18",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -611,7 +575,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/rdx0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/rdx0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "extraInterfaces": {
@@ -625,7 +590,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/rdx0/media0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/rdx0/media0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "extraInterfaces": {
@@ -639,7 +605,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/rdx0/rdx_power_connector",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/rdx0/rdx_power_connector",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "extraInterfaces": {
@@ -653,7 +620,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/rdx0/rdx_usb_connector",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/rdx0/rdx_usb_connector",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
                 "extraInterfaces": {
@@ -669,7 +637,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/8-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Bmc": null,
                     "com.ibm.ipzvpd.Location": {
@@ -681,7 +650,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/ethernet0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/ethernet0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -703,7 +673,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/ethernet1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/ethernet1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -725,7 +696,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/usb0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/usb0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -738,7 +710,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/displayport0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/displayport0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -751,7 +724,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/usb1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/ebmc_card_bmc/usb1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -766,7 +740,16 @@
         ],
         "/sys/bus/i2c/drivers/at24/0-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/tpm_wilson",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/tpm_wilson",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "CPU_TPM_CARD_PRESENT_N",
+                            "value": 0
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Tpm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -780,7 +763,16 @@
         ],
         "/sys/bus/i2c/drivers/at24/7-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/base_op_panel_blyth",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/base_op_panel_blyth",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "BLYTH_OPPANEL_PRESENCE_N",
+                            "value": 0
+                        }
+                    }
+                },
                 "essentialFru": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Panel": null,
@@ -795,25 +787,38 @@
         ],
         "/sys/bus/i2c/drivers/at24/7-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/lcd_op_panel_hill",
-                "devAddress": "7-0051",
-                "driverType": "at24",
-                "busType": "i2c",
-                "presence": {
-                    "pollingRequired": true,
-                    "pin": "RUSSEL_OPPANEL_PRESENCE_N",
-                    "value": 0,
-                    "gpioI2CAddress": "0-0020"
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/lcd_op_panel_hill",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "pollingRequired": {
+                    "hotPlugging": {
+                        "gpioPresence": {
+                            "pin": "RUSSEL_OPPANEL_PRESENCE_N",
+                            "value": 0
+                        }
+                    }
                 },
                 "preAction": {
-                    "pin": "RUSSEL_FW_I2C_ENABLE_N",
-                    "value": 0,
-                    "gpioI2CAddress": "0-0020"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "RUSSEL_OPPANEL_PRESENCE_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "RUSSEL_FW_I2C_ENABLE_N",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 7-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "RUSSEL_FW_I2C_ENABLE_N",
-                    "value": 1,
-                    "gpioI2CAddress": "0-0020"
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "RUSSEL_FW_I2C_ENABLE_N",
+                            "value": 1
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Panel": null,
@@ -828,7 +833,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/9-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/vdd_vrm0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vdd_vrm0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Vrm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -842,7 +848,8 @@
         ],
         "/sys/bus/spi/drivers/at25/spi12.0/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "redundantEeprom": "/sys/bus/spi/drivers/at25/spi13.0/eeprom",
                 "cpuType": "primary",
                 "powerOffOnly": true,
@@ -859,7 +866,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -868,7 +876,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -877,7 +886,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -886,7 +896,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -895,7 +906,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -904,7 +916,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -913,7 +926,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -922,7 +936,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -931,7 +946,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -940,7 +956,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -949,7 +966,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -958,7 +976,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -967,7 +986,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -976,7 +996,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -985,7 +1006,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu0/unit14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -996,7 +1018,8 @@
         ],
         "/sys/bus/spi/drivers/at25/spi22.0/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "redundantEeprom": "/sys/bus/spi/drivers/at25/spi23.0/eeprom",
                 "powerOffOnly": true,
                 "offset": 196608,
@@ -1012,7 +1035,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1021,7 +1045,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1030,7 +1055,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1039,7 +1065,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1048,7 +1075,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1057,7 +1085,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1066,7 +1095,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1075,7 +1105,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1084,7 +1115,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit8",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1093,7 +1125,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit9",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1102,7 +1135,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit10",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1111,7 +1145,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit11",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1120,7 +1155,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit12",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1129,7 +1165,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit13",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1138,7 +1175,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dcm0/cpu1/unit14",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -1149,27 +1187,39 @@
         ],
         "/sys/bus/i2c/drivers/at24/29-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10",
-                "devAddress": "29-0050",
-                "pcaChipAddress": "29-0060",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
                 "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT10_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
                 "preAction": {
-                    "pin": "SLOT10_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT10_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT10_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 29-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT10_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "postAction": {
+                    "collection": {
+                        "systemCmd": {
+                            "cmd": "echo 29-0060 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT10_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1190,7 +1240,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_top",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1206,7 +1257,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_bot",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["2CE2", "58FF", "6B92", "6B99"],
@@ -1222,7 +1274,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -1238,7 +1291,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -1254,7 +1308,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -1270,7 +1325,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -1286,63 +1342,34 @@
                 }
             }
         ],
-        "/sys/bus/i2c/drivers/at24/25-0053/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot6/pcie_card6",
-                "devAddress": "25-0053",
-                "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT6_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
-                "preAction": {
-                    "pin": "SLOT6_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
-                },
-                "postActionFail": {
-                    "pin": "SLOT6_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C6"
-                    },
-                    "xyz.openbmc_project.Inventory.Item": {
-                        "PrettyName": "OpenCAPI adapter"
-                    }
-                }
-            }
-        ],
         "/sys/bus/i2c/drivers/at24/26-0052/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot7/pcie_card7",
-                "devAddress": "26-0052",
-                "pcaChipAddress": "26-0062",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot7/pcie_card7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
                 "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT7_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
                 "preAction": {
-                    "pin": "SLOT7_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT7_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT7_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 26-0052 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT7_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT7_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1364,27 +1391,32 @@
         ],
         "/sys/bus/i2c/drivers/at24/27-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot9/pcie_card9",
-                "devAddress": "27-0050",
-                "pcaChipAddress": "27-0060",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot9/pcie_card9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
                 "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT9_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
                 "preAction": {
-                    "pin": "SLOT9_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT9_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT9_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 27-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT9_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT9_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1406,27 +1438,32 @@
         ],
         "/sys/bus/i2c/drivers/at24/30-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11",
-                "devAddress": "30-0051",
-                "pcaChipAddress": "30-0061",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
                 "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT11_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
                 "preAction": {
-                    "pin": "SLOT11_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT11_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT11_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 30-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT11_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT11_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1447,7 +1484,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -1463,7 +1501,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -1479,7 +1518,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -1495,7 +1535,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/c11_connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -1513,27 +1554,32 @@
         ],
         "/sys/bus/i2c/drivers/at24/28-0051/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8",
-                "devAddress": "28-0051",
-                "pcaChipAddress": "28-0061",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "replaceableAtStandby": true,
-                "busType": "i2c",
-                "driverType": "at24",
                 "concurrentlyMaintainable": true,
-                "presence": {
-                    "pin": "SLOT8_EXPANDER_PRSNT_N",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
-                },
                 "preAction": {
-                    "pin": "SLOT8_PRSNT_EN_RSVD",
-                    "value": 1,
-                    "gpioI2CAddress": "8-0061"
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "SLOT8_EXPANDER_PRSNT_N",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "SLOT8_PRSNT_EN_RSVD",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 28-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
                 },
-                "postActionFail": {
-                    "pin": "SLOT8_PRSNT_EN_RSVD",
-                    "value": 0,
-                    "gpioI2CAddress": "8-0061"
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "SLOT8_PRSNT_EN_RSVD",
+                            "value": 0
+                        }
+                    }
                 },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1554,7 +1600,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -1570,7 +1617,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -1586,7 +1634,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -1602,7 +1651,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/c8_connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "ccin": ["6B87"],
@@ -1620,7 +1670,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/13-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.DiskBackplane": null,
                     "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
@@ -1633,7 +1684,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -1650,12 +1702,10 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme0/dp0_drive0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme0/dp0_drive0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
                 "concurrentlyMaintainable": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1671,7 +1721,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -1688,12 +1739,10 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme1/dp0_drive1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme1/dp0_drive1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
                 "concurrentlyMaintainable": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1709,7 +1758,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -1726,12 +1776,10 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme2/dp0_drive2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme2/dp0_drive2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
                 "concurrentlyMaintainable": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1747,7 +1795,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -1764,12 +1813,10 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme3/dp0_drive3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme3/dp0_drive3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
                 "concurrentlyMaintainable": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1785,7 +1832,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -1802,12 +1850,10 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme4/dp0_drive4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme4/dp0_drive4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
                 "concurrentlyMaintainable": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1823,7 +1869,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -1840,12 +1887,10 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme5/dp0_drive5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme5/dp0_drive5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
                 "concurrentlyMaintainable": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1861,7 +1906,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -1878,12 +1924,10 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme6/dp0_drive6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme6/dp0_drive6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
                 "concurrentlyMaintainable": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1899,7 +1943,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -1916,12 +1961,10 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme7/dp0_drive7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/nvme7/dp0_drive7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "13-0050",
-                "busType": "i2c",
-                "driverType": "at24",
                 "concurrentlyMaintainable": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -1937,7 +1980,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -1951,7 +1995,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -1965,7 +2010,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -1979,7 +2025,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -1993,7 +2040,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2007,7 +2055,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/dp0_connector5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2021,7 +2070,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp0_cable0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp0_cable0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2032,7 +2082,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp0_cable1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp0_cable1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2043,7 +2094,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp0_cable2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp0_cable2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2054,7 +2106,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp0_cable3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp0_cable3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2067,7 +2120,8 @@
         ],
         "/sys/bus/i2c/drivers/at24/14-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.DiskBackplane": null,
                     "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
@@ -2080,7 +2134,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2097,12 +2152,10 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme0/dp1_drive0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme0/dp1_drive0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
                 "concurrentlyMaintainable": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2118,7 +2171,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2135,12 +2189,10 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme1/dp1_drive1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme1/dp1_drive1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
                 "concurrentlyMaintainable": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2156,7 +2208,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2173,12 +2226,10 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme2/dp1_drive2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme2/dp1_drive2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
                 "concurrentlyMaintainable": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2194,7 +2245,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2211,12 +2263,10 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme3/dp1_drive3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme3/dp1_drive3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
                 "concurrentlyMaintainable": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2232,7 +2282,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2249,12 +2300,10 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme4/dp1_drive4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme4/dp1_drive4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
                 "concurrentlyMaintainable": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2270,7 +2319,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2287,12 +2337,10 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme5/dp1_drive5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme5/dp1_drive5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
                 "concurrentlyMaintainable": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2308,7 +2356,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2325,12 +2374,10 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme6/dp1_drive6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme6/dp1_drive6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
                 "concurrentlyMaintainable": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2346,7 +2393,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "com.ibm.Control.Host.PCIeLink": null,
@@ -2363,12 +2411,10 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme7/dp1_drive7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/nvme7/dp1_drive7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "embedded": false,
-                "devAddress": "14-0050",
-                "busType": "i2c",
-                "driverType": "at24",
                 "concurrentlyMaintainable": true,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
@@ -2384,7 +2430,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2398,7 +2445,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2412,7 +2460,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2426,7 +2475,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2440,7 +2490,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2454,7 +2505,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/dp1_connector5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1/dp1_connector5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Connector": null,
@@ -2468,7 +2520,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp1_cable0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp1_cable0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2479,7 +2532,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp1_cable1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp1_cable1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2490,7 +2544,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp1_cable2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp1_cable2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2501,7 +2556,8 @@
                 }
             },
             {
-                "inventoryPath": "/cables/dp1_cable3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/cables/dp1_cable3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "noprime": true,
                 "extraInterfaces": {
@@ -2514,7 +2570,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/111-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-111/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2529,7 +2598,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2538,7 +2608,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2547,7 +2618,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2556,7 +2628,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm0/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2567,7 +2640,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/110-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-110/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2582,7 +2668,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2591,7 +2678,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2600,7 +2688,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2609,7 +2698,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm1/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2620,7 +2710,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/112-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-112/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2635,7 +2738,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2644,7 +2748,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2653,7 +2758,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2662,7 +2768,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm2/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2673,7 +2780,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/115-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-115/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2688,7 +2808,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2697,7 +2818,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2706,7 +2828,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2715,7 +2838,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm4/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2726,7 +2850,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/100-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-100/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2741,7 +2878,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2750,7 +2888,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2759,7 +2898,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2768,7 +2908,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm5/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2779,7 +2920,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/101-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-101/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2794,7 +2948,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2803,7 +2958,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2812,7 +2968,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2821,7 +2978,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm7/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2832,7 +2990,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/114-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-114/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2847,7 +3018,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2856,7 +3028,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2865,7 +3038,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2874,7 +3048,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm6/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2885,7 +3060,20 @@
         ],
         "/sys/bus/i2c/drivers/at24/113-0050/eeprom": [
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "P10_DCM0_PRES",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-113/new_device"
+                        }
+                    }
+                },
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item.Dimm": null,
                     "com.ibm.ipzvpd.Location": {
@@ -2900,7 +3088,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit0",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2909,7 +3098,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit1",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2918,7 +3108,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit2",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
@@ -2927,7 +3118,8 @@
                 }
             },
             {
-                "inventoryPath": "/system/chassis/motherboard/dimm3/unit3",
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
                 "inherit": false,
                 "extraInterfaces": {
                     "xyz.openbmc_project.Inventory.Item": {
diff --git a/configuration/ibm/50003000.json b/configuration/ibm/50003000.json
new file mode 100644
index 0000000..f47ffc9
--- /dev/null
+++ b/configuration/ibm/50003000.json
@@ -0,0 +1,8514 @@
+{
+    "devTree": "conf-aspeed-bmc-ibm-everest.dtb",
+    "backupRestoreConfigPath": "/usr/share/vpd/backup_restore_50003000.json",
+    "commonInterfaces": {
+        "xyz.openbmc_project.Inventory.Decorator.Asset": {
+            "PartNumber": {
+                "recordName": "VINI",
+                "keywordName": "PN"
+            },
+            "SerialNumber": {
+                "recordName": "VINI",
+                "keywordName": "SN"
+            },
+            "SparePartNumber": {
+                "recordName": "VINI",
+                "keywordName": "FN"
+            },
+            "Model": {
+                "recordName": "VINI",
+                "keywordName": "CC"
+            },
+            "BuildDate": {
+                "recordName": "VR10",
+                "keywordName": "DC",
+                "encoding": "DATE"
+            }
+        }
+    },
+    "muxes": [
+        {
+            "i2bus": "4",
+            "deviceaddress": "0xE0",
+            "holdidlepath": "/sys/bus/i2c/drivers/pca954x/4-0070/hold_idle"
+        },
+        {
+            "i2bus": "5",
+            "deviceaddress": "0xE0",
+            "holdidlepath": "/sys/bus/i2c/drivers/pca954x/5-0070/hold_idle"
+        },
+        {
+            "i2bus": "6",
+            "deviceaddress": "0xE0",
+            "holdidlepath": "/sys/bus/i2c/drivers/pca954x/6-0070/hold_idle"
+        }
+    ],
+    "frus": {
+        "/sys/bus/i2c/drivers/at24/8-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "isSystemVpd": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Board.Motherboard": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "System backplane"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Oscillator Reference Clock"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "isSystemVpd": true,
+                "copyRecords": ["VSYS"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.System": null,
+                    "xyz.openbmc_project.Inventory.Decorator.Asset": {
+                        "SerialNumber": {
+                            "recordName": "VSYS",
+                            "keywordName": "SE"
+                        },
+                        "Model": {
+                            "recordName": "VSYS",
+                            "keywordName": "TM"
+                        },
+                        "SubModel": {
+                            "recordName": "VSYS",
+                            "keywordName": "BR"
+                        }
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Umts"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "System"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "isSystemVpd": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Chassis": {
+                        "Type": "xyz.openbmc_project.Inventory.Item.Chassis.ChassisType.RackMount"
+                    },
+                    "xyz.openbmc_project.Inventory.Item.Global": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Chassis"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C2"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C3"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C4"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C5"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C6"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C7"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C8"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C9"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C10"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C11"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.OEM"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "USB 3.0 port 2 (front)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot12/pcie_card12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 12
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "USB 3.0 port 2 (front)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "synthesized": true,
+                "extraInterfaces": {
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-E0"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "synthesized": true,
+                "extraInterfaces": {
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-E1"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "synthesized": true,
+                "extraInterfaces": {
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-E2"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "synthesized": true,
+                "extraInterfaces": {
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-E3"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Open CAPI Conn 0"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Open CAPI Conn 1"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-T2"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Open CAPI Conn 2"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-T3"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Open CAPI Conn 3"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-T4"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Open CAPI Conn 4"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-T5"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Open CAPI Conn 5"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/8-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/bmc",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Bmc": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "eBMC card assembly"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/bmc/ethernet0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Item.Ethernet": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C0-T2"
+                    },
+                    "xyz.openbmc_project.Inventory.Item.NetworkInterface": {
+                        "MACAddress": {
+                            "recordName": "VCFG",
+                            "keywordName": "Z0",
+                            "encoding": "MAC"
+                        }
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "HMC port 1"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/bmc/ethernet1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Item.Ethernet": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C0-T3"
+                    },
+                    "xyz.openbmc_project.Inventory.Item.NetworkInterface": {
+                        "MACAddress": {
+                            "recordName": "VCFG",
+                            "keywordName": "Z1",
+                            "encoding": "MAC"
+                        }
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "HMC port 2"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/bmc/usb2_conn0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C0-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "USB 3.0 port 1 (rear)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/bmc/usb2_conn1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C0-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "USB 3.0 port 2 (rear)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/bmc/usb3_conn0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C0-T4"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "USB 2.0 port 1 (rear)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/bmc/usb3_conn1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C0-T5"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "USB 2.0 port 2 (rear)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/bmc/tod_battery",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Battery": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C0-E0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Time-of-day battery"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/9-0052/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-vrm-c54",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C54"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Miscellaneous voltage regulator module for system processor module 3"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/9-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-vrm-c55",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C55"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor voltage regulator module for system processor module 3"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/9-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-vrm-c57",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C57"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor voltage regulator module for system processor module 3"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/9-0053/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-vrm-c58",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C58"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Shared voltage regulator module"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/10-0052/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-vrm-c12",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C12"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Miscellaneous voltage regulator module for system processor module 1"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/10-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-vrm-c13",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C13"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor voltage regulator module for system processor module 1"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/10-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-vrm-c15",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C15"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor voltage regulator module for system processor module 1"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/10-0053/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-vrm-c16",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C16"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Shared voltage regulator module"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/11-0053/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-vrm-c59",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C59"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "I/O and standby voltage regulator module"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/11-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-vrm-c60",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C60"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor voltage regulator module for system processor module 0"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/11-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-vrm-c62",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C62"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor voltage regulator module for system processor module 0"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/11-0052/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm15",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-vrm-c63",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C63"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Miscellaneous voltage regulator module for system processor module 0"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/13-0053/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-vrm-c17",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C17"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "I/O and standby voltage regulator module"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/13-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-vrm-c18",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C18"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor voltage regulator module for system processor module 2"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/13-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-vrm-c20",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C20"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor voltage regulator module for system processor module 2"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/13-0052/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-vrm-c21",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C21"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Miscellaneous voltage regulator module for system processor module 2"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/0-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/tpm",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-tpm",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Tpm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C96"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Trusted platform module card"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/spi/drivers/at25/spi12.0/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi13.0/eeprom",
+                "offset": 196608,
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C61"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "System processor module 0"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Quad"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "High speed SMP/OpenCAPI Link"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller Channel"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor To Memory Buffer Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Nest Memory Management Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Accelerator"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCI Express controllers"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe host bridge (PHB)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OBUS End Point"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Cache-Only Core"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/spi/drivers/at25/spi22.0/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi23.0/eeprom",
+                "offset": 196608,
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C61"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "System processor module 0"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Quad"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "High speed SMP/OpenCAPI Link"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller Channel"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor To Memory Buffer Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Nest Memory Management Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Accelerator"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCI Express controllers"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe host bridge (PHB)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OBUS End Point"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Cache-Only Core"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/spi/drivers/at25/spi32.0/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi33.0/eeprom",
+                "cpuType": "primary",
+                "offset": 196608,
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C14"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "System processor module 1"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Quad"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "High speed SMP/OpenCAPI Link"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller Channel"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor To Memory Buffer Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Nest Memory Management Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Accelerator"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCI Express controllers"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe host bridge (PHB)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OBUS End Point"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Cache-Only Core"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/spi/drivers/at25/spi42.0/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi43.0/eeprom",
+                "offset": 196608,
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C14"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "System processor module 1"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Quad"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "High speed SMP/OpenCAPI Link"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller Channel"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor To Memory Buffer Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Nest Memory Management Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Accelerator"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCI Express controllers"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe host bridge (PHB)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OBUS End Point"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Cache-Only Core"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/spi/drivers/at25/spi52.0/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi53.0/eeprom",
+                "offset": 196608,
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C19"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "System processor module 2"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Quad"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "High speed SMP/OpenCAPI Link"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller Channel"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor To Memory Buffer Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Nest Memory Management Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Accelerator"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCI Express controllers"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe host bridge (PHB)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OBUS End Point"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Cache-Only Core"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/spi/drivers/at25/spi62.0/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi63.0/eeprom",
+                "offset": 196608,
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C19"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "System processor module 2"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Quad"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "High speed SMP/OpenCAPI Link"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller Channel"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor To Memory Buffer Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Nest Memory Management Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Accelerator"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCI Express controllers"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe host bridge (PHB)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OBUS End Point"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Cache-Only Core"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/spi/drivers/at25/spi72.0/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi73.0/eeprom",
+                "offset": 196608,
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C56"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "System processor module 3"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Quad"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "High speed SMP/OpenCAPI Link"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller Channel"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor To Memory Buffer Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Nest Memory Management Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Accelerator"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCI Express controllers"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe host bridge (PHB)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OBUS End Point"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Cache-Only Core"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/spi/drivers/at25/spi82.0/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi83.0/eeprom",
+                "offset": 196608,
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C56"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "System processor module 3"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Quad"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "High speed SMP/OpenCAPI Link"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller Channel"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor To Memory Buffer Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Nest Memory Management Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Accelerator"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCI Express controllers"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe host bridge (PHB)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OBUS End Point"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Cache-Only Core"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/27-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-dasd",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.DiskBackplane": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Drive backplane"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 0"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme0/drive0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "replaceableAtRuntime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C0"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 1
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 0"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 1"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme1/drive1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "replaceableAtRuntime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C1"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 2
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 1"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C2"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 2"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme2/drive2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "replaceableAtRuntime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C2"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 3
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 2"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C3"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 3"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme3/drive3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "replaceableAtRuntime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C3"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 4
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 3"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C4"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 4"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme4/drive4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "replaceableAtRuntime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C4"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 5
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 4"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C5"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 5"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme5/drive5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "replaceableAtRuntime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C5"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 6
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 5"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C6"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 6"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme6/drive6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "replaceableAtRuntime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C6"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 7
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 6"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C7"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 7"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme7/drive7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "replaceableAtRuntime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C7"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 8
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 7"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C8"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 8"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme8/drive8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "replaceableAtRuntime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C8"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 9
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 8"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C9"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 9"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme9/drive9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "replaceableAtRuntime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C9"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 10
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 9"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/dp_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "USB 3.0 port 1 (front)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/dp_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "USB 3.0 port 2 (front)"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/28-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/panel1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "essentialFru": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-lcd-op",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Panel": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-D1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Control panel display"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/29-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/panel0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "essentialFru": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-base-op",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Panel": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-D0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Control panel"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/31-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "handlePresence": false,
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-fan3",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Fan": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-A0"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/32-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "handlePresence": false,
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-fan2",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Fan": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-A1"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/33-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "handlePresence": false,
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-fan1",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Fan": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-A2"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/34-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "handlePresence": false,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-fan0",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Fan": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-A3"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/16-0052/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot1/pcie_card1",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card1",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card1",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 16-0052 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 16-0052 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "collection": {
+                        "ccin": ["6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 16-0062 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 16-0062 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card1",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card1",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card1",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C1"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 16,
+                        "Address": 82
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 1
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot1/pcie_card1/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C1-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot1/pcie_card1/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C1-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/17-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot2/pcie_card2",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card2",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card2",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 17-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 17-0050 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "collection": {
+                        "ccin": ["6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 17-0060 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 17-0060 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card2",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card2",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card2",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C2"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 17,
+                        "Address": 80
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 2
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot2/pcie_card2/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C2-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot2/pcie_card2/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C2-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/18-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3/pcie_card3",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card3",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card3",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 18-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 18-0051 > /sys/bus/i2c/drivers/leds-pca955x24/unbind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "collection": {
+                        "ccin": ["6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 18-0061 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 18-0061 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card3",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card3",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card3",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C3"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 18,
+                        "Address": 81
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 3
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C3-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C3-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/19-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4/pcie_card4",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card4",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card4",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 19-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 19-0050 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "collection": {
+                        "ccin": ["6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 19-0060 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 19-0060 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card4",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card4",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card4",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C4"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 19,
+                        "Address": 80
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 4
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C4-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C4-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/20-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot5/pcie_card5",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card5",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card5",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 20-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 20-0051 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "collection": {
+                        "ccin": ["6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 20-0061 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 20-0061 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card5",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card5",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card5",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C5"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 20,
+                        "Address": 81
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 5
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot5/pcie_card5/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C5-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot5/pcie_card5/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C5-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/21-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot6/pcie_card6",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card6",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card6",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 21-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 21-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card6",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card6",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card6",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C6"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 21,
+                        "Address": 81
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 6
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x8 adapter"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/22-0053/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot7/pcie_card7",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card7",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card7",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 22-0053 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 22-0063 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "collection": {
+                        "ccin": ["6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 22-0063 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 22-0053 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card7",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card7",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card7",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C7"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 22,
+                        "Address": 83
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 7
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot7/pcie_card7/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C7-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot7/pcie_card7/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C7-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/23-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card8",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card8",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 23-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 23-0060 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "collection": {
+                        "ccin": ["6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 23-0060 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 23-0050 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card8",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card8",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card8",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C8"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 23,
+                        "Address": 80
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 8
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C8-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C8-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/24-0052/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot9/pcie_card9",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card9",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card9",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24-0052 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 24-0052 > /sys/bus/i2c/drivers/at24/unbind"
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card9",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card9",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C9"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 24,
+                        "Address": 82
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 9
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x8 adapter"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/25-0053/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card10",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card10",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 25-0053 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 25-0063 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "collection": {
+                        "ccin": ["6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 25-0063 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 25-0053 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card10",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card10",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card10",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C10"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 25,
+                        "Address": 83
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 10
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C10-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C10-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/26-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card11",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card11",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 26-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 26-0061 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "collection": {
+                        "ccin": ["6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 26-0061 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 26-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card11",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card11",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card11",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C11"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 26,
+                        "Address": 81
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 11
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C11-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C11-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/300-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-300/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C22"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 0"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/301-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-301/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C23"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 1"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/310-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-310/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C24"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 2"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/312-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-312/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C25"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 3"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/313-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-313/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C26"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 4"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/315-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-315new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C27"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 5"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/311-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-311/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C28"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 6"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/314-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-314/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C29"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 7"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/416-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-416/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C30"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 8"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/417-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-417/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C31"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 9"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/411-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-411/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C32"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 10"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/415-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-415/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C33"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 11"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/414-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-414/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C34"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 12"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/410-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-410/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C35"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 13"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/403-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-403/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C36"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 14"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/402-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-402/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C37"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 15"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/500-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-500/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C38"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 16"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/501-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-501/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C39"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 17"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/510-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-510/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C40"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 18"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/512-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-512/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C41"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 19"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/515-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-515/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C42"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 20"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/513-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-513/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C43"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 21"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/511-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-511/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C44"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 22"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/514-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-514/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C45"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 23"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/616-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-616/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C46"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 24"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/611-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-611/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C47"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 25"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/615-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-615/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C48"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 26"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/617-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-617/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C49"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 27"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/614-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-614/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C50"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 28"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/610-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-610/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C51"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 29"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/602-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-602/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C52"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 30"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/603-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-603/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C53"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 31"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/816-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm32",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-816/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C64"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 32"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm32/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm32/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm32/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm32/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/811-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm33",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-811/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C65"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 33"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm33/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm33/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm33/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm33/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/815-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm34",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-815/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C66"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 34"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm34/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm34/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm34/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm34/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/817-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm35",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-817/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C67"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 35"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm35/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm35/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm35/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm35/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/814-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm36",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-814/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C68"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 36"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm36/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm36/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm36/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm36/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/810-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm37",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-810/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C69"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 37"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm37/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm37/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm37/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm37/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/802-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm38",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-802/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C70"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 38"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm38/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm38/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm38/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm38/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/803-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm39",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-803/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C71"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Module 39"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm39/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm39/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm39/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm39/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/701-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm40",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-701/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C72"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 40"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm40/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm40/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm40/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm40/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/700-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm41",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-700/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C73"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 41"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm41/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm41/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm41/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm41/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/710-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm42",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-710/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C74"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 42"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm42/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm42/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm42/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm42/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/712-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm43",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-712/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C75"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 43"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm43/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm43/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm43/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm43/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/715-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm44",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-715/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C76"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 44"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm44/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm44/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm44/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm44/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/713-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm45",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-713/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C77"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 45"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm45/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm45/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm45/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm45/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/711-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm46",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-711/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C78"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 46"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm46/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm46/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm46/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm46/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/714-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm47",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-714/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C79"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 47"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm47/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm47/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm47/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm47/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/216-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm48",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-216/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C80"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 48"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm48/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm48/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm48/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm48/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/217-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm49",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-217/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C81"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 49"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm49/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm49/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm49/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm49/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/211-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm50",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-211/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C82"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 50"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm50/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm50/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm50/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm50/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/215-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm51",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-215/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C83"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 51"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm51/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm51/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm51/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm51/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/214-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm52",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-214/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C84"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 52"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm52/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm52/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm52/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm52/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/210-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm53",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-210/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C85"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 53"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm53/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm53/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm53/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm53/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/203-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm54",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-203/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C86"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 54"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm54/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm54/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm54/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm54/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/202-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm55",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-202/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C87"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 55"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm55/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm55/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm55/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm55/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/100-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm56",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-100/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C88"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 56"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm56/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm56/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm56/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm56/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/101-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm57",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-101/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C89"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 57"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm57/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm57/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm57/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm57/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/110-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm58",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-110/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C90"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 58"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm58/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm58/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm58/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm58/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/112-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm59",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-112/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C91"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 59"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm59/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm59/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm59/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm59/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/113-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm60",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-113/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C92"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 60"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm60/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm60/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm60/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm60/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/115-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm61",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-115/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C93"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 61"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm61/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm61/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm61/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm61/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/111-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm62",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-111/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C94"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 62"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm62/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm62/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm62/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm62/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/114-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm63",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-114/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C95"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 63"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm63/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm63/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm63/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm63/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ]
+    }
+}
diff --git a/configuration/ibm/50003000_v2.json b/configuration/ibm/50003000_v2.json
new file mode 100644
index 0000000..e12b3df
--- /dev/null
+++ b/configuration/ibm/50003000_v2.json
@@ -0,0 +1,8390 @@
+{
+    "devTree": "conf-aspeed-bmc-ibm-everest.dtb",
+    "backupRestoreConfigPath": "/usr/share/vpd/backup_restore_50003000.json",
+    "commonInterfaces": {
+        "xyz.openbmc_project.Inventory.Decorator.Asset": {
+            "PartNumber": {
+                "recordName": "VINI",
+                "keywordName": "PN"
+            },
+            "SerialNumber": {
+                "recordName": "VINI",
+                "keywordName": "SN"
+            },
+            "SparePartNumber": {
+                "recordName": "VINI",
+                "keywordName": "FN"
+            },
+            "Model": {
+                "recordName": "VINI",
+                "keywordName": "CC"
+            },
+            "BuildDate": {
+                "recordName": "VR10",
+                "keywordName": "DC",
+                "encoding": "DATE"
+            }
+        }
+    },
+    "muxes": [
+        {
+            "i2bus": "4",
+            "deviceaddress": "0xE0",
+            "holdidlepath": "/sys/bus/i2c/drivers/pca954x/4-0070/hold_idle"
+        },
+        {
+            "i2bus": "5",
+            "deviceaddress": "0xE0",
+            "holdidlepath": "/sys/bus/i2c/drivers/pca954x/5-0070/hold_idle"
+        },
+        {
+            "i2bus": "6",
+            "deviceaddress": "0xE0",
+            "holdidlepath": "/sys/bus/i2c/drivers/pca954x/6-0070/hold_idle"
+        }
+    ],
+    "frus": {
+        "/sys/bus/i2c/drivers/at24/8-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "isSystemVpd": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Board.Motherboard": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "System backplane"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Oscillator Reference Clock"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "isSystemVpd": true,
+                "copyRecords": ["VSYS"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.System": null,
+                    "xyz.openbmc_project.Inventory.Decorator.Asset": {
+                        "SerialNumber": {
+                            "recordName": "VSYS",
+                            "keywordName": "SE"
+                        },
+                        "Model": {
+                            "recordName": "VSYS",
+                            "keywordName": "TM"
+                        },
+                        "SubModel": {
+                            "recordName": "VSYS",
+                            "keywordName": "BR"
+                        }
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Umts"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "System"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "isSystemVpd": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Chassis": {
+                        "Type": "xyz.openbmc_project.Inventory.Item.Chassis.ChassisType.RackMount"
+                    },
+                    "xyz.openbmc_project.Inventory.Item.Global": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Chassis"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C2"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C3"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C4"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C5"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C6"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C7"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C8"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C9"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C10"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C11"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.OEM"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "USB 3.0 port 2 (front)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot12/pcie_card12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 12
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "USB 3.0 port 2 (front)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "synthesized": true,
+                "extraInterfaces": {
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-E0"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "synthesized": true,
+                "extraInterfaces": {
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-E1"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "synthesized": true,
+                "extraInterfaces": {
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-E2"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "synthesized": true,
+                "extraInterfaces": {
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-E3"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Open CAPI Conn 0"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Open CAPI Conn 1"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-T2"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Open CAPI Conn 2"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-T3"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Open CAPI Conn 3"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-T4"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Open CAPI Conn 4"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/connector5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-T5"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Open CAPI Conn 5"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/8-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/bmc",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Bmc": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "eBMC card assembly"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/bmc/ethernet0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Item.Ethernet": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C0-T2"
+                    },
+                    "xyz.openbmc_project.Inventory.Item.NetworkInterface": {
+                        "MACAddress": {
+                            "recordName": "VCFG",
+                            "keywordName": "Z0",
+                            "encoding": "MAC"
+                        }
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "HMC port 1"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/bmc/ethernet1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Item.Ethernet": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C0-T3"
+                    },
+                    "xyz.openbmc_project.Inventory.Item.NetworkInterface": {
+                        "MACAddress": {
+                            "recordName": "VCFG",
+                            "keywordName": "Z1",
+                            "encoding": "MAC"
+                        }
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "HMC port 2"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/bmc/usb2_conn0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C0-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "USB 3.0 port 1 (rear)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/bmc/usb2_conn1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C0-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "USB 3.0 port 2 (rear)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/bmc/usb3_conn0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C0-T4"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "USB 2.0 port 1 (rear)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/bmc/usb3_conn1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C0-T5"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "USB 2.0 port 2 (rear)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/bmc/tod_battery",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Battery": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C0-E0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Time-of-day battery"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/9-0052/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C54"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Miscellaneous voltage regulator module for system processor module 3"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/9-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C55"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor voltage regulator module for system processor module 3"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/9-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C57"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor voltage regulator module for system processor module 3"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/9-0053/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C58"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Shared voltage regulator module"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/10-0052/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C12"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Miscellaneous voltage regulator module for system processor module 1"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/10-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C13"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor voltage regulator module for system processor module 1"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/10-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C15"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor voltage regulator module for system processor module 1"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/10-0053/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C16"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Shared voltage regulator module"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/11-0053/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C59"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "I/O and standby voltage regulator module"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/11-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C60"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor voltage regulator module for system processor module 0"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/11-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C62"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor voltage regulator module for system processor module 0"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/11-0052/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm15",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C63"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Miscellaneous voltage regulator module for system processor module 0"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/13-0053/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C17"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "I/O and standby voltage regulator module"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/13-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C18"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor voltage regulator module for system processor module 2"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/13-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C20"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor voltage regulator module for system processor module 2"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/13-0052/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/vrm7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "readOnly": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C21"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Miscellaneous voltage regulator module for system processor module 2"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/0-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/tpm",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-tpm",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Tpm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C96"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Trusted platform module card"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/spi/drivers/at25/spi12.0/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi13.0/eeprom",
+                "offset": 196608,
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C61"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "System processor module 0"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Quad"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "High speed SMP/OpenCAPI Link"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller Channel"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor To Memory Buffer Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Nest Memory Management Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Accelerator"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCI Express controllers"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe host bridge (PHB)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OBUS End Point"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu0/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Cache-Only Core"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/spi/drivers/at25/spi22.0/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi23.0/eeprom",
+                "offset": 196608,
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C61"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "System processor module 0"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Quad"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "High speed SMP/OpenCAPI Link"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller Channel"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor To Memory Buffer Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Nest Memory Management Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Accelerator"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCI Express controllers"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe host bridge (PHB)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OBUS End Point"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm0/cpu1/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Cache-Only Core"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/spi/drivers/at25/spi32.0/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi33.0/eeprom",
+                "cpuType": "primary",
+                "offset": 196608,
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C14"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "System processor module 1"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Quad"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "High speed SMP/OpenCAPI Link"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller Channel"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor To Memory Buffer Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Nest Memory Management Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Accelerator"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCI Express controllers"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe host bridge (PHB)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OBUS End Point"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu0/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Cache-Only Core"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/spi/drivers/at25/spi42.0/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi43.0/eeprom",
+                "offset": 196608,
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C14"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "System processor module 1"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Quad"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "High speed SMP/OpenCAPI Link"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller Channel"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor To Memory Buffer Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Nest Memory Management Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Accelerator"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCI Express controllers"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe host bridge (PHB)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OBUS End Point"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm1/cpu1/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Cache-Only Core"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/spi/drivers/at25/spi52.0/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi53.0/eeprom",
+                "offset": 196608,
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C19"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "System processor module 2"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Quad"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "High speed SMP/OpenCAPI Link"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller Channel"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor To Memory Buffer Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Nest Memory Management Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Accelerator"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCI Express controllers"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe host bridge (PHB)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OBUS End Point"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu0/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Cache-Only Core"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/spi/drivers/at25/spi62.0/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi63.0/eeprom",
+                "offset": 196608,
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C19"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "System processor module 2"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Quad"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "High speed SMP/OpenCAPI Link"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller Channel"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor To Memory Buffer Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Nest Memory Management Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Accelerator"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCI Express controllers"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe host bridge (PHB)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OBUS End Point"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm2/cpu1/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Cache-Only Core"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/spi/drivers/at25/spi72.0/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi73.0/eeprom",
+                "offset": 196608,
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C56"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "System processor module 3"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Quad"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "High speed SMP/OpenCAPI Link"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller Channel"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor To Memory Buffer Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Nest Memory Management Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Accelerator"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCI Express controllers"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe host bridge (PHB)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OBUS End Point"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu0/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Cache-Only Core"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/spi/drivers/at25/spi82.0/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "redundantEeprom": "/sys/bus/spi/drivers/at25/spi83.0/eeprom",
+                "offset": 196608,
+                "powerOffOnly": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C56"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "System processor module 3"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Quad"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "High speed SMP/OpenCAPI Link"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Controller Channel"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Processor To Memory Buffer Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Nest Memory Management Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Accelerator"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Interface Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "POWER Accelerator Unit Controller"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCI Express controllers"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe host bridge (PHB)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OBUS End Point"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dcm3/cpu1/unit14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Cache-Only Core"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/27-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-dasd",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.DiskBackplane": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Drive backplane"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 0"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme0/drive0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "replaceableAtRuntime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C0"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 1
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 0"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 1"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme1/drive1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "replaceableAtRuntime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C1"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 2
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 1"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C2"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 2"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme2/drive2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "replaceableAtRuntime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C2"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 3
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 2"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C3"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 3"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme3/drive3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "replaceableAtRuntime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C3"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 4
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 3"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C4"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 4"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme4/drive4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "replaceableAtRuntime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C4"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 5
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 4"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C5"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 5"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme5/drive5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "replaceableAtRuntime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C5"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 6
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 5"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C6"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 6"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme6/drive6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "replaceableAtRuntime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C6"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 7
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 6"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C7"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 7"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme7/drive7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "replaceableAtRuntime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C7"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 8
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 7"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C8"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 8"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme8/drive8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "replaceableAtRuntime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C8"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 9
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 8"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "com.ibm.Control.Host.PCIeLink": null,
+                    "xyz.openbmc_project.State.Decorator.PowerState": "xyz.openbmc_project.State.Decorator.PowerState.State.Unknown",
+                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": {
+                        "SlotType": "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2"
+                    },
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C9"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 9"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/nvme9/drive9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "embedded": false,
+                "replaceableAtRuntime": true,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-C9"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 10
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "NVMe U.2 drive 9"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/dp_connector0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "USB 3.0 port 1 (front)"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/dp_connector1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P1-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "USB 3.0 port 2 (front)"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/28-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/panel1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "essentialFru": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-lcd-op",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Panel": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-D1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Control panel display"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/29-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dasd_backplane/panel0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "essentialFru": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-base-op",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Panel": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-D0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Control panel"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/31-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "handlePresence": false,
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-fan3",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Fan": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-A0"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/32-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "handlePresence": false,
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-fan2",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Fan": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-A1"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/33-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "handlePresence": false,
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-fan1",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Fan": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-A2"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/34-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "handlePresence": false,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-fan0",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Fan": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-A3"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/16-0052/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot1/pcie_card1",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card1",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card1",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 16-0052 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 16-0062 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "collection": {
+                        "ccin": ["6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 16-0062 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 16-0052 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card1",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card1",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card1",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C1"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 16,
+                        "Address": 82
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 1
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot1/pcie_card1/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C1-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot1/pcie_card1/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C1-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/17-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot2/pcie_card2",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card2",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card2",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 17-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 17-0060 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "collection": {
+                        "ccin": ["6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 17-0060 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 17-0050 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card2",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card2",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card2",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C2"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 17,
+                        "Address": 80
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 2
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot2/pcie_card2/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C2-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot2/pcie_card2/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C2-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/18-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3/pcie_card3",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card3",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card3",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 18-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 18-0061 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "collection": {
+                        "ccin": ["6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 18-0061 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 18-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card3",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card3",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card3",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C3"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 18,
+                        "Address": 81
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 3
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C3-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3/pcie_card3/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C3-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/19-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4/pcie_card4",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card4",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card4",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 19-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 19-0060 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "collection": {
+                        "ccin": ["6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 19-0060 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 19-0050 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card4",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card4",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card4",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C4"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 19,
+                        "Address": 80
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 4
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C4-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot4/pcie_card4/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C4-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/20-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot5/pcie_card5",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card5",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card5",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 20-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 20-0061 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "collection": {
+                        "ccin": ["6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 20-0061 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 20-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card5",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card5",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card5",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C5"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 20,
+                        "Address": 81
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 5
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot5/pcie_card5/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C5-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot5/pcie_card5/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C5-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/21-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot6/pcie_card6",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card6",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card6",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 21-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 21-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card6",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card6",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card6",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C6"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 21,
+                        "Address": 81
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 6
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x8 adapter"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/22-0053/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot7/pcie_card7",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card7",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card7",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 22-0053 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 22-0063 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "collection": {
+                        "ccin": ["6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 22-0063 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 22-0053 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card7",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card7",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card7",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C7"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 22,
+                        "Address": 83
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 7
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot7/pcie_card7/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C7-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot7/pcie_card7/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C7-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/23-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card8",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card8",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 23-0050 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 23-0060 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "collection": {
+                        "ccin": ["6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 23-0060 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 23-0050 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card8",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card8",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card8",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C8"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 23,
+                        "Address": 80
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 8
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C8-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot8/pcie_card8/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C8-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/24-0052/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot9/pcie_card9",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card9",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card9",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24-0052 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 24-0052 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card9",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card9",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card9",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C9"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 24,
+                        "Address": 82
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 9
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x8 adapter"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/25-0053/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card10",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card10",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 25-0053 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 25-0063 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "collection": {
+                        "ccin": ["6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 25-0063 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 25-0053 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card10",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card10",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card10",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C10"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 25,
+                        "Address": 83
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 10
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C10-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C10-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/26-0051/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11",
+                "replaceableAtStandby": true,
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "replaceableAtRuntime": true,
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "expander-cable-card11",
+                            "value": 0
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card11",
+                            "value": 1
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 26-0051 > /sys/bus/i2c/drivers/at24/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 26-0061 > /sys/bus/i2c/drivers/leds-pca955x/unbind"
+                        }
+                    }
+                },
+                "postAction": {
+                    "collection": {
+                        "ccin": ["6B99"],
+                        "systemCmd": {
+                            "cmd": "echo 26-0061 > /sys/bus/i2c/drivers/leds-pca955x/bind"
+                        }
+                    },
+                    "deletion": {
+                        "systemCmd": {
+                            "cmd": "echo 26-0051 > /sys/bus/i2c/drivers/at24/unbind"
+                        },
+                        "setGpio": {
+                            "pin": "presence-cable-card11",
+                            "value": 0
+                        }
+                    }
+                },
+                "PostFailAction": {
+                    "collection": {
+                        "setGpio": {
+                            "pin": "presence-cable-card11",
+                            "value": 0
+                        }
+                    },
+                    "deletion": {
+                        "setGpio": {
+                            "pin": "presence-cable-card11",
+                            "value": 0
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
+                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C11"
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.I2CDevice": {
+                        "Bus": 26,
+                        "Address": 81
+                    },
+                    "xyz.openbmc_project.Inventory.Decorator.Slot": {
+                        "SlotNumber": 11
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "PCIe4 x16 or PCIe5 x8 adapter"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/cxp_top",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C11-T0"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot11/pcie_card11/cxp_bot",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "noprime": true,
+                "ccin": ["6B99"],
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Connector": null,
+                    "xyz.openbmc_project.Inventory.Connector.Port": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C11-T1"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "CXP Port"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/300-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-300/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C22"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 0"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/301-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-301/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C23"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 1"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/310-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-310/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C24"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 2"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/312-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-312/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C25"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 3"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/313-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-313/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C26"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 4"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/315-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-315new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C27"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 5"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/311-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-311/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C28"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 6"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/314-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-314/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C29"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 7"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/416-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-416/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C30"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 8"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/417-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-417/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C31"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 9"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/411-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-411/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C32"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 10"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/415-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-415/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C33"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 11"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/414-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-414/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C34"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 12"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/410-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-410/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C35"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 13"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/403-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-403/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C36"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 14"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/402-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp1",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-402/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C37"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 15"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/500-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-500/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C38"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 16"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm16/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/501-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-501/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C39"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 17"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm17/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/510-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-510/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C40"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 18"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm18/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/512-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-512/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C41"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 19"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm19/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/515-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-515/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C42"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 20"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm20/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/513-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-513/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C43"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 21"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm21/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/511-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-511/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C44"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 22"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm22/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/514-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-514/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C45"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 23"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm23/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/616-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-616/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C46"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 24"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm24/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/611-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-611/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C47"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 25"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm25/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/615-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-615/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C48"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 26"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm26/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/617-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-617/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C49"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 27"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm27/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/614-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-614/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C50"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 28"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm28/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/610-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-610/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C51"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 29"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm29/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/602-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-602/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C52"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 30"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm30/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/603-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp2",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-603/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C53"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 31"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm31/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/816-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm32",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-816/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C64"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 32"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm32/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm32/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm32/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm32/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/811-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm33",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-811/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C65"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 33"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm33/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm33/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm33/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm33/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/815-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm34",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-815/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C66"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 34"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm34/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm34/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm34/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm34/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/817-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm35",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-817/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C67"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 35"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm35/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm35/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm35/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm35/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/814-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm36",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-814/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C68"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 36"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm36/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm36/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm36/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm36/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/810-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm37",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-810/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C69"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 37"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm37/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm37/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm37/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm37/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/802-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm38",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-802/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C70"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 38"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm38/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm38/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm38/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm38/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/803-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm39",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-803/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C71"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory Module 39"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm39/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm39/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm39/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm39/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/701-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm40",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-701/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C72"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 40"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm40/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm40/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm40/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm40/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/700-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm41",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-700/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C73"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 41"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm41/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm41/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm41/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm41/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/710-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm42",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-710/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C74"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 42"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm42/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm42/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm42/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm42/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/712-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm43",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-712/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C75"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 43"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm43/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm43/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm43/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm43/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/715-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm44",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-715/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C76"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 44"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm44/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm44/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm44/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm44/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/713-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm45",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-713/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C77"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 45"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm45/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm45/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm45/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm45/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/711-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm46",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-711/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C78"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 46"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm46/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm46/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm46/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm46/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/714-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm47",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp3",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-714/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C79"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 47"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm47/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm47/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm47/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm47/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/216-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm48",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-216/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C80"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 48"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm48/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm48/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm48/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm48/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/217-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm49",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-217/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C81"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 49"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm49/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm49/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm49/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm49/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/211-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm50",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-211/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C82"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 50"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm50/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm50/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm50/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm50/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/215-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm51",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-215/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C83"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 51"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm51/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm51/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm51/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm51/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/214-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm52",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-214/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C84"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 52"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm52/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm52/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm52/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm52/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/210-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm53",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-210/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C85"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 53"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm53/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm53/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm53/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm53/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/203-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm54",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-203/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C86"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 54"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm54/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm54/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm54/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm54/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/202-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm55",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-202/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C87"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 55"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm55/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm55/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm55/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm55/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/100-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm56",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-100/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C88"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 56"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm56/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm56/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm56/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm56/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/101-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm57",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-101/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C89"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 57"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm57/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm57/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm57/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm57/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/110-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm58",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-110/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C90"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 58"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm58/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm58/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm58/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm58/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/112-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm59",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-112/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C91"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 59"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm59/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm59/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm59/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm59/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/113-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm60",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-113/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C92"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 60"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm60/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm60/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm60/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm60/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/115-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm61",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-115/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C93"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 61"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm61/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm61/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm61/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm61/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/111-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm62",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-111/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C94"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 62"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm62/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm62/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm62/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm62/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ],
+        "/sys/bus/i2c/drivers/at24/114-0050/eeprom": [
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm63",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "preAction": {
+                    "collection": {
+                        "gpioPresence": {
+                            "pin": "presence-cp0",
+                            "value": 0
+                        },
+                        "systemCmd": {
+                            "cmd": "echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-114/new_device"
+                        }
+                    }
+                },
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
+                    "com.ibm.ipzvpd.Location": {
+                        "LocationCode": "Ufcs-P0-C95"
+                    },
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Memory module 63"
+                    },
+                    "xyz.openbmc_project.State.Decorator.Availability": {
+                        "Available": false
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm63/unit0",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "OpenCAPI Memory Buffer"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm63/unit1",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "DDR Memory Port"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm63/unit2",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Control Device"
+                    }
+                }
+            },
+            {
+                "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm63/unit3",
+                "serviceName": "xyz.openbmc_project.Inventory.Manager",
+                "inherit": false,
+                "extraInterfaces": {
+                    "xyz.openbmc_project.Inventory.Item": {
+                        "PrettyName": "Onboard Memory Power Management IC"
+                    }
+                }
+            }
+        ]
+    }
+}
diff --git a/configuration/ibm/backup_restore_50001001.json b/configuration/ibm/backup_restore_50001001.json
new file mode 100644
index 0000000..e3d6adb
--- /dev/null
+++ b/configuration/ibm/backup_restore_50001001.json
@@ -0,0 +1,158 @@
+{
+    "source": {
+        "hardwarePath": "/sys/bus/i2c/drivers/at24/8-0050/eeprom"
+    },
+    "destination": {
+        "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard"
+    },
+    "type": "IPZ",
+    "backupMap": [
+        {
+            "sourceRecord": "VSYS",
+            "sourceKeyword": "BR",
+            "destinationRecord": "VSYS",
+            "destinationKeyword": "BR",
+            "defaultValue": [32, 32],
+            "isPelRequired": true,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "VSYS",
+            "sourceKeyword": "TM",
+            "destinationRecord": "VSYS",
+            "destinationKeyword": "TM",
+            "defaultValue": [32, 32, 32, 32, 32, 32, 32, 32],
+            "isPelRequired": true,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "VSYS",
+            "sourceKeyword": "SE",
+            "destinationRecord": "VSYS",
+            "destinationKeyword": "SE",
+            "defaultValue": [32, 32, 32, 32, 32, 32, 32],
+            "isPelRequired": true,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "VSYS",
+            "sourceKeyword": "SU",
+            "destinationRecord": "VSYS",
+            "destinationKeyword": "SU",
+            "defaultValue": [32, 32, 32, 32, 32, 32],
+            "isPelRequired": true,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "VSYS",
+            "sourceKeyword": "RB",
+            "destinationRecord": "VSYS",
+            "destinationKeyword": "RB",
+            "defaultValue": [32, 32, 32, 32],
+            "isPelRequired": true,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "VSYS",
+            "sourceKeyword": "WN",
+            "destinationRecord": "VSYS",
+            "destinationKeyword": "WN",
+            "defaultValue": [32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32],
+            "isPelRequired": true,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "VSYS",
+            "sourceKeyword": "RG",
+            "destinationRecord": "VSYS",
+            "destinationKeyword": "RG",
+            "defaultValue": [32, 32, 32, 32],
+            "isPelRequired": true,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "VSYS",
+            "sourceKeyword": "FV",
+            "destinationRecord": "VSYS",
+            "destinationKeyword": "FV",
+            "defaultValue": [
+                32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+                32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
+            ],
+            "isPelRequired": false,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "VCEN",
+            "sourceKeyword": "FC",
+            "destinationRecord": "VCEN",
+            "destinationKeyword": "FC",
+            "defaultValue": [32, 32, 32, 32, 32, 32, 32, 32],
+            "isPelRequired": true,
+            "isManufactureResetRequired": false
+        },
+        {
+            "sourceRecord": "VCEN",
+            "sourceKeyword": "SE",
+            "destinationRecord": "VCEN",
+            "destinationKeyword": "SE",
+            "defaultValue": [32, 32, 32, 32, 32, 32, 32],
+            "isPelRequired": true,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "LXR0",
+            "sourceKeyword": "LX",
+            "destinationRecord": "LXR0",
+            "destinationKeyword": "LX",
+            "defaultValue": [0, 0, 0, 0, 0, 0, 0, 0],
+            "isPelRequired": true,
+            "isManufactureResetRequired": false
+        },
+        {
+            "sourceRecord": "UTIL",
+            "sourceKeyword": "D0",
+            "destinationRecord": "UTIL",
+            "destinationKeyword": "D0",
+            "defaultValue": [0],
+            "isPelRequired": true,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "UTIL",
+            "sourceKeyword": "D1",
+            "destinationRecord": "UTIL",
+            "destinationKeyword": "D1",
+            "defaultValue": [0],
+            "isPelRequired": false,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "UTIL",
+            "sourceKeyword": "F0",
+            "destinationRecord": "UTIL",
+            "destinationKeyword": "F0",
+            "defaultValue": [0, 0, 0, 0, 0, 0, 0, 0],
+            "isPelRequired": false,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "UTIL",
+            "sourceKeyword": "F5",
+            "destinationRecord": "UTIL",
+            "destinationKeyword": "F5",
+            "defaultValue": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+            "isPelRequired": false,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "UTIL",
+            "sourceKeyword": "F6",
+            "destinationRecord": "UTIL",
+            "destinationKeyword": "F6",
+            "defaultValue": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+            "isPelRequired": false,
+            "isManufactureResetRequired": true
+        }
+    ]
+}
diff --git a/configuration/ibm/backup_restore_50003000.json b/configuration/ibm/backup_restore_50003000.json
new file mode 100644
index 0000000..e3d6adb
--- /dev/null
+++ b/configuration/ibm/backup_restore_50003000.json
@@ -0,0 +1,158 @@
+{
+    "source": {
+        "hardwarePath": "/sys/bus/i2c/drivers/at24/8-0050/eeprom"
+    },
+    "destination": {
+        "inventoryPath": "/xyz/openbmc_project/inventory/system/chassis/motherboard"
+    },
+    "type": "IPZ",
+    "backupMap": [
+        {
+            "sourceRecord": "VSYS",
+            "sourceKeyword": "BR",
+            "destinationRecord": "VSYS",
+            "destinationKeyword": "BR",
+            "defaultValue": [32, 32],
+            "isPelRequired": true,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "VSYS",
+            "sourceKeyword": "TM",
+            "destinationRecord": "VSYS",
+            "destinationKeyword": "TM",
+            "defaultValue": [32, 32, 32, 32, 32, 32, 32, 32],
+            "isPelRequired": true,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "VSYS",
+            "sourceKeyword": "SE",
+            "destinationRecord": "VSYS",
+            "destinationKeyword": "SE",
+            "defaultValue": [32, 32, 32, 32, 32, 32, 32],
+            "isPelRequired": true,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "VSYS",
+            "sourceKeyword": "SU",
+            "destinationRecord": "VSYS",
+            "destinationKeyword": "SU",
+            "defaultValue": [32, 32, 32, 32, 32, 32],
+            "isPelRequired": true,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "VSYS",
+            "sourceKeyword": "RB",
+            "destinationRecord": "VSYS",
+            "destinationKeyword": "RB",
+            "defaultValue": [32, 32, 32, 32],
+            "isPelRequired": true,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "VSYS",
+            "sourceKeyword": "WN",
+            "destinationRecord": "VSYS",
+            "destinationKeyword": "WN",
+            "defaultValue": [32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32],
+            "isPelRequired": true,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "VSYS",
+            "sourceKeyword": "RG",
+            "destinationRecord": "VSYS",
+            "destinationKeyword": "RG",
+            "defaultValue": [32, 32, 32, 32],
+            "isPelRequired": true,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "VSYS",
+            "sourceKeyword": "FV",
+            "destinationRecord": "VSYS",
+            "destinationKeyword": "FV",
+            "defaultValue": [
+                32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+                32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
+            ],
+            "isPelRequired": false,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "VCEN",
+            "sourceKeyword": "FC",
+            "destinationRecord": "VCEN",
+            "destinationKeyword": "FC",
+            "defaultValue": [32, 32, 32, 32, 32, 32, 32, 32],
+            "isPelRequired": true,
+            "isManufactureResetRequired": false
+        },
+        {
+            "sourceRecord": "VCEN",
+            "sourceKeyword": "SE",
+            "destinationRecord": "VCEN",
+            "destinationKeyword": "SE",
+            "defaultValue": [32, 32, 32, 32, 32, 32, 32],
+            "isPelRequired": true,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "LXR0",
+            "sourceKeyword": "LX",
+            "destinationRecord": "LXR0",
+            "destinationKeyword": "LX",
+            "defaultValue": [0, 0, 0, 0, 0, 0, 0, 0],
+            "isPelRequired": true,
+            "isManufactureResetRequired": false
+        },
+        {
+            "sourceRecord": "UTIL",
+            "sourceKeyword": "D0",
+            "destinationRecord": "UTIL",
+            "destinationKeyword": "D0",
+            "defaultValue": [0],
+            "isPelRequired": true,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "UTIL",
+            "sourceKeyword": "D1",
+            "destinationRecord": "UTIL",
+            "destinationKeyword": "D1",
+            "defaultValue": [0],
+            "isPelRequired": false,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "UTIL",
+            "sourceKeyword": "F0",
+            "destinationRecord": "UTIL",
+            "destinationKeyword": "F0",
+            "defaultValue": [0, 0, 0, 0, 0, 0, 0, 0],
+            "isPelRequired": false,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "UTIL",
+            "sourceKeyword": "F5",
+            "destinationRecord": "UTIL",
+            "destinationKeyword": "F5",
+            "defaultValue": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+            "isPelRequired": false,
+            "isManufactureResetRequired": true
+        },
+        {
+            "sourceRecord": "UTIL",
+            "sourceKeyword": "F6",
+            "destinationRecord": "UTIL",
+            "destinationKeyword": "F6",
+            "defaultValue": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+            "isPelRequired": false,
+            "isManufactureResetRequired": true
+        }
+    ]
+}
diff --git a/config/ibm/vpd_inventory.json b/configuration/ibm/vpd_inventory.json
similarity index 100%
rename from config/ibm/vpd_inventory.json
rename to configuration/ibm/vpd_inventory.json
diff --git a/const.hpp b/const.hpp
deleted file mode 100644
index 7a2907d..0000000
--- a/const.hpp
+++ /dev/null
@@ -1,235 +0,0 @@
-#pragma once
-
-#include <cstdint>
-#include <filesystem>
-#include <iostream>
-
-namespace openpower
-{
-namespace vpd
-{
-namespace constants
-{
-
-using RecordId = uint8_t;
-using RecordOffset = uint16_t;
-using RecordSize = uint16_t;
-using RecordType = uint16_t;
-using RecordLength = uint16_t;
-using KwSize = uint8_t;
-using PoundKwSize = uint16_t;
-using ECCOffset = uint16_t;
-using ECCLength = uint16_t;
-using LE2ByteData = uint16_t;
-using DataOffset = uint16_t;
-
-static constexpr auto NEXT_64_KB = 65536;
-static constexpr auto MAC_ADDRESS_LEN_BYTES = 6;
-static constexpr auto LAST_KW = "PF";
-static constexpr auto POUND_KW = '#';
-static constexpr auto POUND_KW_PREFIX = "PD_";
-static constexpr auto NUMERIC_KW_PREFIX = "N_";
-static constexpr auto UUID_LEN_BYTES = 16;
-static constexpr auto UUID_TIME_LOW_END = 8;
-static constexpr auto UUID_TIME_MID_END = 13;
-static constexpr auto UUID_TIME_HIGH_END = 18;
-static constexpr auto UUID_CLK_SEQ_END = 23;
-
-static constexpr auto MB_RESULT_LEN = 19;
-static constexpr auto MB_LEN_BYTES = 8;
-static constexpr auto MB_YEAR_END = 4;
-static constexpr auto MB_MONTH_END = 7;
-static constexpr auto MB_DAY_END = 10;
-static constexpr auto MB_HOUR_END = 13;
-static constexpr auto MB_MIN_END = 16;
-static constexpr auto SYSTEM_OBJECT = "/system/chassis/motherboard";
-static constexpr auto IBM_LOCATION_CODE_INF = "com.ibm.ipzvpd.Location";
-static constexpr auto XYZ_LOCATION_CODE_INF =
-    "xyz.openbmc_project.Inventory.Decorator.LocationCode";
-constexpr int IPZ_DATA_START = 11;
-constexpr uint8_t KW_VAL_PAIR_START_TAG = 0x84;
-constexpr uint8_t RECORD_END_TAG = 0x78;
-constexpr int UNEXP_LOCATION_CODE_MIN_LENGTH = 4;
-constexpr uint8_t EXP_LOCATIN_CODE_MIN_LENGTH = 17;
-static constexpr auto SE_KWD_LENGTH = 7;
-static constexpr auto INVALID_NODE_NUMBER = -1;
-static constexpr auto RAINIER_2U = "50001001.json";
-static constexpr auto RAINIER_2U_V2 = "50001001_v2.json";
-static constexpr auto RAINIER_4U = "50001000.json";
-static constexpr auto RAINIER_4U_V2 = "50001000_v2.json";
-static constexpr auto RAINIER_1S4U = "50001002.json";
-static constexpr auto EVEREST = "50003000.json";
-static constexpr auto EVEREST_V2 = "50003000_v2.json";
-static constexpr auto BONNELL = "50004000.json";
-static constexpr auto BLUERIDGE_2U = "60001001.json";
-static constexpr auto BLUERIDGE_2U_V2 = "60001001_v2.json";
-static constexpr auto BLUERIDGE_4U = "60001000.json";
-static constexpr auto BLUERIDGE_4U_V2 = "60001000_v2.json";
-static constexpr auto BLUERIDGE_1S4U = "60001002.json";
-static constexpr auto FUJI = "60002000.json";
-static constexpr auto FUJI_V2 = "60002000_v2.json";
-static constexpr auto HUYGENS = "70001000.json";
-
-constexpr uint8_t KW_VPD_START_TAG = 0x82;
-constexpr uint8_t KW_VPD_END_TAG = 0x78;
-constexpr uint8_t ALT_KW_VAL_PAIR_START_TAG = 0x90;
-constexpr uint8_t KW_VAL_PAIR_END_TAG = 0x79;
-constexpr auto MEMORY_VPD_START_TAG = "11S";
-constexpr int TWO_BYTES = 2;
-constexpr int KW_VPD_DATA_START = 0;
-constexpr auto MEMORY_VPD_DATA_START = 416;
-constexpr auto FORMAT_11S_LEN = 3;
-static constexpr auto PART_NUM_LEN = 7;
-static constexpr auto SERIAL_NUM_LEN = 12;
-static constexpr auto CCIN_LEN = 4;
-static constexpr auto CONVERT_MB_TO_KB = 1024;
-static constexpr auto CONVERT_GB_TO_KB = 1024 * 1024;
-
-static constexpr auto SPD_BYTE_2 = 2;
-static constexpr auto SPD_BYTE_3 = 3;
-static constexpr auto SPD_BYTE_4 = 4;
-static constexpr auto SPD_BYTE_6 = 6;
-static constexpr auto SPD_BYTE_12 = 12;
-static constexpr auto SPD_BYTE_13 = 13;
-static constexpr auto SPD_BYTE_18 = 18;
-static constexpr auto SPD_BYTE_234 = 234;
-static constexpr auto SPD_BYTE_235 = 235;
-static constexpr auto SPD_BYTE_BIT_0_3_MASK = 0x0F;
-static constexpr auto SPD_BYTE_MASK = 0xFF;
-
-static constexpr auto VALUE_0 = 0;
-static constexpr auto VALUE_1 = 1;
-static constexpr auto VALUE_2 = 2;
-static constexpr auto VALUE_3 = 3;
-static constexpr auto VALUE_4 = 4;
-static constexpr auto VALUE_5 = 5;
-static constexpr auto VALUE_6 = 6;
-static constexpr auto VALUE_7 = 7;
-static constexpr auto VALUE_8 = 8;
-static constexpr auto VALUE_10 = 10;
-static constexpr auto VALUE_100000 = 100000;
-
-static constexpr auto MASK_BYTE_BITS_6 = 0x40;
-static constexpr auto MASK_BYTE_BITS_7 = 0x80;
-static constexpr auto MASK_BYTE_BITS_01 = 0x03;
-static constexpr auto MASK_BYTE_BITS_345 = 0x38;
-static constexpr auto MASK_BYTE_BITS_012 = 0x07;
-static constexpr auto MASK_BYTE_BITS_567 = 0xE0;
-static constexpr auto MASK_BYTE_BITS_0123 = 0x0F;
-static constexpr auto MASK_BYTE_BITS_01234 = 0x1F;
-
-static constexpr auto SHIFT_BITS_0 = 0;
-static constexpr auto SHIFT_BITS_3 = 3;
-static constexpr auto SHIFT_BITS_5 = 5;
-
-static constexpr auto SPD_MODULE_TYPE_DDIMM = 0x0A;
-static constexpr auto SPD_DRAM_TYPE_DDR5 = 0x12;
-static constexpr auto SPD_DRAM_TYPE_DDR4 = 0x0C;
-
-constexpr auto pimPath = "/xyz/openbmc_project/inventory";
-constexpr auto pimIntf = "xyz.openbmc_project.Inventory.Manager";
-constexpr auto pimService = "xyz.openbmc_project.Inventory.Manager";
-constexpr auto kwdVpdInf = "com.ibm.ipzvpd.VINI";
-constexpr auto memVpdInf = "com.ibm.ipzvpd.VINI";
-constexpr auto ipzVpdInf = "com.ibm.ipzvpd.";
-constexpr auto offsetJsonDirectory = "/var/lib/vpd/";
-constexpr auto mapperObjectPath = "/xyz/openbmc_project/object_mapper";
-constexpr auto mapperInterface = "xyz.openbmc_project.ObjectMapper";
-constexpr auto mapperDestination = "xyz.openbmc_project.ObjectMapper";
-constexpr auto loggerService = "xyz.openbmc_project.Logging";
-constexpr auto loggerObjectPath = "/xyz/openbmc_project/logging";
-constexpr auto loggerCreateInterface = "xyz.openbmc_project.Logging.Create";
-constexpr auto errIntfForVPDDefault = "com.ibm.VPD.Error.DefaultValue";
-constexpr auto errIntfForInvalidVPD = "com.ibm.VPD.Error.InvalidVPD";
-constexpr auto errIntfForVPDMismatch = "com.ibm.VPD.Error.Mismatch";
-constexpr auto errIntfForStreamFail = "com.ibm.VPD.Error.InvalidEepromPath";
-constexpr auto errIntfForEccCheckFail = "com.ibm.VPD.Error.EccCheckFailed";
-constexpr auto errIntfForJsonFailure = "com.ibm.VPD.Error.InvalidJson";
-constexpr auto errIntfForBusFailure = "com.ibm.VPD.Error.DbusFailure";
-constexpr auto errIntfForInvalidSystemType =
-    "com.ibm.VPD.Error.UnknownSytemType";
-constexpr auto errIntfForEssentialFru = "com.ibm.VPD.Error.RequiredFRUMissing";
-constexpr auto errIntfForGpioError = "com.ibm.VPD.Error.GPIOError";
-constexpr auto motherBoardInterface =
-    "xyz.openbmc_project.Inventory.Item.Board.Motherboard";
-constexpr auto systemVpdFilePath = "/sys/bus/i2c/drivers/at24/8-0050/eeprom";
-constexpr auto i2cPathPrefix = "/sys/bus/i2c/drivers/";
-constexpr auto spiPathPrefix = "/sys/bus/spi/drivers/";
-constexpr auto at24driver = "at24";
-constexpr auto at25driver = "at25";
-constexpr auto ee1004driver = "ee1004";
-constexpr auto invItemIntf = "xyz.openbmc_project.Inventory.Item";
-constexpr auto invAssetIntf = "xyz.openbmc_project.Inventory.Decorator.Asset";
-constexpr auto invOperationalStatusIntf =
-    "xyz.openbmc_project.State.Decorator.OperationalStatus";
-static constexpr std::uintmax_t MAX_VPD_SIZE = 65504;
-
-namespace lengths
-{
-enum Lengths
-{
-    RECORD_NAME = 4,
-    KW_NAME = 2,
-    RECORD_OFFSET = 2,
-    RECORD_MIN = 44,
-    RECORD_LENGTH = 2,
-    RECORD_ECC_OFFSET = 2,
-    VHDR_ECC_LENGTH = 11,
-    VHDR_RECORD_LENGTH = 44
-}; // enum Lengths
-} // namespace lengths
-
-namespace offsets
-{
-enum Offsets
-{
-    VHDR = 17,
-    VHDR_TOC_ENTRY = 29,
-    VTOC_PTR = 35,
-    VTOC_REC_LEN = 37,
-    VTOC_ECC_OFF = 39,
-    VTOC_ECC_LEN = 41,
-    VTOC_DATA = 13,
-    VHDR_ECC = 0,
-    VHDR_RECORD = 11
-};
-} // namespace offsets
-
-namespace eccStatus
-{
-enum Status
-{
-    SUCCESS = 0,
-    FAILED = -1
-};
-} // namespace eccStatus
-
-/**
- * @brief Types of VPD
- */
-enum vpdType
-{
-    IPZ_VPD,                /**< IPZ VPD type */
-    KEYWORD_VPD,            /**< Keyword VPD type */
-    DDR4_DDIMM_MEMORY_VPD,  /**< DDR4 DDIMM Memory VPD type */
-    DDR5_DDIMM_MEMORY_VPD,  /**< DDR5 DDIMM Memory VPD type */
-    DDR4_ISDIMM_MEMORY_VPD, /**< DDR4 ISDIMM Memory VPD type */
-    DDR5_ISDIMM_MEMORY_VPD, /**< DDR5 ISDIMM Memory VPD type */
-    INVALID_VPD_FORMAT      /**< Invalid VPD type Format */
-};
-
-enum PelSeverity
-{
-    NOTICE,
-    INFORMATIONAL,
-    DEBUG,
-    WARNING,
-    CRITICAL,
-    EMERGENCY,
-    ALERT,
-    ERROR
-};
-
-} // namespace constants
-} // namespace vpd
-} // namespace openpower
diff --git a/defines.hpp b/defines.hpp
deleted file mode 100644
index 0d493ac..0000000
--- a/defines.hpp
+++ /dev/null
@@ -1,161 +0,0 @@
-#pragma once
-
-namespace openpower
-{
-namespace vpd
-{
-
-/** @brief OpenPOWER VPD records we're interested in */
-enum class Record
-{
-    VINI, /**< Initial information, common to all OpenPOWER FRUs */
-    OPFR, /**< OpenPOWER FRU information, common to all OpenPOWER FRUs */
-    OSYS  /**< Information specific to a system board */
-};
-
-/** @brief Convert VPD Record name from enum to string
- *  @tparam R - VPD Record
- *  @returns string representation of Record name
- */
-template <Record R>
-constexpr const char* getRecord() = delete;
-
-template <>
-constexpr const char* getRecord<Record::VINI>()
-{
-    return "VINI";
-}
-
-template <>
-constexpr const char* getRecord<Record::OPFR>()
-{
-    return "OPFR";
-}
-
-template <>
-constexpr const char* getRecord<Record::OSYS>()
-{
-    return "OSYS";
-}
-
-namespace record
-{
-
-/** @brief OpenPOWER VPD keywords we're interested in */
-enum class Keyword
-{
-    DR, /**< FRU name/description */
-    PN, /**< FRU part number */
-    SN, /**< FRU serial number */
-    CC, /**< Customer Card Identification Number (CCIN) */
-    HW, /**< FRU version */
-    B1, /**< MAC Address */
-    VN, /**< FRU manufacturer name */
-    MB, /**< FRU manufacture date */
-    MM, /**< FRU model */
-    UD, /**< System UUID */
-    VS, /**< OpenPower serial number */
-    VP  /**< OpenPower part number */
-};
-
-/** @brief Convert VPD Keyword name from enum to string
- *  @tparam K - VPD Keyword
- *  @returns string representation of Keyword name
- */
-template <Keyword K>
-constexpr const char* getKeyword() = delete;
-
-template <>
-constexpr const char* getKeyword<Keyword::DR>()
-{
-    return "DR";
-}
-
-template <>
-constexpr const char* getKeyword<Keyword::PN>()
-{
-    return "PN";
-}
-
-template <>
-constexpr const char* getKeyword<Keyword::SN>()
-{
-    return "SN";
-}
-
-template <>
-constexpr const char* getKeyword<Keyword::CC>()
-{
-    return "CC";
-}
-
-template <>
-constexpr const char* getKeyword<Keyword::HW>()
-{
-    return "HW";
-}
-
-template <>
-constexpr const char* getKeyword<Keyword::B1>()
-{
-    return "B1";
-}
-
-template <>
-constexpr const char* getKeyword<Keyword::VN>()
-{
-    return "VN";
-}
-
-template <>
-constexpr const char* getKeyword<Keyword::MB>()
-{
-    return "MB";
-}
-
-template <>
-constexpr const char* getKeyword<Keyword::MM>()
-{
-    return "MM";
-}
-
-template <>
-constexpr const char* getKeyword<Keyword::UD>()
-{
-    return "UD";
-}
-
-template <>
-constexpr const char* getKeyword<Keyword::VS>()
-{
-    return "VS";
-}
-
-template <>
-constexpr const char* getKeyword<Keyword::VP>()
-{
-    return "VP";
-}
-
-} // namespace record
-
-/** @brief FRUs whose VPD we're interested in
- *
- *  BMC       The VPD on the BMC planar, for eg
- *  ETHERNET  The ethernet card on the BMC
- *  ETHERNET1 The 2nd ethernet card on the BMC
- */
-enum Fru
-{
-    BMC,
-    ETHERNET,
-    ETHERNET1
-};
-
-static constexpr auto BD_YEAR_END = 4;
-static constexpr auto BD_MONTH_END = 7;
-static constexpr auto BD_DAY_END = 10;
-static constexpr auto BD_HOUR_END = 13;
-
-} // namespace vpd
-} // namespace openpower
diff --git a/examples/inventory.json b/examples/inventory.json
deleted file mode 100644
index 646cdbe..0000000
--- a/examples/inventory.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-    "commonInterfaces": {
-        "xyz.openbmc_project.Inventory.Decorator.Asset": {
-            "PartNumber": {
-                "recordName": "VINI",
-                "keywordName": "PN"
-            },
-            "SerialNumber": {
-                "recordName": "VINI",
-                "keywordName": "SN"
-            }
-        },
-        "xyz.openbmc_project.Inventory.Item": {
-            "PrettyName": {
-                "recordName": "VINI",
-                "keywordName": "DR"
-            }
-        }
-    },
-    "frus": {
-        "/sys/devices/path/to/motherboard/eeprom": {
-            "inventoryPath": "/bus/path/for/motherboardfru",
-            "extraInterfaces": {
-                "xyz.openbmc_project.Inventory.Item.Board.Motherboard": null
-            }
-        },
-        "/sys/devices/path/to/bmc/eeprom": {
-            "inventoryPath": "/bus/path/for/bmcfru",
-            "isReplacable": true,
-            "driverType": "at24",
-            "devAddress": "8-0051",
-            "busType": "i2c",
-            "extraInterfaces": {
-                "xyz.openbmc_project.Inventory.Item.Bmc": null
-            }
-        }
-    }
-}
diff --git a/examples/sample_vpd_inventory_for_recollcetion.json b/examples/sample_vpd_inventory_for_recollcetion.json
deleted file mode 100644
index 7b16a05..0000000
--- a/examples/sample_vpd_inventory_for_recollcetion.json
+++ /dev/null
@@ -1,1414 +0,0 @@
-{
-    "commonInterfaces": {
-        "xyz.openbmc_project.Inventory.Decorator.Asset": {
-            "PartNumber": {
-                "recordName": "VINI",
-                "keywordName": "PN"
-            },
-            "SerialNumber": {
-                "recordName": "VINI",
-                "keywordName": "SN"
-            },
-            "SparePartNumber": {
-                "recordName": "VINI",
-                "keywordName": "FN"
-            },
-            "Model": {
-                "recordName": "VINI",
-                "keywordName": "CC"
-            },
-            "BuildDate": {
-                "recordName": "VR10",
-                "keywordName": "DC",
-                "encoding": "DATE"
-            }
-        },
-        "xyz.openbmc_project.Inventory.Item": {
-            "PrettyName": {
-                "recordName": "VINI",
-                "keywordName": "DR"
-            },
-            "Present": true
-        }
-    },
-    "frus": {
-        "/sys/bus/i2c/drivers/at24/8-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard",
-                "isSystemVpd": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Board.Motherboard": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system",
-                "inherit": false,
-                "isSystemVpd": true,
-                "copyRecords": ["VSYS"],
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.System": null,
-                    "xyz.openbmc_project.Inventory.Decorator.Asset": {
-                        "SerialNumber": {
-                            "recordName": "VSYS",
-                            "keywordName": "SE"
-                        },
-                        "Model": {
-                            "recordName": "VSYS",
-                            "keywordName": "TM"
-                        },
-                        "SubModel": {
-                            "recordName": "VSYS",
-                            "keywordName": "BR"
-                        }
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Umts"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis",
-                "isSystemVpd": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Chassis": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C3"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C4"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C6"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C7"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot8",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C8"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot9",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C9"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot10",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C10"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcieslot11",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C11"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/powersupply0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-E0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/powersupply1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-E1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/fan0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-A0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/fan1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-A1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/fan2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-A2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/fan3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-A3"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/fan4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-A4"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/fan5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-A5"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/tod_battery",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Battery": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-E0"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/8-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Bmc": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/ethernet0",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Ethernet": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item.NetworkInterface": {
-                        "MACAddress": {
-                            "recordName": "VCFG",
-                            "keywordName": "Z0",
-                            "encoding": "MAC"
-                        }
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/ethernet1",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Ethernet": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item.NetworkInterface": {
-                        "MACAddress": {
-                            "recordName": "VCFG",
-                            "keywordName": "Z1",
-                            "encoding": "MAC"
-                        }
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/0-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/tpm_wilson",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Tpm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C22"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/7-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/base_op_panel_blyth",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Panel": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-D0"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/7-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/lcd_op_panel_hill",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Panel": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-D1"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/9-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vdd_vrm0",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C14"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/10-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vdd_vrm1",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C23"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi12.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/cpu0",
-                "powerOffOnly": true,
-                "offset": 196608,
-                "size": 65504,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C15"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi22.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/cpu1",
-                "powerOffOnly": true,
-                "offset": 196608,
-                "size": 65504,
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C15"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi32.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/cpu2",
-                "powerOffOnly": true,
-                "offset": 196608,
-                "size": 65504,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C24"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/spi/drivers/at25/spi42.0/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/cpu3",
-                "powerOffOnly": true,
-                "offset": 196608,
-                "size": 65504,
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Cpu": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C24"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/4-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcie_cable_card0",
-                "bind": "4-0050",
-                "isReplaceable": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "preAction": {
-                    "pin": "SLOT0_PRSNT_EN_RSVD",
-                    "value": 1
-                },
-                "postActionFail": {
-                    "pin": "SLOT0_PRSNT_EN_RSVD",
-                    "value": 0
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcie_cable_card0/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0-T0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcie_cable_card0/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C0-T1"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/5-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcie_cable_card3",
-                "bind": "5-0050",
-                "busType": "i2c",
-                "driverType": "at24",
-                "preAction": {
-                    "pin": "SLOT3_PRSNT_EN_RSVD",
-                    "value": 1
-                },
-                "postActionFail": {
-                    "pin": "SLOT3_PRSNT_EN_RSVD",
-                    "value": 0
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C3"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcie_cable_card3/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C3-T0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcie_cable_card3/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C3-T1"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/5-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcie_cable_card4",
-                "bind": "5-0051",
-                "isReplaceable": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "preAction": {
-                    "pin": "SLOT4_PRSNT_EN_RSVD",
-                    "value": 1
-                },
-                "postActionFail": {
-                    "pin": "SLOT4_PRSNT_EN_RSVD",
-                    "value": 0
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C4"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcie_cable_card4/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C4-T0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcie_cable_card4/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C4-T1"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/11-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcie_cable_card10",
-                "bind": "11-0050",
-                "isReplaceable": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "preAction": {
-                    "pin": "SLOT10_PRSNT_EN_RSVD",
-                    "value": 1
-                },
-                "postActionFail": {
-                    "pin": "SLOT10_PRSNT_EN_RSVD",
-                    "value": 0
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "xyz.openbmc_project.Inventory.Item.FabricAdapter": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C10"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcie_cable_card10/cxp_top",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C10-T0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcie_cable_card10/cxp_bot",
-                "inherit": false,
-                "noprime": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Connector": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C10-T1"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/4-0052/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcie_cable_card2",
-                "bind": "4-0052",
-                "isReplaceable": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "preAction": {
-                    "pin": "SLOT2_PRSNT_EN_RSVD",
-                    "value": 1
-                },
-                "postActionFail": {
-                    "pin": "SLOT2_PRSNT_EN_RSVD",
-                    "value": 0
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C2"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/6-0053/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcie_cable_card6",
-                "bind": "6-0053",
-                "isReplaceable": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "preAction": {
-                    "pin": "SLOT6_PRSNT_EN_RSVD",
-                    "value": 1
-                },
-                "postActionFail": {
-                    "pin": "SLOT6_PRSNT_EN_RSVD",
-                    "value": 0
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C6"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/6-0052/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcie_cable_card7",
-                "bind": "6-0052",
-                "isReplaceable": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "preAction": {
-                    "pin": "SLOT7_PRSNT_EN_RSVD",
-                    "value": 1
-                },
-                "postActionFail": {
-                    "pin": "SLOT7_PRSNT_EN_RSVD",
-                    "value": 0
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C7"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/6-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcie_cable_card9",
-                "bind": "6-0050",
-                "isReplaceable": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "preAction": {
-                    "pin": "SLOT9_PRSNT_EN_RSVD",
-                    "value": 1
-                },
-                "postActionFail": {
-                    "pin": "SLOT9_PRSNT_EN_RSVD",
-                    "value": 0
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C9"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/11-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcie_cable_card11",
-                "bind": "11-0051",
-                "isReplaceable": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "preAction": {
-                    "pin": "SLOT11_PRSNT_EN_RSVD",
-                    "value": 1
-                },
-                "postActionFail": {
-                    "pin": "SLOT11_PRSNT_EN_RSVD",
-                    "value": 0
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C11"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/4-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcie_cable_card1",
-                "bind": "4-0051",
-                "isReplaceable": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "preAction": {
-                    "pin": "SLOT1_PRSNT_EN_RSVD",
-                    "value": 1
-                },
-                "postActionFail": {
-                    "pin": "SLOT1_PRSNT_EN_RSVD",
-                    "value": 0
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C1"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/6-0051/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/pcie_cable_card8",
-                "bind": "6-0051",
-                "isReplaceable": true,
-                "busType": "i2c",
-                "driverType": "at24",
-                "preAction": {
-                    "pin": "SLOT8_PRSNT_EN_RSVD",
-                    "value": 1
-                },
-                "postActionFail": {
-                    "pin": "SLOT8_PRSNT_EN_RSVD",
-                    "value": 0
-                },
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C8"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/13-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.DiskBackplane": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C3"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C4"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C5"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C6"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane0/nvme7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P1-C7"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/14-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.DiskBackplane": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2-C0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2-C1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2-C2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2-C3"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2-C4"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2-C5"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2-C6"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane1/nvme7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P2-C7"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/15-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane2",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.DiskBackplane": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P3"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane2/nvme0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P3-C0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane2/nvme1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P3-C1"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane2/nvme2",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P3-C2"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane2/nvme3",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P3-C3"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane2/nvme4",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P3-C4"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane2/nvme5",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P3-C5"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane2/nvme6",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P3-C6"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/disk_backplane2/nvme7",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.PCIeSlot": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P3-C7"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/111-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm0",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C12"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/110-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm1",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C13"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/214-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm2",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C16"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/210-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm3",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C17"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/202-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm4",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C18"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/311-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm5",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C19"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/310-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm6",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C20"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/312-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm7",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C21"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/402-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm8",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C25"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/410-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm9",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C26"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/112-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm10",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C27"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/115-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm11",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C28"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/100-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm12",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C29"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/101-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm13",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C30"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/114-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm14",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C31"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/113-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm15",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C32"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/216-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm16",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C33"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/203-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm17",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C34"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/217-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm18",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C35"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/211-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm19",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C36"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/215-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm20",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C37"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/315-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm21",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C38"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/300-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm22",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C39"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/313-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm23",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C40"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/314-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm24",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C41"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/301-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm25",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C42"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/417-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm26",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C43"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/403-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm27",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C44"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/416-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm28",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C45"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/411-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm29",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C46"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/415-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm30",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C47"
-                    }
-                }
-            }
-        ],
-        "/sys/bus/i2c/drivers/at24/414-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/dimm31",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Dimm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C48"
-                    }
-                }
-            }
-        ]
-    }
-}
diff --git a/extra-properties-example.yaml b/extra-properties-example.yaml
deleted file mode 100644
index 92cecf5..0000000
--- a/extra-properties-example.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-/system/bmc:
-    xyz.openbmc_project.Inventory.Decorator.Replaceable:
-        FieldReplaceable: "false"
-
-/system/bmc/ethernet:
-    xyz.openbmc_project.Inventory.Decorator.Replaceable:
-        FieldReplaceable: "false"
diff --git a/extra-properties.mako.hpp b/extra-properties.mako.hpp
deleted file mode 100644
index a297b2c..0000000
--- a/extra-properties.mako.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-## This file is a template.  The comment below is emitted
-## into the rendered file; feel free to edit this file.
-// WARNING: Generated header. Do not edit!
-
-#pragma once
-
-#include <string>
-#include <map>
-#include "types.hpp"
-
-namespace openpower
-{
-namespace vpd
-{
-namespace inventory
-{
-namespace extra
-{
-
-const std::map<Path, InterfaceMap> objects = {
-% for path in dict.keys():
-<%
-    interfaces = dict[path]
-%>\
-    {"${path}",{
-    % for interface,properties in interfaces.items():
-        {"${interface}",{
-        % for property,value in properties.items():
-            {"${property}", ${value}},
-        % endfor
-        }},
-    % endfor
-    }},
-% endfor
-};
-
-} // namespace extra
-} // namespace inventory
-} // namespace vpd
-} // namespace openpower
diff --git a/extra-properties.py b/extra-properties.py
deleted file mode 100755
index 2287b62..0000000
--- a/extra-properties.py
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env python3
-
-import argparse
-import os
-
-import yaml
-from mako.template import Template
-
-
-def main():
-    parser = argparse.ArgumentParser(
-        description="OpenPOWER FRU VPD parser and code generator"
-    )
-
-    parser.add_argument(
-        "-e",
-        "--extra_props_yaml",
-        dest="extra_props_yaml",
-        default="extra-properties-example.yaml",
-        help="input extra properties yaml file to parse",
-    )
-    args = parser.parse_args()
-
-    with open(os.path.join(script_dir, args.extra_props_yaml), "r") as fd:
-        yamlDict = yaml.safe_load(fd)
-
-        # Render the mako template
-        template = os.path.join(script_dir, "extra-properties.mako.hpp")
-        t = Template(filename=template)
-        with open("extra-properties-gen.hpp", "w") as fd:
-            fd.write(t.render(dict=yamlDict))
-
-
-if __name__ == "__main__":
-    script_dir = os.path.dirname(os.path.realpath(__file__))
-    main()
diff --git a/ibm_vpd_app.cpp b/ibm_vpd_app.cpp
deleted file mode 100644
index ed4d612..0000000
--- a/ibm_vpd_app.cpp
+++ /dev/null
@@ -1,1981 +0,0 @@
-#include "config.h"
-
-#include "common_utility.hpp"
-#include "defines.hpp"
-#include "editor_impl.hpp"
-#include "ibm_vpd_utils.hpp"
-#include "ipz_parser.hpp"
-#include "keyword_vpd_parser.hpp"
-#include "memory_vpd_parser.hpp"
-#include "parser_factory.hpp"
-#include "vpd_exceptions.hpp"
-
-#include <assert.h>
-#include <ctype.h>
-
-#include <CLI/CLI.hpp>
-#include <boost/algorithm/string.hpp>
-#include <gpiod.hpp>
-#include <phosphor-logging/log.hpp>
-
-#include <algorithm>
-#include <cstdarg>
-#include <exception>
-#include <filesystem>
-#include <fstream>
-#include <iostream>
-#include <iterator>
-#include <regex>
-#include <thread>
-
-using namespace std;
-using namespace openpower::vpd;
-using namespace CLI;
-using namespace vpd::keyword::parser;
-using namespace openpower::vpd::constants;
-namespace fs = filesystem;
-using json = nlohmann::json;
-using namespace openpower::vpd::parser::factory;
-using namespace openpower::vpd::inventory;
-using namespace openpower::vpd::memory::parser;
-using namespace openpower::vpd::parser::interface;
-using namespace openpower::vpd::exceptions;
-using namespace phosphor::logging;
-using namespace openpower::vpd::manager::editor;
-
-/**
- * @brief API declaration, Populate Dbus.
- *
- * This method invokes all the populateInterface functions
- * and notifies PIM about dbus object.
- *
- * @param[in] vpdMap - Either IPZ vpd map or Keyword vpd map based on the
- * input.
- * @param[in] js - Inventory json object
- * @param[in] filePath - Path of the vpd file
- * @param[in] preIntrStr - Interface string
- */
-template <typename T>
-static void populateDbus(T& vpdMap, nlohmann::json& js, const string& filePath);
-
-/**
- * @brief Returns the BMC state
- */
-static auto getBMCState()
-{
-    std::string bmcState;
-    try
-    {
-        auto bus = sdbusplus::bus::new_default();
-        auto properties = bus.new_method_call(
-            "xyz.openbmc_project.State.BMC", "/xyz/openbmc_project/state/bmc0",
-            "org.freedesktop.DBus.Properties", "Get");
-        properties.append("xyz.openbmc_project.State.BMC");
-        properties.append("CurrentBMCState");
-        auto result = bus.call(properties);
-        std::variant<std::string> val;
-        result.read(val);
-        if (auto pVal = std::get_if<std::string>(&val))
-        {
-            bmcState = *pVal;
-        }
-    }
-    catch (const sdbusplus::exception::SdBusError& e)
-    {
-        // Ignore any error
-        std::cerr << "Failed to get BMC state: " << e.what() << "\n";
-        // Since we failed set to not ready state
-        bmcState = "xyz.openbmc_project.State.BMC.BMCState.NotReady";
-    }
-    return bmcState;
-}
-
-/**
- * @brief Check if the FRU is in the cache
- *
- * Checks if the FRU associated with the supplied D-Bus object path is already
- * on D-Bus. This can be used to test if a VPD collection is required for this
- * FRU. It uses the "xyz.openbmc_project.Inventory.Item, Present" property to
- * determine the presence of a FRU in the cache.
- *
- * @param objectPath - The D-Bus object path without the PIM prefix.
- * @return true if the object exists on D-Bus, false otherwise.
- */
-static auto isFruInVpdCache(const std::string& objectPath)
-{
-    try
-    {
-        auto bus = sdbusplus::bus::new_default();
-        auto invPath = std::string{pimPath} + objectPath;
-        auto props = bus.new_method_call(
-            "xyz.openbmc_project.Inventory.Manager", invPath.c_str(),
-            "org.freedesktop.DBus.Properties", "Get");
-        props.append("xyz.openbmc_project.Inventory.Item");
-        props.append("Present");
-        auto result = bus.call(props);
-        std::variant<bool> present;
-        result.read(present);
-        if (auto pVal = std::get_if<bool>(&present))
-        {
-            return *pVal;
-        }
-        return false;
-    }
-    catch (const sdbusplus::exception::SdBusError& e)
-    {
-        std::cout << "FRU: " << objectPath << " not in D-Bus\n";
-        // Assume not present in case of an error
-        return false;
-    }
-}
-
-/**
- * @brief Check if VPD recollection is needed for the given EEPROM
- *
- * Not all FRUs can be swapped at BMC ready state. This function does the
- * following:
- * -- Check if the FRU is marked as "pluggableAtStandby" OR
- *    "concurrentlyMaintainable". If so, return true.
- * -- Check if we are at BMC NotReady state. If we are, then return true.
- * -- Else check if the FRU is not present in the VPD cache (to cover for VPD
- *    force collection). If not found in the cache, return true.
- * -- Else return false.
- *
- * @param js - JSON Object.
- * @param filePath - The EEPROM file.
- * @return true if collection should be attempted, false otherwise.
- */
-static auto needsRecollection(const nlohmann::json& js, const string& filePath)
-{
-    if (js["frus"][filePath].at(0).value("pluggableAtStandby", false) ||
-        js["frus"][filePath].at(0).value("concurrentlyMaintainable", false))
-    {
-        return true;
-    }
-    if (getBMCState() == "xyz.openbmc_project.State.BMC.BMCState.NotReady")
-    {
-        return true;
-    }
-    if (!isFruInVpdCache(js["frus"][filePath].at(0).value("inventoryPath", "")))
-    {
-        return true;
-    }
-    return false;
-}
-
-/**
- * @brief Expands location codes
- */
-static auto expandLocationCode(const string& unexpanded, const Parsed& vpdMap,
-                               bool isSystemVpd)
-{
-    auto expanded{unexpanded};
-    static constexpr auto SYSTEM_OBJECT = "/system/chassis/motherboard";
-    static constexpr auto VCEN_IF = "com.ibm.ipzvpd.VCEN";
-    static constexpr auto VSYS_IF = "com.ibm.ipzvpd.VSYS";
-    size_t idx = expanded.find("fcs");
-    try
-    {
-        if (idx != string::npos)
-        {
-            string fc{};
-            string se{};
-            if (isSystemVpd)
-            {
-                const auto& fcData = vpdMap.at("VCEN").at("FC");
-                const auto& seData = vpdMap.at("VCEN").at("SE");
-                fc = string(fcData.data(), fcData.size());
-                se = string(seData.data(), seData.size());
-            }
-            else
-            {
-                fc = readBusProperty(SYSTEM_OBJECT, VCEN_IF, "FC");
-                se = readBusProperty(SYSTEM_OBJECT, VCEN_IF, "SE");
-            }
-
-            // TODO: See if ND0 can be placed in the JSON
-            expanded.replace(idx, 3, fc.substr(0, 4) + ".ND0." + se);
-        }
-        else
-        {
-            idx = expanded.find("mts");
-            if (idx != string::npos)
-            {
-                string mt{};
-                string se{};
-                if (isSystemVpd)
-                {
-                    const auto& mtData = vpdMap.at("VSYS").at("TM");
-                    const auto& seData = vpdMap.at("VSYS").at("SE");
-                    mt = string(mtData.data(), mtData.size());
-                    se = string(seData.data(), seData.size());
-                }
-                else
-                {
-                    mt = readBusProperty(SYSTEM_OBJECT, VSYS_IF, "TM");
-                    se = readBusProperty(SYSTEM_OBJECT, VSYS_IF, "SE");
-                }
-
-                replace(mt.begin(), mt.end(), '-', '.');
-                expanded.replace(idx, 3, mt + "." + se);
-            }
-        }
-    }
-    catch (const exception& e)
-    {
-        std::cerr << "Failed to expand location code with exception: "
-                  << e.what() << "\n";
-    }
-    return expanded;
-}
-
-/**
- * @brief Populate FRU specific interfaces.
- *
- * This is a common method which handles both
- * ipz and keyword specific interfaces thus,
- * reducing the code redundancy.
- * @param[in] map - Reference to the innermost keyword-value map.
- * @param[in] preIntrStr - Reference to the interface string.
- * @param[out] interfaces - Reference to interface map.
- */
-template <typename T>
-static void populateFruSpecificInterfaces(
-    const T& map, const string& preIntrStr, inventory::InterfaceMap& interfaces)
-{
-    inventory::PropertyMap prop;
-
-    for (const auto& kwVal : map)
-    {
-        auto kw = kwVal.first;
-
-        if (kw[0] == '#')
-        {
-            kw = string("PD_") + kw[1];
-        }
-        else if (isdigit(kw[0]))
-        {
-            kw = string("N_") + kw;
-        }
-        if constexpr (is_same<T, KeywordVpdMap>::value)
-        {
-            if (auto keywordValue = get_if<Binary>(&kwVal.second))
-            {
-                Binary vec((*keywordValue).begin(), (*keywordValue).end());
-                prop.emplace(move(kw), move(vec));
-            }
-            else if (auto keywordValue = get_if<std::string>(&kwVal.second))
-            {
-                Binary vec((*keywordValue).begin(), (*keywordValue).end());
-                prop.emplace(move(kw), move(vec));
-            }
-            else if (auto keywordValue = get_if<size_t>(&kwVal.second))
-            {
-                if (kw == "MemorySizeInKB")
-                {
-                    inventory::PropertyMap memProp;
-                    memProp.emplace(move(kw), ((*keywordValue)));
-                    interfaces.emplace(
-                        "xyz.openbmc_project.Inventory.Item.Dimm",
-                        move(memProp));
-                }
-                else
-                {
-                    std::cerr << "Unknown Keyword[" << kw << "] found ";
-                }
-            }
-            else
-            {
-                std::cerr << "Unknown Variant found ";
-            }
-        }
-        else
-        {
-            Binary vec(kwVal.second.begin(), kwVal.second.end());
-            prop.emplace(move(kw), move(vec));
-        }
-    }
-
-    interfaces.emplace(preIntrStr, move(prop));
-}
-
-/**
- * @brief Populate Interfaces.
- *
- * This method populates common and extra interfaces to dbus.
- * @param[in] js - json object
- * @param[out] interfaces - Reference to interface map
- * @param[in] vpdMap - Reference to the parsed vpd map.
- * @param[in] isSystemVpd - Denotes whether we are collecting the system VPD.
- */
-template <typename T>
-static void populateInterfaces(const nlohmann::json& js,
-                               inventory::InterfaceMap& interfaces,
-                               const T& vpdMap, bool isSystemVpd)
-{
-    for (const auto& ifs : js.items())
-    {
-        string inf = ifs.key();
-        inventory::PropertyMap props;
-
-        for (const auto& itr : ifs.value().items())
-        {
-            const string& busProp = itr.key();
-
-            if (itr.value().is_boolean())
-            {
-                props.emplace(busProp, itr.value().get<bool>());
-            }
-            else if (itr.value().is_string())
-            {
-                if (busProp == "LocationCode" && inf == IBM_LOCATION_CODE_INF)
-                {
-                    std::string prop;
-                    if constexpr (is_same<T, Parsed>::value)
-                    {
-                        // TODO deprecate the com.ibm interface later
-                        prop = expandLocationCode(itr.value().get<string>(),
-                                                  vpdMap, isSystemVpd);
-                    }
-                    else if constexpr (is_same<T, KeywordVpdMap>::value)
-                    {
-                        // Send empty Parsed object to expandLocationCode api.
-                        prop = expandLocationCode(itr.value().get<string>(),
-                                                  Parsed{}, false);
-                    }
-                    props.emplace(busProp, prop);
-                    interfaces.emplace(XYZ_LOCATION_CODE_INF, props);
-                    interfaces.emplace(IBM_LOCATION_CODE_INF, props);
-                }
-                else
-                {
-                    props.emplace(busProp, itr.value().get<string>());
-                }
-            }
-            else if (itr.value().is_array())
-            {
-                try
-                {
-                    props.emplace(busProp, itr.value().get<Binary>());
-                }
-                catch (const nlohmann::detail::type_error& e)
-                {
-                    std::cerr << "Type exception: " << e.what() << "\n";
-                    // Ignore any type errors
-                }
-            }
-            else if (itr.value().is_object())
-            {
-                const string& rec = itr.value().value("recordName", "");
-                const string& kw = itr.value().value("keywordName", "");
-                const string& encoding = itr.value().value("encoding", "");
-
-                if constexpr (is_same<T, Parsed>::value)
-                {
-                    if (!rec.empty() && !kw.empty() && vpdMap.count(rec) &&
-                        vpdMap.at(rec).count(kw))
-                    {
-                        auto encoded =
-                            encodeKeyword(vpdMap.at(rec).at(kw), encoding);
-                        props.emplace(busProp, encoded);
-                    }
-                }
-                else if constexpr (is_same<T, KeywordVpdMap>::value)
-                {
-                    if (!kw.empty() && vpdMap.count(kw))
-                    {
-                        if (auto kwValue = get_if<Binary>(&vpdMap.at(kw)))
-                        {
-                            auto prop =
-                                string((*kwValue).begin(), (*kwValue).end());
-
-                            auto encoded = encodeKeyword(prop, encoding);
-
-                            props.emplace(busProp, encoded);
-                        }
-                        else if (auto kwValue =
-                                     get_if<std::string>(&vpdMap.at(kw)))
-                        {
-                            auto prop =
-                                string((*kwValue).begin(), (*kwValue).end());
-
-                            auto encoded = encodeKeyword(prop, encoding);
-
-                            props.emplace(busProp, encoded);
-                        }
-                        else if (auto uintValue =
-                                     get_if<size_t>(&vpdMap.at(kw)))
-                        {
-                            props.emplace(busProp, *uintValue);
-                        }
-                        else
-                        {
-                            std::cerr << " Unknown Keyword [" << kw
-                                      << "] Encountered";
-                        }
-                    }
-                }
-            }
-            else if (itr.value().is_number())
-            {
-                // For now assume the value is a size_t.  In the future it would
-                // be nice to come up with a way to get the type from the JSON.
-                props.emplace(busProp, itr.value().get<size_t>());
-            }
-        }
-        insertOrMerge(interfaces, inf, move(props));
-    }
-}
-
-/**
- * @brief This API checks if this FRU is pcie_devices. If yes then it further
- *        checks whether it is PASS1 planar.
- */
-static bool isThisPcieOnPass1planar(const nlohmann::json& js,
-                                    const string& file)
-{
-    auto isThisPCIeDev = false;
-    auto isPASS1 = false;
-
-    // Check if it is a PCIE device
-    if (js["frus"].find(file) != js["frus"].end())
-    {
-        if ((js["frus"][file].at(0).find("extraInterfaces") !=
-             js["frus"][file].at(0).end()))
-        {
-            if (js["frus"][file].at(0)["extraInterfaces"].find(
-                    "xyz.openbmc_project.Inventory.Item.PCIeDevice") !=
-                js["frus"][file].at(0)["extraInterfaces"].end())
-            {
-                isThisPCIeDev = true;
-            }
-        }
-    }
-
-    if (isThisPCIeDev)
-    {
-        // Collect HW version and SystemType to know if it is PASS1 planar.
-        auto bus = sdbusplus::bus::new_default();
-        auto property1 = bus.new_method_call(
-            INVENTORY_MANAGER_SERVICE,
-            "/xyz/openbmc_project/inventory/system/chassis/motherboard",
-            "org.freedesktop.DBus.Properties", "Get");
-        property1.append("com.ibm.ipzvpd.VINI");
-        property1.append("HW");
-        auto result1 = bus.call(property1);
-        inventory::Value hwVal;
-        result1.read(hwVal);
-
-        // SystemType
-        auto property2 = bus.new_method_call(
-            INVENTORY_MANAGER_SERVICE,
-            "/xyz/openbmc_project/inventory/system/chassis/motherboard",
-            "org.freedesktop.DBus.Properties", "Get");
-        property2.append("com.ibm.ipzvpd.VSBP");
-        property2.append("IM");
-        auto result2 = bus.call(property2);
-        inventory::Value imVal;
-        result2.read(imVal);
-
-        auto pVal1 = get_if<Binary>(&hwVal);
-        auto pVal2 = get_if<Binary>(&imVal);
-
-        if (pVal1 && pVal2)
-        {
-            auto hwVersion = *pVal1;
-            auto systemType = *pVal2;
-
-            // IM kw for Everest
-            Binary everestSystem{80, 00, 48, 00};
-
-            if (systemType == everestSystem)
-            {
-                if (hwVersion[1] < 21)
-                {
-                    isPASS1 = true;
-                }
-            }
-            else if (hwVersion[1] < 2)
-            {
-                isPASS1 = true;
-            }
-        }
-    }
-
-    return (isThisPCIeDev && isPASS1);
-}
-
-/** Performs any pre-action needed to get the FRU setup for collection.
- *
- * @param[in] json - json object
- * @param[in] file - eeprom file path
- */
-static void preAction(const nlohmann::json& json, const string& file)
-{
-    if ((json["frus"][file].at(0)).find("preAction") ==
-        json["frus"][file].at(0).end())
-    {
-        return;
-    }
-
-    try
-    {
-        if (executePreAction(json, file))
-        {
-            if (json["frus"][file].at(0).find("devAddress") !=
-                json["frus"][file].at(0).end())
-            {
-                // Now bind the device
-                string bind = json["frus"][file].at(0).value("devAddress", "");
-                std::cout << "Binding device " << bind << std::endl;
-                string bindCmd = string("echo \"") + bind +
-                                 string("\" > /sys/bus/i2c/drivers/at24/bind");
-                std::cout << bindCmd << std::endl;
-                executeCmd(bindCmd);
-
-                // Check if device showed up (test for file)
-                if (!fs::exists(file))
-                {
-                    std::cerr
-                        << "EEPROM " << file
-                        << " does not exist. Take failure action" << std::endl;
-                    // If not, then take failure postAction
-                    executePostFailAction(json, file);
-                }
-            }
-            else
-            {
-                // missing required information
-                std::cerr << "VPD inventory JSON missing basic information of "
-                             "preAction "
-                             "for this FRU : ["
-                          << file << "]. Executing executePostFailAction."
-                          << std::endl;
-
-                // Take failure postAction
-                executePostFailAction(json, file);
-                return;
-            }
-        }
-        else
-        {
-            // If the FRU is not there, clear the VINI/CCIN data.
-            // Entity manager probes for this keyword to look for this
-            // FRU, now if the data is persistent on BMC and FRU is
-            // removed this can lead to ambiguity. Hence clearing this
-            // Keyword if FRU is absent.
-            const auto& invPath =
-                json["frus"][file].at(0).value("inventoryPath", "");
-
-            if (!invPath.empty())
-            {
-                inventory::ObjectMap pimObjMap{
-                    {invPath, {{"com.ibm.ipzvpd.VINI", {{"CC", Binary{}}}}}}};
-
-                common::utility::callPIM(move(pimObjMap));
-            }
-            else
-            {
-                throw std::runtime_error("Path empty in Json");
-            }
-        }
-    }
-    catch (const GpioException& e)
-    {
-        PelAdditionalData additionalData{};
-        additionalData.emplace("DESCRIPTION", e.what());
-        createPEL(additionalData, PelSeverity::WARNING, errIntfForGpioError,
-                  nullptr);
-    }
-}
-
-/**
- * @brief Fills the Decorator.AssetTag property into the interfaces map
- *
- * This function should only be called in cases where we did not find a JSON
- * symlink. A missing symlink in /var/lib will be considered as a factory reset
- * and this function will be used to default the AssetTag property.
- *
- * @param interfaces A possibly pre-populated map of inetrfaces to properties.
- * @param vpdMap A VPD map of the system VPD data.
- */
-static void fillAssetTag(inventory::InterfaceMap& interfaces,
-                         const Parsed& vpdMap)
-{
-    // Read the system serial number and MTM
-    // Default asset tag is Server-MTM-System Serial
-    inventory::Interface assetIntf{
-        "xyz.openbmc_project.Inventory.Decorator.AssetTag"};
-    inventory::PropertyMap assetTagProps;
-    std::string defaultAssetTag =
-        std::string{"Server-"} + getKwVal(vpdMap, "VSYS", "TM") +
-        std::string{"-"} + getKwVal(vpdMap, "VSYS", "SE");
-    assetTagProps.emplace("AssetTag", defaultAssetTag);
-    insertOrMerge(interfaces, assetIntf, std::move(assetTagProps));
-}
-
-/**
- * @brief Set certain one time properties in the inventory
- * Use this function to insert the Functional and Enabled properties into the
- * inventory map. This function first checks if the object in question already
- * has these properties hosted on D-Bus, if the property is already there, it is
- * not modified, hence the name "one time". If the property is not already
- * present, it will be added to the map with a suitable default value (true for
- * Functional and Enabled)
- *
- * @param[in] object - The inventory D-Bus object without the inventory prefix.
- * @param[in,out] interfaces - Reference to a map of inventory interfaces to
- * which the properties will be attached.
- */
-static void setOneTimeProperties(const std::string& object,
-                                 inventory::InterfaceMap& interfaces)
-{
-    auto bus = sdbusplus::bus::new_default();
-    auto objectPath = INVENTORY_PATH + object;
-    auto prop = bus.new_method_call("xyz.openbmc_project.Inventory.Manager",
-                                    objectPath.c_str(),
-                                    "org.freedesktop.DBus.Properties", "Get");
-    prop.append("xyz.openbmc_project.State.Decorator.OperationalStatus");
-    prop.append("Functional");
-    try
-    {
-        auto result = bus.call(prop);
-    }
-    catch (const sdbusplus::exception::SdBusError& e)
-    {
-        // Treat as property unavailable
-        inventory::PropertyMap prop;
-        prop.emplace("Functional", true);
-        interfaces.emplace(
-            "xyz.openbmc_project.State.Decorator.OperationalStatus",
-            move(prop));
-    }
-    prop = bus.new_method_call("xyz.openbmc_project.Inventory.Manager",
-                               objectPath.c_str(),
-                               "org.freedesktop.DBus.Properties", "Get");
-    prop.append("xyz.openbmc_project.Object.Enable");
-    prop.append("Enabled");
-    try
-    {
-        auto result = bus.call(prop);
-    }
-    catch (const sdbusplus::exception::SdBusError& e)
-    {
-        // Treat as property unavailable
-        inventory::PropertyMap prop;
-        prop.emplace("Enabled", true);
-        interfaces.emplace("xyz.openbmc_project.Object.Enable", move(prop));
-    }
-}
-
-/**
- * @brief Prime the Inventory
- * Prime the inventory by populating only the location code,
- * type interface and the inventory object for the frus
- * which are not system vpd fru.
- *
- * @param[in] jsObject - Reference to vpd inventory json object
- * @param[in] vpdMap -  Reference to the parsed vpd map
- *
- * @returns Map of items in extraInterface.
- */
-template <typename T>
-inventory::ObjectMap
-    primeInventory(const nlohmann::json& jsObject, const T& vpdMap)
-{
-    inventory::ObjectMap objects;
-
-    for (auto& itemFRUS : jsObject["frus"].items())
-    {
-        for (auto& itemEEPROM : itemFRUS.value())
-        {
-            // Take pre actions if needed
-            if (itemEEPROM.find("preAction") != itemEEPROM.end())
-            {
-                preAction(jsObject, itemFRUS.key());
-            }
-
-            inventory::InterfaceMap interfaces;
-            inventory::Object object(itemEEPROM.at("inventoryPath"));
-
-            if ((itemFRUS.key() != systemVpdFilePath) &&
-                !itemEEPROM.value("noprime", false))
-            {
-                inventory::PropertyMap presProp;
-
-                // Do not populate Present property for frus whose
-                // synthesized=true. synthesized=true says the fru VPD is
-                // synthesized and owned by a separate component.
-                // In some cases, the FRU has its own VPD, but still a separate
-                // application handles the FRU's presence. So VPD parser skips
-                // populating Present property by checking the JSON flag,
-                // "handlePresence".
-                if (!itemEEPROM.value("synthesized", false))
-                {
-                    if (itemEEPROM.value("handlePresence", true))
-                    {
-                        presProp.emplace("Present", false);
-                        interfaces.emplace("xyz.openbmc_project.Inventory.Item",
-                                           presProp);
-
-                        if ((jsObject["frus"][itemFRUS.key()].at(0).contains(
-                                "extraInterfaces")) &&
-                            (jsObject["frus"][itemFRUS.key()]
-                                 .at(0)["extraInterfaces"]
-                                 .contains("xyz.openbmc_project.Inventory."
-                                           "Item.PCIeDevice")))
-                        {
-                            // check if any subtree exist under the parent
-                            // path.
-                            std::vector<std::string> interfaceList{
-                                "xyz.openbmc_project.Inventory.Item"};
-                            MapperResponse subTree =
-                                getObjectSubtreeForInterfaces(
-                                    INVENTORY_PATH + std::string(object), 0,
-                                    interfaceList);
-
-                            for (auto [objectPath, serviceInterfaceMap] :
-                                 subTree)
-                            {
-                                std::string subTreeObjPath{objectPath};
-                                // Strip any inventory prefix in path
-                                if (subTreeObjPath.find(INVENTORY_PATH) == 0)
-                                {
-                                    subTreeObjPath = subTreeObjPath.substr(
-                                        sizeof(INVENTORY_PATH) - 1);
-                                }
-
-                                // If subtree present, set its presence to
-                                // false and functional to true.
-                                inventory::ObjectMap objectMap{
-                                    {subTreeObjPath,
-                                     {{"xyz.openbmc_project.State."
-                                       "Decorator."
-                                       "OperationalStatus",
-                                       {{"Functional", true}}},
-                                      {"xyz.openbmc_project.Inventory.Item",
-                                       {{"Present", false}}}}}};
-
-                                common::utility::callPIM(move(objectMap));
-                            }
-                        }
-                    }
-                }
-
-                setOneTimeProperties(object, interfaces);
-                if (itemEEPROM.find("extraInterfaces") != itemEEPROM.end())
-                {
-                    for (const auto& eI : itemEEPROM["extraInterfaces"].items())
-                    {
-                        inventory::PropertyMap props;
-                        if (eI.key() == IBM_LOCATION_CODE_INF)
-                        {
-                            if constexpr (std::is_same<T, Parsed>::value)
-                            {
-                                for (auto& lC : eI.value().items())
-                                {
-                                    auto propVal = expandLocationCode(
-                                        lC.value().get<string>(), vpdMap, true);
-
-                                    props.emplace(move(lC.key()),
-                                                  move(propVal));
-                                    interfaces.emplace(XYZ_LOCATION_CODE_INF,
-                                                       props);
-                                    interfaces.emplace(move(eI.key()),
-                                                       move(props));
-                                }
-                            }
-                        }
-                        else if (eI.key() ==
-                                 "xyz.openbmc_project.Inventory.Item")
-                        {
-                            for (auto& val : eI.value().items())
-                            {
-                                if (val.key() == "PrettyName")
-                                {
-                                    presProp.emplace(val.key(),
-                                                     val.value().get<string>());
-                                }
-                            }
-                            // Use insert_or_assign here as we may already have
-                            // inserted the present property only earlier in
-                            // this function under this same interface.
-                            interfaces.insert_or_assign(eI.key(),
-                                                        move(presProp));
-                        }
-                        else
-                        {
-                            interfaces.emplace(move(eI.key()), move(props));
-                        }
-                    }
-                }
-                objects.emplace(move(object), move(interfaces));
-            }
-        }
-    }
-    return objects;
-}
-
-/**
- * @brief This API executes command to set environment variable
- *        And then reboot the system
- * @param[in] key   -env key to set new value
- * @param[in] value -value to set.
- */
-void setEnvAndReboot(const string& key, const string& value)
-{
-    // set env and reboot and break.
-    executeCmd("/sbin/fw_setenv", key, value);
-    log<level::INFO>("Rebooting BMC to pick up new device tree");
-    // make dbus call to reboot
-    auto bus = sdbusplus::bus::new_default_system();
-    auto method = bus.new_method_call(
-        "org.freedesktop.systemd1", "/org/freedesktop/systemd1",
-        "org.freedesktop.systemd1.Manager", "Reboot");
-    bus.call_noreply(method);
-}
-
-/*
- * @brief This API checks for env var fitconfig.
- *        If not initialised OR updated as per the current system type,
- *        update this env var and reboot the system.
- *
- * @param[in] systemType IM kwd in vpd tells about which system type it is.
- * */
-void setDevTreeEnv(const string& systemType)
-{
-    // Init with default dtb
-    string newDeviceTree = "conf-aspeed-bmc-ibm-rainier-p1.dtb";
-    static const deviceTreeMap deviceTreeSystemTypeMap = {
-        {RAINIER_2U, "conf-aspeed-bmc-ibm-rainier-p1.dtb"},
-        {RAINIER_2U_V2, "conf-aspeed-bmc-ibm-rainier.dtb"},
-        {RAINIER_4U, "conf-aspeed-bmc-ibm-rainier-4u-p1.dtb"},
-        {RAINIER_4U_V2, "conf-aspeed-bmc-ibm-rainier-4u.dtb"},
-        {RAINIER_1S4U, "conf-aspeed-bmc-ibm-rainier-1s4u.dtb"},
-        {EVEREST, "conf-aspeed-bmc-ibm-everest.dtb"},
-        {EVEREST_V2, "conf-aspeed-bmc-ibm-everest.dtb"},
-        {BONNELL, "conf-aspeed-bmc-ibm-bonnell.dtb"},
-        {BLUERIDGE_2U, "conf-aspeed-bmc-ibm-blueridge-p1.dtb"},
-        {BLUERIDGE_2U_V2, "conf-aspeed-bmc-ibm-blueridge.dtb"},
-        {BLUERIDGE_4U, "conf-aspeed-bmc-ibm-blueridge-4u-p1.dtb"},
-        {BLUERIDGE_4U_V2, "conf-aspeed-bmc-ibm-blueridge-4u.dtb"},
-        {BLUERIDGE_1S4U, "conf-aspeed-bmc-ibm-blueridge-1s4u.dtb"},
-        {FUJI, "conf-aspeed-bmc-ibm-fuji.dtb"},
-        {HUYGENS, "conf-aspeed-bmc-ibm-huygens.dtb"},
-        {FUJI_V2, "conf-aspeed-bmc-ibm-fuji.dtb"}};
-
-    if (deviceTreeSystemTypeMap.find(systemType) !=
-        deviceTreeSystemTypeMap.end())
-    {
-        newDeviceTree = deviceTreeSystemTypeMap.at(systemType);
-    }
-    else
-    {
-        // System type not supported
-        string err = "This System type not found/supported in dtb table " +
-                     systemType +
-                     ".Please check the HW and IM keywords in the system "
-                     "VPD.Breaking...";
-
-        // map to hold additional data in case of logging pel
-        PelAdditionalData additionalData{};
-        additionalData.emplace("DESCRIPTION", err);
-        createPEL(additionalData, PelSeverity::WARNING,
-                  errIntfForInvalidSystemType, nullptr);
-        exit(-1);
-    }
-
-    string readVarValue;
-    bool envVarFound = false;
-
-    vector<string> output = executeCmd("/sbin/fw_printenv");
-    for (const auto& entry : output)
-    {
-        size_t pos = entry.find("=");
-        string key = entry.substr(0, pos);
-        if (key != "fitconfig")
-        {
-            continue;
-        }
-
-        envVarFound = true;
-        if (pos + 1 < entry.size())
-        {
-            readVarValue = entry.substr(pos + 1);
-            if (readVarValue.find(newDeviceTree) != string::npos)
-            {
-                // fitconfig is Updated. No action needed
-                break;
-            }
-        }
-        // set env and reboot and break.
-        setEnvAndReboot(key, newDeviceTree);
-        exit(0);
-    }
-
-    // check If env var Not found
-    if (!envVarFound)
-    {
-        setEnvAndReboot("fitconfig", newDeviceTree);
-    }
-}
-
-/**
- * @brief Parse the given EEPROM file.
- *
- * @param[in] vpdFilePath - Path of EEPROM file
- * @param[in] js- Reference to vpd inventory json object
- * @return Parsed VPD map
- */
-std::variant<KeywordVpdMap, openpower::vpd::Store>
-    parseVpdFile(const std::string& vpdFilePath, const nlohmann::json& js)
-{
-    uint32_t vpdStartOffset = 0;
-    for (const auto& item : js["frus"][vpdFilePath])
-    {
-        if (item.find("offset") != item.end())
-        {
-            vpdStartOffset = item["offset"];
-            break;
-        }
-    }
-
-    Binary vpdVector = getVpdDataInVector(js, vpdFilePath);
-
-    ParserInterface* parser = ParserFactory::getParser(
-        vpdVector,
-        (pimPath + js["frus"][vpdFilePath][0]["inventoryPath"]
-                       .get_ref<const nlohmann::json::string_t&>()),
-        vpdFilePath, vpdStartOffset);
-
-    auto parseResult = parser->parse();
-
-    // release the parser object
-    ParserFactory::freeParser(parser);
-
-    return parseResult;
-}
-
-/*
- * @brief This API retrieves the hardware backup in map
- *
- * @param[in] systemVpdBackupPath - The path that backs up the system VPD.
- * @param[in] backupVpdInvPath - FRU inventory path.
- * @param[in] js - JSON object.
- * @param[out] backupVpdMap - An IPZ VPD map containing the parsed backup VPD.
- *
- * */
-void getBackupVpdInMap(const string& systemVpdBackupPath,
-                       const string& backupVpdInvPath, const nlohmann::json& js,
-                       Parsed& backupVpdMap)
-{
-    PelAdditionalData additionalData{};
-
-    if (!fs::exists(systemVpdBackupPath))
-    {
-        string errorMsg = "Device path ";
-        errorMsg += systemVpdBackupPath;
-        errorMsg += " does not exist";
-
-        additionalData.emplace("DESCRIPTION", errorMsg);
-
-        additionalData.emplace("CALLOUT_INVENTORY_PATH",
-                               INVENTORY_PATH + backupVpdInvPath);
-
-        createPEL(additionalData, PelSeverity::ERROR, errIntfForStreamFail,
-                  nullptr);
-    }
-    else
-    {
-        auto backupVpdParsedResult = parseVpdFile(systemVpdBackupPath, js);
-
-        if (auto pVal = get_if<Store>(&backupVpdParsedResult))
-        {
-            backupVpdMap = pVal->getVpdMap();
-        }
-        else
-        {
-            std::cerr << "Invalid format of VPD in back up. Restore aborted."
-                      << std::endl;
-        }
-    }
-}
-
-void updateVpdDataOnHw(const std::string& vpdFilePath, nlohmann::json& js,
-                       const std::string& recName, const std::string& kwName,
-                       const Binary& kwdData)
-{
-    const std::string& fruInvPath =
-        js["frus"][vpdFilePath][0]["inventoryPath"]
-            .get_ref<const nlohmann::json::string_t&>();
-
-    EditorImpl edit(vpdFilePath, js, recName, kwName, fruInvPath);
-
-    uint32_t offset = 0;
-    // Setup offset, if any
-    for (const auto& item : js["frus"][vpdFilePath])
-    {
-        if (item.find("offset") != item.end())
-        {
-            offset = item["offset"];
-            break;
-        }
-    }
-
-    // update keyword data on to EEPROM file
-    // Note: Updating keyword data on cache is
-    // handled via PIM Notify call hence passing
-    // the updCache flag value as false here.
-    edit.updateKeyword(kwdData, offset, false);
-}
-
-/**
- * @brief API to check if we need to restore system VPD
- * This functionality is only applicable for IPZ VPD data.
-
- * @param[in] vpdMap - IPZ vpd map
- * @param[in] objectPath - Object path for the FRU
- * @param[in] js - JSON Object
- * @param[in] isBackupOnCache - Denotes whether the backup is on cache/hardware
- */
-void restoreSystemVPD(Parsed& vpdMap, const string& objectPath,
-                      nlohmann::json& js, bool isBackupOnCache = true)
-{
-    std::string systemVpdBackupPath{};
-    std::string backupVpdInvPath{};
-    Parsed backupVpdMap{};
-
-    if (!isBackupOnCache)
-    {
-        // Get the value of systemvpdBackupPath field from json
-        systemVpdBackupPath = js["frus"][systemVpdFilePath].at(0).value(
-            "systemVpdBackupPath", "");
-
-        backupVpdInvPath = js["frus"][systemVpdBackupPath][0]["inventoryPath"]
-                               .get_ref<const nlohmann::json::string_t&>();
-
-        getBackupVpdInMap(systemVpdBackupPath, backupVpdInvPath, js,
-                          backupVpdMap);
-
-        if (backupVpdMap.empty())
-        {
-            std::cerr << "Backup VPD map is empty" << std::endl;
-            return;
-        }
-    }
-
-    for (const auto& systemRecKwdPair : svpdKwdMap)
-    {
-        const string& recordName = systemRecKwdPair.first;
-        auto it = vpdMap.find(recordName);
-
-        // check if record is found in map we got by parser
-        if (it != vpdMap.end())
-        {
-            const auto& kwdListForRecord = systemRecKwdPair.second;
-            for (const auto& keywordInfo : kwdListForRecord)
-            {
-                const auto keywordName = get<0>(keywordInfo);
-
-                DbusPropertyMap& kwdValMap = it->second;
-                auto iterator = kwdValMap.find(keywordName);
-
-                if (iterator != kwdValMap.end())
-                {
-                    string& kwdValue = iterator->second;
-
-                    std::string backupValue{};
-                    const auto& defaultValue = get<1>(keywordInfo);
-                    const auto& backupVpdRecName = get<4>(keywordInfo);
-                    const auto& backupVpdKwName = get<5>(keywordInfo);
-
-                    // If the 'isBackupOnCache' flag is false, we need
-                    // to backup the systemVPD on the specified fru's eeprom
-                    // path or restore it from the specified fru's eeprom path.
-                    if (isBackupOnCache)
-                    {
-                        // check bus data
-                        backupValue = readBusProperty(
-                            objectPath, ipzVpdInf + recordName, keywordName);
-                    }
-                    else
-                    {
-                        backupValue = getKwVal(backupVpdMap, backupVpdRecName,
-                                               backupVpdKwName);
-
-                        if (backupValue.empty())
-                        {
-                            string errorMsg{};
-                            if (backupVpdMap.find(backupVpdRecName) ==
-                                backupVpdMap.end())
-                            {
-                                errorMsg = backupVpdRecName +
-                                           " Record does not exist in "
-                                           "the EEPROM file ";
-                            }
-                            else
-                            {
-                                errorMsg = backupVpdKwName +
-                                           " Keyword not found or empty.";
-                            }
-
-                            errorMsg += systemVpdBackupPath;
-
-                            PelAdditionalData additionalData;
-                            additionalData.emplace("DESCRIPTION", errorMsg);
-
-                            createPEL(additionalData, PelSeverity::ERROR,
-                                      errIntfForInvalidVPD, nullptr);
-
-                            continue;
-                        }
-                    }
-
-                    Binary backupDataInBinary(backupValue.begin(),
-                                              backupValue.end());
-
-                    Binary kwdDataInBinary(kwdValue.begin(), kwdValue.end());
-
-                    if (backupDataInBinary != defaultValue)
-                    {
-                        if (kwdDataInBinary != defaultValue)
-                        {
-                            // both the data are present, check for mismatch
-                            if (backupValue != kwdValue)
-                            {
-                                string errMsg = "Mismatch found between backup "
-                                                "and primary VPD for record: ";
-                                errMsg += (*it).first;
-                                errMsg += " and keyword: ";
-                                errMsg += keywordName;
-
-                                std::ostringstream busStream;
-                                for (uint16_t byte : backupValue)
-                                {
-                                    busStream
-                                        << std::setfill('0') << std::setw(2)
-                                        << std::hex << "0x" << byte << " ";
-                                }
-
-                                std::ostringstream vpdStream;
-                                for (uint16_t byte : kwdValue)
-                                {
-                                    vpdStream
-                                        << std::setfill('0') << std::setw(2)
-                                        << std::hex << "0x" << byte << " ";
-                                }
-
-                                // data mismatch
-                                PelAdditionalData additionalData;
-
-                                additionalData.emplace("DESCRIPTION", errMsg);
-                                additionalData.emplace(
-                                    "Value read from Backup: ",
-                                    busStream.str());
-                                additionalData.emplace(
-                                    "Value read from Primary: ",
-                                    vpdStream.str());
-
-                                createPEL(additionalData, PelSeverity::WARNING,
-                                          errIntfForVPDMismatch, nullptr);
-
-                                if (!isBackupOnCache)
-                                {
-                                    // Backing up or restoring from a hardware
-                                    // path does not requires copying the backup
-                                    // data to the VPD map, as this will result
-                                    // in a mismatch between the primary VPD and
-                                    // its cache.
-                                    continue;
-                                }
-                            }
-                            else
-                            {
-                                // both the backup and primary data is
-                                // non-default and same. Nothing needs to be
-                                // done.
-                                continue;
-                            }
-                        }
-
-                        // If the backup is on the cache we need to copy the
-                        // backup data to the VPD map to ensure there is no
-                        // mismatch b/n them. So if backup data is not default,
-                        // then irrespective of primary data(default or other
-                        // than backup), copy the backup data to vpd map as we
-                        // don't need to change the backup data in either case
-                        // in the process of restoring system vpd.
-                        kwdValue = backupValue;
-
-                        // If the backup data is on the base panel the restoring
-                        // of Backup VPD on to the system backplane VPD
-                        // file is done here not through the VPD manager code
-                        // path. This is to have the logic of restoring data on
-                        // to the cache & hardware in the same code path.
-                        if (!isBackupOnCache)
-                        {
-                            // copy backup VPD on to system backplane
-                            // EEPROM  file.
-                            updateVpdDataOnHw(systemVpdFilePath, js, recordName,
-                                              keywordName, backupDataInBinary);
-                        }
-                    }
-                    else if (kwdDataInBinary == defaultValue &&
-                             get<2>(keywordInfo)) // Check isPELRequired is true
-                    {
-                        string errMsg = "Found default value on both backup "
-                                        "and primary VPD for record: ";
-                        errMsg += (*it).first;
-                        errMsg += " and keyword: ";
-                        errMsg += keywordName;
-                        errMsg += ". Update primary VPD.";
-
-                        // mfg default on both backup and primary, log PEL
-                        PelAdditionalData additionalData;
-                        additionalData.emplace("DESCRIPTION", errMsg);
-
-                        createPEL(additionalData, PelSeverity::ERROR,
-                                  errIntfForVPDDefault, nullptr);
-
-                        continue;
-                    }
-                    else if ((kwdDataInBinary != defaultValue) &&
-                             (!isBackupOnCache))
-                    {
-                        // update primary VPD on to backup VPD file
-                        updateVpdDataOnHw(systemVpdBackupPath, js,
-                                          backupVpdRecName, backupVpdKwName,
-                                          kwdDataInBinary);
-
-                        // copy primary VPD to backup VPD to publish on
-                        // DBus
-                        backupVpdMap.find(backupVpdRecName)
-                            ->second.find(backupVpdKwName)
-                            ->second = kwdValue;
-                    }
-                }
-            }
-        }
-    }
-}
-
-/**
- * @brief This checks for is this FRU a processor
- *        And if yes, then checks for is this primary
- *
- * @param[in] js- vpd json to get the information about this FRU
- * @param[in] filePath- FRU vpd
- *
- * @return true/false
- */
-bool isThisPrimaryProcessor(nlohmann::json& js, const string& filePath)
-{
-    bool isProcessor = false;
-    bool isPrimary = false;
-
-    for (const auto& item : js["frus"][filePath])
-    {
-        if (item.find("extraInterfaces") != item.end())
-        {
-            for (const auto& eI : item["extraInterfaces"].items())
-            {
-                if (eI.key().find("Inventory.Item.Cpu") != string::npos)
-                {
-                    isProcessor = true;
-                }
-            }
-        }
-
-        if (isProcessor)
-        {
-            string cpuType = item.value("cpuType", "");
-            if (cpuType == "primary")
-            {
-                isPrimary = true;
-            }
-        }
-    }
-
-    return (isProcessor && isPrimary);
-}
-
-/**
- * @brief This finds DIMM vpd in vpd json and enables them by binding the device
- *        driver
- * @param[in] js- vpd json to iterate through and take action if it is DIMM
- */
-void doEnableAllDimms(nlohmann::json& js)
-{
-    // iterate over each fru
-    for (const auto& eachFru : js["frus"].items())
-    {
-        // skip the driver binding if eeprom already exists
-        if (fs::exists(eachFru.key()))
-        {
-            continue;
-        }
-
-        for (const auto& eachInventory : eachFru.value())
-        {
-            if (eachInventory.find("extraInterfaces") != eachInventory.end())
-            {
-                for (const auto& eI : eachInventory["extraInterfaces"].items())
-                {
-                    if (eI.key().find("Inventory.Item.Dimm") != string::npos)
-                    {
-                        string dimmVpd = eachFru.key();
-                        // fetch it from
-                        // "/sys/bus/i2c/drivers/at24/414-0050/eeprom"
-
-                        regex matchPatern("([0-9]+-[0-9]{4})");
-                        smatch matchFound;
-                        if (regex_search(dimmVpd, matchFound, matchPatern))
-                        {
-                            vector<string> i2cReg;
-                            boost::split(i2cReg, matchFound.str(0),
-                                         boost::is_any_of("-"));
-
-                            // remove 0s from beginning
-                            const regex pattern("^0+(?!$)");
-                            for (auto& i : i2cReg)
-                            {
-                                i = regex_replace(i, pattern, "");
-                            }
-
-                            // For ISDIMM which uses ee1004 driver
-                            // the below is done
-                            size_t stringFound = dimmVpd.find("ee1004");
-                            if (stringFound != string::npos)
-                            {
-                                // echo ee1004 0x50 >
-                                // /sys/bus/i2c/devices/i2c-110/new_device
-                                string cmnd = "echo ee1004 0x" + i2cReg[1] +
-                                              " > /sys/bus/i2c/devices/i2c-" +
-                                              i2cReg[0] + "/new_device";
-                                executeCmd(cmnd);
-                            }
-                            else if (i2cReg.size() == 2)
-                            {
-                                // echo 24c32 0x50 >
-                                // /sys/bus/i2c/devices/i2c-16/new_device
-                                string cmnd = "echo 24c32 0x" + i2cReg[1] +
-                                              " > /sys/bus/i2c/devices/i2c-" +
-                                              i2cReg[0] + "/new_device";
-                                executeCmd(cmnd);
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
-
-/**
- * @brief Check if the given CPU is an IO only chip.
- * The CPU is termed as IO, whose all of the cores are bad and can never be
- * used. Those CPU chips can be used for IO purpose like connecting PCIe devices
- * etc., The CPU whose every cores are bad, can be identified from the CP00
- * record's PG keyword, only if all of the 8 EQs' value equals 0xE7F9FF. (1EQ
- * has 4 cores grouped together by sharing its cache memory.)
- * @param [in] pgKeyword - PG Keyword of CPU.
- * @return true if the given cpu is an IO, false otherwise.
- */
-static bool isCPUIOGoodOnly(const string& pgKeyword)
-{
-    const unsigned char io[] = {0xE7, 0xF9, 0xFF, 0xE7, 0xF9, 0xFF, 0xE7, 0xF9,
-                                0xFF, 0xE7, 0xF9, 0xFF, 0xE7, 0xF9, 0xFF, 0xE7,
-                                0xF9, 0xFF, 0xE7, 0xF9, 0xFF, 0xE7, 0xF9, 0xFF};
-    // EQ0 index (in PG keyword) starts at 97 (with offset starting from 0).
-    // Each EQ carries 3 bytes of data. Totally there are 8 EQs. If all EQs'
-    // value equals 0xE7F9FF, then the cpu has no good cores and its treated as
-    // IO.
-    if (memcmp(io, pgKeyword.data() + 97, 24) == 0)
-    {
-        return true;
-    }
-
-    // The CPU is not an IO
-    return false;
-}
-
-/**
- * @brief Function to bring MUX out of idle state
- *
- *        This finds All the MUX defined in the system json and enables
- *        them by setting the holdidle parameter to 0.
- * @param[in] js- system json to iterate through and take action
- */
-void doEnableAllMuxChips(const nlohmann::json& js)
-{
-    // Do we have the mandatory "muxes" section?
-    if (js.find("muxes") != js.end())
-    {
-        std::cout << "Enabling all the MUX on the system " << std::endl;
-        // iterate over each MUX detail and enable them
-        for (const auto& item : js["muxes"])
-        {
-            if (item.find("holdidlepath") != item.end())
-            {
-                const std::string& holdidle = item["holdidlepath"];
-                std::cout << "Setting holdidle state for " << holdidle
-                          << "to 0 " << std::endl;
-                string cmd = "echo 0 > " + holdidle;
-                executeCmd(cmd);
-            }
-        }
-        std::cout << "Completed enabling all the MUX on the system "
-                  << std::endl;
-    }
-    else
-    {
-        std::cout << "No MUX was defined for the system" << std::endl;
-    }
-}
-
-/**
- * @brief Populate Dbus.
- * This method invokes all the populateInterface functions
- * and notifies PIM about dbus object.
- * @param[in] vpdMap - Either IPZ vpd map or Keyword vpd map based on the
- * input.
- * @param[in] js - Inventory json object
- * @param[in] filePath - Path of the vpd file
- * @param[in] preIntrStr - Interface string
- */
-template <typename T>
-static void populateDbus(T& vpdMap, nlohmann::json& js, const string& filePath)
-{
-    inventory::InterfaceMap interfaces;
-    inventory::ObjectMap objects;
-    inventory::PropertyMap prop;
-    string ccinFromVpd;
-
-    bool isSystemVpd = (filePath == systemVpdFilePath);
-    if constexpr (is_same<T, Parsed>::value)
-    {
-        ccinFromVpd = getKwVal(vpdMap, "VINI", "CC");
-        transform(ccinFromVpd.begin(), ccinFromVpd.end(), ccinFromVpd.begin(),
-                  ::toupper);
-
-        if (isSystemVpd)
-        {
-            string mboardPath =
-                js["frus"][filePath].at(0).value("inventoryPath", "");
-
-            // Get the value of systemvpdBackupPath field from json
-            const std::string& systemVpdBackupPath =
-                js["frus"][filePath].at(0).value("systemVpdBackupPath", "");
-
-            if (systemVpdBackupPath.empty())
-            {
-                std::vector<std::string> interfaces = {motherBoardInterface};
-                // call mapper to check for object path creation
-                MapperResponse subTree =
-                    getObjectSubtreeForInterfaces(pimPath, 0, interfaces);
-
-                // Attempt system VPD restore if we have a motherboard
-                // object in the inventory.
-                if ((subTree.size() != 0) &&
-                    (subTree.find(pimPath + mboardPath) != subTree.end()))
-                {
-                    restoreSystemVPD(vpdMap, mboardPath, js);
-                }
-                else
-                {
-                    log<level::ERR>("No object path found");
-                }
-            }
-            else
-            {
-                restoreSystemVPD(vpdMap, mboardPath, js, false);
-            }
-        }
-        else
-        {
-            // check if it is processor vpd.
-            auto isPrimaryCpu = isThisPrimaryProcessor(js, filePath);
-
-            if (isPrimaryCpu)
-            {
-                auto ddVersion = getKwVal(vpdMap, "CRP0", "DD");
-
-                auto chipVersion = atoi(ddVersion.substr(1, 2).c_str());
-
-                if (chipVersion >= 2)
-                {
-                    doEnableAllDimms(js);
-                    // Sleep for a few seconds to let the DIMM parses start
-                    using namespace std::chrono_literals;
-                    std::this_thread::sleep_for(5s);
-                }
-            }
-        }
-    }
-
-    auto processFactoryReset = false;
-
-    if (isSystemVpd)
-    {
-        string systemJsonName{};
-        if constexpr (is_same<T, Parsed>::value)
-        {
-            // pick the right system json
-            systemJsonName = getSystemsJson(vpdMap);
-        }
-
-        fs::path target = systemJsonName;
-        fs::path link = INVENTORY_JSON_SYM_LINK;
-
-        // If the symlink does not exist, we treat that as a factory reset
-        processFactoryReset = !fs::exists(INVENTORY_JSON_SYM_LINK);
-
-        // Create the directory for hosting the symlink
-        fs::create_directories(VPD_FILES_PATH);
-        // unlink the symlink previously created (if any)
-        remove(INVENTORY_JSON_SYM_LINK);
-        // create a new symlink based on the system
-        fs::create_symlink(target, link);
-
-        // Reloading the json
-        ifstream inventoryJson(link);
-        js = json::parse(inventoryJson);
-        inventoryJson.close();
-
-        // enable the muxes again here to cover the case where during first boot
-        // after reset, system would have come up with default JSON
-        // configuration and have skipped enabling mux at the beginning.
-        // Default config JSON does not have mux entries.
-        doEnableAllMuxChips(js);
-    }
-
-    for (const auto& item : js["frus"][filePath])
-    {
-        const auto& objectPath = item["inventoryPath"];
-        sdbusplus::message::object_path object(objectPath);
-
-        vector<string> ccinList;
-        if (item.find("ccin") != item.end())
-        {
-            for (const auto& cc : item["ccin"])
-            {
-                string ccin = cc;
-                transform(ccin.begin(), ccin.end(), ccin.begin(), ::toupper);
-                ccinList.push_back(ccin);
-            }
-        }
-
-        if (!ccinFromVpd.empty() && !ccinList.empty() &&
-            (find(ccinList.begin(), ccinList.end(), ccinFromVpd) ==
-             ccinList.end()))
-        {
-            continue;
-        }
-
-        if ((isSystemVpd) || (item.value("noprime", false)))
-        {
-            // Populate one time properties for the system VPD and its sub-frus
-            // and for other non-primeable frus.
-            // For the remaining FRUs, this will get handled as a part of
-            // priming the inventory.
-            setOneTimeProperties(objectPath, interfaces);
-        }
-
-        // Populate the VPD keywords and the common interfaces only if we
-        // are asked to inherit that data from the VPD, else only add the
-        // extraInterfaces.
-        if (item.value("inherit", true))
-        {
-            if constexpr (is_same<T, Parsed>::value)
-            {
-                // Each record in the VPD becomes an interface and all
-                // keyword within the record are properties under that
-                // interface.
-                for (const auto& record : vpdMap)
-                {
-                    populateFruSpecificInterfaces(
-                        record.second, ipzVpdInf + record.first, interfaces);
-                }
-            }
-            else if constexpr (is_same<T, KeywordVpdMap>::value)
-            {
-                populateFruSpecificInterfaces(vpdMap, kwdVpdInf, interfaces);
-            }
-            if (js.find("commonInterfaces") != js.end())
-            {
-                populateInterfaces(js["commonInterfaces"], interfaces, vpdMap,
-                                   isSystemVpd);
-            }
-        }
-        else
-        {
-            // Check if we have been asked to inherit specific record(s)
-            if constexpr (is_same<T, Parsed>::value)
-            {
-                if (item.find("copyRecords") != item.end())
-                {
-                    for (const auto& record : item["copyRecords"])
-                    {
-                        const string& recordName = record;
-                        if (vpdMap.find(recordName) != vpdMap.end())
-                        {
-                            populateFruSpecificInterfaces(
-                                vpdMap.at(recordName), ipzVpdInf + recordName,
-                                interfaces);
-                        }
-                    }
-                }
-            }
-        }
-        // Populate interfaces and properties that are common to every FRU
-        // and additional interface that might be defined on a per-FRU
-        // basis.
-        if (item.find("extraInterfaces") != item.end())
-        {
-            populateInterfaces(item["extraInterfaces"], interfaces, vpdMap,
-                               isSystemVpd);
-            if constexpr (is_same<T, Parsed>::value)
-            {
-                if (item["extraInterfaces"].find(
-                        "xyz.openbmc_project.Inventory.Item.Cpu") !=
-                    item["extraInterfaces"].end())
-                {
-                    if (isCPUIOGoodOnly(getKwVal(vpdMap, "CP00", "PG")))
-                    {
-                        interfaces[invItemIntf]["PrettyName"] = "IO Module";
-                    }
-                }
-            }
-        }
-
-        // embedded property(true or false) says whether the subfru is embedded
-        // into the parent fru (or) not. VPD sets Present property only for
-        // embedded frus. If the subfru is not an embedded FRU, the subfru may
-        // or may not be physically present. Those non embedded frus will always
-        // have Present=false irrespective of its physical presence or absence.
-        // Eg: nvme drive in nvme slot is not an embedded FRU. So don't set
-        // Present to true for such sub frus.
-        // Eg: ethernet port is embedded into bmc card. So set Present to true
-        // for such sub frus. Also do not populate present property for embedded
-        // subfru which is synthesized. Currently there is no subfru which are
-        // both embedded and synthesized. But still the case is handled here.
-        if ((item.value("embedded", true)) &&
-            (!item.value("synthesized", false)))
-        {
-            // Check if its required to handle presence for this FRU.
-            if (item.value("handlePresence", true))
-            {
-                inventory::PropertyMap presProp;
-                presProp.emplace("Present", true);
-                insertOrMerge(interfaces, invItemIntf, move(presProp));
-            }
-        }
-
-        if constexpr (is_same<T, Parsed>::value)
-        {
-            // Restore asset tag, if needed
-            if (processFactoryReset && objectPath == "/system")
-            {
-                fillAssetTag(interfaces, vpdMap);
-            }
-        }
-
-        objects.emplace(move(object), move(interfaces));
-    }
-
-    if (isSystemVpd)
-    {
-        inventory::ObjectMap primeObject = primeInventory(js, vpdMap);
-        objects.insert(primeObject.begin(), primeObject.end());
-
-        // set the U-boot environment variable for device-tree
-        if constexpr (is_same<T, Parsed>::value)
-        {
-            setDevTreeEnv(fs::path(getSystemsJson(vpdMap)).filename());
-        }
-    }
-
-    // Notify PIM
-    common::utility::callPIM(move(objects));
-}
-
-int main(int argc, char** argv)
-{
-    int rc = 0;
-    json js{};
-    Binary vpdVector{};
-    string file{};
-    string driver{};
-    // map to hold additional data in case of logging pel
-    PelAdditionalData additionalData{};
-
-    // this is needed to hold base fru inventory path in case there is ECC or
-    // vpd exception while parsing the file
-    std::string baseFruInventoryPath = {};
-
-    // It holds the backup EEPROM file path for the system backplane's critical
-    // data
-    std::string systemVpdBackupPath{};
-
-    // It holds the inventory path of backup EEPROM file
-    std::string backupVpdInvPath{};
-
-    bool isSystemVpd = false;
-
-    // severity for PEL
-    PelSeverity pelSeverity = PelSeverity::WARNING;
-
-    try
-    {
-        App app{"ibm-read-vpd - App to read IPZ/Jedec format VPD, parse it and "
-                "store it in DBUS"};
-
-        app.add_option("-f, --file", file, "File containing VPD (IPZ/KEYWORD)")
-            ->required();
-
-        app.add_option("--driver", driver,
-                       "Driver used by kernel (at24,at25,ee1004)")
-            ->required();
-
-        CLI11_PARSE(app, argc, argv);
-
-        // PEL severity should be ERROR in case of any system VPD failure
-        if (file == systemVpdFilePath)
-        {
-            pelSeverity = PelSeverity::ERROR;
-            isSystemVpd = true;
-        }
-
-        // Check if input file is not empty.
-        if ((file.empty()) || (driver.empty()))
-        {
-            std::cerr << "Encountered empty input parameter file [" << file
-                      << "] driver [" << driver << "]" << std::endl;
-            return 0;
-        }
-
-        // Check if currently supported driver or not
-        if ((driver != at24driver) && (driver != at25driver) &&
-            (driver != ee1004driver))
-        {
-            std::cerr << "The driver [" << driver << "] is not supported."
-                      << std::endl;
-            return 0;
-        }
-
-        auto jsonToParse = INVENTORY_JSON_DEFAULT;
-
-        // If the symlink exists, it means it has been setup for us, switch the
-        // path
-        if (fs::exists(INVENTORY_JSON_SYM_LINK))
-        {
-            jsonToParse = INVENTORY_JSON_SYM_LINK;
-        }
-
-        // Make sure that the file path we get is for a supported EEPROM
-        ifstream inventoryJson(jsonToParse);
-        if (!inventoryJson)
-        {
-            throw(VpdJsonException("Failed to access Json path", jsonToParse));
-        }
-
-        try
-        {
-            js = json::parse(inventoryJson);
-        }
-        catch (const json::parse_error& ex)
-        {
-            throw(VpdJsonException("Json parsing failed", jsonToParse));
-        }
-
-        // Do we have the mandatory "frus" section?
-        if (js.find("frus") == js.end())
-        {
-            throw(VpdJsonException("FRUs section not found in JSON",
-                                   jsonToParse));
-        }
-
-        // Check if it's a udev path - patterned as(/ahb/1e780000.apb/ for I2C
-        // or /ahb/1e790000.apb/ for FSI)
-        if (file.find("/ahb:apb") != string::npos ||
-            file.find("/ahb/1e780000.apb") != string::npos ||
-            file.find("/ahb/1e790000.apb") != string::npos)
-        {
-            // Translate udev path to a generic /sys/bus/.. file path.
-            udevToGenericPath(file, driver);
-
-            if ((js["frus"].find(file) != js["frus"].end()) &&
-                (file == systemVpdFilePath))
-            {
-                std::cout << "We have already collected system VPD, skipping."
-                          << std::endl;
-                return 0;
-            }
-        }
-
-        // Enable all mux which are used for connecting to the i2c on the pcie
-        // slots for pcie cards. These are not enabled by kernel due to an issue
-        // seen with Castello cards, where the i2c line hangs on a probe.
-        // To run it only once have kept it under System vpd check.
-        // we need to run this on all BMC reboots so kept here
-        if (file == systemVpdFilePath)
-        {
-            doEnableAllMuxChips(js);
-        }
-
-        if (file.empty())
-        {
-            std::cerr << "The EEPROM path <" << file << "> is not valid.";
-            return 0;
-        }
-        if (js["frus"].find(file) == js["frus"].end())
-        {
-            std::cerr << "The EEPROM path [" << file
-                      << "] is not found in the json." << std::endl;
-            return 0;
-        }
-
-        if (!fs::exists(file))
-        {
-            std::cout << "Device path: " << file
-                      << " does not exist. Spurious udev event? Exiting."
-                      << std::endl;
-            return 0;
-        }
-
-        // In case of system VPD it will already be filled, Don't have to
-        // overwrite that.
-        if (baseFruInventoryPath.empty())
-        {
-            baseFruInventoryPath = js["frus"][file][0]["inventoryPath"];
-        }
-
-        // Check if we can read the VPD file based on the power state
-        // We skip reading VPD when the power is ON in two scenarios:
-        // 1) The eeprom we are trying to read is that of the system VPD and the
-        // JSON symlink is already setup (the symlink's existence tells us we
-        // are not coming out of a factory reset)
-        // 2) The JSON tells us that the FRU EEPROM cannot be
-        // read when we are powered ON.
-        if (js["frus"][file].at(0).value("powerOffOnly", false) ||
-            (file == systemVpdFilePath && fs::exists(INVENTORY_JSON_SYM_LINK)))
-        {
-            if ("xyz.openbmc_project.State.Chassis.PowerState.On" ==
-                getPowerState())
-            {
-                std::cout << "This VPD cannot be read when power is ON"
-                          << std::endl;
-                return 0;
-            }
-        }
-
-        // Check if this VPD should be recollected at all
-        if (!needsRecollection(js, file))
-        {
-            std::cout << "Skip VPD recollection for: " << file << std::endl;
-            return 0;
-        }
-
-        try
-        {
-            variant<KeywordVpdMap, Store> parseResult;
-            parseResult = parseVpdFile(file, js);
-
-            if (isSystemVpd)
-            {
-                // Get the value of systemVpdBackupPath field from json
-                systemVpdBackupPath = js["frus"][systemVpdFilePath].at(0).value(
-                    "systemVpdBackupPath", "");
-
-                if (!systemVpdBackupPath.empty())
-                {
-                    backupVpdInvPath =
-                        js["frus"][systemVpdBackupPath][0]["inventoryPath"]
-                            .get_ref<const nlohmann::json::string_t&>();
-                }
-            }
-
-            if (auto pVal = get_if<Store>(&parseResult))
-            {
-                populateDbus(pVal->getVpdMap(), js, file);
-            }
-            else if (auto pVal = get_if<KeywordVpdMap>(&parseResult))
-            {
-                populateDbus(*pVal, js, file);
-            }
-        }
-        catch (const exception& e)
-        {
-            if (!systemVpdBackupPath.empty())
-            {
-                file = systemVpdBackupPath;
-                baseFruInventoryPath = backupVpdInvPath;
-            }
-
-            executePostFailAction(js, file);
-            throw;
-        }
-    }
-    catch (const VpdJsonException& ex)
-    {
-        additionalData.emplace("JSON_PATH", ex.getJsonPath());
-        additionalData.emplace("DESCRIPTION", ex.what());
-        createPEL(additionalData, pelSeverity, errIntfForJsonFailure, nullptr);
-
-        std::cerr << ex.what() << "\n";
-        rc = -1;
-    }
-    catch (const VpdEccException& ex)
-    {
-        additionalData.emplace("DESCRIPTION", "ECC check failed");
-        additionalData.emplace("CALLOUT_INVENTORY_PATH",
-                               INVENTORY_PATH + baseFruInventoryPath);
-        createPEL(additionalData, pelSeverity, errIntfForEccCheckFail, nullptr);
-
-        if (systemVpdBackupPath.empty())
-        {
-            dumpBadVpd(file, vpdVector);
-        }
-
-        std::cerr << ex.what() << "\n";
-        rc = -1;
-    }
-    catch (const VpdDataException& ex)
-    {
-        if (isThisPcieOnPass1planar(js, file))
-        {
-            std::cout << "Pcie_device  [" << file
-                      << "]'s VPD is not valid on PASS1 planar.Ignoring.\n";
-            rc = 0;
-        }
-        else if (!(isPresent(js, file).value_or(true)))
-        {
-            std::cout << "FRU at: " << file
-                      << " is not detected present. Ignore parser error.\n";
-            rc = 0;
-        }
-        else
-        {
-            string errorMsg =
-                "VPD file is either empty or invalid. Parser failed for [";
-            errorMsg += file;
-            errorMsg += "], with error = " + std::string(ex.what());
-
-            additionalData.emplace("DESCRIPTION", errorMsg);
-            additionalData.emplace("CALLOUT_INVENTORY_PATH",
-                                   INVENTORY_PATH + baseFruInventoryPath);
-            createPEL(additionalData, pelSeverity, errIntfForInvalidVPD,
-                      nullptr);
-
-            rc = -1;
-        }
-    }
-    catch (const exception& e)
-    {
-        dumpBadVpd(file, vpdVector);
-        std::cerr << e.what() << "\n";
-        rc = -1;
-    }
-
-    return rc;
-}
diff --git a/ibm_vpd_utils.cpp b/ibm_vpd_utils.cpp
deleted file mode 100644
index 10bc577..0000000
--- a/ibm_vpd_utils.cpp
+++ /dev/null
@@ -1,1256 +0,0 @@
-#include "config.h"
-
-#include "ibm_vpd_utils.hpp"
-
-#include "common_utility.hpp"
-#include "const.hpp"
-#include "defines.hpp"
-#include "vpd_exceptions.hpp"
-
-#include <boost/algorithm/string.hpp>
-#include <gpiod.hpp>
-#include <nlohmann/json.hpp>
-#include <phosphor-logging/elog-errors.hpp>
-#include <phosphor-logging/log.hpp>
-#include <sdbusplus/server.hpp>
-#include <xyz/openbmc_project/Common/error.hpp>
-
-#include <filesystem>
-#include <fstream>
-#include <iomanip>
-#include <regex>
-#include <sstream>
-#include <vector>
-
-using json = nlohmann::json;
-
-namespace openpower
-{
-namespace vpd
-{
-using namespace openpower::vpd::constants;
-using namespace inventory;
-using namespace phosphor::logging;
-using namespace sdbusplus::xyz::openbmc_project::Common::Error;
-using namespace record;
-using namespace openpower::vpd::exceptions;
-using namespace common::utility;
-using Severity = openpower::vpd::constants::PelSeverity;
-namespace fs = std::filesystem;
-
-// mapping of severity enum to severity interface
-static std::unordered_map<Severity, std::string> sevMap = {
-    {Severity::INFORMATIONAL,
-     "xyz.openbmc_project.Logging.Entry.Level.Informational"},
-    {Severity::DEBUG, "xyz.openbmc_project.Logging.Entry.Level.Debug"},
-    {Severity::NOTICE, "xyz.openbmc_project.Logging.Entry.Level.Notice"},
-    {Severity::WARNING, "xyz.openbmc_project.Logging.Entry.Level.Warning"},
-    {Severity::CRITICAL, "xyz.openbmc_project.Logging.Entry.Level.Critical"},
-    {Severity::EMERGENCY, "xyz.openbmc_project.Logging.Entry.Level.Emergency"},
-    {Severity::ERROR, "xyz.openbmc_project.Logging.Entry.Level.Error"},
-    {Severity::ALERT, "xyz.openbmc_project.Logging.Entry.Level.Alert"}};
-
-namespace inventory
-{
-
-MapperResponse
-    getObjectSubtreeForInterfaces(const std::string& root, const int32_t depth,
-                                  const std::vector<std::string>& interfaces)
-{
-    auto bus = sdbusplus::bus::new_default();
-    auto mapperCall = bus.new_method_call(mapperDestination, mapperObjectPath,
-                                          mapperInterface, "GetSubTree");
-    mapperCall.append(root);
-    mapperCall.append(depth);
-    mapperCall.append(interfaces);
-
-    MapperResponse result = {};
-
-    try
-    {
-        auto response = bus.call(mapperCall);
-
-        response.read(result);
-    }
-    catch (const sdbusplus::exception_t& e)
-    {
-        log<level::ERR>("Error in mapper GetSubTree",
-                        entry("ERROR=%s", e.what()));
-    }
-
-    return result;
-}
-
-MapperGetObjectResponse getObject(const std::string& objectPath,
-                                  const std::vector<std::string>& interfaces)
-{
-    auto bus = sdbusplus::bus::new_default();
-    auto mapperCall = bus.new_method_call(mapperDestination, mapperObjectPath,
-                                          mapperInterface, "GetObject");
-    mapperCall.append(objectPath);
-    mapperCall.append(interfaces);
-
-    MapperGetObjectResponse result = {};
-
-    try
-    {
-        auto response = bus.call(mapperCall);
-
-        response.read(result);
-    }
-    catch (const sdbusplus::exception_t& e)
-    {
-        log<level::ERR>("Error in mapper GetObject",
-                        entry("ERROR=%s", e.what()));
-    }
-
-    return result;
-}
-
-} // namespace inventory
-
-LE2ByteData readUInt16LE(Binary::const_iterator iterator)
-{
-    LE2ByteData lowByte = *iterator;
-    LE2ByteData highByte = *(iterator + 1);
-    lowByte |= (highByte << 8);
-    return lowByte;
-}
-
-/** @brief Encodes a keyword for D-Bus.
- */
-std::string encodeKeyword(const std::string& kw, const std::string& encoding)
-{
-    if (encoding == "MAC")
-    {
-        std::string res{};
-        size_t first = kw[0];
-        res += toHex(first >> 4);
-        res += toHex(first & 0x0f);
-        for (size_t i = 1; i < kw.size(); ++i)
-        {
-            res += ":";
-            res += toHex(kw[i] >> 4);
-            res += toHex(kw[i] & 0x0f);
-        }
-        return res;
-    }
-    else if (encoding == "DATE")
-    {
-        // Date, represent as
-        // <year>-<month>-<day> <hour>:<min>
-        std::string res{};
-        static constexpr uint8_t skipPrefix = 3;
-
-        auto strItr = kw.begin();
-        advance(strItr, skipPrefix);
-        for_each(strItr, kw.end(), [&res](size_t c) { res += c; });
-
-        res.insert(BD_YEAR_END, 1, '-');
-        res.insert(BD_MONTH_END, 1, '-');
-        res.insert(BD_DAY_END, 1, ' ');
-        res.insert(BD_HOUR_END, 1, ':');
-
-        return res;
-    }
-    else // default to string encoding
-    {
-        return std::string(kw.begin(), kw.end());
-    }
-}
-
-std::string readBusProperty(const std::string& obj, const std::string& inf,
-                            const std::string& prop)
-{
-    std::string propVal{};
-    std::string object = INVENTORY_PATH + obj;
-    auto bus = sdbusplus::bus::new_default();
-    auto properties = bus.new_method_call(
-        "xyz.openbmc_project.Inventory.Manager", object.c_str(),
-        "org.freedesktop.DBus.Properties", "Get");
-    properties.append(inf);
-    properties.append(prop);
-    auto result = bus.call(properties);
-    if (!result.is_method_error())
-    {
-        inventory::Value val;
-        result.read(val);
-        if (auto pVal = std::get_if<Binary>(&val))
-        {
-            propVal.assign(reinterpret_cast<const char*>(pVal->data()),
-                           pVal->size());
-        }
-        else if (auto pVal = std::get_if<std::string>(&val))
-        {
-            propVal.assign(pVal->data(), pVal->size());
-        }
-        else if (auto pVal = get_if<bool>(&val))
-        {
-            if (*pVal == false)
-            {
-                propVal = "false";
-            }
-            else
-            {
-                propVal = "true";
-            }
-        }
-    }
-    return propVal;
-}
-
-void createPEL(const std::map<std::string, std::string>& additionalData,
-               const Severity& sev, const std::string& errIntf, sd_bus* sdBus)
-{
-    // This pointer will be NULL in case the call is made from ibm-read-vpd. In
-    // that case a sync call will do.
-    if (sdBus == nullptr)
-    {
-        createSyncPEL(additionalData, sev, errIntf);
-    }
-    else
-    {
-        std::string errDescription{};
-        auto pos = additionalData.find("DESCRIPTION");
-        if (pos != additionalData.end())
-        {
-            errDescription = pos->second;
-        }
-        else
-        {
-            errDescription = "Description field missing in additional data";
-        }
-
-        std::string pelSeverity =
-            "xyz.openbmc_project.Logging.Entry.Level.Error";
-        auto itr = sevMap.find(sev);
-        if (itr != sevMap.end())
-        {
-            pelSeverity = itr->second;
-        }
-
-        // Implies this is a call from Manager. Hence we need to make an async
-        // call to avoid deadlock with Phosphor-logging.
-        auto rc = sd_bus_call_method_async(
-            sdBus, NULL, loggerService, loggerObjectPath, loggerCreateInterface,
-            "Create", NULL, NULL, "ssa{ss}", errIntf.c_str(),
-            pelSeverity.c_str(), 1, "DESCRIPTION", errDescription.c_str());
-
-        if (rc < 0)
-        {
-            log<level::ERR>("Error calling sd_bus_call_method_async",
-                            entry("RC=%d", rc), entry("MSG=%s", strerror(-rc)));
-        }
-    }
-}
-
-void createSyncPEL(const std::map<std::string, std::string>& additionalData,
-                   const Severity& sev, const std::string& errIntf)
-{
-    try
-    {
-        std::string pelSeverity =
-            "xyz.openbmc_project.Logging.Entry.Level.Error";
-        auto bus = sdbusplus::bus::new_default();
-        auto service = getService(bus, loggerObjectPath, loggerCreateInterface);
-        auto method = bus.new_method_call(service.c_str(), loggerObjectPath,
-                                          loggerCreateInterface, "Create");
-
-        auto itr = sevMap.find(sev);
-        if (itr != sevMap.end())
-        {
-            pelSeverity = itr->second;
-        }
-
-        method.append(errIntf, pelSeverity, additionalData);
-        auto resp = bus.call(method);
-    }
-    catch (const sdbusplus::exception_t& e)
-    {
-        std::cerr << "Dbus call to phosphor-logging Create failed. Reason:"
-                  << e.what();
-    }
-}
-
-inventory::VPDfilepath getVpdFilePath(const std::string& jsonFile,
-                                      const std::string& ObjPath)
-{
-    std::ifstream inventoryJson(jsonFile);
-    const auto& jsonObject = json::parse(inventoryJson);
-    inventory::VPDfilepath filePath{};
-
-    if (jsonObject.find("frus") == jsonObject.end())
-    {
-        throw(VpdJsonException(
-            "Invalid JSON structure - frus{} object not found in ", jsonFile));
-    }
-
-    const nlohmann::json& groupFRUS =
-        jsonObject["frus"].get_ref<const nlohmann::json::object_t&>();
-    for (const auto& itemFRUS : groupFRUS.items())
-    {
-        const std::vector<nlohmann::json>& groupEEPROM =
-            itemFRUS.value().get_ref<const nlohmann::json::array_t&>();
-        for (const auto& itemEEPROM : groupEEPROM)
-        {
-            if (itemEEPROM["inventoryPath"]
-                    .get_ref<const nlohmann::json::string_t&>() == ObjPath)
-            {
-                filePath = itemFRUS.key();
-                return filePath;
-            }
-        }
-    }
-
-    return filePath;
-}
-
-bool isPathInJson(const std::string& eepromPath)
-{
-    bool present = false;
-    std::ifstream inventoryJson(INVENTORY_JSON_SYM_LINK);
-
-    try
-    {
-        auto js = json::parse(inventoryJson);
-        if (js.find("frus") == js.end())
-        {
-            throw(VpdJsonException(
-                "Invalid JSON structure - frus{} object not found in ",
-                INVENTORY_JSON_SYM_LINK));
-        }
-        json fruJson = js["frus"];
-
-        if (fruJson.find(eepromPath) != fruJson.end())
-        {
-            present = true;
-        }
-    }
-    catch (const json::parse_error& ex)
-    {
-        throw(VpdJsonException("Json Parsing failed", INVENTORY_JSON_SYM_LINK));
-    }
-    return present;
-}
-
-bool isRecKwInDbusJson(const std::string& recordName,
-                       const std::string& keyword)
-{
-    std::ifstream propertyJson(DBUS_PROP_JSON);
-    json dbusProperty;
-    bool present = false;
-
-    if (propertyJson.is_open())
-    {
-        try
-        {
-            auto dbusPropertyJson = json::parse(propertyJson);
-            if (dbusPropertyJson.find("dbusProperties") ==
-                dbusPropertyJson.end())
-            {
-                throw(VpdJsonException("dbusProperties{} object not found in "
-                                       "DbusProperties json : ",
-                                       DBUS_PROP_JSON));
-            }
-
-            dbusProperty = dbusPropertyJson["dbusProperties"];
-            if (dbusProperty.contains(recordName))
-            {
-                const std::vector<std::string>& kwdsToPublish =
-                    dbusProperty[recordName];
-                if (find(kwdsToPublish.begin(), kwdsToPublish.end(), keyword) !=
-                    kwdsToPublish.end()) // present
-                {
-                    present = true;
-                }
-            }
-        }
-        catch (const json::parse_error& ex)
-        {
-            throw(VpdJsonException("Json Parsing failed", DBUS_PROP_JSON));
-        }
-    }
-    else
-    {
-        // If dbus properties json is not available, we assume the given
-        // record-keyword is part of dbus-properties json. So setting the bool
-        // variable to true.
-        present = true;
-    }
-    return present;
-}
-
-vpdType vpdTypeCheck(const Binary& vpdVector)
-{
-    // Read first 3 Bytes to check the 11S bar code format
-    std::string is11SFormat = "";
-    for (uint8_t i = 0; i < FORMAT_11S_LEN; i++)
-    {
-        is11SFormat += vpdVector[MEMORY_VPD_DATA_START + i];
-    }
-
-    if (vpdVector[IPZ_DATA_START] == KW_VAL_PAIR_START_TAG)
-    {
-        // IPZ VPD FORMAT
-        return vpdType::IPZ_VPD;
-    }
-    else if (vpdVector[KW_VPD_DATA_START] == KW_VPD_START_TAG)
-    {
-        // KEYWORD VPD FORMAT
-        return vpdType::KEYWORD_VPD;
-    }
-    else if (((vpdVector[SPD_BYTE_3] & SPD_BYTE_BIT_0_3_MASK) ==
-              SPD_MODULE_TYPE_DDIMM) &&
-             (is11SFormat.compare(MEMORY_VPD_START_TAG) == 0))
-    {
-        // DDIMM Memory VPD format
-        if ((vpdVector[SPD_BYTE_2] & SPD_BYTE_MASK) == SPD_DRAM_TYPE_DDR5)
-        {
-            return vpdType::DDR5_DDIMM_MEMORY_VPD;
-        }
-        else if ((vpdVector[SPD_BYTE_2] & SPD_BYTE_MASK) == SPD_DRAM_TYPE_DDR4)
-        {
-            return vpdType::DDR4_DDIMM_MEMORY_VPD;
-        }
-    }
-    else if ((vpdVector[SPD_BYTE_2] & SPD_BYTE_MASK) == SPD_DRAM_TYPE_DDR5)
-    {
-        // ISDIMM Memory VPD format
-        return vpdType::DDR5_ISDIMM_MEMORY_VPD;
-    }
-    else if ((vpdVector[SPD_BYTE_2] & SPD_BYTE_MASK) == SPD_DRAM_TYPE_DDR4)
-    {
-        // ISDIMM Memory VPD format
-        return vpdType::DDR4_ISDIMM_MEMORY_VPD;
-    }
-
-    // INVALID VPD FORMAT
-    return vpdType::INVALID_VPD_FORMAT;
-}
-
-const std::string getIM(const Parsed& vpdMap)
-{
-    Binary imVal;
-    auto property = vpdMap.find("VSBP");
-    if (property != vpdMap.end())
-    {
-        auto kw = (property->second).find("IM");
-        if (kw != (property->second).end())
-        {
-            copy(kw->second.begin(), kw->second.end(), back_inserter(imVal));
-        }
-    }
-
-    std::ostringstream oss;
-    for (auto& i : imVal)
-    {
-        oss << std::setw(2) << std::setfill('0') << std::hex
-            << static_cast<int>(i);
-    }
-
-    return oss.str();
-}
-
-const std::string getHW(const Parsed& vpdMap)
-{
-    Binary hwVal;
-    auto prop = vpdMap.find("VINI");
-    if (prop != vpdMap.end())
-    {
-        auto kw = (prop->second).find("HW");
-        if (kw != (prop->second).end())
-        {
-            copy(kw->second.begin(), kw->second.end(), back_inserter(hwVal));
-        }
-    }
-
-    // The planar pass only comes from the LSB of the HW keyword,
-    // where as the MSB is used for other purposes such as signifying clock
-    // termination.
-    hwVal[0] = 0x00;
-
-    std::ostringstream hwString;
-    for (auto& i : hwVal)
-    {
-        hwString << std::setw(2) << std::setfill('0') << std::hex
-                 << static_cast<int>(i);
-    }
-
-    return hwString.str();
-}
-
-std::string getSystemsJson(const Parsed& vpdMap)
-{
-    std::string jsonPath = "/usr/share/vpd/";
-    std::string jsonName{};
-
-    std::ifstream systemJson(SYSTEM_JSON);
-    if (!systemJson)
-    {
-        throw((VpdJsonException("Failed to access Json path", SYSTEM_JSON)));
-    }
-
-    try
-    {
-        auto js = json::parse(systemJson);
-
-        std::string hwKeyword = getHW(vpdMap);
-        const std::string imKeyword = getIM(vpdMap);
-
-        transform(hwKeyword.begin(), hwKeyword.end(), hwKeyword.begin(),
-                  ::toupper);
-
-        if (js.find("system") == js.end())
-        {
-            throw std::runtime_error("Invalid systems Json");
-        }
-
-        if (js["system"].find(imKeyword) == js["system"].end())
-        {
-            throw std::runtime_error(
-                "Invalid system. This system type is not present "
-                "in the systemsJson. IM: " +
-                imKeyword);
-        }
-
-        if ((js["system"][imKeyword].find("constraint") !=
-             js["system"][imKeyword].end()) &&
-            js["system"][imKeyword]["constraint"].find("HW") !=
-                js["system"][imKeyword]["constraint"].end())
-        {
-            // collect hw versions from json, and check hwKeyword  is part of it
-            // if hwKeyword is found there then load respective json
-            // otherwise load default one.
-            for (const auto& hwVersion :
-                 js["system"][imKeyword]["constraint"]["HW"])
-            {
-                std::string hw = hwVersion;
-                transform(hw.begin(), hw.end(), hw.begin(), ::toupper);
-
-                if (hw == hwKeyword)
-                {
-                    jsonName = js["system"][imKeyword]["constraint"]["json"];
-                    break;
-                }
-            }
-
-            if (jsonName.empty() && js["system"][imKeyword].find("default") !=
-                                        js["system"][imKeyword].end())
-            {
-                jsonName = js["system"][imKeyword]["default"];
-            }
-        }
-        else if (js["system"][imKeyword].find("default") !=
-                 js["system"][imKeyword].end())
-        {
-            jsonName = js["system"][imKeyword]["default"];
-        }
-        else
-        {
-            throw std::runtime_error(
-                "Bad System json. Neither constraint nor default found");
-        }
-
-        jsonPath += jsonName;
-    }
-
-    catch (const json::parse_error& ex)
-    {
-        throw(VpdJsonException("Json Parsing failed", SYSTEM_JSON));
-    }
-    return jsonPath;
-}
-
-void udevToGenericPath(std::string& file, const std::string& driver)
-{
-    // Sample udevEvent i2c path :
-    // "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a480.i2c-bus/i2c-8/8-0051/8-00510/nvmem"
-    // find if the path contains the word i2c in it.
-    if (file.find("i2c") != std::string::npos)
-    {
-        std::string i2cBusAddr{};
-
-        // Every udev i2c path should have the common pattern
-        // "i2c-bus_number/bus_number-vpd_address". Search for
-        // "bus_number-vpd_address".
-        std::regex i2cPattern("((i2c)-[0-9]+\\/)([0-9]+-[0-9]{4})");
-        std::smatch match;
-        if (std::regex_search(file, match, i2cPattern))
-        {
-            i2cBusAddr = match.str(3);
-        }
-        else
-        {
-            std::cerr << "The given udev path < " << file
-                      << " > doesn't match the required pattern. Skipping VPD "
-                         "collection."
-                      << std::endl;
-            exit(EXIT_SUCCESS);
-        }
-        // Forming the generic file path
-        file = i2cPathPrefix + driver + "/" + i2cBusAddr + "/eeprom";
-    }
-    // Sample udevEvent spi path :
-    // "/sys/devices/platform/ahb/ahb:apb/1e79b000.fsi/fsi-master/fsi0/slave@00:00/00:00:00:04/spi_master/spi2/spi2.0/spi2.00/nvmem"
-    // find if the path contains the word spi in it.
-    else if (file.find("spi") != std::string::npos)
-    {
-        // Every udev spi path will have common pattern "spi<Digit>/", which
-        // describes the spi bus number at which the fru is connected; Followed
-        // by a slash following the vpd address of the fru. Taking the above
-        // input as a common key, we try to search for the pattern "spi<Digit>/"
-        // using regular expression.
-        std::regex spiPattern("((spi)[0-9]+)(\\/)");
-        std::string spiBus{};
-        std::smatch match;
-        if (std::regex_search(file, match, spiPattern))
-        {
-            spiBus = match.str(1);
-        }
-        else
-        {
-            std::cerr << "The given udev path < " << file
-                      << " > doesn't match the required pattern. Skipping VPD "
-                         "collection."
-                      << std::endl;
-            exit(EXIT_SUCCESS);
-        }
-        // Forming the generic path
-        file = spiPathPrefix + driver + "/" + spiBus + ".0/eeprom";
-    }
-    else
-    {
-        std::cerr << "\n The given EEPROM path < " << file
-                  << " > is not valid. It's neither I2C nor "
-                     "SPI path. Skipping VPD collection.."
-                  << std::endl;
-        exit(EXIT_SUCCESS);
-    }
-}
-std::string getBadVpdName(const std::string& file)
-{
-    std::string badVpd = BAD_VPD_DIR;
-    if (file.find("i2c") != std::string::npos)
-    {
-        badVpd += "i2c-";
-        std::regex i2cPattern("(at24/)([0-9]+-[0-9]+)\\/");
-        std::smatch match;
-        if (std::regex_search(file, match, i2cPattern))
-        {
-            badVpd += match.str(2);
-        }
-    }
-    else if (file.find("spi") != std::string::npos)
-    {
-        std::regex spiPattern("((spi)[0-9]+)(.0)");
-        std::smatch match;
-        if (std::regex_search(file, match, spiPattern))
-        {
-            badVpd += match.str(1);
-        }
-    }
-    return badVpd;
-}
-
-void dumpBadVpd(const std::string& file, const Binary& vpdVector)
-{
-    fs::path badVpdDir = BAD_VPD_DIR;
-    fs::create_directory(badVpdDir);
-    std::string badVpdPath = getBadVpdName(file);
-    if (fs::exists(badVpdPath))
-    {
-        std::error_code ec;
-        fs::remove(badVpdPath, ec);
-        if (ec) // error code
-        {
-            std::string error = "Error removing the existing broken vpd in ";
-            error += badVpdPath;
-            error += ". Error code : ";
-            error += ec.value();
-            error += ". Error message : ";
-            error += ec.message();
-            throw std::runtime_error(error);
-        }
-    }
-    std::ofstream badVpdFileStream(badVpdPath, std::ofstream::binary);
-    if (!badVpdFileStream)
-    {
-        throw std::runtime_error(
-            "Failed to open bad vpd file path in /tmp/bad-vpd. "
-            "Unable to dump the broken/bad vpd file.");
-    }
-    badVpdFileStream.write(reinterpret_cast<const char*>(vpdVector.data()),
-                           vpdVector.size());
-}
-
-const std::string getKwVal(const Parsed& vpdMap, const std::string& rec,
-                           const std::string& kwd)
-{
-    std::string kwVal{};
-
-    auto findRec = vpdMap.find(rec);
-
-    // check if record is found in map we got by parser
-    if (findRec != vpdMap.end())
-    {
-        auto findKwd = findRec->second.find(kwd);
-
-        if (findKwd != findRec->second.end())
-        {
-            kwVal = findKwd->second;
-        }
-        else
-        {
-            std::cout << "Keyword not found" << std::endl;
-        }
-    }
-    else
-    {
-        std::cerr << "Record not found" << std::endl;
-    }
-
-    return kwVal;
-}
-
-std::string hexString(const std::variant<Binary, std::string>& kw)
-{
-    std::string hexString;
-    std::visit(
-        [&hexString](auto&& kw) {
-            std::stringstream ss;
-            std::string hexRep = "0x";
-            ss << hexRep;
-            for (auto& kwVal : kw)
-            {
-                ss << std::setfill('0') << std::setw(2) << std::hex
-                   << static_cast<int>(kwVal);
-            }
-            hexString = ss.str();
-        },
-        kw);
-    return hexString;
-}
-
-std::string getPrintableValue(const std::variant<Binary, std::string>& kwVal)
-{
-    std::string kwString{};
-    std::visit(
-        [&kwString](auto&& kwVal) {
-            const auto it =
-                std::find_if(kwVal.begin(), kwVal.end(),
-                             [](const auto& kw) { return !isprint(kw); });
-            if (it != kwVal.end())
-            {
-                kwString = hexString(kwVal);
-            }
-            else
-            {
-                kwString = std::string(kwVal.begin(), kwVal.end());
-            }
-        },
-        kwVal);
-    return kwString;
-}
-
-void executePostFailAction(const nlohmann::json& json, const std::string& file)
-{
-    if ((json["frus"][file].at(0)).find("postActionFail") ==
-        json["frus"][file].at(0).end())
-    {
-        return;
-    }
-
-    uint8_t pinValue = 0;
-    std::string pinName;
-
-    for (const auto& postAction :
-         (json["frus"][file].at(0))["postActionFail"].items())
-    {
-        if (postAction.key() == "pin")
-        {
-            pinName = postAction.value();
-        }
-        else if (postAction.key() == "value")
-        {
-            // Get the value to set
-            pinValue = postAction.value();
-        }
-    }
-
-    std::cout << "Setting GPIO: " << pinName << " to " << (int)pinValue
-              << std::endl;
-
-    try
-    {
-        gpiod::line outputLine = gpiod::find_line(pinName);
-
-        if (!outputLine)
-        {
-            throw GpioException(
-                "Couldn't find output line for the GPIO. Skipping "
-                "this GPIO action.");
-        }
-        outputLine.request(
-            {"Disable line", ::gpiod::line_request::DIRECTION_OUTPUT, 0},
-            pinValue);
-    }
-    catch (const std::exception& e)
-    {
-        std::string i2cBusAddr;
-        std::string errMsg = e.what();
-        errMsg += "\nGPIO: " + pinName;
-
-        if ((json["frus"][file].at(0)["postActionFail"].find(
-                "gpioI2CAddress")) !=
-            json["frus"][file].at(0)["postActionFail"].end())
-        {
-            i2cBusAddr =
-                json["frus"][file].at(0)["postActionFail"]["gpioI2CAddress"];
-            errMsg += " i2cBusAddress: " + i2cBusAddr;
-        }
-
-        throw GpioException(e.what());
-    }
-
-    return;
-}
-
-std::optional<bool> isPresent(const nlohmann::json& json,
-                              const std::string& file)
-
-{
-    if ((json["frus"][file].at(0)).find("presence") !=
-        json["frus"][file].at(0).end())
-    {
-        if (((json["frus"][file].at(0)["presence"]).find("pin") !=
-             json["frus"][file].at(0)["presence"].end()) &&
-            ((json["frus"][file].at(0)["presence"]).find("value") !=
-             json["frus"][file].at(0)["presence"].end()))
-        {
-            std::string presPinName =
-                json["frus"][file].at(0)["presence"]["pin"];
-            Byte presPinValue = json["frus"][file].at(0)["presence"]["value"];
-
-            try
-            {
-                gpiod::line presenceLine = gpiod::find_line(presPinName);
-
-                if (!presenceLine)
-                {
-                    std::cerr << "Couldn't find the presence line for - "
-                              << presPinName << std::endl;
-
-                    throw GpioException(
-                        "Couldn't find the presence line for the "
-                        "GPIO. Skipping this GPIO action.");
-                }
-
-                presenceLine.request({"Read the presence line",
-                                      gpiod::line_request::DIRECTION_INPUT, 0});
-
-                Byte gpioData = presenceLine.get_value();
-
-                return (gpioData == presPinValue);
-            }
-            catch (const std::exception& e)
-            {
-                std::string i2cBusAddr;
-                std::string errMsg = e.what();
-                errMsg += " GPIO : " + presPinName;
-
-                if ((json["frus"][file].at(0)["presence"])
-                        .find("gpioI2CAddress") !=
-                    json["frus"][file].at(0)["presence"].end())
-                {
-                    i2cBusAddr =
-                        json["frus"][file].at(0)["presence"]["gpioI2CAddress"];
-                    errMsg += " i2cBusAddress: " + i2cBusAddr;
-                }
-
-                // Take failure postAction
-                executePostFailAction(json, file);
-                throw GpioException(errMsg);
-            }
-        }
-        else
-        {
-            // missing required information
-            std::cerr
-                << "VPD inventory JSON missing basic information of presence "
-                   "for this FRU : ["
-                << file << "]. Executing executePostFailAction." << std::endl;
-
-            // Take failure postAction
-            executePostFailAction(json, file);
-
-            return false;
-        }
-    }
-    return std::optional<bool>{};
-}
-
-bool executePreAction(const nlohmann::json& json, const std::string& file)
-{
-    auto present = isPresent(json, file);
-    if (present && !present.value())
-    {
-        executePostFailAction(json, file);
-        return false;
-    }
-
-    if ((json["frus"][file].at(0)).find("preAction") !=
-        json["frus"][file].at(0).end())
-    {
-        if (((json["frus"][file].at(0)["preAction"]).find("pin") !=
-             json["frus"][file].at(0)["preAction"].end()) &&
-            ((json["frus"][file].at(0)["preAction"]).find("value") !=
-             json["frus"][file].at(0)["preAction"].end()))
-        {
-            std::string pinName = json["frus"][file].at(0)["preAction"]["pin"];
-            // Get the value to set
-            Byte pinValue = json["frus"][file].at(0)["preAction"]["value"];
-
-            std::cout << "Setting GPIO: " << pinName << " to " << (int)pinValue
-                      << std::endl;
-            try
-            {
-                gpiod::line outputLine = gpiod::find_line(pinName);
-
-                if (!outputLine)
-                {
-                    std::cerr << "Couldn't find the line for output pin - "
-                              << pinName << std::endl;
-                    throw GpioException(
-                        "Couldn't find output line for the GPIO. "
-                        "Skipping this GPIO action.");
-                }
-                outputLine.request({"FRU pre-action",
-                                    ::gpiod::line_request::DIRECTION_OUTPUT, 0},
-                                   pinValue);
-            }
-            catch (const std::exception& e)
-            {
-                std::string i2cBusAddr;
-                std::string errMsg = e.what();
-                errMsg += " GPIO : " + pinName;
-
-                if ((json["frus"][file].at(0)["preAction"])
-                        .find("gpioI2CAddress") !=
-                    json["frus"][file].at(0)["preAction"].end())
-                {
-                    i2cBusAddr =
-                        json["frus"][file].at(0)["preAction"]["gpioI2CAddress"];
-                    errMsg += " i2cBusAddress: " + i2cBusAddr;
-                }
-
-                // Take failure postAction
-                executePostFailAction(json, file);
-                throw GpioException(errMsg);
-            }
-        }
-        else
-        {
-            // missing required information
-            std::cerr
-                << "VPD inventory JSON missing basic information of preAction "
-                   "for this FRU : ["
-                << file << "]. Executing executePostFailAction." << std::endl;
-
-            // Take failure postAction
-            executePostFailAction(json, file);
-            return false;
-        }
-    }
-    return true;
-}
-
-void insertOrMerge(inventory::InterfaceMap& map,
-                   const inventory::Interface& interface,
-                   inventory::PropertyMap&& property)
-{
-    if (map.find(interface) != map.end())
-    {
-        auto& prop = map.at(interface);
-        prop.insert(property.begin(), property.end());
-    }
-    else
-    {
-        map.emplace(interface, property);
-    }
-}
-
-BIOSAttrValueType readBIOSAttribute(const std::string& attrName)
-{
-    std::tuple<std::string, BIOSAttrValueType, BIOSAttrValueType> attrVal;
-    auto bus = sdbusplus::bus::new_default();
-    auto method = bus.new_method_call(
-        "xyz.openbmc_project.BIOSConfigManager",
-        "/xyz/openbmc_project/bios_config/manager",
-        "xyz.openbmc_project.BIOSConfig.Manager", "GetAttribute");
-    method.append(attrName);
-    try
-    {
-        auto result = bus.call(method);
-        result.read(std::get<0>(attrVal), std::get<1>(attrVal),
-                    std::get<2>(attrVal));
-    }
-    catch (const sdbusplus::exception::SdBusError& e)
-    {
-        std::cerr << "Failed to read BIOS Attribute: " << attrName << std::endl;
-        std::cerr << e.what() << std::endl;
-    }
-    return std::get<1>(attrVal);
-}
-
-std::string getPowerState()
-{
-    // TODO: How do we handle multiple chassis?
-    std::string powerState{};
-    auto bus = sdbusplus::bus::new_default();
-    auto properties =
-        bus.new_method_call("xyz.openbmc_project.State.Chassis0",
-                            "/xyz/openbmc_project/state/chassis0",
-                            "org.freedesktop.DBus.Properties", "Get");
-    properties.append("xyz.openbmc_project.State.Chassis");
-    properties.append("CurrentPowerState");
-    auto result = bus.call(properties);
-    if (!result.is_method_error())
-    {
-        std::variant<std::string> val;
-        result.read(val);
-        if (auto pVal = std::get_if<std::string>(&val))
-        {
-            powerState = *pVal;
-        }
-    }
-    std::cout << "Power state is: " << powerState << std::endl;
-    return powerState;
-}
-
-Binary getVpdDataInVector(const nlohmann::json& js, const std::string& file)
-{
-    uint32_t offset = 0;
-    // check if offset present?
-    for (const auto& item : js["frus"][file])
-    {
-        if (item.find("offset") != item.end())
-        {
-            offset = item["offset"];
-        }
-    }
-
-    // TODO: Figure out a better way to get max possible VPD size.
-    auto maxVPDSize = std::min(std::filesystem::file_size(file),
-                               static_cast<uintmax_t>(65504));
-
-    Binary vpdVector;
-    vpdVector.resize(maxVPDSize);
-    std::ifstream vpdFile;
-    vpdFile.exceptions(std::ifstream::badbit | std::ifstream::failbit);
-    try
-    {
-        vpdFile.open(file, std::ios::binary | std::ios::in);
-        vpdFile.seekg(offset, std::ios_base::cur);
-        vpdFile.read(reinterpret_cast<char*>(&vpdVector[0]), maxVPDSize);
-        vpdVector.resize(vpdFile.gcount());
-    }
-    catch (const std::ifstream::failure& fail)
-    {
-        std::cerr << "Exception in file handling [" << file
-                  << "] error : " << fail.what();
-        std::cerr << "EEPROM file size =" << std::filesystem::file_size(file)
-                  << std::endl;
-        std::cerr << "Stream file size = " << vpdFile.gcount() << std::endl;
-        std::cerr << " Vector size" << vpdVector.size() << std::endl;
-        throw;
-    }
-
-    // Make sure we reset the EEPROM pointer to a "safe" location if it was
-    // a DDIMM SPD that we just read.
-    for (const auto& item : js["frus"][file])
-    {
-        if (item.find("extraInterfaces") != item.end())
-        {
-            if (item["extraInterfaces"].find(
-                    "xyz.openbmc_project.Inventory.Item.Dimm") !=
-                item["extraInterfaces"].end())
-            {
-                // check added here for DDIMM only workaround
-                vpdType dimmType = vpdTypeCheck(vpdVector);
-                if (dimmType == constants::DDR4_DDIMM_MEMORY_VPD ||
-                    dimmType == constants::DDR5_DDIMM_MEMORY_VPD)
-                {
-                    try
-                    {
-                        // moves the EEPROM pointer to 2048 'th byte.
-                        vpdFile.seekg(2047, std::ios::beg);
-                        // Read that byte and discard - to affirm the move
-                        // operation.
-                        char ch;
-                        vpdFile.read(&ch, sizeof(ch));
-                    }
-                    catch (const std::ifstream::failure& fail)
-                    {
-                        std::cerr << "Exception in file handling [" << file
-                                  << "] error : " << fail.what();
-                        std::cerr << "Stream file size = " << vpdFile.gcount()
-                                  << std::endl;
-                        throw;
-                    }
-                }
-                break;
-            }
-        }
-    }
-
-    return vpdVector;
-}
-
-std::string getDbusNameForThisKw(const std::string& keyword)
-{
-    if (keyword[0] == constants::POUND_KW)
-    {
-        return (std::string(constants::POUND_KW_PREFIX) + keyword[1]);
-    }
-    else if (isdigit(keyword[0]))
-    {
-        return (std::string(constants::NUMERIC_KW_PREFIX) + keyword);
-    }
-    return keyword;
-}
-
-void clearVpdOnRemoval(const std::string& objPath,
-                       inventory::InterfaceMap& interfacesPropMap)
-{
-    std::vector<std::string> vpdRelatedInterfaces{
-        constants::invOperationalStatusIntf, constants::invItemIntf,
-        constants::invAssetIntf};
-
-    std::vector<std::string> interfaces{};
-    auto mapperResponse = inventory::getObject(objPath, interfaces);
-
-    for (const auto& [service, interfaceList] : mapperResponse)
-    {
-        // Handle FRUs under PIM
-        if (service.compare(pimService) != 0)
-        {
-            continue;
-        }
-
-        for (const auto& interface : interfaceList)
-        {
-            // Only process for VPD related interfaces.
-            if ((interface.find("com.ibm.ipzvpd") != std::string::npos) ||
-                ((std::find(vpdRelatedInterfaces.begin(),
-                            vpdRelatedInterfaces.end(), interface)) !=
-                 vpdRelatedInterfaces.end()))
-            {
-                const auto propertyList = getAllDBusProperty<GetAllResultType>(
-                    service, objPath, interface);
-
-                inventory::PropertyMap propertyValueMap;
-                for (auto aProperty : propertyList)
-                {
-                    const auto& propertyName = std::get<0>(aProperty);
-                    const auto& propertyValue = std::get<1>(aProperty);
-
-                    if (std::holds_alternative<Binary>(propertyValue))
-                    {
-                        propertyValueMap.emplace(propertyName, Binary{});
-                    }
-                    else if (std::holds_alternative<std::string>(propertyValue))
-                    {
-                        propertyValueMap.emplace(propertyName, std::string{});
-                    }
-                    else if (std::holds_alternative<bool>(propertyValue))
-                    {
-                        if (propertyName.compare("Present") == 0)
-                        {
-                            propertyValueMap.emplace(propertyName, false);
-                        }
-                        else if (propertyName.compare("Functional") == 0)
-                        {
-                            propertyValueMap.emplace(propertyName, true);
-                        }
-                    }
-                }
-                interfacesPropMap.emplace(interface,
-                                          std::move(propertyValueMap));
-            }
-        }
-    }
-}
-
-void findBackupVPDPaths(std::string& backupEepromPath,
-                        std::string& backupInvPath, const nlohmann::json& js)
-{
-    for (const auto& item : js["frus"][constants::systemVpdFilePath])
-    {
-        if (item.find("systemVpdBackupPath") != item.end())
-        {
-            backupEepromPath = item["systemVpdBackupPath"];
-            for (const auto& item : js["frus"][backupEepromPath])
-            {
-                if (item.find("inventoryPath") != item.end())
-                {
-                    backupInvPath = item["inventoryPath"];
-                    break;
-                }
-            }
-            break;
-        }
-    }
-}
-
-void getBackupRecordKeyword(std::string& record, std::string& keyword)
-{
-    for (const auto& recordKw : svpdKwdMap)
-    {
-        if (record == recordKw.first)
-        {
-            for (const auto& keywordInfo : recordKw.second)
-            {
-                if (keyword == get<0>(keywordInfo))
-                {
-                    record = get<4>(keywordInfo);
-                    keyword = get<5>(keywordInfo);
-                    break;
-                }
-            }
-            break;
-        }
-    }
-}
-
-bool isReadOnlyEEPROM(const std::string& vpdPath,
-                      const nlohmann::json& jsObject)
-{
-    // check if given path is FRU path
-    if (jsObject["frus"].contains(vpdPath))
-    {
-        return jsObject["frus"][vpdPath].at(0).value("readOnly", false);
-    }
-
-    const nlohmann::json& fruList =
-        jsObject["frus"].get_ref<const nlohmann::json::object_t&>();
-
-    for (const auto& fru : fruList.items())
-    {
-        const auto fruPath = fru.key();
-
-        // If given VPD path is either the inventory path or redundant EEPROM
-        // path.
-        if ((vpdPath ==
-             jsObject["frus"][fruPath].at(0).value("inventoryPath", "")) ||
-            (vpdPath ==
-             jsObject["frus"][fruPath].at(0).value("redundantEeprom", "")))
-        {
-            return jsObject["frus"][fruPath].at(0).value("readOnly", false);
-        }
-    }
-
-    // Given path not found in JSON
-    return false;
-}
-} // namespace vpd
-} // namespace openpower
diff --git a/ibm_vpd_utils.hpp b/ibm_vpd_utils.hpp
deleted file mode 100644
index e34ba35..0000000
--- a/ibm_vpd_utils.hpp
+++ /dev/null
@@ -1,580 +0,0 @@
-#pragma once
-
-#include "const.hpp"
-#include "store.hpp"
-#include "types.hpp"
-
-#include <nlohmann/json.hpp>
-
-#include <iostream>
-#include <optional>
-#include <variant>
-
-namespace openpower
-{
-namespace vpd
-{
-
-// Map which holds system vpd keywords which can be restored at standby and via
-// vpd-tool and also can be used to reset keywords to its defaults at
-// manufacturing. The list of keywords for VSYS record is as per the S0 system.
-// Should be updated for another type of systems For those keywords whose
-// default value is system specific, the default value field is left empty.
-// Record : {Keyword, Default value, Is PEL required on restore failure, Is MFG
-// reset required, backupVpdRecName, backupVpdKwName}
-static const inventory::SystemKeywordsMap svpdKwdMap{
-    {"VSYS",
-     {inventory::SystemKeywordInfo("BR", Binary(2, 0x20), true, true, "VSBK",
-                                   "BR"),
-      inventory::SystemKeywordInfo("TM", Binary(8, 0x20), true, true, "VSBK",
-                                   "TM"),
-      inventory::SystemKeywordInfo("SE", Binary(7, 0x20), true, true, "VSBK",
-                                   "SE"),
-      inventory::SystemKeywordInfo("SU", Binary(6, 0x20), true, true, "VSBK",
-                                   "SU"),
-      inventory::SystemKeywordInfo("RB", Binary(4, 0x20), true, true, "VSBK",
-                                   "RB"),
-      inventory::SystemKeywordInfo("WN", Binary(12, 0x20), true, true, "VSBK",
-                                   "WN"),
-      inventory::SystemKeywordInfo("RG", Binary(4, 0x20), true, true, "VSBK",
-                                   "RG"),
-      inventory::SystemKeywordInfo("FV", Binary(32, 0x20), false, true, "VSBK",
-                                   "FV")}},
-    {"VCEN",
-     {inventory::SystemKeywordInfo("FC", Binary(8, 0x20), true, false, "VSBK",
-                                   "FC"),
-      inventory::SystemKeywordInfo("SE", Binary(7, 0x20), true, true, "VSBK",
-                                   "ES")}},
-    {"LXR0",
-     {inventory::SystemKeywordInfo("LX", Binary(8, 0x00), true, false, "VSBK",
-                                   "LX")}},
-    {"UTIL",
-     {inventory::SystemKeywordInfo("D0", Binary(1, 0x00), true, true, "VSBK",
-                                   "D0"),
-      inventory::SystemKeywordInfo("D1", Binary(1, 0x00), false, true, "VSBK",
-                                   "D1"),
-      inventory::SystemKeywordInfo("F0", Binary(8, 0x00), false, true, "VSBK",
-                                   "F0"),
-      inventory::SystemKeywordInfo("F5", Binary(16, 0x00), false, true, "VSBK",
-                                   "F5"),
-      inventory::SystemKeywordInfo("F6", Binary(16, 0x00), false, true, "VSBK",
-                                   "F6")}}};
-
-/** @brief Return the hex representation of the incoming byte
- *
- * @param [in] c - The input byte
- * @returns The hex representation of the byte as a character.
- */
-constexpr auto toHex(size_t c)
-{
-    constexpr auto map = "0123456789abcdef";
-    return map[c];
-}
-
-namespace inventory
-{
-/** @brief API to obtain a dictionary of path -> services
- * where path is in subtree and services is of the type
- * returned by the GetObject method.
- *
- * @param [in] root - Root path for object subtree
- * @param [in] depth - Maximum subtree depth required
- * @param [in] interfaces - Array to interfaces for which
- * result is required.
- * @return A dictionary of Path -> services
- */
-MapperResponse
-    getObjectSubtreeForInterfaces(const std::string& root, const int32_t depth,
-                                  const std::vector<std::string>& interfaces);
-
-/**
- * @brief API to call GetObject API of mapper.
- *
- * @param[in] objectPath - inventory path.
- * @param[in] interfaces - List of interfaces.
- *
- * @return - response of the API call.
- */
-MapperGetObjectResponse getObject(const std::string& objectPath,
-                                  const std::vector<std::string>& interfaces);
-
-} // namespace inventory
-
-/**@brief This API reads 2 Bytes of data and swap the read data
- * @param[in] iterator- Pointer pointing to the data to be read
- * @return returns 2 Byte data read at the given pointer
- */
-openpower::vpd::constants::LE2ByteData
-    readUInt16LE(Binary::const_iterator iterator);
-
-/** @brief Encodes a keyword for D-Bus.
- *  @param[in] kw - kwd data in string format
- *  @param[in] encoding - required for kwd data
- */
-std::string encodeKeyword(const std::string& kw, const std::string& encoding);
-
-/** @brief Reads a property from the inventory manager given object path,
- *         interface and property.
- *  @param[in] obj - object path
- *  @param[in] inf - interface
- *  @param[in] prop - property whose value is fetched
- *  @return [out] - value of the property
- */
-std::string readBusProperty(const std::string& obj, const std::string& inf,
-                            const std::string& prop);
-
-/** @brief A templated function to read D-Bus properties.
- *
- *  @param[in] service - Service path
- *  @param[in] object - object path
- *  @param[in] inf - interface
- *  @param[in] prop - property whose value is fetched
- *  @return The property value of its own type.
- */
-template <typename T>
-T readDBusProperty(const std::string& service, const std::string& object,
-                   const std::string& inf, const std::string& prop)
-{
-    T retVal{};
-    try
-    {
-        auto bus = sdbusplus::bus::new_default();
-        auto properties =
-            bus.new_method_call(service.c_str(), object.c_str(),
-                                "org.freedesktop.DBus.Properties", "Get");
-        properties.append(inf);
-        properties.append(prop);
-        auto result = bus.call(properties);
-        result.read(retVal);
-    }
-    catch (const sdbusplus::exception::SdBusError& e)
-    {
-        std::cerr << e.what();
-    }
-    return retVal;
-}
-
-/** @brief A templated method to get all D-Bus properties
- *
- * @param[in] service - Service path
- * @param[in] object - Object path
- * @param[in] inf - Interface
- *
- * @return All properties under the given interface.
- */
-template <typename T>
-T getAllDBusProperty(const std::string& service, const std::string& object,
-                     const std::string& inf)
-{
-    T retVal{};
-    try
-    {
-        auto bus = sdbusplus::bus::new_default();
-        auto allProperties =
-            bus.new_method_call(service.c_str(), object.c_str(),
-                                "org.freedesktop.DBus.Properties", "GetAll");
-        allProperties.append(inf);
-
-        auto result = bus.call(allProperties);
-        result.read(retVal);
-    }
-    catch (const sdbusplus::exception::SdBusError& e)
-    {
-        std::cerr << e.what();
-    }
-    return retVal;
-}
-
-/**
- * @brief API to create PEL entry
- * The api makes synchronous call to phosphor-logging create api.
- * @param[in] additionalData - Map holding the additional data
- * @param[in] sev - Severity
- * @param[in] errIntf - error interface
- */
-void createSyncPEL(const std::map<std::string, std::string>& additionalData,
-                   const constants::PelSeverity& sev,
-                   const std::string& errIntf);
-
-/**
- * @brief Api to create PEL.
- * A wrapper api through which sync/async call to phosphor-logging create api
- * can be made as and when required.
- * sdBus as nullptr will result in sync call else async call will be made with
- * just "DESCRIPTION" key/value pair in additional data.
- * To make asyn call with more fields in additional data call
- * "sd_bus_call_method_async" in place.
- *
- * @param[in] additionalData - Map of additional data.
- * @param[in] sev - severity of the PEL.
- * @param[in] errIntf - Error interface to be used in PEL.
- * @param[in] sdBus - Pointer to Sd-Bus
- */
-void createPEL(const std::map<std::string, std::string>& additionalData,
-               const constants::PelSeverity& sev, const std::string& errIntf,
-               sd_bus* sdBus);
-
-/**
- * @brief getVpdFilePath
- * Get vpd file path corresponding to the given object path.
- * @param[in] - json file path
- * @param[in] - Object path
- * @return - Vpd file path
- */
-inventory::VPDfilepath getVpdFilePath(const std::string& jsonFile,
-                                      const std::string& ObjPath);
-
-/**
- * @brief isPathInJson
- * API which checks for the presence of the given eeprom path in the given json.
- * @param[in] - eepromPath
- * @return - true if the eeprom is present in the json; false otherwise
- */
-bool isPathInJson(const std::string& eepromPath);
-
-/**
- * @brief isRecKwInDbusJson
- * API which checks whether the given keyword under the given record is to be
- * published on dbus or not. Checks against the keywords present in
- * dbus_property.json.
- * @param[in] - record name
- * @param[in] - keyword name
- * @return - true if the record-keyword pair is present in dbus_property.json;
- * false otherwise.
- */
-bool isRecKwInDbusJson(const std::string& record, const std::string& keyword);
-
-/**
- * @brief Check the type of VPD.
- *
- * Checks the type of vpd based on the start tag.
- * @param[in] vector - Vpd data in vector format
- *
- * @return enum of type vpdType
- */
-constants::vpdType vpdTypeCheck(const Binary& vector);
-
-/*
- * @brief This method does nothing. Just an empty function to return null
- * at the end of variadic template args
- */
-inline std::string getCommand()
-{
-    return "";
-}
-
-/**
- * @brief This function to arrange all arguments to make commandy
- * @param[in] arguments to create the command
- * @return cmd - command string
- */
-template <typename T, typename... Types>
-inline std::string getCommand(T arg1, Types... args)
-{
-    std::string cmd = " " + arg1 + getCommand(args...);
-
-    return cmd;
-}
-
-/**
- * @brief This API takes arguments, creates a shell command line and executes
- * them.
- * @param[in] arguments for command
- * @returns output of that command
- */
-template <typename T, typename... Types>
-inline std::vector<std::string> executeCmd(T&& path, Types... args)
-{
-    std::vector<std::string> stdOutput;
-    std::array<char, 128> buffer;
-
-    std::string cmd = path + getCommand(args...);
-
-    struct custom_file_deleter
-    {
-        void operator()(std::FILE* fp)
-        {
-            pclose(fp);
-        }
-    };
-    using unique_file_custom_deleter =
-        std::unique_ptr<std::FILE, custom_file_deleter>;
-    unique_file_custom_deleter pipe{popen(cmd.c_str(), "r")};
-
-    if (!pipe)
-    {
-        throw std::runtime_error("popen() failed!");
-    }
-    while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr)
-    {
-        stdOutput.emplace_back(buffer.data());
-    }
-
-    return stdOutput;
-}
-
-/** @brief This API checks for IM and HW keywords, and based
- *         on these values decides which system json to be used.
- *  @param[in] vpdMap -  parsed vpd
- *  @returns System json path
- */
-std::string getSystemsJson(const Parsed& vpdMap);
-
-/** @brief Reads HW Keyword from the vpd
- *  @param[in] vpdMap -  parsed vpd
- *  @returns value of HW Keyword
- */
-const std::string getHW(const Parsed& vpdMap);
-
-/** @brief Reads IM Keyword from the vpd
- *  @param[in] vpdMap -  parsed vpd
- *  @returns value of IM Keyword
- */
-const std::string getIM(const Parsed& vpdMap);
-
-/** @brief Translate udev event generated path to a generic /sys/bus eeprom path
- *  @param[io] file - path generated from udev event.
- *  @param[in] driver - kernel driver used by the device.
- */
-void udevToGenericPath(std::string& file, const std::string& driver);
-
-/**
- * @brief API to generate a vpd name in some pattern.
- * This vpd-name denotes name of the bad vpd file.
- * For i2c eeproms - the pattern of the vpd-name will be
- * i2c-<bus-number>-<eeprom-address>. For spi eeproms - the pattern of the
- * vpd-name will be spi-<spi-number>.
- *
- * @param[in] file - file path of the vpd
- * @return the vpd-name.
- */
-std::string getBadVpdName(const std::string& file);
-
-/**
- * @brief API which dumps the broken/bad vpd in a directory
- * When the vpd is bad, this api places  the bad vpd file inside
- * "/tmp/bad-vpd" in BMC, in order to collect bad VPD data as a part of user
- * initiated BMC dump.
- *
- * @param[in] file - bad vpd file path
- * @param[in] vpdVector - bad vpd vector
- */
-void dumpBadVpd(const std::string& file, const Binary& vpdVector);
-
-/*
- * @brief This function fetches the value for given keyword in the given record
- *        from vpd data and returns this value.
- *
- * @param[in] vpdMap - vpd to find out the data
- * @param[in] rec - Record under which desired keyword exists
- * @param[in] kwd - keyword to read the data from
- *
- * @returns keyword value if record/keyword combination found
- *          empty string if record or keyword is not found.
- */
-const std::string getKwVal(const Parsed& vpdMap, const std::string& rec,
-                           const std::string& kwd);
-
-/** @brief This creates a complete command using all it's input parameters,
- *         to bind or unbind the driver.
- *  @param[in] devNameAddr - device address on that bus
- *  @param[in] busType - i2c, spi
- *  @param[in] driverType - type of driver like at24
- *  @param[in] bindOrUnbind - either bind or unbind
- *  @returns  Command to bind or unbind the driver.
- */
-inline std::string createBindUnbindDriverCmnd(
-    const std::string& devNameAddr, const std::string& busType,
-    const std::string& driverType, const std::string& bindOrUnbind)
-{
-    return ("echo " + devNameAddr + " > /sys/bus/" + busType + "/drivers/" +
-            driverType + "/" + bindOrUnbind);
-}
-
-/**
- * @brief Get Printable Value
- *
- * Checks if the value has non printable characters.
- * Returns hex value if non printable char is found else
- * returns ascii value.
- *
- * @param[in] kwVal - Reference of the input data, Keyword value
- * @return printable value - either in hex or in ascii.
- */
-std::string getPrintableValue(const std::variant<Binary, std::string>& kwVal);
-
-/**
- * @brief Convert array to hex string.
- * @param[in] kwVal - input data, Keyword value
- * @return hexadecimal string of bytes.
- */
-std::string hexString(const std::variant<Binary, std::string>& kwVal);
-
-/**
- * @brief Return presence of the FRU.
- *
- * This API returns the presence information of the FRU corresponding to the
- * given EEPROM. If the JSON contains no information about presence detect, this
- * will return an empty optional. Else it will get the presence GPIO information
- * from the JSON and return the appropriate present status.
- * In case of GPIO find/read errors, it will return false.
- *
- * @param[in] json - The VPD JSON
- * @param[in] file - EEPROM file path
- * @return Empty optional if there is no presence info. Else returns presence
- * based on the GPIO read.
- */
-std::optional<bool> isPresent(const nlohmann::json& json,
-                              const std::string& file);
-
-/**
- * @brief Performs any pre-action needed to get the FRU setup for
- * collection.
- *
- * @param[in] json - json object
- * @param[in] file - eeprom file path
- * @return - success or failure
- */
-bool executePreAction(const nlohmann::json& json, const std::string& file);
-
-/**
- * @brief This API will be called at the end of VPD collection to perform any
- * post actions.
- *
- * @param[in] json - json object
- * @param[in] file - eeprom file path
- */
-void executePostFailAction(const nlohmann::json& json, const std::string& file);
-
-/**
- * @brief Helper function to insert or merge in map.
- *
- * This method checks in the given inventory::InterfaceMap if the given
- * interface key is existing or not. If the interface key already exists, given
- * property map is inserted into it. If the key doesn't exist then given
- * interface and property map pair is newly created. If the property present in
- * propertymap already exist in the InterfaceMap, then the new property value is
- * ignored.
- *
- * @param[in,out] map - map object of type inventory::InterfaceMap only.
- * @param[in] interface - Interface name.
- * @param[in] property - new property map that needs to be emplaced.
- */
-void insertOrMerge(inventory::InterfaceMap& map,
-                   const inventory::Interface& interface,
-                   inventory::PropertyMap&& property);
-
-/**
- * @brief Utility API to set a D-Bus property
- *
- * This calls org.freedesktop.DBus.Properties;Set method with the supplied
- * arguments
- *
- * @tparam T Template type of the D-Bus property
- * @param service[in] - The D-Bus service name.
- * @param object[in] - The D-Bus object on which the property is to be set.
- * @param interface[in] - The D-Bus interface to which the property belongs.
- * @param propertyName[in] - The name of the property to set.
- * @param propertyValue[in] - The value of the property.
- */
-template <typename T>
-void setBusProperty(const std::string& service, const std::string& object,
-                    const std::string& interface,
-                    const std::string& propertyName,
-                    const std::variant<T>& propertyValue)
-{
-    try
-    {
-        auto bus = sdbusplus::bus::new_default();
-        auto method =
-            bus.new_method_call(service.c_str(), object.c_str(),
-                                "org.freedesktop.DBus.Properties", "Set");
-        method.append(interface);
-        method.append(propertyName);
-        method.append(propertyValue);
-
-        bus.call(method);
-    }
-    catch (const sdbusplus::exception::SdBusError& e)
-    {
-        std::cerr << e.what() << std::endl;
-    }
-}
-
-/**
- * @brief Reads BIOS Attribute by name.
- *
- * @param attrName[in] - The BIOS attribute name.
- * @return std::variant<int64_t, std::string> - The BIOS attribute value.
- */
-std::variant<int64_t, std::string>
-    readBIOSAttribute(const std::string& attrName);
-
-/**
- * @brief Returns the power state for chassis0
- * @return The chassis power state.
- */
-std::string getPowerState();
-
-/**
- * @brief Reads VPD from the supplied EEPROM
- *
- * This function reads the given VPD EEPROM file and returns its contents as a
- * byte array. It handles any offsets into the file that need to be taken care
- * of by looking up the VPD JSON for a possible offset key.
- *
- * @param js[in] - The VPD JSON Object
- * @param file[in] - The path to the EEPROM to read
- * @return A byte array containing the raw VPD.
- */
-Binary getVpdDataInVector(const nlohmann::json& js, const std::string& file);
-
-/**
- * @brief Get D-bus name for the keyword
- * Some of the VPD keywords has different name in PIM when compared with its
- * name from hardware. This method returns the D-bus name for the given keyword.
- *
- * @param[in] keyword - Keyword name
- * @return D-bus name for the keyword
- */
-std::string getDbusNameForThisKw(const std::string& keyword);
-
-/**
- * @brief API to remove VPD data from Dbus on removal of FRU.
- *
- * @param[in] objPath - Inventory path of the FRU.
- * @param[out] interfacesPropMap - Map of interface, property and value.
- */
-void clearVpdOnRemoval(const std::string& objPath,
-                       inventory::InterfaceMap& interfacesPropMap);
-
-/**
- * @brief Find backup VPD path if any for the system VPD
- *
- * @param[out] backupEepromPath - Backup VPD path
- * @param[out] backupInvPath - Backup inventory path
- * @param[in] js - Inventory JSON object
- */
-void findBackupVPDPaths(std::string& backupEepromPath,
-                        std::string& backupInvPath, const nlohmann::json& js);
-
-/**
- * @brief Get backup VPD's record and keyword for the given system VPD keyword
- *
- * @param[in,out] record - Record name
- * @param[in,out] keyword - Keyword name
- */
-void getBackupRecordKeyword(std::string& record, std::string& keyword);
-
-/**
- * @brief Check if EEPROM of the given VPD path is read only.
- *
- * @param[in] vpdPath - VPD path of the FRU.
- * @param[in] jsObject - Inventory JSON object.
- *
- * @return true if EEPROM is read only, false otherwise.
- */
-bool isReadOnlyEEPROM(const std::string& vpdPath,
-                      const nlohmann::json& jsObject);
-} // namespace vpd
-} // namespace openpower
diff --git a/impl.cpp b/impl.cpp
deleted file mode 100644
index 4e43303..0000000
--- a/impl.cpp
+++ /dev/null
@@ -1,663 +0,0 @@
-#include "impl.hpp"
-
-#include "vpdecc/vpdecc.h"
-
-#include "const.hpp"
-#include "defines.hpp"
-#include "ibm_vpd_utils.hpp"
-#include "types.hpp"
-#include "vpd_exceptions.hpp"
-
-#include <algorithm>
-#include <exception>
-#include <iomanip>
-#include <iostream>
-#include <iterator>
-#include <sstream>
-#include <tuple>
-#include <unordered_map>
-
-namespace openpower
-{
-namespace vpd
-{
-namespace parser
-{
-using namespace openpower::vpd::constants;
-using namespace openpower::vpd::exceptions;
-
-static const std::unordered_map<std::string, Record> supportedRecords = {
-    {"VINI", Record::VINI}, {"OPFR", Record::OPFR}, {"OSYS", Record::OSYS}};
-
-static const std::unordered_map<std::string, internal::KeywordInfo>
-    supportedKeywords = {
-        {"DR", std::make_tuple(record::Keyword::DR, keyword::Encoding::ASCII)},
-        {"PN", std::make_tuple(record::Keyword::PN, keyword::Encoding::ASCII)},
-        {"SN", std::make_tuple(record::Keyword::SN, keyword::Encoding::ASCII)},
-        {"CC", std::make_tuple(record::Keyword::CC, keyword::Encoding::ASCII)},
-        {"HW", std::make_tuple(record::Keyword::HW, keyword::Encoding::RAW)},
-        {"B1", std::make_tuple(record::Keyword::B1, keyword::Encoding::B1)},
-        {"VN", std::make_tuple(record::Keyword::VN, keyword::Encoding::ASCII)},
-        {"MB", std::make_tuple(record::Keyword::MB, keyword::Encoding::MB)},
-        {"MM", std::make_tuple(record::Keyword::MM, keyword::Encoding::ASCII)},
-        {"UD", std::make_tuple(record::Keyword::UD, keyword::Encoding::UD)},
-        {"VP", std::make_tuple(record::Keyword::VP, keyword::Encoding::ASCII)},
-        {"VS", std::make_tuple(record::Keyword::VS, keyword::Encoding::ASCII)},
-};
-
-namespace
-{
-constexpr auto toHex(size_t c)
-{
-    constexpr auto map = "0123456789abcdef";
-    return map[c];
-}
-} // namespace
-
-/*readUInt16LE: Read 2 bytes LE data*/
-static LE2ByteData readUInt16LE(Binary::const_iterator iterator)
-{
-    LE2ByteData lowByte = *iterator;
-    LE2ByteData highByte = *(iterator + 1);
-    lowByte |= (highByte << 8);
-    return lowByte;
-}
-
-RecordOffset Impl::getVtocOffset() const
-{
-    auto vpdPtr = vpd.cbegin();
-    std::advance(vpdPtr, offsets::VTOC_PTR);
-    // Get VTOC Offset
-    auto vtocOffset = readUInt16LE(vpdPtr);
-
-    return vtocOffset;
-}
-
-#ifdef IPZ_PARSER
-int Impl::vhdrEccCheck()
-{
-    int rc = eccStatus::SUCCESS;
-    auto vpdPtr = vpd.cbegin();
-
-    auto l_status = vpdecc_check_data(
-        const_cast<uint8_t*>(&vpdPtr[offsets::VHDR_RECORD]),
-        lengths::VHDR_RECORD_LENGTH,
-        const_cast<uint8_t*>(&vpdPtr[offsets::VHDR_ECC]),
-        lengths::VHDR_ECC_LENGTH);
-    if (l_status == VPD_ECC_CORRECTABLE_DATA)
-    {
-        try
-        {
-            if (vpdFileStream.is_open())
-            {
-                vpdFileStream.seekp(vpdStartOffset + offsets::VHDR_RECORD,
-                                    std::ios::beg);
-                vpdFileStream.write(
-                    reinterpret_cast<const char*>(&vpd[offsets::VHDR_RECORD]),
-                    lengths::VHDR_RECORD_LENGTH);
-            }
-            else
-            {
-                std::cerr << "File not open";
-                rc = eccStatus::FAILED;
-            }
-        }
-        catch (const std::fstream::failure& e)
-        {
-            std::cout << "Error while operating on file with exception:"
-                      << e.what();
-            rc = eccStatus::FAILED;
-        }
-    }
-    else if (l_status != VPD_ECC_OK)
-    {
-        rc = eccStatus::FAILED;
-    }
-
-    return rc;
-}
-
-int Impl::vtocEccCheck()
-{
-    int rc = eccStatus::SUCCESS;
-    // Use another pointer to get ECC information from VHDR,
-    // actual pointer is pointing to VTOC data
-
-    auto vpdPtr = vpd.cbegin();
-
-    // Get VTOC Offset
-    auto vtocOffset = getVtocOffset();
-
-    // Get the VTOC Length
-    std::advance(vpdPtr, offsets::VTOC_PTR + sizeof(RecordOffset));
-    auto vtocLength = readUInt16LE(vpdPtr);
-
-    // Get the ECC Offset
-    std::advance(vpdPtr, sizeof(RecordLength));
-    auto vtocECCOffset = readUInt16LE(vpdPtr);
-
-    // Get the ECC length
-    std::advance(vpdPtr, sizeof(ECCOffset));
-    auto vtocECCLength = readUInt16LE(vpdPtr);
-
-    // Reset pointer to start of the vpd,
-    // so that Offset will point to correct address
-    vpdPtr = vpd.cbegin();
-    auto l_status = vpdecc_check_data(
-        const_cast<uint8_t*>(&vpdPtr[vtocOffset]), vtocLength,
-        const_cast<uint8_t*>(&vpdPtr[vtocECCOffset]), vtocECCLength);
-    if (l_status == VPD_ECC_CORRECTABLE_DATA)
-    {
-        try
-        {
-            if (vpdFileStream.is_open())
-            {
-                vpdFileStream.seekp(vpdStartOffset + vtocOffset, std::ios::beg);
-                vpdFileStream.write(
-                    reinterpret_cast<const char*>(&vpdPtr[vtocOffset]),
-                    vtocLength);
-            }
-            else
-            {
-                std::cerr << "File not open";
-                rc = eccStatus::FAILED;
-            }
-        }
-        catch (const std::fstream::failure& e)
-        {
-            std::cout << "Error while operating on file with exception "
-                      << e.what();
-            rc = eccStatus::FAILED;
-        }
-    }
-    else if (l_status != VPD_ECC_OK)
-    {
-        rc = eccStatus::FAILED;
-    }
-
-    return rc;
-}
-
-int Impl::recordEccCheck(Binary::const_iterator iterator)
-{
-    int rc = eccStatus::SUCCESS;
-
-    auto recordOffset = readUInt16LE(iterator);
-
-    std::advance(iterator, sizeof(RecordOffset));
-    auto recordLength = readUInt16LE(iterator);
-
-    std::advance(iterator, sizeof(RecordLength));
-    auto eccOffset = readUInt16LE(iterator);
-
-    std::advance(iterator, sizeof(ECCOffset));
-    auto eccLength = readUInt16LE(iterator);
-
-    if (eccLength == 0 || eccOffset == 0)
-    {
-        throw(VpdEccException(
-            "Could not find ECC's offset or Length for Record:"));
-    }
-
-    if (recordOffset == 0 || recordLength == 0)
-    {
-        throw(VpdDataException("Could not find VPD record offset or VPD record "
-                               "length for Record:"));
-    }
-
-    auto vpdPtr = vpd.cbegin();
-
-    auto l_status = vpdecc_check_data(
-        const_cast<uint8_t*>(&vpdPtr[recordOffset]), recordLength,
-        const_cast<uint8_t*>(&vpdPtr[eccOffset]), eccLength);
-    if (l_status == VPD_ECC_CORRECTABLE_DATA)
-    {
-        try
-        {
-            if (vpdFileStream.is_open())
-            {
-                vpdFileStream.seekp(vpdStartOffset + recordOffset,
-                                    std::ios::beg);
-                vpdFileStream.write(
-                    reinterpret_cast<const char*>(&vpdPtr[recordOffset]),
-                    recordLength);
-            }
-            else
-            {
-                std::cerr << "File not open";
-                rc = eccStatus::FAILED;
-            }
-        }
-        catch (const std::fstream::failure& e)
-        {
-            std::cout << "Error while operating on file with exception "
-                      << e.what();
-            rc = eccStatus::FAILED;
-        }
-    }
-    else if (l_status != VPD_ECC_OK)
-    {
-        rc = eccStatus::FAILED;
-    }
-
-    return rc;
-}
-#endif
-
-void Impl::checkHeader()
-{
-    if (vpd.empty() || (lengths::RECORD_MIN > vpd.size()))
-    {
-        throw(VpdDataException("Malformed VPD"));
-    }
-    else
-    {
-        auto iterator = vpd.cbegin();
-        std::advance(iterator, offsets::VHDR);
-        auto stop = std::next(iterator, lengths::RECORD_NAME);
-        std::string record(iterator, stop);
-        if ("VHDR" != record)
-        {
-            throw(VpdDataException("VHDR record not found"));
-        }
-
-#ifdef IPZ_PARSER
-        // Check ECC
-        int rc = eccStatus::FAILED;
-        rc = vhdrEccCheck();
-        if (rc != eccStatus::SUCCESS)
-        {
-            throw(VpdEccException("ERROR: VHDR ECC check Failed"));
-        }
-#endif
-    }
-}
-
-std::size_t Impl::readTOC(Binary::const_iterator& iterator)
-{
-    // The offset to VTOC could be 1 or 2 bytes long
-    RecordOffset vtocOffset = getVtocOffset();
-
-    // Got the offset to VTOC, skip past record header and keyword header
-    // to get to the record name.
-    std::advance(iterator, vtocOffset + sizeof(RecordId) + sizeof(RecordSize) +
-                               // Skip past the RT keyword, which contains
-                               // the record name.
-                               lengths::KW_NAME + sizeof(KwSize));
-
-    auto stop = std::next(iterator, lengths::RECORD_NAME);
-    std::string record(iterator, stop);
-    if ("VTOC" != record)
-    {
-        throw(VpdDataException("VTOC record not found"));
-    }
-
-#ifdef IPZ_PARSER
-    // Check ECC
-    int rc = eccStatus::FAILED;
-    rc = vtocEccCheck();
-    if (rc != eccStatus::SUCCESS)
-    {
-        throw(VpdEccException("ERROR: VTOC ECC check Failed"));
-    }
-#endif
-    // VTOC record name is good, now read through the TOC, stored in the PT
-    // PT keyword; vpdBuffer is now pointing at the first character of the
-    // name 'VTOC', jump to PT data.
-    // Skip past record name and KW name, 'PT'
-    std::advance(iterator, lengths::RECORD_NAME + lengths::KW_NAME);
-    // Note size of PT
-    std::size_t ptLen = *iterator;
-    // Skip past PT size
-    std::advance(iterator, sizeof(KwSize));
-
-    // length of PT keyword
-    return ptLen;
-}
-
-internal::OffsetList Impl::readPT(Binary::const_iterator iterator,
-                                  std::size_t ptLength)
-{
-    internal::OffsetList offsets{};
-
-    auto end = iterator;
-    std::advance(end, ptLength);
-
-    // Look at each entry in the PT keyword. In the entry,
-    // we care only about the record offset information.
-    while (iterator < end)
-    {
-#ifdef IPZ_PARSER
-        auto iteratorToRecName = iterator;
-#endif
-        // Skip record name and record type
-        std::advance(iterator, lengths::RECORD_NAME + sizeof(RecordType));
-
-        // Get record offset
-        auto offset = readUInt16LE(iterator);
-        offsets.push_back(offset);
-
-#ifdef IPZ_PARSER
-        std::string recordName(iteratorToRecName,
-                               iteratorToRecName + lengths::RECORD_NAME);
-
-        try
-        {
-            // Verify the ECC for this Record
-            int rc = recordEccCheck(iterator);
-
-            if (rc != eccStatus::SUCCESS)
-            {
-                std::string errorMsg = std::string(
-                    "ERROR: ECC check did not pass for the "
-                    "Record:");
-                throw(VpdEccException(errorMsg));
-            }
-        }
-        catch (const VpdEccException& ex)
-        {
-            inventory::PelAdditionalData additionalData{};
-            additionalData.emplace("DESCRIPTION",
-                                   std::string{ex.what()} + recordName);
-            additionalData.emplace("CALLOUT_INVENTORY_PATH", inventoryPath);
-            createPEL(additionalData, PelSeverity::WARNING,
-                      errIntfForEccCheckFail, nullptr);
-        }
-        catch (const VpdDataException& ex)
-        {
-            inventory::PelAdditionalData additionalData{};
-            additionalData.emplace("DESCRIPTION",
-                                   std::string{ex.what()} + recordName);
-            additionalData.emplace("CALLOUT_INVENTORY_PATH", inventoryPath);
-            createPEL(additionalData, PelSeverity::WARNING,
-                      errIntfForInvalidVPD, nullptr);
-        }
-
-#endif
-
-        // Jump record size, record length, ECC offset and ECC length
-        std::advance(iterator, sizeof(RecordOffset) + sizeof(RecordLength) +
-                                   sizeof(ECCOffset) + sizeof(ECCLength));
-    }
-
-    return offsets;
-}
-
-void Impl::processRecord(std::size_t recordOffset)
-{
-    // Jump to record name
-    auto nameOffset = recordOffset + sizeof(RecordId) + sizeof(RecordSize) +
-                      // Skip past the RT keyword, which contains
-                      // the record name.
-                      lengths::KW_NAME + sizeof(KwSize);
-    // Get record name
-    auto iterator = vpd.cbegin();
-    std::advance(iterator, nameOffset);
-
-    std::string name(iterator, iterator + lengths::RECORD_NAME);
-
-#ifndef IPZ_PARSER
-    if (supportedRecords.end() != supportedRecords.find(name))
-    {
-#endif
-        // If it's a record we're interested in, proceed to find
-        // contained keywords and their values.
-        std::advance(iterator, lengths::RECORD_NAME);
-
-#ifdef IPZ_PARSER
-
-        // Reverse back to RT Kw, in ipz vpd, to Read RT KW & value
-        std::advance(iterator, -(lengths::KW_NAME + sizeof(KwSize) +
-                                 lengths::RECORD_NAME));
-#endif
-        auto kwMap = readKeywords(iterator);
-        // Add entry for this record (and contained keyword:value pairs)
-        // to the parsed vpd output.
-        out.emplace(std::move(name), std::move(kwMap));
-
-#ifndef IPZ_PARSER
-    }
-#endif
-}
-
-std::string Impl::readKwData(const internal::KeywordInfo& keyword,
-                             std::size_t dataLength,
-                             Binary::const_iterator iterator)
-{
-    using namespace openpower::vpd;
-    switch (std::get<keyword::Encoding>(keyword))
-    {
-        case keyword::Encoding::ASCII:
-        {
-            auto stop = std::next(iterator, dataLength);
-            return std::string(iterator, stop);
-        }
-
-        case keyword::Encoding::RAW:
-        {
-            auto stop = std::next(iterator, dataLength);
-            std::string data(iterator, stop);
-            std::string result{};
-            std::for_each(data.cbegin(), data.cend(), [&result](size_t c) {
-                result += toHex(c >> 4);
-                result += toHex(c & 0x0F);
-            });
-            return result;
-        }
-
-        case keyword::Encoding::MB:
-        {
-            // MB is BuildDate, represent as
-            // 1997-01-01-08:30:00
-            // <year>-<month>-<day>-<hour>:<min>:<sec>
-            auto stop = std::next(iterator, MB_LEN_BYTES);
-            std::string data(iterator, stop);
-            std::string result;
-            result.reserve(MB_LEN_BYTES);
-            auto strItr = data.cbegin();
-            std::advance(strItr, 1);
-            std::for_each(strItr, data.cend(), [&result](size_t c) {
-                result += toHex(c >> 4);
-                result += toHex(c & 0x0F);
-            });
-
-            result.insert(MB_YEAR_END, 1, '-');
-            result.insert(MB_MONTH_END, 1, '-');
-            result.insert(MB_DAY_END, 1, '-');
-            result.insert(MB_HOUR_END, 1, ':');
-            result.insert(MB_MIN_END, 1, ':');
-
-            return result;
-        }
-
-        case keyword::Encoding::B1:
-        {
-            // B1 is MAC address, represent as AA:BB:CC:DD:EE:FF
-            auto stop = std::next(iterator, MAC_ADDRESS_LEN_BYTES);
-            std::string data(iterator, stop);
-            std::string result{};
-            auto strItr = data.cbegin();
-            size_t firstDigit = *strItr;
-            result += toHex(firstDigit >> 4);
-            result += toHex(firstDigit & 0x0F);
-            std::advance(strItr, 1);
-            std::for_each(strItr, data.cend(), [&result](size_t c) {
-                result += ":";
-                result += toHex(c >> 4);
-                result += toHex(c & 0x0F);
-            });
-            return result;
-        }
-
-        case keyword::Encoding::UD:
-        {
-            // UD, the UUID info, represented as
-            // 123e4567-e89b-12d3-a456-426655440000
-            //<time_low>-<time_mid>-<time hi and version>
-            //-<clock_seq_hi_and_res clock_seq_low>-<48 bits node id>
-            auto stop = std::next(iterator, UUID_LEN_BYTES);
-            std::string data(iterator, stop);
-            std::string result{};
-            std::for_each(data.cbegin(), data.cend(), [&result](size_t c) {
-                result += toHex(c >> 4);
-                result += toHex(c & 0x0F);
-            });
-            result.insert(UUID_TIME_LOW_END, 1, '-');
-            result.insert(UUID_TIME_MID_END, 1, '-');
-            result.insert(UUID_TIME_HIGH_END, 1, '-');
-            result.insert(UUID_CLK_SEQ_END, 1, '-');
-
-            return result;
-        }
-        default:
-            break;
-    }
-
-    return {};
-}
-
-internal::KeywordMap Impl::readKeywords(Binary::const_iterator iterator)
-{
-    internal::KeywordMap map{};
-    while (true)
-    {
-        // Note keyword name
-        std::string kw(iterator, iterator + lengths::KW_NAME);
-        if (LAST_KW == kw)
-        {
-            // We're done
-            break;
-        }
-        // Check if the Keyword is '#kw'
-        char kwNameStart = *iterator;
-
-        // Jump past keyword name
-        std::advance(iterator, lengths::KW_NAME);
-
-        std::size_t length;
-        std::size_t lengthHighByte;
-        if (POUND_KW == kwNameStart)
-        {
-            // Note keyword data length
-            length = *iterator;
-            lengthHighByte = *(iterator + 1);
-            length |= (lengthHighByte << 8);
-
-            // Jump past 2Byte keyword length
-            std::advance(iterator, sizeof(PoundKwSize));
-        }
-        else
-        {
-            // Note keyword data length
-            length = *iterator;
-
-            // Jump past keyword length
-            std::advance(iterator, sizeof(KwSize));
-        }
-
-        // Pointing to keyword data now
-#ifndef IPZ_PARSER
-        if (supportedKeywords.end() != supportedKeywords.find(kw))
-        {
-            // Keyword is of interest to us
-            std::string data = readKwData((supportedKeywords.find(kw))->second,
-                                          length, iterator);
-            map.emplace(std::move(kw), std::move(data));
-        }
-
-#else
-        // support all the Keywords
-        auto stop = std::next(iterator, length);
-        std::string kwdata(iterator, stop);
-        map.emplace(std::move(kw), std::move(kwdata));
-
-#endif
-        // Jump past keyword data length
-        std::advance(iterator, length);
-    }
-
-    return map;
-}
-
-Store Impl::run()
-{
-    // Check if the VHDR record is present
-    checkHeader();
-
-    auto iterator = vpd.cbegin();
-
-    // Read the table of contents record
-    std::size_t ptLen = readTOC(iterator);
-
-    // Read the table of contents record, to get offsets
-    // to other records.
-    auto offsets = readPT(iterator, ptLen);
-    for (const auto& offset : offsets)
-    {
-        processRecord(offset);
-    }
-    // Return a Store object, which has interfaces to
-    // access parsed VPD by record:keyword
-    return Store(std::move(out));
-}
-
-void Impl::checkVPDHeader()
-{
-    // Check if the VHDR record is present and is valid
-    checkHeader();
-}
-
-std::string Impl::readKwFromHw(const std::string& record,
-                               const std::string& keyword)
-{
-    // Check if the VHDR record is present
-    checkHeader();
-
-    auto iterator = vpd.cbegin();
-
-    // Read the table of contents record
-    std::size_t ptLen = readTOC(iterator);
-
-    // Read the table of contents record, to get offsets
-    // to other records.
-    auto offsets = readPT(iterator, ptLen);
-    for (const auto& offset : offsets)
-    {
-        // Jump to record name
-        auto nameOffset = offset + sizeof(RecordId) + sizeof(RecordSize) +
-                          // Skip past the RT keyword, which contains
-                          // the record name.
-                          lengths::KW_NAME + sizeof(KwSize);
-        // Get record name
-        auto iterator = vpd.cbegin();
-        std::advance(iterator, nameOffset);
-
-        std::string name(iterator, iterator + lengths::RECORD_NAME);
-        if (name != record)
-        {
-            continue;
-        }
-        else
-        {
-            processRecord(offset);
-            const auto& itr = out.find(record);
-            if (itr != out.end())
-            {
-                const auto& kwValItr = (itr->second).find(keyword);
-                if (kwValItr != (itr->second).end())
-                {
-                    return kwValItr->second;
-                }
-                else
-                {
-                    return "";
-                }
-            }
-        }
-    }
-    return "";
-}
-
-} // namespace parser
-} // namespace vpd
-} // namespace openpower
diff --git a/impl.hpp b/impl.hpp
deleted file mode 100644
index b1aa060..0000000
--- a/impl.hpp
+++ /dev/null
@@ -1,211 +0,0 @@
-#pragma once
-
-#include "const.hpp"
-#include "store.hpp"
-
-#include <cstddef>
-#include <fstream>
-
-namespace openpower
-{
-namespace vpd
-{
-namespace parser
-{
-namespace keyword
-{
-/** @brief Encoding scheme of a VPD keyword's data */
-enum class Encoding
-{
-    ASCII, /**< data encoded in ascii */
-    RAW,   /**< raw data */
-    // Keywords needing custom decoding
-    B1, /**< The keyword B1 needs to be decoded specially */
-    MB, /**< Special decoding of MB meant for Build Date */
-    UD  /**< Special decoding of UD meant for UUID */
-};
-
-} // namespace keyword
-
-namespace internal
-{
-
-using KeywordInfo = std::tuple<record::Keyword, keyword::Encoding>;
-using OffsetList = std::vector<uint32_t>;
-using KeywordMap = Parsed::mapped_type;
-
-} // namespace internal
-
-/** @class Impl
- *  @brief Implements parser for VPD
- *
- *  An Impl object must be constructed by passing in VPD in
- *  binary format. To parse the VPD, call the run() method. The run()
- *  method returns an openpower::vpd::Store object, which contains
- *  parsed VPD, and provides access methods for the VPD.
- *
- *  Following is the algorithm used to parse IPZ/OpenPower VPD:
- *  1) Validate that the first record is VHDR, the header record.
- *  2) From the VHDR record, get the offset of the VTOC record,
- *     which is the table of contents record.
- *  3) Process the VTOC record - note offsets of supported records.
- *  4) For each supported record :
- *  4.1) Jump to record via offset. Add record name to parser output.
- *  4.2) Process record - for each contained and supported keyword:
- *  4.2.1) Note keyword name and value, associate this information to
- *         to the record noted in step 4.1).
- */
-class Impl
-{
-  public:
-    Impl() = delete;
-    Impl(const Impl&) = delete;
-    Impl& operator=(const Impl&) = delete;
-    Impl(Impl&&) = delete;
-    Impl& operator=(Impl&&) = delete;
-    ~Impl() = default;
-
-    /** @brief Construct an Impl
-     *
-     *  @param[in] vpdBuffer - Binary VPD
-     *  @param[in] path - To call out FRU in case of any PEL.
-     *  @param[in] vpdFilePath - VPD File Path
-     *  @param[in] vpdStartOffset - Start offset of VPD.
-     */
-    Impl(const Binary& vpdBuffer, const std::string& path,
-         const std::string& vpdFilePath, uint32_t vpdStartOffset) :
-        vpd(vpdBuffer), inventoryPath(path), vpdFilePath(vpdFilePath),
-        vpdStartOffset(vpdStartOffset), out{}
-    {
-#ifndef ManagerTest
-        vpdFileStream.exceptions(
-            std::ifstream::badbit | std::ifstream::failbit);
-#endif
-        try
-        {
-            vpdFileStream.open(vpdFilePath,
-                               std::ios::in | std::ios::out | std::ios::binary);
-        }
-        catch (const std::fstream::failure& fail)
-        {
-            std::cerr << "Exception in file handling [" << vpdFilePath
-                      << "] error : " << fail.what();
-            throw;
-        }
-    }
-
-    /** @brief Run the parser on binary VPD
-     *
-     *  @returns openpower::vpd::Store object
-     */
-    Store run();
-
-    /** @brief check if VPD header is valid
-     */
-    void checkVPDHeader();
-
-    /** @brief Read a specific VPD keyword from hardware.
-     * This api is to read a specific VPD keyword directly from hardware.
-     * @param[in] record - record name.
-     * @param[in] keyword - keyword name.
-     * @return keyword value.
-     */
-    std::string readKwFromHw(const std::string& record,
-                             const std::string& keyword);
-
-  private:
-    /** @brief Process the table of contents record
-     *
-     *  @param[in] iterator - iterator to buffer containing VPD
-     *  @returns Size of the PT keyword in VTOC
-     */
-    std::size_t readTOC(Binary::const_iterator& iterator);
-
-    /** @brief Read the PT keyword contained in the VHDR record,
-     *         to obtain offsets to other records in the VPD.
-     *
-     *  @param[in] iterator - iterator to buffer containing VPD
-     *  @param[in] ptLength - Length of PT keyword data
-     *
-     *  @returns List of offsets to records in VPD
-     */
-    internal::OffsetList readPT(Binary::const_iterator iterator,
-                                std::size_t ptLen);
-
-    /** @brief Read VPD information contained within a record
-     *
-     *  @param[in] recordOffset - offset to a record location
-     *      within the binary VPD
-     */
-    void processRecord(std::size_t recordOffset);
-
-    /** @brief Read keyword data
-     *
-     *  @param[in] keyword - VPD keyword
-     *  @param[in] dataLength - Length of data to be read
-     *  @param[in] iterator - iterator pointing to a Keyword's data in
-     *      the VPD
-     *
-     *  @returns keyword data as a string
-     */
-    std::string readKwData(const internal::KeywordInfo& keyword,
-                           std::size_t dataLength,
-                           Binary::const_iterator iterator);
-
-    /** @brief While we're pointing at the keyword section of
-     *     a record in the VPD, this will read all contained
-     *     keywords and their values.
-     *
-     *  @param[in] iterator - iterator pointing to a Keyword in the VPD
-     *
-     *  @returns map of keyword:data
-     */
-    internal::KeywordMap readKeywords(Binary::const_iterator iterator);
-
-    /** @brief Checks if the VHDR record is present in the VPD */
-    void checkHeader();
-
-    /** @brief Checks the ECC for VHDR Record.
-     *  @returns Success(0) OR corrupted data(-1)
-     */
-    int vhdrEccCheck();
-
-    /** @brief Checks the ECC for VTOC Record.
-     *  @returns Success(0) OR corrupted data(-1)
-     */
-    int vtocEccCheck();
-
-    /** @brief Checks the ECC for the given record.
-     *
-     * @param[in] iterator - iterator pointing to a record in the VPD
-     * @returns Success(0) OR corrupted data(-1)
-     */
-    int recordEccCheck(Binary::const_iterator iterator);
-
-    /** @brief This interface collects Offset of VTOC
-     *  @returns VTOC Offset
-     */
-    openpower::vpd::constants::RecordOffset getVtocOffset() const;
-
-    /** @brief VPD in binary format */
-    const Binary& vpd;
-
-    /** Inventory path to call out FRU if required */
-    const std::string inventoryPath;
-
-    /** Eeprom hardware path */
-    inventory::Path vpdFilePath;
-
-    /** VPD Offset **/
-    uint32_t vpdStartOffset;
-
-    /** File stream for VPD */
-    std::fstream vpdFileStream;
-
-    /** @brief parser output */
-    Parsed out;
-};
-
-} // namespace parser
-} // namespace vpd
-} // namespace openpower
diff --git a/meson.build b/meson.build
index 9373840..fa9c993 100644
--- a/meson.build
+++ b/meson.build
@@ -1,18 +1,18 @@
 project(
-     'openpower-vpd-parser',
+     'vpd-manager',
      'c',
      'cpp',
      default_options: [
        'warning_level=3',
        'werror=true',
-       'cpp_std=c++23',
+       'cpp_std=c++20',
        'buildtype=debugoptimized'
      ],
      version: '1.0',
-     meson_version: '>=1.1.1',
+     meson_version: '>=0.58.1',
 )
 
-add_global_arguments('-Wno-psabi', language : ['c', 'cpp'])
+add_global_arguments('-Wno-psabi', '-Wno-ignored-attributes', language : ['c', 'cpp'])
 
 # Disable FORTIFY_SOURCE when compiling with no optimization
 if(get_option('optimization') == '0')
@@ -23,44 +23,32 @@
 # Setup googletest before we import any projects that also depend on it to make
 # sure we have control over its configuration
 build_tests = get_option('tests')
-if not build_tests.disabled()
-    gtest_dep = dependency('gtest', main: true, disabler: true, required: false)
-    gmock_dep = dependency('gmock', disabler: true, required: false)
-    if not gtest_dep.found() or not gmock_dep.found()
-        cmake = import('cmake')
-        gtest_opts = cmake.subproject_options()
-        gtest_opts.set_override_option('warning_level', '1')
-        gtest_opts.set_override_option('werror', 'false')
-        gtest_proj = cmake.subproject('googletest',
-                                      options: gtest_opts,
-                                      required: false)
-        if gtest_proj.found()
-            gtest_dep = declare_dependency(
-                dependencies: [
-                    dependency('threads'),
-                    gtest_proj.dependency('gtest'),
-                    gtest_proj.dependency('gtest_main'),
-                ]
-            )
-            gmock_dep = gtest_proj.dependency('gmock')
-        else
-            assert(not get_option('tests').allowed(),
-                   'Googletest is required if tests are enabled')
-        endif
-    endif
-endif
-
-nlohmann_json_dep = dependency('nlohmann_json', include_type: 'system')
-
-phosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces',
-    default_options: [ 'data_com_ibm=true', 'data_org_open_power=true' ],
-    fallback: ['phosphor-dbus-interfaces', 'phosphor_dbus_interfaces_dep'])
-
-phosphor_logging = dependency('phosphor-logging',
-    default_options: [ 'openpower-pel-extension=enabled' ],
-    fallback: ['phosphor-logging', 'phosphor_logging_dep'])
 
 sdbusplus = dependency('sdbusplus', fallback: [ 'sdbusplus', 'sdbusplus_dep' ])
+phosphor_logging = dependency('phosphor-logging')
+phosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces')
+
+if not build_tests.disabled()
+    subdir('test')
+endif
+
+subdir('vpd-tool')
+
+compiler = meson.get_compiler('cpp')
+
+conf_data = configuration_data()
+conf_data.set_quoted('BUSNAME', get_option('BUSNAME'))
+conf_data.set_quoted('OBJPATH', get_option('OBJPATH'))
+conf_data.set_quoted('IFACE', get_option('IFACE'))
+conf_data.set_quoted('BAD_VPD_DIR', get_option('BAD_VPD_DIR'))
+conf_data.set_quoted('INVENTORY_JSON_DEFAULT', get_option('INVENTORY_JSON_DEFAULT'))
+conf_data.set_quoted('INVENTORY_JSON_SYM_LINK', get_option('INVENTORY_JSON_SYM_LINK'))
+conf_data.set_quoted('JSON_ABSOLUTE_PATH_PREFIX', get_option('JSON_ABSOLUTE_PATH_PREFIX'))
+conf_data.set_quoted('SYSTEM_VPD_FILE_PATH', get_option('SYSTEM_VPD_FILE_PATH'))
+conf_data.set_quoted('VPD_SYMLIMK_PATH', get_option('VPD_SYMLIMK_PATH'))
+conf_data.set_quoted('PIM_PATH_PREFIX', get_option('PIM_PATH_PREFIX'))
+configure_file(output: 'config.h',
+            configuration : conf_data)
 
 libvpdecc_src = files(
     'vpdecc/vpdecc.c',
@@ -74,185 +62,26 @@
     install: true,
 )
 
-compiler = meson.get_compiler('cpp')
-python = find_program('python3', required:true)
-
-if compiler.has_header('CLI/CLI.hpp')
-    CLI11_dep = declare_dependency()
-else
-    CLI11_dep = dependency('CLI11')
-endif
-
-if not build_tests.disabled()
-    subdir('test')
-endif
-
-configure_file(output: 'config.h',
-                       configuration :{
-                       'INVENTORY_JSON_DEFAULT': '"'+get_option('INVENTORY_JSON_DEFAULT')+'"',
-                       'VPD_FILES_PATH': '"'+get_option('VPD_FILES_PATH')+'"',
-                       'INVENTORY_PATH': '"'+get_option('INVENTORY_PATH')+'"',
-                       'IPZ_INTERFACE': '"'+get_option('IPZ_INTERFACE')+'"',
-                       'INVENTORY_MANAGER_SERVICE': '"'+get_option('INVENTORY_MANAGER_SERVICE')+'"',
-                       'BUSNAME' : '"' + get_option('BUSNAME') + '"',
-                       'OBJPATH' : '"' + get_option('OBJPATH') + '"',
-                       'IFACE' : '"' + get_option('IFACE') + '"',
-                       'POWER_SUPPLY_TYPE_INTERFACE' : '"'+get_option('POWER_SUPPLY_TYPE_INTERFACE')+'"',
-                       'INVENTORY_MANAGER_CACHE' : '"'+get_option('INVENTORY_MANAGER_CACHE')+'"',
-                       'INVENTORY_JSON_SYM_LINK': '"'+get_option('INVENTORY_JSON_SYM_LINK')+'"',
-                       'DBUS_PROP_JSON': '"'+get_option('DBUS_PROP_JSON')+'"',
-                       'SYSTEM_JSON' : '"'+get_option('SYSTEM_JSON')+'"',
-                       'BAD_VPD_DIR': '"'+get_option('BAD_VPD_DIR')+'"',
-                       'FAN_INTERFACE': '"'+get_option('FAN_INTERFACE')+'"'
-                       }
-  )
-
-common_SOURCES =['common_utility.cpp',
-'vpd-parser/parser_factory.cpp',
-                 'vpd-parser/memory_vpd_parser.cpp',
-                 'vpd-parser/isdimm_vpd_parser.cpp',
-                 'vpd-parser/keyword_vpd_parser.cpp',
-                 'vpd-parser/ipz_parser.cpp', 'impl.cpp', 'ibm_vpd_utils.cpp',
-]
-
-if get_option('ibm-parser').allowed()
-        libgpiodcxx = dependency(
+libgpiodcxx = dependency(
             'libgpiodcxx',
             default_options: ['bindings=cxx'],
         )
-        ibm_read_vpd_SOURCES = ['ibm_vpd_app.cpp',
-                                'vpd-manager/editor_impl.cpp',
-                               ]+common_SOURCES
 
-        vpd_tool_INCLUDE = include_directories('vpd-parser/', 'vpd-manager')
+subdir('vpd-manager')
 
-        ibm_vpd_exe = executable(
-                                'ibm-read-vpd',
-                                ibm_read_vpd_SOURCES,
-                                dependencies: [
-                                        sdbusplus,
-                                        phosphor_logging,
-                                        libgpiodcxx,
-                                        nlohmann_json_dep,
-                                        CLI11_dep,
-                                ],
-                                link_with : libvpdecc,
-                                include_directories : vpd_tool_INCLUDE,
-                                install: true,
-                                cpp_args : '-DIPZ_PARSER'
-                            )
-
-        vpd_tool_SOURCES = ['vpd_tool.cpp',
-                            'vpd_tool_impl.cpp',
-                            'vpd-manager/editor_impl.cpp',
-                           ]+common_SOURCES
-
-
-        vpd_tool_exe = executable(
-                                 'vpd-tool',
-                                 vpd_tool_SOURCES,
-                                 dependencies: [
-                                   CLI11_dep,
-                                   libgpiodcxx,
-                                   nlohmann_json_dep,
-                                   phosphor_logging,
-                                   sdbusplus,
-                                   ],
-                                 link_with : libvpdecc,
-                                 install: true,
-                                 include_directories : vpd_tool_INCLUDE,
-                                 cpp_args : '-DIPZ_PARSER'
-                                 )
-if get_option('vpd-manager').allowed()
-    subdir('vpd-manager')
-endif
-
+services = ['service_files/vpd-manager.service',
+            'service_files/system-vpd.service',
+            'service_files/wait-vpd-parsers.service']
+            
 systemd_system_unit_dir = dependency('systemd').get_variable(
         'systemdsystemunitdir')
-
-udev_dir = dependency('udev').get_variable(
-        'udev_dir')
-
-rules = ['rules/70-ibm-vpd-parser.rules']
-
-install_data(rules, install_mode: 'rw-r--r--', install_dir: udev_dir/'rules.d')
-
-services = ['service_files/system-vpd.service',
-            'service_files/ibm-vpd-parser@.service',
-            'service_files/com.ibm.VPD.Manager.service',
-            'service_files/wait-vpd-parsers.service',
-            'service_files/ibm-isdimm-vpd-parser@.service',
-            'service_files/ibm-spi-vpd-parser@.service']
-
 install_data(services, install_dir: systemd_system_unit_dir)
 
-scripts = ['scripts/wait-vpd-parsers.sh']
+scripts = ['scripts/wait-vpd-status.sh']
 
 install_data(scripts,
     install_mode: 'rwxr-xr-x',
     install_dir: get_option('bindir'))
 
 package_datadir = join_paths('share', 'vpd')
-install_subdir('config/ibm/', install_mode: 'rwxr-xr-x', install_dir: package_datadir, strip_directory: true)
-
-else
-        FRUGEN = '$srcdir/extra-properties.py -e' + get_option('FRU_YAML')
-        PROPGEN = '$srcdir/extra-properties.py -e' + get_option('PROP_YAML')
-
-        src_dir = meson.project_source_root()
-        FRU_GEN_SCRIPT = src_dir + '/writefru.py'
-        FRU_GEN_SCRIPT_FILES = src_dir + '/writefru.yaml'
-
-        PROP_GEN_SCRIPT = src_dir + '/extra-properties.py'
-        PROP_GEN_SCRIPT_FILES = src_dir + '/extra-properties-example.yaml'
-
-        writefru_hpp = custom_target('writefru.hpp',
-                                     command:[python,
-                                              FRU_GEN_SCRIPT,
-                                              '-i',
-                                              get_option('FRU_YAML')
-                                     ],
-                                     depend_files :['writefru.mako.hpp',
-                                                    'writefru.py',
-                                                    get_option('FRU_YAML')
-                                     ],
-                                     output:'writefru.hpp'
-        )
-
-        extra_properties_gen_hpp = custom_target(
-                                        'extra-properties-gen.hpp',
-                                        command:[
-                                                python,
-                                                PROP_GEN_SCRIPT,
-                                                '-e',
-                                                get_option('PROP_YAML')
-                                        ],
-                                        depend_files : ['extra-properties.mako.hpp',
-                                                        'extra-properties.py',
-                                                        get_option('PROP_YAML')
-                                        ],
-                                        output:'extra-properties-gen.hpp'
-        )
-
-        openpower_read_vpd_SOURCES = ['app.cpp',
-                                      'args.cpp',
-                                      'impl.cpp',
-                                      'vpd-parser/ipz_parser.cpp',
-                                      'write.cpp',
-                                      'common_utility.cpp',
-                                      writefru_hpp,
-                                      extra_properties_gen_hpp
-        ]
-
-        openpower_read_vpd_exe= executable(
-                'openpower-read-vpd',
-                openpower_read_vpd_SOURCES,
-                dependencies: [
-                        sdbusplus,
-                        phosphor_logging,
-                        nlohmann_json_dep,
-                ],
-                include_directories : 'vpd-parser/',
-                install: true,
-        )
-endif
+install_subdir('configuration/ibm/', install_mode: 'rwxr-xr-x', install_dir: package_datadir, strip_directory: true)
diff --git a/meson.options b/meson.options
deleted file mode 100644
index 64118fa..0000000
--- a/meson.options
+++ /dev/null
@@ -1,21 +0,0 @@
-option('oe-sdk', type: 'feature', value : 'disabled', description: 'ENABLE OE SDK FOR OPENPOWER VPD PARSER')
-option('tests', type: 'feature', value : 'enabled', description: 'Build tests')
-option('FRU_YAML',type: 'string', value: 'writefru.yaml',  description: 'YAML STRING')
-option('PROP_YAML',type: 'string', value: 'extra-properties-example.yaml',  description: 'YAML PROPERTY')
-option('ibm-parser', type: 'feature', description: 'ENABLE IBM PARSER')
-option('VPD_FILES_PATH',type: 'string', value: '/var/lib/vpd', description: 'Directory to hold VPD runtime files')
-option('INVENTORY_JSON_DEFAULT',type: 'string', value: '/usr/share/vpd/vpd_inventory.json',  description: 'JSON file that defines inventory blueprint. The default path before system VPD service sets up the symlink.')
-option('INVENTORY_PATH',type: 'string', value: '/xyz/openbmc_project/inventory', description: 'Prefix for inventory D-Bus objects')
-option('INVENTORY_MANAGER_SERVICE',type: 'string', value: 'xyz.openbmc_project.Inventory.Manager', description: 'Inventory manager service')
-option('IPZ_INTERFACE', type: 'string', value: 'com.ibm.ipzvpd', description: 'IPZ VPD interface')
-option('BUSNAME', type : 'string', value : 'com.ibm.VPD.Manager',description : 'BUS NAME FOR THE SERVICE')
-option('OBJPATH', type : 'string', value : '/com/ibm/VPD/Manager', description : 'OBJECT PATH FOR THE SERVICE')
-option('IFACE', type : 'string', value : 'com.ibm.VPD.Manager', description : 'INTERFACE NAME')
-option('vpd-manager', type: 'feature', description: 'ENABLE VPD-MANAGERR APPLICATION')
-option('POWER_SUPPLY_TYPE_INTERFACE', type : 'string', value : 'xyz.openbmc_project.Inventory.Item.PowerSupply', description : 'Power Supply Type Interface')
-option('INVENTORY_MANAGER_CACHE', type : 'string', value : '/var/lib/phosphor-inventory-manager', description : 'Path to inventory manager cache')
-option('INVENTORY_JSON_SYM_LINK',type: 'string', value: '/var/lib/vpd/vpd_inventory.json',  description: 'Symbolic link to vpd inventory json.')
-option('DBUS_PROP_JSON',type: 'string', value: '/usr/share/vpd/dbus_properties.json',  description: 'Json which contains properties specific to dbus.')
-option('SYSTEM_JSON',type: 'string', value: '/usr/share/vpd/systems.json',  description: 'JSON file used to pick the right system json')
-option('BAD_VPD_DIR',type: 'string', value: '/tmp/bad-vpd/', description: 'Directory which contains the bad vpd file - which needs to be included in bmc dump.')
-option('FAN_INTERFACE', type: 'string', value: 'xyz.openbmc_project.Inventory.Item.Fan', description: 'Fan type interface.')
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..72bd1d6
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,13 @@
+option('BUSNAME', type : 'string', value : 'com.ibm.VPD.Manager',description : 'BUS NAME FOR THE SERVICE')
+option('OBJPATH', type : 'string', value : '/com/ibm/VPD/Manager', description : 'OBJECT PATH FOR THE SERVICE')
+option('IFACE', type : 'string', value : 'com.ibm.VPD.Manager', description : 'INTERFACE NAME')
+option('tests', type: 'feature', value : 'enabled', description: 'Build tests')
+option('ipz_ecc_check', type: 'feature', value : 'disabled', description: 'enable when ECC check used in IPZ parsering, used for Gtest cases.')
+option('BAD_VPD_DIR', type: 'string', value: '/tmp/bad-vpd/', description: 'Directory which contains the bad vpd file - which needs to be included in bmc dump.')
+option('INVENTORY_JSON_DEFAULT', type: 'string', value: '/usr/share/vpd/vpd_inventory.json',  description: 'JSON file that defines inventory blueprint. The default path before system VPD service sets up the symlink.')
+option('INVENTORY_JSON_SYM_LINK', type: 'string', value: '/var/lib/vpd/vpd_inventory.json',  description: 'Symbolic link to vpd inventory json.')
+option('JSON_ABSOLUTE_PATH_PREFIX', type: 'string', value: '/usr/share/vpd/',  description: 'Path that has all system JSONs.')
+option('SYSTEM_VPD_FILE_PATH', type: 'string', value: '/sys/bus/i2c/drivers/at24/8-0050/eeprom',  description: 'EEPROM path of system VPD.')
+option('VPD_SYMLIMK_PATH', type: 'string', value: '/var/lib/vpd',  description: 'Symlink folder for VPD invnetory JSONs')
+option('PIM_PATH_PREFIX', type: 'string', value: '/xyz/openbmc_project/inventory', description: 'Prefix for PIM inventory paths.')
+option('ibm_system', type: 'feature', value : 'enabled', description: 'Enable code specific to IBM systems.')
\ No newline at end of file
diff --git a/rules/70-ibm-vpd-parser.rules b/rules/70-ibm-vpd-parser.rules
deleted file mode 100644
index c86a700..0000000
--- a/rules/70-ibm-vpd-parser.rules
+++ /dev/null
@@ -1,3 +0,0 @@
-SUBSYSTEM=="nvmem", SUBSYSTEMS=="i2c", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}+="ibm-vpd-parser@%N.service"
-SUBSYSTEM=="i2c", DRIVER=="ee1004", ACTION=="bind", TAG+="systemd", ENV{SYSTEMD_WANTS}+="ibm-isdimm-vpd-parser@%N.service"
-SUBSYSTEM=="nvmem", SUBSYSTEMS=="spi", ENV{OF_NAME}=="eeprom", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}+="ibm-spi-vpd-parser@%N.service"
diff --git a/scripts/wait-vpd-parsers.sh b/scripts/wait-vpd-parsers.sh
deleted file mode 100644
index 67ba05a..0000000
--- a/scripts/wait-vpd-parsers.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-retries=100
-echo "Checking every 2s for active VPD parsers...."
-while [ "$retries" -ne 0 ]
-do
-    sleep 2
-    systemctl -q is-active ibm-vpd-parser@*.service
-    active=$?
-    if [ $active -ne 0 ]
-    then
-        echo "Done wait for active VPD parsers. Exit success"
-        exit 0
-    fi
-    retries="$((retries - 1))"
-    echo "VPD parsers still running. Retries remaining: $retries"
-done
-echo "Exit wait for VPD services to finish with timeout"
-exit 1
diff --git a/scripts/wait-vpd-status.sh b/scripts/wait-vpd-status.sh
new file mode 100644
index 0000000..ecf0533
--- /dev/null
+++ b/scripts/wait-vpd-status.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+retries=100
+echo "Checking every 2s for VPD collection status ...."
+while [ "$retries" -ne 0 ]
+do
+    sleep 2
+    output=$(busctl get-property com.ibm.VPD.Manager /com/ibm/VPD/Manager com.ibm.VPD.Manager CollectionStatus)
+
+    if echo "$output" | grep -q "Completed" ; then
+        echo "VPD collection is completed"
+        exit 0
+    fi
+
+    retries="$((retries - 1))"
+    echo "Waiting for VPD status update. Retries remaining: $retries"
+done
+echo "Exit wait for VPD services to finish with timeout"
+exit 1
diff --git a/service_files/com.ibm.VPD.Manager.service b/service_files/com.ibm.VPD.Manager.service
deleted file mode 100644
index 04f157d..0000000
--- a/service_files/com.ibm.VPD.Manager.service
+++ /dev/null
@@ -1,15 +0,0 @@
-[Unit]
-Description=IBM VPD Manager
-StopWhenUnneeded=false
-Requires=system-vpd.service
-After=system-vpd.service
-
-[Service]
-BusName=com.ibm.VPD.Manager
-Type=dbus
-Restart=always
-RestartSec=5
-ExecStart=/usr/bin/vpd-manager
-
-[Install]
-WantedBy=multi-user.target
diff --git a/service_files/ibm-isdimm-vpd-parser@.service b/service_files/ibm-isdimm-vpd-parser@.service
deleted file mode 100644
index d92ee52..0000000
--- a/service_files/ibm-isdimm-vpd-parser@.service
+++ /dev/null
@@ -1,14 +0,0 @@
-[Unit]
-Description=Jedec format VPD Parser service for FRU %I
-Wants=mapper-wait@-xyz-openbmc_project-inventory.service
-After=mapper-wait@-xyz-openbmc_project-inventory.service
-Requires=system-vpd.service
-After=system-vpd.service
-Before=phosphor-discover-system-state@0.service
-
-[Service]
-ExecStart=/usr/bin/env ibm-read-vpd --file %f --driver ee1004
-SyslogIdentifier=ibm-isdimm-vpd-parser
-
-[Install]
-WantedBy=multi-user.target
diff --git a/service_files/ibm-spi-vpd-parser@.service b/service_files/ibm-spi-vpd-parser@.service
deleted file mode 100644
index eaecbbc..0000000
--- a/service_files/ibm-spi-vpd-parser@.service
+++ /dev/null
@@ -1,14 +0,0 @@
-[Unit]
-Description= IPZ format SPI VPD Parser service for FRU %I
-Wants=mapper-wait@-xyz-openbmc_project-inventory.service
-After=mapper-wait@-xyz-openbmc_project-inventory.service
-Requires=system-vpd.service
-After=system-vpd.service
-Before=phosphor-discover-system-state@0.service
-
-[Service]
-ExecStart=/usr/bin/env ibm-read-vpd --file %f --driver at25
-SyslogIdentifier=ibm-spi-vpd-parser
-
-[Install]
-WantedBy=multi-user.target
diff --git a/service_files/ibm-vpd-parser@.service b/service_files/ibm-vpd-parser@.service
deleted file mode 100644
index a8b2063..0000000
--- a/service_files/ibm-vpd-parser@.service
+++ /dev/null
@@ -1,14 +0,0 @@
-[Unit]
-Description=IPZ format VPD Parser service for FRU %I
-Wants=mapper-wait@-xyz-openbmc_project-inventory.service
-After=mapper-wait@-xyz-openbmc_project-inventory.service
-Requires=system-vpd.service
-After=system-vpd.service
-Before=phosphor-discover-system-state@0.service
-
-[Service]
-ExecStart=/usr/bin/env ibm-read-vpd --file %f --driver at24
-SyslogIdentifier=ibm-vpd-parser
-
-[Install]
-WantedBy=multi-user.target
diff --git a/service_files/system-vpd.service b/service_files/system-vpd.service
index 5c1f076..019c3b2 100644
--- a/service_files/system-vpd.service
+++ b/service_files/system-vpd.service
@@ -1,19 +1,7 @@
+#currently these services are added just for backward compatibility.
+#It will perform no task in the system and will be eventually removed.
+
 [Unit]
 Description=System VPD Collection
-Wants=mapper-wait@-xyz-openbmc_project-inventory.service
-After=mapper-wait@-xyz-openbmc_project-inventory.service
-Wants=obmc-power-reset-on@0.target
-After=obmc-power-reset-on@0.target
-Wants=mapper-wait@-xyz-openbmc_project-state-chassis0.service
-After=mapper-wait@-xyz-openbmc_project-state-chassis0.service
-After=set-spi-mux.service
+After=vpd-manager.service
 Before=phosphor-discover-system-state@0.service
-
-[Service]
-ExecStart=/usr/bin/env ibm-read-vpd --file /sys/bus/i2c/drivers/at24/8-0050/eeprom --driver at24
-SyslogIdentifier=ibm-vpd-parser
-Type=oneshot
-RemainAfterExit=yes
-
-[Install]
-RequiredBy=multi-user.target
diff --git a/service_files/vpd-manager.service b/service_files/vpd-manager.service
new file mode 100644
index 0000000..8c78781
--- /dev/null
+++ b/service_files/vpd-manager.service
@@ -0,0 +1,22 @@
+[Unit]
+Description=VPD Manager
+StopWhenUnneeded=false
+Wants=mapper-wait@-xyz-openbmc_project-inventory.service
+After=mapper-wait@-xyz-openbmc_project-inventory.service
+Wants=obmc-power-reset-on@0.target
+After=obmc-power-reset-on@0.target
+Wants=mapper-wait@-xyz-openbmc_project-state-chassis0.service
+After=mapper-wait@-xyz-openbmc_project-state-chassis0.service
+After=set-spi-mux.service
+Before=phosphor-discover-system-state@0.service
+
+[Service]
+BusName=com.ibm.VPD.Manager
+SyslogIdentifier=vpd-manager
+Type=dbus
+Restart=always
+RestartSec=5
+ExecStart=/usr/bin/vpd-manager
+
+[Install]
+WantedBy=multi-user.target
\ No newline at end of file
diff --git a/service_files/wait-vpd-parsers.service b/service_files/wait-vpd-parsers.service
index 95fc22f..8b39310 100644
--- a/service_files/wait-vpd-parsers.service
+++ b/service_files/wait-vpd-parsers.service
@@ -1,12 +1,15 @@
+#currently these services are added just for backward compatibility.
+#It will perform no task in the system and will be eventually removed.
+
 [Unit]
 Description=Wait for VPD Collection Services to complete
-After=system-vpd.service
+Wants=vpd-manager.service
+After=vpd-manager.service
 After=set-spi-mux.service
 
 [Service]
-ExecStart=/usr/bin/wait-vpd-parsers.sh
+ExecStart=/usr/bin/wait-vpd-status.sh
 Type=oneshot
 
 [Install]
-WantedBy=multi-user.target
-#WantedBy=obmc-chassis-poweroff@0.target
+WantedBy=multi-user.target
\ No newline at end of file
diff --git a/store.hpp b/store.hpp
deleted file mode 100644
index b3f30e6..0000000
--- a/store.hpp
+++ /dev/null
@@ -1,114 +0,0 @@
-#pragma once
-
-#include "defines.hpp"
-#include "types.hpp"
-
-#include <iostream>
-#include <string>
-#include <unordered_map>
-
-namespace openpower
-{
-namespace vpd
-{
-
-/** @brief Parsed VPD is represented as a dictionary of records, where
- *         each record in itself is a dictionary of keywords */
-using Parsed = std::unordered_map<std::string,
-                                  std::unordered_map<std::string, std::string>>;
-
-/** @class Store
- *  @brief Store for parsed OpenPOWER VPD
- *
- *  A Store object stores parsed OpenPOWER VPD, and provides access
- *  to the VPD, specified by record and keyword. Parsed VPD is typically
- *  provided by the Parser class.
- */
-class Store final
-{
-  public:
-    Store() = delete;
-    Store(const Store&) = delete;
-    Store& operator=(const Store&) = delete;
-    Store(Store&&) = default;
-    Store& operator=(Store&&) = default;
-    ~Store() = default;
-
-    /** @brief Construct a Store
-     *
-     *  @param[in] vpdBuffer - A parsed VPD object
-     */
-    explicit Store(Parsed&& vpdBuffer) : vpd(std::move(vpdBuffer)) {}
-
-    /** @brief Retrieves VPD from Store as a Parsed object
-     *
-     *  @returns VPD as a Parsed object
-     */
-    inline Parsed& getVpdMap()
-    {
-        return vpd;
-    }
-
-    /** @brief Retrieves VPD from Store
-     *
-     *  @tparam R - VPD record
-     *  @tparam K - VPD keyword
-     *  @returns VPD stored in input record:keyword
-     */
-    template <Record R, record::Keyword K>
-    inline const std::string& get() const;
-
-    /** @brief Checks if VPD exists in store
-     *
-     *  @tparam R - VPD record
-     *  @tparam K - VPD keyword
-     *  @returns true if {R,K} exists
-     */
-    template <Record R, record::Keyword K>
-    bool exists() const
-    {
-        static const std::string record = getRecord<R>();
-        static const std::string keyword = record::getKeyword<K>();
-        return vpd.count(record) && vpd.at(record).count(keyword);
-    }
-
-    /** @brief Displays all data in the store to stdout
-     */
-    void dump() const
-    {
-        for (const auto& [vpdname, avpd] : vpd)
-        {
-            std::cout << vpdname << ": " << std::endl;
-
-            for (const auto& [key, val] : avpd)
-            {
-                std::cout << "\t" << key << " : " << val << std::endl;
-            }
-        }
-    }
-
-  private:
-    /** @brief The store for parsed VPD */
-    Parsed vpd;
-};
-
-template <Record R, record::Keyword K>
-inline const std::string& Store::get() const
-{
-    static const std::string record = getRecord<R>();
-    static const std::string keyword = record::getKeyword<K>();
-    static const std::string empty = "";
-    auto kw = vpd.find(record);
-    if (vpd.end() != kw)
-    {
-        auto value = (kw->second).find(keyword);
-        if ((kw->second).end() != value)
-        {
-            return value->second;
-        }
-    }
-    return empty;
-}
-
-} // namespace vpd
-} // namespace openpower
diff --git a/subprojects/CLI11.wrap b/subprojects/CLI11.wrap
deleted file mode 100644
index 2e5a95b..0000000
--- a/subprojects/CLI11.wrap
+++ /dev/null
@@ -1,6 +0,0 @@
-[wrap-git]
-url = https://github.com/CLIUtils/CLI11.git
-revision = HEAD
-
-[provide]
-CLI11 = CLI11_dep
diff --git a/subprojects/googletest.wrap b/subprojects/googletest.wrap
deleted file mode 100644
index 56da9ef..0000000
--- a/subprojects/googletest.wrap
+++ /dev/null
@@ -1,3 +0,0 @@
-[wrap-git]
-url = https://github.com/google/googletest
-revision = HEAD
diff --git a/subprojects/libgpiod.wrap b/subprojects/libgpiod.wrap
deleted file mode 100644
index f650e74..0000000
--- a/subprojects/libgpiod.wrap
+++ /dev/null
@@ -1,13 +0,0 @@
-[wrap-file]
-directory = libgpiod-1.6.3
-source_url = https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/snapshot/libgpiod-1.6.3.tar.gz
-source_filename = libgpiod-1.6.3.tar.gz
-source_hash = eb446070be1444fd7d32d32bbca53c2f3bbb0a21193db86198cf6050b7a28441
-patch_filename = libgpiod_1.6.3-1_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/libgpiod_1.6.3-1/get_patch
-patch_hash = 76821c637073679a88f77593c6f7ce65b4b5abf8c998f823fffa13918c8761df
-
-[provide]
-libgpiod = gpiod_dep
-libgpiodcxx = gpiodcxx_dep
-
diff --git a/subprojects/nlohmann_json.wrap b/subprojects/nlohmann_json.wrap
deleted file mode 100644
index 3745380..0000000
--- a/subprojects/nlohmann_json.wrap
+++ /dev/null
@@ -1,6 +0,0 @@
-[wrap-git]
-revision = HEAD
-url = https://github.com/nlohmann/json.git
-
-[provide]
-nlohmann_json = nlohmann_json_dep
diff --git a/subprojects/phosphor-dbus-interfaces.wrap b/subprojects/phosphor-dbus-interfaces.wrap
deleted file mode 100644
index 935a8b2..0000000
--- a/subprojects/phosphor-dbus-interfaces.wrap
+++ /dev/null
@@ -1,3 +0,0 @@
-[wrap-git]
-url = https://github.com/openbmc/phosphor-dbus-interfaces.git
-revision = HEAD
diff --git a/subprojects/phosphor-logging.wrap b/subprojects/phosphor-logging.wrap
deleted file mode 100644
index a039fcf..0000000
--- a/subprojects/phosphor-logging.wrap
+++ /dev/null
@@ -1,3 +0,0 @@
-[wrap-git]
-url = https://github.com/openbmc/phosphor-logging.git
-revision = HEAD
diff --git a/subprojects/sdbusplus.wrap b/subprojects/sdbusplus.wrap
deleted file mode 100644
index edd9a31..0000000
--- a/subprojects/sdbusplus.wrap
+++ /dev/null
@@ -1,7 +0,0 @@
-[wrap-git]
-url = https://github.com/openbmc/sdbusplus.git
-revision = HEAD
-
-[provide]
-sdbusplus = sdbusplus_dep
-program_names = sdbus++, sdbus++-gen-meson
diff --git a/test/bono.vpd b/test/bono.vpd
deleted file mode 100644
index afc1b8e..0000000
--- a/test/bono.vpd
+++ /dev/null
Binary files differ
diff --git a/test/ipz_parser/parser.cpp b/test/ipz_parser/parser.cpp
deleted file mode 100644
index 0a36ad7..0000000
--- a/test/ipz_parser/parser.cpp
+++ /dev/null
@@ -1,150 +0,0 @@
-#include "ipz_parser.hpp"
-
-#include <const.hpp>
-#include <defines.hpp>
-#include <impl.hpp>
-#include <store.hpp>
-
-#include <cassert>
-#include <fstream>
-#include <iterator>
-
-#include <gtest/gtest.h>
-
-using namespace openpower::vpd;
-using namespace openpower::vpd::constants;
-
-constexpr uint32_t vpdOffset = 0;
-
-TEST(IpzVpdParserApp, vpdGoodPath)
-{
-    // Create a vpd
-    Binary vpd = {
-        0x00, 0x0f, 0x17, 0xba, 0x42, 0xca, 0x82, 0xd7, 0x7b, 0x77, 0x1e, 0x84,
-        0x28, 0x00, 0x52, 0x54, 0x04, 0x56, 0x48, 0x44, 0x52, 0x56, 0x44, 0x02,
-        0x30, 0x31, 0x50, 0x54, 0x0e, 0x56, 0x54, 0x4f, 0x43, 0xd5, 0x00, 0x37,
-        0x00, 0x4c, 0x00, 0x97, 0x05, 0x13, 0x00, 0x50, 0x46, 0x08, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x84, 0x48, 0x00, 0x52, 0x54,
-        0x04, 0x56, 0x54, 0x4f, 0x43, 0x50, 0x54, 0x0e, 0x56, 0x49, 0x4e, 0x49,
-        0xd5, 0x00, 0x52, 0x00, 0x90, 0x00, 0x73, 0x05, 0x24, 0x00, 0x84, 0x8c,
-        0x00, 0x52, 0x54, 0x04, 0x56, 0x49, 0x4e, 0x49, 0x44, 0x52, 0x10, 0x41,
-        0x50, 0x53, 0x53, 0x20, 0x26, 0x20, 0x54, 0x50, 0x4d, 0x20, 0x20, 0x43,
-        0x41, 0x52, 0x44, 0x43, 0x45, 0x01, 0x31, 0x56, 0x5a, 0x02, 0x30, 0x31,
-        0x46, 0x4e, 0x07, 0x30, 0x31, 0x44, 0x48, 0x32, 0x30, 0x30, 0x50, 0x4e,
-        0x07, 0x30, 0x31, 0x44, 0x48, 0x32, 0x30, 0x31, 0x53, 0x4e, 0x0c, 0x59,
-        0x4c, 0x33, 0x30, 0x42, 0x47, 0x37, 0x43, 0x46, 0x30, 0x33, 0x50, 0x43,
-        0x43, 0x04, 0x36, 0x42, 0x36, 0x36, 0x50, 0x52, 0x08, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x45, 0x04, 0x30, 0x30, 0x30, 0x31,
-        0x43, 0x54, 0x04, 0x40, 0xb8, 0x02, 0x03, 0x48, 0x57, 0x02, 0x00, 0x01,
-        0x42, 0x33, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x34, 0x01,
-        0x00, 0x42, 0x37, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x50, 0x46, 0x02, 0x00, 0x00, 0x78, 0x84, 0xdc,
-        0x00, 0x52, 0x54, 0x04};
-
-    // call app for this vpd
-    parser::Impl p(std::move(vpd), std::string{}, systemVpdFilePath, vpdOffset);
-    Store vpdStore = p.run();
-
-    static const std::string record = "VINI";
-    static const std::string keyword = "DR";
-
-    // TODO 2: Move this as an utility to store.hpp
-    std::string dataFound;
-    Parsed st_bin = vpdStore.getVpdMap();
-
-    auto kw = st_bin.find(record);
-    if (st_bin.end() != kw)
-    {
-        auto value = (kw->second).find(keyword);
-        if ((kw->second).end() != value)
-        {
-            dataFound = value->second;
-        }
-    }
-
-    ASSERT_EQ(dataFound, "APSS & TPM  CARD");
-}
-
-TEST(IpzVpdParserApp, vpdBadPathEmptyVPD)
-{
-    Binary vpd = {};
-
-    // VPD is empty
-    parser::Impl p(std::move(vpd), std::string{}, systemVpdFilePath, vpdOffset);
-
-    // Expecting a throw here
-    EXPECT_THROW(p.run(), std::runtime_error);
-}
-
-TEST(IpzVpdParserApp, vpdBadPathMissingHeader)
-{
-    Binary vpd = {
-        0x00, 0x0f, 0x17, 0xba, 0x42, 0xca, 0x82, 0xd7, 0x7b, 0x77, 0x1e, 0x84,
-        0x28, 0x00, 0x52, 0x54, 0x04, 0x56, 0x48, 0x44, 0x52, 0x56, 0x44, 0x02,
-        0x30, 0x31, 0x50, 0x54, 0x0e, 0x56, 0x54, 0x4f, 0x43, 0xd5, 0x00, 0x37,
-        0x00, 0x4c, 0x00, 0x97, 0x05, 0x13, 0x00, 0x50, 0x46, 0x08, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x84, 0x48, 0x00, 0x52, 0x54,
-        0x04, 0x56, 0x54, 0x4f, 0x43, 0x50, 0x54, 0x0e, 0x56, 0x49, 0x4e, 0x49,
-        0xd5, 0x00, 0x52, 0x00, 0x90, 0x00, 0x73, 0x05, 0x24, 0x00, 0x84, 0x8c,
-        0x00, 0x52, 0x54, 0x04, 0x56, 0x49, 0x4e, 0x49, 0x44, 0x52, 0x10, 0x41,
-        0x50, 0x53, 0x53, 0x20, 0x26, 0x20, 0x54, 0x50, 0x4d, 0x20, 0x20, 0x43,
-        0x41, 0x52, 0x44, 0x43, 0x45, 0x01, 0x31, 0x56, 0x5a, 0x02, 0x30, 0x31,
-        0x46, 0x4e, 0x07, 0x30, 0x31, 0x44, 0x48, 0x32, 0x30, 0x30, 0x50, 0x4e,
-        0x07, 0x30, 0x31, 0x44, 0x48, 0x32, 0x30, 0x31, 0x53, 0x4e, 0x0c, 0x59,
-        0x4c, 0x33, 0x30, 0x42, 0x47, 0x37, 0x43, 0x46, 0x30, 0x33, 0x50, 0x43,
-        0x43, 0x04, 0x36, 0x42, 0x36, 0x36, 0x50, 0x52, 0x08, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x45, 0x04, 0x30, 0x30, 0x30, 0x31,
-        0x43, 0x54, 0x04, 0x40, 0xb8, 0x02, 0x03, 0x48, 0x57, 0x02, 0x00, 0x01,
-        0x42, 0x33, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x34, 0x01,
-        0x00, 0x42, 0x37, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x50, 0x46, 0x02, 0x00, 0x00, 0x78, 0x84, 0xdc,
-        0x00, 0x52, 0x54, 0x04};
-
-    // corrupt the VHDR
-    vpd[17] = 0x00;
-
-    parser::Impl p(std::move(vpd), std::string{}, systemVpdFilePath, vpdOffset);
-
-    // Expecting a throw here
-    EXPECT_THROW(p.run(), std::runtime_error);
-}
-
-TEST(IpzVpdParserApp, vpdBadPathMissingVTOC)
-{
-    Binary vpd = {
-        0x00, 0x0f, 0x17, 0xba, 0x42, 0xca, 0x82, 0xd7, 0x7b, 0x77, 0x1e, 0x84,
-        0x28, 0x00, 0x52, 0x54, 0x04, 0x56, 0x48, 0x44, 0x52, 0x56, 0x44, 0x02,
-        0x30, 0x31, 0x50, 0x54, 0x0e, 0x56, 0x54, 0x4f, 0x43, 0xd5, 0x00, 0x37,
-        0x00, 0x4c, 0x00, 0x97, 0x05, 0x13, 0x00, 0x50, 0x46, 0x08, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x84, 0x48, 0x00, 0x52, 0x54,
-        0x04, 0x56, 0x54, 0x4f, 0x43, 0x50, 0x54, 0x0e, 0x56, 0x49, 0x4e, 0x49,
-        0xd5, 0x00, 0x52, 0x00, 0x90, 0x00, 0x73, 0x05, 0x24, 0x00, 0x84, 0x8c,
-        0x00, 0x52, 0x54, 0x04, 0x56, 0x49, 0x4e, 0x49, 0x44, 0x52, 0x10, 0x41,
-        0x50, 0x53, 0x53, 0x20, 0x26, 0x20, 0x54, 0x50, 0x4d, 0x20, 0x20, 0x43,
-        0x41, 0x52, 0x44, 0x43, 0x45, 0x01, 0x31, 0x56, 0x5a, 0x02, 0x30, 0x31,
-        0x46, 0x4e, 0x07, 0x30, 0x31, 0x44, 0x48, 0x32, 0x30, 0x30, 0x50, 0x4e,
-        0x07, 0x30, 0x31, 0x44, 0x48, 0x32, 0x30, 0x31, 0x53, 0x4e, 0x0c, 0x59,
-        0x4c, 0x33, 0x30, 0x42, 0x47, 0x37, 0x43, 0x46, 0x30, 0x33, 0x50, 0x43,
-        0x43, 0x04, 0x36, 0x42, 0x36, 0x36, 0x50, 0x52, 0x08, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x45, 0x04, 0x30, 0x30, 0x30, 0x31,
-        0x43, 0x54, 0x04, 0x40, 0xb8, 0x02, 0x03, 0x48, 0x57, 0x02, 0x00, 0x01,
-        0x42, 0x33, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x34, 0x01,
-        0x00, 0x42, 0x37, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x50, 0x46, 0x02, 0x00, 0x00, 0x78, 0x84, 0xdc,
-        0x00, 0x52, 0x54, 0x04};
-
-    // corrupt the VTOC
-    vpd[61] = 0x00;
-
-    parser::Impl p(std::move(vpd), std::string{}, systemVpdFilePath, vpdOffset);
-
-    // Expecting a throw here
-    EXPECT_THROW(p.run(), std::runtime_error);
-}
-
-int main(int argc, char** argv)
-{
-    ::testing::InitGoogleTest(&argc, argv);
-
-    return RUN_ALL_TESTS();
-}
diff --git a/test/keyword_vpd_parser_test/kw_vpd_test.cpp b/test/keyword_vpd_parser_test/kw_vpd_test.cpp
deleted file mode 100644
index dc05358..0000000
--- a/test/keyword_vpd_parser_test/kw_vpd_test.cpp
+++ /dev/null
@@ -1,213 +0,0 @@
-#include "keyword_vpd_parser.hpp"
-#include "store.hpp"
-#include "types.hpp"
-
-#include <exception>
-#include <fstream>
-
-#include <gtest/gtest.h>
-
-using namespace vpd::keyword::parser;
-using namespace openpower::vpd;
-using namespace openpower::vpd::inventory;
-using namespace std;
-
-class KeywordVpdParserTest : public ::testing::Test
-{
-  protected:
-    Binary keywordVpdVector;
-    Binary bonoKwVpdVector;
-
-    KeywordVpdParserTest()
-    {
-        // Open the kw VPD file in binary mode
-        std::ifstream kwVpdFile("vpd.dat", std::ios::binary);
-
-        // Read the content of the binary file into a vector
-        keywordVpdVector.assign((std::istreambuf_iterator<char>(kwVpdFile)),
-                                std::istreambuf_iterator<char>());
-        // Open the BONO type kw VPD file in binary mode
-        std::ifstream bonoKwVpdFile("bono.vpd", std::ios::binary);
-
-        // Read the content of the binary file into a vector
-        bonoKwVpdVector.assign((std::istreambuf_iterator<char>(bonoKwVpdFile)),
-                               std::istreambuf_iterator<char>());
-    }
-};
-
-TEST_F(KeywordVpdParserTest, GoodTestCase)
-{
-    KeywordVpdParser parserObj1(std::move(keywordVpdVector));
-    KeywordVpdMap map1{
-        pair<std::string, Binary>{"WI", {0x00}},
-        pair<std::string, Binary>{"FL", {0x50, 0x32, 0x20, 0x20, 0x20}},
-        pair<std::string, Binary>{
-            "SM",
-            {0x82, 0x50, 0x32, 0x2d, 0x44, 0x34, 0x20, 0x20, 0x20, 0x20, 0x20,
-             0x20, 0x32, 0x53, 0x53, 0x43, 0x81, 0x50, 0x32, 0x2d, 0x44, 0x35,
-             0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x32, 0x53, 0x53, 0x43, 0x80,
-             0x50, 0x32, 0x2d, 0x44, 0x37, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-             0x32, 0x53, 0x53, 0x43, 0x83, 0x50, 0x32, 0x2d, 0x44, 0x38, 0x20,
-             0x20, 0x20, 0x20, 0x20, 0x20, 0x32, 0x53, 0x53, 0x43}},
-        pair<std::string, Binary>{
-            "B2",
-            {0x50, 0x05, 0x07, 0x60, 0x73, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00,
-             0x00, 0x00, 0x00, 0x01, 0x00}},
-        pair<std::string, Binary>{"MF", {0x00, 0x10}},
-        pair<std::string, Binary>{"VZ", {0x30, 0x33}},
-        pair<std::string, Binary>{"PN",
-                                  {0x30, 0x31, 0x4b, 0x55, 0x37, 0x32, 0x34}},
-        pair<std::string, Binary>{
-            "FN", {0x20, 0x30, 0x31, 0x4b, 0x55, 0x37, 0x32, 0x34}},
-        pair<std::string, Binary>{"CE", {0x31}},
-        pair<std::string, Binary>{"SN",
-                                  {0x59, 0x48, 0x33, 0x30, 0x42, 0x47, 0x37,
-                                   0x38, 0x42, 0x30, 0x31, 0x34}},
-        pair<std::string, Binary>{"CC", {0x32, 0x44, 0x33, 0x37}}};
-
-    auto map2 = std::move(get<KeywordVpdMap>(parserObj1.parse()));
-    ASSERT_EQ(1, map1 == map2);
-
-    // BONO TYPE VPD
-    KeywordVpdParser parserObj2(std::move(bonoKwVpdVector));
-    map1 = {
-        pair<std::string, Binary>{"B2",
-                                  {0x50, 0x0, 0xb3, 0xe0, 0x90, 0x0, 0x2, 0x50,
-                                   0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
-        pair<std::string, Binary>{"CC", {0x35, 0x39, 0x33, 0x42}},
-        pair<std::string, Binary>{"CT", {0x50, 0x37, 0x32, 0x0}},
-        pair<std::string, Binary>{"EC", {0x50, 0x34, 0x35, 0x35, 0x33, 0x37}},
-        pair<std::string, Binary>{"FN",
-                                  {0x30, 0x32, 0x44, 0x45, 0x33, 0x36, 0x35}},
-        pair<std::string, Binary>{"PN",
-                                  {0x30, 0x32, 0x44, 0x45, 0x33, 0x36, 0x36}},
-        pair<std::string, Binary>{"RV", {0xa1}},
-        pair<std::string, Binary>{
-            "SI", {0x31, 0x30, 0x31, 0x34, 0x30, 0x36, 0x37, 0x34}},
-        pair<std::string, Binary>{"SN",
-                                  {0x59, 0x4c, 0x35, 0x30, 0x48, 0x54, 0x39,
-                                   0x36, 0x4a, 0x30, 0x30, 0x38}},
-        pair<std::string, Binary>{"Z4", {0x30}},
-        pair<std::string, Binary>{"Z5", {0x30}},
-        pair<std::string, Binary>{
-            "Z6", {0x41, 0x31, 0x38, 0x30, 0x30, 0x32, 0x30, 0x30}}};
-
-    map2 = std::move(get<KeywordVpdMap>(parserObj2.parse()));
-    ASSERT_EQ(1, map1 == map2);
-}
-
-TEST_F(KeywordVpdParserTest, InvKwVpdTag)
-{
-    // Invalid Large resource type Identifier String - corrupted at index[0]
-    keywordVpdVector[0] = 0x83;
-    KeywordVpdParser parserObj1(std::move(keywordVpdVector));
-    EXPECT_THROW(parserObj1.parse(), std::runtime_error);
-
-    // For BONO type VPD
-    bonoKwVpdVector[0] = 0x83;
-    KeywordVpdParser parserObj2(std::move(bonoKwVpdVector));
-    EXPECT_THROW(parserObj2.parse(), std::runtime_error);
-}
-
-TEST_F(KeywordVpdParserTest, InvKwValTag)
-{
-    // Invalid Large resource type Vendor Defined - corrupted at index[19]
-    keywordVpdVector[19] = 0x85;
-    KeywordVpdParser parserObj1(std::move(keywordVpdVector));
-    EXPECT_THROW(parserObj1.parse(), std::runtime_error);
-
-    // For BONO type VPD - corruputed at index[33]
-    bonoKwVpdVector[33] = 0x91;
-    KeywordVpdParser parserObj2(std::move(bonoKwVpdVector));
-    EXPECT_THROW(parserObj2.parse(), std::runtime_error);
-}
-
-TEST_F(KeywordVpdParserTest, InvKwValSize)
-{
-    // Badly formed keyword VPD data - corrupted at index[20]
-    keywordVpdVector[20] = 0x00;
-    KeywordVpdParser parserObj1(std::move(keywordVpdVector));
-    EXPECT_THROW(parserObj1.parse(), std::runtime_error);
-
-    // For BONO type VPD - corruputed at index[34]
-    bonoKwVpdVector[34] = 0x00;
-    KeywordVpdParser parserObj2(std::move(bonoKwVpdVector));
-    EXPECT_THROW(parserObj2.parse(), std::runtime_error);
-}
-
-TEST_F(KeywordVpdParserTest, InvKwValEndTag)
-{
-    // Invalid Small resource type End - corrupted at index[177]
-    keywordVpdVector[177] = 0x80;
-    KeywordVpdParser parserObj1(std::move(keywordVpdVector));
-    EXPECT_THROW(parserObj1.parse(), std::runtime_error);
-}
-
-TEST_F(KeywordVpdParserTest, InvChecksum)
-{
-    // Invalid Check sum - corrupted at index[178]
-    keywordVpdVector[178] = 0xb1;
-    KeywordVpdParser parserObj1(std::move(keywordVpdVector));
-    EXPECT_THROW(parserObj1.parse(), std::runtime_error);
-}
-
-TEST_F(KeywordVpdParserTest, InvKwVpdEndTag)
-{
-    // Invalid Small resource type Last End Of Data - corrupted at index[179]
-    keywordVpdVector[179] = 0x79;
-    KeywordVpdParser parserObj1(std::move(keywordVpdVector));
-    EXPECT_THROW(parserObj1.parse(), std::runtime_error);
-
-    // For BONO type VPD - corrupted at index[147]
-    bonoKwVpdVector[147] = 0x79;
-    KeywordVpdParser parserObj2(std::move(bonoKwVpdVector));
-    EXPECT_THROW(parserObj2.parse(), std::runtime_error);
-}
-
-TEST_F(KeywordVpdParserTest, OutOfBoundGreaterSize)
-{
-    // Iterator Out of Bound - size is larger than the actual size - corrupted
-    // at index[24]
-    keywordVpdVector[24] = 0x32;
-    KeywordVpdParser parserObj1(std::move(keywordVpdVector));
-    EXPECT_THROW(parserObj1.parse(), std::runtime_error);
-
-    // For BONO type VPD - corrupted at index[38]
-    bonoKwVpdVector[38] = 0x4D;
-    KeywordVpdParser parserObj2(std::move(bonoKwVpdVector));
-    EXPECT_THROW(parserObj2.parse(), std::runtime_error);
-}
-
-TEST_F(KeywordVpdParserTest, OutOfBoundLesserSize)
-{
-    // Iterator Out of Bound - size is smaller than the actual size - corrupted
-    // at index[24]
-    keywordVpdVector[24] = 0x03;
-    KeywordVpdParser parserObj1(std::move(keywordVpdVector));
-    EXPECT_THROW(parserObj1.parse(), std::runtime_error);
-
-    // For BONO type VPD - corrupted at index[38]
-    bonoKwVpdVector[38] = 0x04;
-    KeywordVpdParser parserObj2(std::move(bonoKwVpdVector));
-    EXPECT_THROW(parserObj2.parse(), std::runtime_error);
-}
-
-TEST_F(KeywordVpdParserTest, BlankVpd)
-{
-    // Blank Kw Vpd
-    keywordVpdVector.clear();
-    KeywordVpdParser parserObj1(std::move(keywordVpdVector));
-    EXPECT_THROW(parserObj1.parse(), std::runtime_error);
-
-    // Blank Bono Type Vpd
-    bonoKwVpdVector.clear();
-    KeywordVpdParser parserObj2(std::move(bonoKwVpdVector));
-    EXPECT_THROW(parserObj2.parse(), std::runtime_error);
-}
-
-int main(int argc, char** argv)
-{
-    ::testing::InitGoogleTest(&argc, argv);
-
-    return RUN_ALL_TESTS();
-}
diff --git a/test/meson.build b/test/meson.build
index b400d6a..0def0f8 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -1,53 +1,70 @@
-if get_option('oe-sdk').allowed()
-  # Setup OE SYSROOT
-  OECORE_TARGET_SYSROOT = run_command('sh', '-c', 'echo $OECORE_TARGET_SYSROOT').stdout().strip()
-  if OECORE_TARGET_SYSROOT == ''
-      error('Unable to get $OECORE_TARGET_SYSROOT, check your environment.')
+gtest_dep = dependency('gtest', main: true, disabler: true, required: false)
+gmock_dep = dependency('gmock', disabler: true, required: false)
+libgpiodcxx = dependency(
+            'libgpiodcxx',
+            default_options: ['bindings=cxx'],
+        )
+if not gtest_dep.found() or not gmock_dep.found()
+    cmake = import('cmake')
+    gtest_opts = cmake.subproject_options()
+    gtest_opts.set_override_option('warning_level', '1')
+    gtest_opts.set_override_option('werror', 'false')
+    gtest_proj = cmake.subproject('googletest',
+                                  options: gtest_opts,
+                                  required: false)
+    if gtest_proj.found()
+        gtest_dep = declare_dependency(
+            dependencies: [
+                dependency('threads'),
+                gtest_proj.dependency('gtest'),
+                gtest_proj.dependency('gtest_main'),
+            ]
+        )
+        gmock_dep = gtest_proj.dependency('gmock')
+  else
+        assert(
+            not get_option('tests').allowed(),
+            'Googletest is required if tests are enabled'
+        )
   endif
-  message('OE_SYSROOT: ' + OECORE_TARGET_SYSROOT)
-  rpath = ':'.join([OECORE_TARGET_SYSROOT + '/lib', OECORE_TARGET_SYSROOT + '/usr/lib'])
-  ld_so = run_command('sh', '-c', 'find ' + OECORE_TARGET_SYSROOT + '/lib/ld-*.so | sort -r -n | head -n1').stdout().strip()
-  dynamic_linker = ['-Wl,-dynamic-linker,' + ld_so]
-else
-  dynamic_linker = []
 endif
-gmock = dependency('gmock', disabler: true, required: build_tests)
-gtest = dependency('gtest', main: true, disabler: true, required: build_tests)
-libgpiodcxx = dependency('libgpiodcxx', default_options: ['bindings=cxx'])
-dependecy_list = [gtest, gmock, sdbusplus, phosphor_logging, phosphor_dbus_interfaces, libgpiodcxx, nlohmann_json_dep]
 
-configuration_inc = include_directories('..', '../vpd-manager', 'vpd-manager-test', '../vpd-parser')
+parser_build_arguments = []
+if get_option('ipz_ecc_check').enabled()
+    parser_build_arguments += ['-DIPZ_ECC_CHECK']
+endif
 
-vpd_test = ['store/store.cpp',
-            'ipz_parser/parser.cpp',
-            'keyword_vpd_parser_test/kw_vpd_test.cpp',
-            'vpd-manager-test/reader_test.cpp',
-            'vpd-manager-test/editor_test.cpp'
+dependency_list = [gtest_dep, gmock_dep, sdbusplus, libgpiodcxx]
+
+configuration_inc = include_directories('..', '../vpd-manager/include', '../vpdecc')
+
+test_sources = [
+  '../vpd-manager/src/logger.cpp',
+  '../vpd-manager/src/ddimm_parser.cpp',
+  '../vpd-manager/src/parser.cpp',
+  '../vpd-manager/src/parser_factory.cpp',
+  '../vpd-manager/src/isdimm_parser.cpp',
+  '../vpd-manager/src/ipz_parser.cpp',
+  '../vpd-manager/src/keyword_vpd_parser.cpp',
+  '../vpd-manager/src/event_logger.cpp',
+  '../vpdecc/vpdecc.c'
 ]
 
-application_src =['../impl.cpp',
-                   '../vpd-parser/ipz_parser.cpp',
-                   '../ibm_vpd_utils.cpp',
-                   '../common_utility.cpp',
-                   '../vpd-manager/reader_impl.cpp',
-                   '../vpd-parser/keyword_vpd_parser.cpp',
-                   '../vpd-manager/editor_impl.cpp',
-                   '../vpd-parser/parser_factory.cpp',
-                   '../vpd-parser/memory_vpd_parser.cpp',
-                   '../vpd-parser/isdimm_vpd_parser.cpp'
-                  ]
+tests = [
+  'utest_utils.cpp',
+  'utest_keyword_parser.cpp',
+  'utest_ddimm_parser.cpp',
+  'utest_ipz_parser.cpp',
+  'utest_json_utility.cpp'
+]
 
-foreach t : vpd_test
-    test(t, executable(t.underscorify(),
-            [t, application_src],
-    build_rpath: get_option('oe-sdk').allowed() ? rpath : '',
-    link_args: dynamic_linker,
-    cpp_args: ['-DIPZ_PARSER', '-DManagerTest'],
-    c_args: ['-Wno-unused-parameter',
-      '-Wno-unused-variable'],
-    dependencies: dependecy_list,
-    include_directories: configuration_inc,
-    link_with : libvpdecc,
-    ),
-    workdir: meson.current_source_dir())
+foreach test_file : tests
+  test(test_file, executable(test_file.underscorify(),
+                     test_file,
+                     test_sources,
+                     include_directories: configuration_inc,
+                     dependencies: dependency_list,
+                     cpp_args: parser_build_arguments
+                     ),
+       workdir: meson.current_source_dir())
 endforeach
diff --git a/test/parser/parser.cpp b/test/parser/parser.cpp
deleted file mode 100644
index d9f441e..0000000
--- a/test/parser/parser.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <defines.hpp>
-#include <store.hpp>
-#include <vpd-parser/ipz_parser.hpp>
-
-#include <cassert>
-#include <fstream>
-#include <iterator>
-
-void runTests()
-{
-    using namespace openpower::vpd;
-    using namespace openpower::vpd::ipz::parser;
-    // Test parse() API
-    {
-        std::ifstream vpdFile("test.vpd", std::ios::binary);
-        Binary vpd((std::istreambuf_iterator<char>(vpdFile)),
-                   std::istreambuf_iterator<char>());
-
-        IpzVpdParser ipzParser(std::move(vpd));
-        auto vpdStore = std::move(std::get<Store>(ipzParser.parse()));
-
-        assert(("P012" == vpdStore.get<Record::VINI, record::Keyword::CC>()));
-        assert(("2019-01-01-08:30:00" ==
-                vpdStore.get<Record::VINI, record::Keyword::MB>()));
-    }
-}
-
-int main()
-{
-    runTests();
-
-    return 0;
-}
diff --git a/test/parser/test.vpd b/test/parser/test.vpd
deleted file mode 100644
index ba17611..0000000
--- a/test/parser/test.vpd
+++ /dev/null
Binary files differ
diff --git a/test/store/store.cpp b/test/store/store.cpp
deleted file mode 100644
index 4c83ba7..0000000
--- a/test/store/store.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-#include "store.hpp"
-
-#include "defines.hpp"
-
-#include <cassert>
-#include <string>
-#include <unordered_map>
-#include <utility>
-
-void runTests()
-{
-    using namespace openpower::vpd;
-
-    // Test Store::get API
-    {
-        Parsed vpd;
-        using inner = Parsed::mapped_type;
-        inner i;
-
-        i.emplace("SN", "1001");
-        i.emplace("PN", "F001");
-        i.emplace("DR", "Fake FRU");
-        vpd.emplace("VINI", i);
-
-        Store s(std::move(vpd));
-
-        assert(("1001" == s.get<Record::VINI, record::Keyword::SN>()));
-        assert(("F001" == s.get<Record::VINI, record::Keyword::PN>()));
-        assert(("Fake FRU" == s.get<Record::VINI, record::Keyword::DR>()));
-    }
-}
-
-int main()
-{
-    runTests();
-
-    return 0;
-}
diff --git a/test/utest_ddimm_parser.cpp b/test/utest_ddimm_parser.cpp
new file mode 100644
index 0000000..6674c51
--- /dev/null
+++ b/test/utest_ddimm_parser.cpp
@@ -0,0 +1,117 @@
+#include "vpdecc.h"
+
+#include "ddimm_parser.hpp"
+#include "exceptions.hpp"
+#include "parser.hpp"
+#include "types.hpp"
+
+#include <cstdint>
+#include <exception>
+#include <fstream>
+
+#include <gtest/gtest.h>
+
+using namespace vpd;
+
+TEST(DdimmVpdParserTest, GoodTestCase)
+{
+    types::DdimmVpdMap l_ddimmMap{
+        std::pair<std::string, size_t>{"MemorySizeInKB", 0x2000000},
+        std::pair<std::string, types::BinaryVector>{
+            "FN", {0x30, 0x33, 0x48, 0x44, 0x37, 0x30, 0x30}},
+        std::pair<std::string, types::BinaryVector>{
+            "PN", {0x30, 0x33, 0x48, 0x44, 0x37, 0x30, 0x30}},
+        std::pair<std::string, types::BinaryVector>{
+            "SN",
+            {0x59, 0x48, 0x33, 0x33, 0x31, 0x54, 0x33, 0x38, 0x34, 0x30, 0x33,
+             0x46}},
+        std::pair<std::string, types::BinaryVector>{"CC",
+                                                    {0x33, 0x32, 0x41, 0x31}}};
+
+    nlohmann::json l_json;
+    std::string l_vpdFile("vpd_files/ddr5_ddimm.dat");
+    Parser l_vpdParser(l_vpdFile, l_json);
+
+    ASSERT_EQ(1,
+              l_ddimmMap == std::get<types::DdimmVpdMap>(l_vpdParser.parse()));
+}
+
+TEST(DdimmVpdParserTest, DDR4GoodTestCase)
+{
+    types::DdimmVpdMap l_ddimmMap{
+        std::pair<std::string, size_t>{"MemorySizeInKB", 0x4000000},
+        std::pair<std::string, types::BinaryVector>{
+            "FN", {0x37, 0x38, 0x50, 0x36, 0x35, 0x37, 0x35}},
+        std::pair<std::string, types::BinaryVector>{
+            "PN", {0x37, 0x38, 0x50, 0x36, 0x35, 0x37, 0x35}},
+        std::pair<std::string, types::BinaryVector>{
+            "SN",
+            {0x59, 0x48, 0x33, 0x35, 0x31, 0x54, 0x31, 0x35, 0x53, 0x30, 0x44,
+             0x35}},
+        std::pair<std::string, types::BinaryVector>{"CC",
+                                                    {0x33, 0x32, 0x37, 0x42}}};
+
+    nlohmann::json l_json;
+    std::string l_vpdFile("vpd_files/ddr4_ddimm.dat");
+    Parser l_vpdParser(l_vpdFile, l_json);
+
+    ASSERT_EQ(1,
+              l_ddimmMap == std::get<types::DdimmVpdMap>(l_vpdParser.parse()));
+}
+
+TEST(DdimmVpdParserTest, InvalidDdrType)
+{
+    // Invalid DDR type, corrupted at index[2]
+    nlohmann::json l_json;
+    std::string l_vpdFile("vpd_files/ddr5_ddimm_corrupted_index_2.dat");
+    Parser l_vpdParser(l_vpdFile, l_json);
+
+    EXPECT_THROW(l_vpdParser.parse(), std::exception);
+}
+
+TEST(DdimmVpdParserTest, ZeroDdimmSize)
+{
+    // Badly formed DDIMM VPD data - corrupted at index[235],
+    // ddimm size calculated a zero
+    nlohmann::json l_json;
+    std::string l_vpdFile("vpd_files/ddr5_ddimm_corrupted_index_235.dat");
+    Parser l_vpdParser(l_vpdFile, l_json);
+
+    EXPECT_THROW(l_vpdParser.parse(), std::exception);
+}
+
+TEST(DdimmVpdParserTest, InvalidDensityPerDie)
+{
+    // Out of range data, fails to check valid value - corrupted at index[4]
+    nlohmann::json l_json;
+    std::string l_vpdFile("vpd_files/ddr5_ddimm_corrupted_index_4.dat");
+    Parser l_vpdParser(l_vpdFile, l_json);
+
+    EXPECT_THROW(l_vpdParser.parse(), std::exception);
+}
+
+TEST(DdimmVpdParserTest, InvalidVpdType)
+{
+    // Invalid VPD type - corrupted at index[2] & index[3]
+    // Not able to find the VPD type, vpdTypeCheck failed
+    nlohmann::json l_json;
+    std::string l_vpdFile("vpd_files/ddr5_ddimm_corrupted_index_2_3.dat");
+    Parser l_vpdParser(l_vpdFile, l_json);
+
+    EXPECT_THROW(l_vpdParser.parse(), std::exception);
+}
+
+TEST(DdimmVpdParserTest, EmptyInputVector)
+{
+    // Blank VPD
+    types::BinaryVector emptyVector{};
+
+    EXPECT_THROW(DdimmVpdParser(std::move(emptyVector)), DataException);
+}
+
+int main(int i_argc, char** io_argv)
+{
+    ::testing::InitGoogleTest(&i_argc, io_argv);
+
+    return RUN_ALL_TESTS();
+}
diff --git a/test/utest_ipz_parser.cpp b/test/utest_ipz_parser.cpp
new file mode 100644
index 0000000..2f23060
--- /dev/null
+++ b/test/utest_ipz_parser.cpp
@@ -0,0 +1,135 @@
+#include "ipz_parser.hpp"
+#include "parser.hpp"
+
+#include <exception>
+
+#include <gtest/gtest.h>
+
+TEST(IpzVpdParserTest, GoodTestCase)
+{
+    nlohmann::json l_json;
+    std::string l_vpdFile("vpd_files/ipz_system.dat");
+    vpd::Parser l_vpdParser(l_vpdFile, l_json);
+
+    vpd::types::IPZVpdMap l_ipzVpdMap;
+    auto l_parsedMap = l_vpdParser.parse();
+    if (auto l_ipzVpdMapPtr = std::get_if<vpd::types::IPZVpdMap>(&l_parsedMap))
+        l_ipzVpdMap = *l_ipzVpdMapPtr;
+
+    std::string l_record("VINI");
+    std::string l_keyword("DR");
+    std::string l_description;
+
+    // check 'DR' keyword value from 'VINI' record
+    auto l_vpdItr = l_ipzVpdMap.find(l_record);
+    if (l_ipzVpdMap.end() != l_vpdItr)
+    {
+        auto l_kwValItr = (l_vpdItr->second).find(l_keyword);
+        if ((l_vpdItr->second).end() != l_kwValItr)
+        {
+            l_description = l_kwValItr->second;
+        }
+    }
+    EXPECT_EQ(l_description, "SYSTEM BACKPLANE");
+
+    // check 'SN' keyword value from 'VINI' record
+    l_record = "VINI";
+    l_keyword = "SN";
+    l_vpdItr = l_ipzVpdMap.find(l_record);
+    if (l_ipzVpdMap.end() != l_vpdItr)
+    {
+        auto l_kwValItr = (l_vpdItr->second).find(l_keyword);
+        if ((l_vpdItr->second).end() != l_kwValItr)
+        {
+            l_description = l_kwValItr->second;
+        }
+    }
+    EXPECT_EQ(l_description, "Y131UF07300L");
+
+    // check 'DR' keyword value of 'VSYS' record
+    l_record = "VSYS";
+    l_keyword = "DR";
+    l_vpdItr = l_ipzVpdMap.find(l_record);
+    if (l_ipzVpdMap.end() != l_vpdItr)
+    {
+        auto l_kwValItr = (l_vpdItr->second).find(l_keyword);
+        if ((l_vpdItr->second).end() != l_kwValItr)
+        {
+            l_description = l_kwValItr->second;
+        }
+    }
+    ASSERT_EQ(l_description, "SYSTEM");
+}
+
+TEST(IpzVpdParserTest, VpdFileDoesNotExist)
+{
+    // Vpd file does not exist
+    nlohmann::json l_json;
+    std::string l_vpdFile("vpd_files/xyz.dat");
+
+    EXPECT_THROW(vpd::Parser(l_vpdFile, l_json), std::runtime_error);
+}
+
+TEST(IpzVpdParserTest, MissingHeader)
+{
+    // Missing VHDR tag, failed header check - corrupted at index[17]
+    nlohmann::json l_json;
+    std::string l_vpdFile("vpd_files/ipz_system_corrupted_index_17.dat");
+    vpd::Parser l_vpdParser(l_vpdFile, l_json);
+
+    EXPECT_THROW(l_vpdParser.parse(), std::exception);
+}
+
+TEST(IpzVpdParserTest, MissingVtoc)
+{
+    // Missing VTOC tag - corrupted at index[61]
+    nlohmann::json l_json;
+    std::string l_vpdFile("vpd_files/ipz_system_corrupted_index_61.dat");
+    vpd::Parser l_vpdParser(l_vpdFile, l_json);
+
+    EXPECT_THROW(l_vpdParser.parse(), std::exception);
+}
+
+TEST(IpzVpdParserTest, MalformedVpdFile)
+{
+    // Vpd vector size is less than RECORD_MIN(44), fails for checkHeader
+    nlohmann::json l_json;
+    std::string l_vpdFile("vpd_files/ipz_system_min_record.dat");
+    vpd::Parser l_vpdParser(l_vpdFile, l_json);
+
+    EXPECT_THROW(l_vpdParser.parse(), std::exception);
+}
+
+#ifdef IPZ_ECC_CHECK
+TEST(IpzVpdParserTest, InvalidRecordOffset)
+{
+    // VTOC ECC check fail
+    // Invalid VINI Record offset, corrupted at index[74]
+    nlohmann::json l_json;
+    std::string l_vpdFile("vpd_files/ipz_system_corrupted_index_74.dat");
+    vpd::Parser l_vpdParser(l_vpdFile, l_json);
+
+    EXPECT_THROW(l_vpdParser.parse(), std::exception);
+}
+
+TEST(IpzVpdParserTest, InvalidRecordEccOffset)
+{
+    // VTOC ECC check fail
+    // Invalid VINI Record ECC offset, corrupted at index[78] & index[79]
+    nlohmann::json l_json;
+    std::string l_vpdFile("vpd_files/ipz_system_corrupted_index_78_79.dat");
+    vpd::Parser l_vpdParser(l_vpdFile, l_json);
+
+    EXPECT_THROW(l_vpdParser.parse(), std::exception);
+}
+
+TEST(IpzVpdParserTest, TruncatedVpdFile)
+{
+    // Truncated vpd file, VTOC ECC check fail
+    nlohmann::json l_json;
+    std::string l_vpdFile("vpd_files/ipz_system_truncated.dat");
+    vpd::Parser l_vpdParser(l_vpdFile, l_json);
+
+    EXPECT_THROW(l_vpdParser.parse(), std::exception);
+}
+#endif
diff --git a/test/utest_json_utility.cpp b/test/utest_json_utility.cpp
new file mode 100644
index 0000000..4f0b5c5
--- /dev/null
+++ b/test/utest_json_utility.cpp
@@ -0,0 +1,29 @@
+#include "parser.hpp"
+#include "types.hpp"
+#include "utility/json_utility.hpp"
+
+#include <iostream>
+
+#include <gtest/gtest.h>
+
+using namespace vpd;
+
+TEST(IsFruPowerOffOnlyTest, PositiveTestCase)
+{
+    const std::string l_jsonPath{"/usr/local/share/vpd/50001001.json"};
+    const std::string l_vpdPath{"/sys/bus/spi/drivers/at25/spi12.0/eeprom"};
+    const nlohmann::json l_parsedJson = jsonUtility::getParsedJson(l_jsonPath);
+    const bool l_result =
+        jsonUtility::isFruPowerOffOnly(l_parsedJson, l_vpdPath);
+    EXPECT_TRUE(l_result);
+}
+
+TEST(IsFruPowerOffOnlyTest, NegativeTestCase)
+{
+    const std::string l_jsonPath{"/usr/local/share/vpd/50001001.json"};
+    const std::string l_vpdPath{"/sys/bus/i2c/drivers/at24/4-0050/eeprom"};
+    const nlohmann::json l_parsedJson = jsonUtility::getParsedJson(l_jsonPath);
+    const bool l_result =
+        jsonUtility::isFruPowerOffOnly(l_parsedJson, l_vpdPath);
+    EXPECT_FALSE(l_result);
+}
diff --git a/test/utest_keyword_parser.cpp b/test/utest_keyword_parser.cpp
new file mode 100644
index 0000000..1f72829
--- /dev/null
+++ b/test/utest_keyword_parser.cpp
@@ -0,0 +1,145 @@
+#include "exceptions.hpp"
+#include "keyword_vpd_parser.hpp"
+#include "parser.hpp"
+#include "types.hpp"
+
+#include <cstdint>
+#include <exception>
+#include <fstream>
+
+#include <gtest/gtest.h>
+
+using namespace vpd;
+
+TEST(KeywordVpdParserTest, GoodTestCase)
+{
+    types::KeywordVpdMap l_keywordMap{
+        std::pair<std::string, types::BinaryVector>{"WI", {0x00}},
+        std::pair<std::string, types::BinaryVector>{
+            "FL", {0x50, 0x32, 0x20, 0x20, 0x20}},
+        std::pair<std::string, types::BinaryVector>{
+            "SM",
+            {0x82, 0x50, 0x32, 0x2d, 0x44, 0x34, 0x20, 0x20, 0x20, 0x20, 0x20,
+             0x20, 0x32, 0x53, 0x53, 0x43, 0x81, 0x50, 0x32, 0x2d, 0x44, 0x35,
+             0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x32, 0x53, 0x53, 0x43, 0x80,
+             0x50, 0x32, 0x2d, 0x44, 0x37, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+             0x32, 0x53, 0x53, 0x43, 0x83, 0x50, 0x32, 0x2d, 0x44, 0x38, 0x20,
+             0x20, 0x20, 0x20, 0x20, 0x20, 0x32, 0x53, 0x53, 0x43}},
+        std::pair<std::string, types::BinaryVector>{
+            "B2",
+            {0x50, 0x05, 0x07, 0x60, 0x73, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00,
+             0x00, 0x00, 0x00, 0x01, 0x00}},
+        std::pair<std::string, types::BinaryVector>{"MF", {0x00, 0x10}},
+        std::pair<std::string, types::BinaryVector>{"VZ", {0x30, 0x33}},
+        std::pair<std::string, types::BinaryVector>{
+            "PN", {0x30, 0x31, 0x4b, 0x55, 0x37, 0x32, 0x34}},
+        std::pair<std::string, types::BinaryVector>{
+            "FN", {0x20, 0x30, 0x31, 0x4b, 0x55, 0x37, 0x32, 0x34}},
+        std::pair<std::string, types::BinaryVector>{"CE", {0x31}},
+        std::pair<std::string, types::BinaryVector>{
+            "SN",
+            {0x59, 0x48, 0x33, 0x30, 0x42, 0x47, 0x37, 0x38, 0x42, 0x30, 0x31,
+             0x34}},
+        std::pair<std::string, types::BinaryVector>{"CC",
+                                                    {0x32, 0x44, 0x33, 0x37}}};
+
+    nlohmann::json l_json;
+    std::string l_vpdFile("vpd_files/keyword.dat");
+    Parser l_vpdParser(l_vpdFile, l_json);
+
+    ASSERT_EQ(1, std::get<types::KeywordVpdMap>(l_vpdParser.parse()) ==
+                     l_keywordMap);
+}
+
+TEST(KeywordVpdParserTest, InvalidVpd)
+{
+    // Invalid large resource type identifier string - corrupted at index[0]
+    nlohmann::json l_json;
+    std::string l_vpdFile("vpd_files/keyword_corrupted_index_0.dat");
+    Parser l_vpdParser(l_vpdFile, l_json);
+
+    EXPECT_THROW(l_vpdParser.parse(), DataException);
+}
+
+TEST(KeywordVpdParserTest, InvalidStartTag)
+{
+    // Invalid large resource type vendor defined - corrupted at index[19]
+    nlohmann::json l_json;
+    std::string l_vpdFile("vpd_files/keyword_corrupted_index_19.dat");
+    Parser l_vpdParser(l_vpdFile, l_json);
+
+    EXPECT_THROW(l_vpdParser.parse(), DataException);
+}
+
+TEST(KeywordVpdParserTest, InvalidSize)
+{
+    // Badly formed keyword VPD data - corrupted at index[20]
+    nlohmann::json l_json;
+    std::string l_vpdFile("vpd_files/keyword_corrupted_index_20.dat");
+    Parser l_vpdParser(l_vpdFile, l_json);
+
+    EXPECT_THROW(l_vpdParser.parse(), DataException);
+}
+
+TEST(KeywordVpdParserTest, InvalidEndTag)
+{
+    // Invalid small resource type end - corrupted at index[177]
+    nlohmann::json l_json;
+    std::string l_vpdFile("vpd_files/keyword_corrupted_index_177.dat");
+    Parser l_vpdParser(l_vpdFile, l_json);
+
+    EXPECT_THROW(l_vpdParser.parse(), DataException);
+}
+
+TEST(KeywordVpdParserTest, InvalidChecksum)
+{
+    // Invalid check sum - corrupted at index[178]
+    nlohmann::json l_json;
+    std::string l_vpdFile("vpd_files/keyword_corrupted_index_178.dat");
+    Parser l_vpdParser(l_vpdFile, l_json);
+
+    EXPECT_THROW(l_vpdParser.parse(), DataException);
+}
+
+TEST(KeywordVpdParserTest, InvalidLastEndTag)
+{
+    // Invalid small resource type last end of data - corrupted at index[179]
+    nlohmann::json l_json;
+    std::string l_vpdFile("vpd_files/keyword_corrupted_index_179.dat");
+    Parser l_vpdParser(l_vpdFile, l_json);
+
+    EXPECT_THROW(l_vpdParser.parse(), DataException);
+}
+
+TEST(KeywordVpdParserTest, OutOfBoundGreaterSize)
+{
+    // Iterator out of bound - size is larger than the actual size - corrupted
+    // at index[24]
+    nlohmann::json l_json;
+    std::string l_vpdFile(
+        "vpd_files/keyword_corrupted_index_24_large_size.dat");
+    Parser l_vpdParser(l_vpdFile, l_json);
+
+    EXPECT_THROW(l_vpdParser.parse(), DataException);
+}
+
+TEST(KeywordVpdParserTest, OutOfBoundLesserSize)
+{
+    // Iterator out of bound - size is smaller than the actual size - corrupted
+    // at index[24]
+    nlohmann::json l_json;
+    std::string l_vpdFile(
+        "vpd_files/keyword_corrupted_index_24_small_size.dat");
+    Parser l_vpdParser(l_vpdFile, l_json);
+
+    EXPECT_THROW(l_vpdParser.parse(), DataException);
+}
+
+TEST(KeywordVpdParserTest, EmptyInput)
+{
+    // Blank keyword VPD
+    types::BinaryVector emptyVector{};
+    KeywordVpdParser l_keywordParser(std::move(emptyVector));
+
+    EXPECT_THROW(l_keywordParser.parse(), std::exception);
+}
diff --git a/test/utest_utils.cpp b/test/utest_utils.cpp
new file mode 100644
index 0000000..6511dcb
--- /dev/null
+++ b/test/utest_utils.cpp
@@ -0,0 +1,23 @@
+#include <utility/vpd_specific_utility.hpp>
+
+#include <cassert>
+#include <string>
+
+#include <gtest/gtest.h>
+
+using namespace vpd;
+
+TEST(UtilsTest, TestValidValue)
+{
+    std::string key = "VINI";
+    std::string encoding = "MAC";
+    std::string expected = "56:49:4e:49";
+    EXPECT_EQ(expected, vpdSpecificUtility::encodeKeyword(key, encoding));
+}
+
+int main(int argc, char** argv)
+{
+    ::testing::InitGoogleTest(&argc, argv);
+
+    return RUN_ALL_TESTS();
+}
diff --git a/test/vpd-manager-test/editor_test.cpp b/test/vpd-manager-test/editor_test.cpp
deleted file mode 100644
index 53f32ad..0000000
--- a/test/vpd-manager-test/editor_test.cpp
+++ /dev/null
@@ -1,180 +0,0 @@
-#include "editor_impl.hpp"
-#include "ipz_parser.hpp"
-
-#include <nlohmann/json.hpp>
-
-#include <algorithm>
-#include <vector>
-
-#include <gtest/gtest.h>
-
-using namespace openpower::vpd;
-using namespace openpower::vpd::manager::editor;
-using namespace openpower::vpd::inventory;
-using namespace openpower::vpd::constants;
-
-class vpdManagerEditorTest : public ::testing::Test
-{
-  protected:
-    Binary vpd;
-
-    nlohmann::json jsonFile;
-
-    // map to hold the mapping of location code and inventory path
-    inventory::LocationCodeMap fruLocationCode;
-
-  public:
-    // constructor
-    vpdManagerEditorTest()
-    {
-        processJson();
-    }
-
-    void processJson();
-    void readFile(std::string pathToFile);
-};
-
-void vpdManagerEditorTest::readFile(std::string pathToFile)
-{
-    // read the json file and parse it
-    std::ifstream vpdFile(pathToFile, std::ios::binary);
-
-    if (!vpdFile)
-    {
-        throw std::runtime_error("json file not found");
-    }
-
-    vpd.assign((std::istreambuf_iterator<char>(vpdFile)),
-               std::istreambuf_iterator<char>());
-}
-
-void vpdManagerEditorTest::processJson()
-{
-    // read the json file and parse it
-    std::ifstream json("vpd-manager-test/vpd_editor_test.json",
-                       std::ios::binary);
-
-    if (!json)
-    {
-        throw std::runtime_error("json file not found");
-    }
-
-    jsonFile = nlohmann::json::parse(json);
-
-    const nlohmann::json& groupFRUS =
-        jsonFile["frus"].get_ref<const nlohmann::json::object_t&>();
-    for (const auto& itemFRUS : groupFRUS.items())
-    {
-        const std::vector<nlohmann::json>& groupEEPROM =
-            itemFRUS.value().get_ref<const nlohmann::json::array_t&>();
-        for (const auto& itemEEPROM : groupEEPROM)
-        {
-            fruLocationCode.emplace(
-                itemEEPROM["extraInterfaces"][IBM_LOCATION_CODE_INF]
-                          ["LocationCode"]
-                              .get_ref<const nlohmann::json::string_t&>(),
-                itemEEPROM["inventoryPath"]
-                    .get_ref<const nlohmann::json::string_t&>());
-        }
-    }
-}
-
-TEST_F(vpdManagerEditorTest, InvalidFile)
-{
-    Binary dataToUodate{'M', 'O', 'D', 'I', 'F', 'Y',
-                        'D', 'A', 'T', 'A', 'O', 'K'};
-
-    Binary emptyVpdFile;
-    try
-    {
-        // Invalid kwd name
-        EditorImpl edit("VINI", "SN", std::move(emptyVpdFile));
-        edit.updateKeyword(dataToUodate, 0, true);
-    }
-    catch (const std::exception& e)
-    {
-        EXPECT_EQ(std::string(e.what()), std::string("Invalid File"));
-    }
-}
-
-TEST_F(vpdManagerEditorTest, InvalidHeader)
-{
-    Binary dataToUodate{'M', 'O', 'D', 'I', 'F', 'Y',
-                        'D', 'A', 'T', 'A', 'O', 'K'};
-
-    readFile("vpd-manager-test/invalidHeaderFile.dat");
-    try
-    {
-        // the path is dummy
-        EditorImpl edit("VINI", "SN", std::move(vpd));
-        edit.updateKeyword(dataToUodate, 0, true);
-    }
-    catch (const std::exception& e)
-    {
-        EXPECT_EQ(std::string(e.what()), std::string("VHDR record not found"));
-    }
-}
-
-TEST_F(vpdManagerEditorTest, InvalidRecordName)
-{
-    Binary dataToUodate{'M', 'O', 'D', 'I', 'F', 'Y',
-                        'D', 'A', 'T', 'A', 'O', 'K'};
-
-    readFile("vpd-manager-test/vpdFile.dat");
-
-    try
-    {
-        // Invalid record name "VIN", path is dummy
-        EditorImpl edit("VIN", "SN", std::move(vpd));
-        edit.updateKeyword(dataToUodate, 0, true);
-    }
-    catch (const std::exception& e)
-    {
-        EXPECT_EQ(std::string(e.what()), std::string("Record not found"));
-    }
-}
-
-TEST_F(vpdManagerEditorTest, InvalidKWdName)
-{
-    Binary dataToUodate{'M', 'O', 'D', 'I', 'F', 'Y',
-                        'D', 'A', 'T', 'A', 'O', 'K'};
-
-    readFile("vpd-manager-test/vpdFile.dat");
-
-    try
-    {
-        // All valid data
-        EditorImpl edit("VINI", "Sn", std::move(vpd));
-        edit.updateKeyword(dataToUodate, 0, true);
-    }
-    catch (const std::runtime_error& e)
-    {
-        EXPECT_EQ(std::string(e.what()), std::string("Keyword not found"));
-    }
-}
-
-TEST_F(vpdManagerEditorTest, UpdateKwd_Success)
-{
-    Binary dataToUodate{'M', 'O', 'D', 'I', 'F', 'Y',
-                        'D', 'A', 'T', 'A', 'O', 'K'};
-
-    readFile("vpd-manager-test/vpdFile.dat");
-
-    try
-    {
-        // All valid data, but can't update with dummy ECC code
-        EditorImpl edit("VINI", "SN", std::move(vpd));
-        edit.updateKeyword(dataToUodate, 0, true);
-    }
-    catch (const std::runtime_error& e)
-    {
-        EXPECT_EQ(std::string(e.what()), std::string("Ecc update failed"));
-    }
-}
-
-int main(int argc, char** argv)
-{
-    ::testing::InitGoogleTest(&argc, argv);
-
-    return RUN_ALL_TESTS();
-}
diff --git a/test/vpd-manager-test/invalidHeaderFile.dat b/test/vpd-manager-test/invalidHeaderFile.dat
deleted file mode 100644
index 7f8de18..0000000
--- a/test/vpd-manager-test/invalidHeaderFile.dat
+++ /dev/null
Binary files differ
diff --git a/test/vpd-manager-test/reader_test.cpp b/test/vpd-manager-test/reader_test.cpp
deleted file mode 100644
index dd576e6..0000000
--- a/test/vpd-manager-test/reader_test.cpp
+++ /dev/null
@@ -1,256 +0,0 @@
-#include "reader_test.hpp"
-
-#include "const.hpp"
-#include "reader_impl.hpp"
-#include "types.hpp"
-
-#include <nlohmann/json.hpp>
-
-#include <fstream>
-#include <tuple>
-
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-
-using namespace openpower::vpd::manager::reader;
-using namespace openpower::vpd::inventory;
-using namespace openpower::vpd::constants;
-
-class vpdManagerReaderTest : public ::testing::Test
-{
-  protected:
-    nlohmann::json jsonFile;
-
-    // map to hold the mapping of location code and inventory path
-    LocationCodeMap fruLocationCode;
-
-    // dummy value of node number
-    const uint8_t nodeNumber = 1;
-
-  public:
-    // constructor
-    vpdManagerReaderTest()
-    {
-        processJson();
-    }
-
-    void processJson();
-};
-
-using namespace openpower::vpd;
-
-void vpdManagerReaderTest::processJson()
-{
-    // read the json file and parse it
-    std::ifstream json("vpd-manager-test/vpd_reader_test.json",
-                       std::ios::binary);
-
-    if (!json)
-    {
-        throw std::runtime_error("json file not found");
-    }
-
-    jsonFile = nlohmann::json::parse(json);
-
-    if (jsonFile.find("frus") == jsonFile.end())
-    {
-        throw std::runtime_error("frus group not found in json");
-    }
-
-    const nlohmann::json& groupFRUS =
-        jsonFile["frus"].get_ref<const nlohmann::json::object_t&>();
-    for (const auto& itemFRUS : groupFRUS.items())
-    {
-        const std::vector<nlohmann::json>& groupEEPROM =
-            itemFRUS.value().get_ref<const nlohmann::json::array_t&>();
-        for (const auto& itemEEPROM : groupEEPROM)
-        {
-            fruLocationCode.emplace(
-                itemEEPROM["extraInterfaces"][IBM_LOCATION_CODE_INF]
-                          ["LocationCode"]
-                              .get_ref<const nlohmann::json::string_t&>(),
-                itemEEPROM["inventoryPath"]
-                    .get_ref<const nlohmann::json::string_t&>());
-        }
-    }
-}
-
-TEST_F(vpdManagerReaderTest, isValidLocationCode_invalid)
-{
-    // No MTS or FCS in the collapsed location code
-    std::string unexpandedLocationCode_Invalid = "Uabc-X0";
-
-    MockUtilCalls uCalls;
-    ReaderImpl read(uCalls);
-    EXPECT_ANY_THROW({
-        read.getExpandedLocationCode(unexpandedLocationCode_Invalid, nodeNumber,
-                                     fruLocationCode);
-    });
-
-    // not starting with U
-    unexpandedLocationCode_Invalid = "Mabc-X0";
-    EXPECT_ANY_THROW({
-        read.getExpandedLocationCode(unexpandedLocationCode_Invalid, nodeNumber,
-                                     fruLocationCode);
-    });
-}
-
-TEST_F(vpdManagerReaderTest, getExpandedLocationCode_Invalid)
-{
-    std::string unexpandedLocationCode_Invalid = "Uabc-X0";
-
-    MockUtilCalls uCalls;
-    ReaderImpl read(uCalls);
-    EXPECT_ANY_THROW({
-        read.getExpandedLocationCode(unexpandedLocationCode_Invalid, nodeNumber,
-                                     fruLocationCode);
-    });
-}
-
-TEST_F(vpdManagerReaderTest, getExpandedLocationCode_Valid)
-{
-    // mock the call to read bus property
-    MockUtilCalls uCalls;
-    EXPECT_CALL(uCalls, readBusProperty(SYSTEM_OBJECT, IBM_LOCATION_CODE_INF,
-                                        "LocationCode"))
-        .Times(1)
-        .WillOnce(testing::Return("U78DA.ND1.1234567-P0"));
-
-    std::string unexpandedLocationCode = "Ufcs-P0";
-    ReaderImpl read(uCalls);
-    std::string res = read.getExpandedLocationCode(unexpandedLocationCode,
-                                                   nodeNumber, fruLocationCode);
-
-    EXPECT_EQ(res, "U78DA.ND1.1234567-P0");
-}
-
-TEST_F(vpdManagerReaderTest, getFrusAtLocation_Invalid)
-{
-    // invalid location code
-    std::string unexpandedLocationCode = "Uabc-X0";
-
-    MockUtilCalls uCalls;
-    ReaderImpl read(uCalls);
-    EXPECT_ANY_THROW({
-        read.getFrusAtLocation(unexpandedLocationCode, nodeNumber,
-                               fruLocationCode);
-    });
-
-    // map to hold the mapping of location code and inventory path, empty in
-    // this case
-    LocationCodeMap mapLocationCode;
-    unexpandedLocationCode = "Ufcs-P0";
-    EXPECT_ANY_THROW({
-        read.getFrusAtLocation(unexpandedLocationCode, nodeNumber,
-                               mapLocationCode);
-    });
-}
-
-TEST_F(vpdManagerReaderTest, getFrusAtLocation_Valid)
-{
-    std::string LocationCode = "Ufcs-P0";
-
-    MockUtilCalls uCalls;
-    ReaderImpl read(uCalls);
-    ListOfPaths paths =
-        read.getFrusAtLocation(LocationCode, nodeNumber, fruLocationCode);
-    std::string expected =
-        "/xyz/openbmc_project/inventory/system/chassis/motherboard";
-    EXPECT_EQ(paths.at(0), expected);
-}
-
-TEST_F(vpdManagerReaderTest, getFRUsByExpandedLocationCode_invalid)
-{
-    // not starting from U
-    std::string locationCode = "9105.22A.SIMP10R";
-
-    MockUtilCalls uCalls;
-    ReaderImpl read(uCalls);
-    ListOfPaths paths;
-    EXPECT_ANY_THROW({
-        paths =
-            read.getFRUsByExpandedLocationCode(locationCode, fruLocationCode);
-    });
-
-    // unused variable warning
-    (void)paths;
-
-    // length is les sthan 17 for expanded location code
-    locationCode = "U9105.22A.SIMP10";
-    EXPECT_ANY_THROW({
-        paths =
-            read.getFRUsByExpandedLocationCode(locationCode, fruLocationCode);
-    });
-
-    // Invalid location code. No "."
-    locationCode = "U78DAND11234567-P0";
-
-    // Mock readBUsproperty call
-    EXPECT_CALL(uCalls,
-                readBusProperty(SYSTEM_OBJECT, "com.ibm.ipzvpd.VCEN", "FC"))
-        .Times(1)
-        .WillOnce(
-            testing::Return("78DAPQRS")); // return a dummy value for FC keyword
-
-    // unused variable warning
-    (void)paths;
-    EXPECT_ANY_THROW({
-        paths =
-            read.getFRUsByExpandedLocationCode(locationCode, fruLocationCode);
-    });
-}
-
-TEST_F(vpdManagerReaderTest, getFRUsByExpandedLocationCode_Valid_FC)
-{
-    // valid location code with FC kwd.
-    std::string validLocationCode = "U78DA.ND1.1234567-P0";
-
-    // Mock readBUsproperty call
-    MockUtilCalls uCalls;
-    EXPECT_CALL(uCalls,
-                readBusProperty(SYSTEM_OBJECT, "com.ibm.ipzvpd.VCEN", "FC"))
-        .WillRepeatedly(
-            testing::Return("78DAPQRS")); // return a dummy value for FC keyword
-
-    ReaderImpl read(uCalls);
-    ListOfPaths paths =
-        read.getFRUsByExpandedLocationCode(validLocationCode, fruLocationCode);
-
-    std::string expected =
-        "/xyz/openbmc_project/inventory/system/chassis/motherboard";
-    EXPECT_EQ(paths.at(0), expected);
-}
-
-TEST_F(vpdManagerReaderTest, getFRUsByExpandedLocationCode_Valid_TM)
-{
-    // valid location code with TM kwd.
-    std::string validLocationCode = "U9105.22A.SIMP10R";
-
-    // Mock readBUsproperty call
-    MockUtilCalls uCalls;
-    EXPECT_CALL(uCalls,
-                readBusProperty(SYSTEM_OBJECT, "com.ibm.ipzvpd.VCEN", "FC"))
-        .Times(1)
-        .WillOnce(
-            testing::Return("78DAPQRS")); // return a dummy value for FC keyword
-
-    EXPECT_CALL(uCalls,
-                readBusProperty(SYSTEM_OBJECT, "com.ibm.ipzvpd.VSYS", "TM"))
-        .Times(1)
-        .WillOnce(
-            testing::Return("9105PQRS")); // return a dummy value for TM keyword
-
-    ReaderImpl read(uCalls);
-    ListOfPaths paths =
-        read.getFRUsByExpandedLocationCode(validLocationCode, fruLocationCode);
-
-    std::string expected = "/xyz/openbmc_project/inventory/system";
-    EXPECT_EQ(paths.at(0), expected);
-}
-
-int main(int argc, char** argv)
-{
-    ::testing::InitGoogleTest(&argc, argv);
-
-    return RUN_ALL_TESTS();
-}
diff --git a/test/vpd-manager-test/reader_test.hpp b/test/vpd-manager-test/reader_test.hpp
deleted file mode 100644
index b108df2..0000000
--- a/test/vpd-manager-test/reader_test.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-#pragma once
-
-#include "utilInterface.hpp"
-
-#include <gmock/gmock.h>
-
-using namespace openpower::vpd::utils::interface;
-
-class MockUtilCalls : public UtilityInterface
-{
-  public:
-    MOCK_METHOD(std::string, readBusProperty,
-                (const std::string& obj, const std::string& inf,
-                 const std::string& prop),
-                (override));
-};
diff --git a/test/vpd-manager-test/vpdFile.dat b/test/vpd-manager-test/vpdFile.dat
deleted file mode 100644
index 147f63b..0000000
--- a/test/vpd-manager-test/vpdFile.dat
+++ /dev/null
Binary files differ
diff --git a/test/vpd-manager-test/vpd_editor_test.json b/test/vpd-manager-test/vpd_editor_test.json
deleted file mode 100644
index 516dcad..0000000
--- a/test/vpd-manager-test/vpd_editor_test.json
+++ /dev/null
@@ -1,172 +0,0 @@
-{
-    "commonInterfaces": {
-        "xyz.openbmc_project.Inventory.Decorator.Asset": {
-            "PartNumber": {
-                "recordName": "VINI",
-                "keywordName": "PN"
-            },
-            "SerialNumber": {
-                "recordName": "VINI",
-                "keywordName": "SN"
-            },
-            "BuildDate": {
-                "recordName": "VR10",
-                "keywordName": "DC",
-                "encoding": "DATE"
-            }
-        },
-        "xyz.openbmc_project.Inventory.Item": {
-            "PrettyName": {
-                "recordName": "VINI",
-                "keywordName": "DR"
-            },
-            "Present": true
-        }
-    },
-    "frus": {
-        "/sys/bus/i2c/drivers/at24/8-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard",
-                "isSystemVpd": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Board.Motherboard": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system",
-                "inherit": false,
-                "isSystemVpd": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.System": null,
-                    "xyz.openbmc_project.Inventory.Decorator.Asset": {
-                        "SerialNumber": {
-                            "recordName": "VSYS",
-                            "keywordName": "SE"
-                        },
-                        "Model": {
-                            "recordName": "VSYS",
-                            "keywordName": "TM"
-                        }
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Umts"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis",
-                "inherit": false,
-                "isSystemVpd": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Chassis": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs"
-                    }
-                }
-            }
-        ],
-        "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a480.i2c-bus/i2c-8/8-0051/8-00510/nvmem": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Bmc": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/ethernet0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Ethernet": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item.NetworkInterface": {
-                        "MACAddress": {
-                            "recordName": "VCFG",
-                            "keywordName": "Z0",
-                            "encoding": "MAC"
-                        }
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/ethernet1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Ethernet": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item.NetworkInterface": {
-                        "MACAddress": {
-                            "recordName": "VCFG",
-                            "keywordName": "Z1",
-                            "encoding": "MAC"
-                        }
-                    }
-                }
-            }
-        ],
-        "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a080.i2c-bus/i2c-0/0-0051/0-00510/nvmem": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/tpm_wilson",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Tpm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C22"
-                    }
-                }
-            }
-        ],
-        "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a400.i2c-bus/i2c-7/7-0050/7-00500/nvmem": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/base_op_panel_blyth",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Panel": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-D0"
-                    }
-                }
-            }
-        ],
-        "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a400.i2c-bus/i2c-7/7-0051/7-00510/nvmem": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/lcd_op_panel_hill",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Panel": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-D1"
-                    }
-                }
-            }
-        ],
-        "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a500.i2c-bus/i2c-9/9-0050/9-00500/nvmem": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vdd_vrm0",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C14"
-                    }
-                }
-            }
-        ],
-        "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a580.i2c-bus/i2c-10/10-0050/10-00500/nvmem": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vdd_vrm1",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C23"
-                    }
-                }
-            }
-        ]
-    }
-}
diff --git a/test/vpd-manager-test/vpd_reader_test.json b/test/vpd-manager-test/vpd_reader_test.json
deleted file mode 100644
index 516dcad..0000000
--- a/test/vpd-manager-test/vpd_reader_test.json
+++ /dev/null
@@ -1,172 +0,0 @@
-{
-    "commonInterfaces": {
-        "xyz.openbmc_project.Inventory.Decorator.Asset": {
-            "PartNumber": {
-                "recordName": "VINI",
-                "keywordName": "PN"
-            },
-            "SerialNumber": {
-                "recordName": "VINI",
-                "keywordName": "SN"
-            },
-            "BuildDate": {
-                "recordName": "VR10",
-                "keywordName": "DC",
-                "encoding": "DATE"
-            }
-        },
-        "xyz.openbmc_project.Inventory.Item": {
-            "PrettyName": {
-                "recordName": "VINI",
-                "keywordName": "DR"
-            },
-            "Present": true
-        }
-    },
-    "frus": {
-        "/sys/bus/i2c/drivers/at24/8-0050/eeprom": [
-            {
-                "inventoryPath": "/system/chassis/motherboard",
-                "isSystemVpd": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Board.Motherboard": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system",
-                "inherit": false,
-                "isSystemVpd": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.System": null,
-                    "xyz.openbmc_project.Inventory.Decorator.Asset": {
-                        "SerialNumber": {
-                            "recordName": "VSYS",
-                            "keywordName": "SE"
-                        },
-                        "Model": {
-                            "recordName": "VSYS",
-                            "keywordName": "TM"
-                        }
-                    },
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Umts"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis",
-                "inherit": false,
-                "isSystemVpd": true,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Chassis": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs"
-                    }
-                }
-            }
-        ],
-        "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a480.i2c-bus/i2c-8/8-0051/8-00510/nvmem": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Bmc": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5"
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/ethernet0",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Ethernet": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5-T0"
-                    },
-                    "xyz.openbmc_project.Inventory.Item.NetworkInterface": {
-                        "MACAddress": {
-                            "recordName": "VCFG",
-                            "keywordName": "Z0",
-                            "encoding": "MAC"
-                        }
-                    }
-                }
-            },
-            {
-                "inventoryPath": "/system/chassis/motherboard/ebmc_card_bmc/ethernet1",
-                "inherit": false,
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Ethernet": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C5-T1"
-                    },
-                    "xyz.openbmc_project.Inventory.Item.NetworkInterface": {
-                        "MACAddress": {
-                            "recordName": "VCFG",
-                            "keywordName": "Z1",
-                            "encoding": "MAC"
-                        }
-                    }
-                }
-            }
-        ],
-        "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a080.i2c-bus/i2c-0/0-0051/0-00510/nvmem": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/tpm_wilson",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Tpm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C22"
-                    }
-                }
-            }
-        ],
-        "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a400.i2c-bus/i2c-7/7-0050/7-00500/nvmem": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/base_op_panel_blyth",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Panel": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-D0"
-                    }
-                }
-            }
-        ],
-        "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a400.i2c-bus/i2c-7/7-0051/7-00510/nvmem": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/lcd_op_panel_hill",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Panel": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-D1"
-                    }
-                }
-            }
-        ],
-        "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a500.i2c-bus/i2c-9/9-0050/9-00500/nvmem": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vdd_vrm0",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C14"
-                    }
-                }
-            }
-        ],
-        "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a580.i2c-bus/i2c-10/10-0050/10-00500/nvmem": [
-            {
-                "inventoryPath": "/system/chassis/motherboard/vdd_vrm1",
-                "extraInterfaces": {
-                    "xyz.openbmc_project.Inventory.Item.Vrm": null,
-                    "com.ibm.ipzvpd.Location": {
-                        "LocationCode": "Ufcs-P0-C23"
-                    }
-                }
-            }
-        ]
-    }
-}
diff --git a/test/vpd_files/ddr4_ddimm.dat b/test/vpd_files/ddr4_ddimm.dat
new file mode 100755
index 0000000..3226bb3
--- /dev/null
+++ b/test/vpd_files/ddr4_ddimm.dat
Binary files differ
diff --git a/test/vpd_files/ddr5_ddimm.dat b/test/vpd_files/ddr5_ddimm.dat
new file mode 100644
index 0000000..b7f4107
--- /dev/null
+++ b/test/vpd_files/ddr5_ddimm.dat
Binary files differ
diff --git a/test/vpd_files/ddr5_ddimm_corrupted_index_2.dat b/test/vpd_files/ddr5_ddimm_corrupted_index_2.dat
new file mode 100644
index 0000000..3ddf5fc
--- /dev/null
+++ b/test/vpd_files/ddr5_ddimm_corrupted_index_2.dat
Binary files differ
diff --git a/test/vpd_files/ddr5_ddimm_corrupted_index_235.dat b/test/vpd_files/ddr5_ddimm_corrupted_index_235.dat
new file mode 100644
index 0000000..dcbb477
--- /dev/null
+++ b/test/vpd_files/ddr5_ddimm_corrupted_index_235.dat
Binary files differ
diff --git a/test/vpd_files/ddr5_ddimm_corrupted_index_2_3.dat b/test/vpd_files/ddr5_ddimm_corrupted_index_2_3.dat
new file mode 100644
index 0000000..9adf253
--- /dev/null
+++ b/test/vpd_files/ddr5_ddimm_corrupted_index_2_3.dat
Binary files differ
diff --git a/test/vpd_files/ddr5_ddimm_corrupted_index_4.dat b/test/vpd_files/ddr5_ddimm_corrupted_index_4.dat
new file mode 100644
index 0000000..cdac642
--- /dev/null
+++ b/test/vpd_files/ddr5_ddimm_corrupted_index_4.dat
Binary files differ
diff --git a/test/vpd_files/ipz_system.dat b/test/vpd_files/ipz_system.dat
new file mode 100644
index 0000000..6c11e60
--- /dev/null
+++ b/test/vpd_files/ipz_system.dat
Binary files differ
diff --git a/test/vpd_files/ipz_system_corrupted_index_17.dat b/test/vpd_files/ipz_system_corrupted_index_17.dat
new file mode 100644
index 0000000..db829a9
--- /dev/null
+++ b/test/vpd_files/ipz_system_corrupted_index_17.dat
Binary files differ
diff --git a/test/vpd_files/ipz_system_corrupted_index_61.dat b/test/vpd_files/ipz_system_corrupted_index_61.dat
new file mode 100644
index 0000000..638b8c8
--- /dev/null
+++ b/test/vpd_files/ipz_system_corrupted_index_61.dat
Binary files differ
diff --git a/test/vpd_files/ipz_system_corrupted_index_74.dat b/test/vpd_files/ipz_system_corrupted_index_74.dat
new file mode 100644
index 0000000..e0b3754
--- /dev/null
+++ b/test/vpd_files/ipz_system_corrupted_index_74.dat
Binary files differ
diff --git a/test/vpd_files/ipz_system_corrupted_index_78_79.dat b/test/vpd_files/ipz_system_corrupted_index_78_79.dat
new file mode 100644
index 0000000..eeff8e3
--- /dev/null
+++ b/test/vpd_files/ipz_system_corrupted_index_78_79.dat
Binary files differ
diff --git a/test/vpd_files/ipz_system_min_record.dat b/test/vpd_files/ipz_system_min_record.dat
new file mode 100644
index 0000000..a3bac3c
--- /dev/null
+++ b/test/vpd_files/ipz_system_min_record.dat
Binary files differ
diff --git a/test/vpd_files/ipz_system_truncated.dat b/test/vpd_files/ipz_system_truncated.dat
new file mode 100644
index 0000000..a9777e1
--- /dev/null
+++ b/test/vpd_files/ipz_system_truncated.dat
Binary files differ
diff --git a/test/vpd.dat b/test/vpd_files/keyword.dat
old mode 100755
new mode 100644
similarity index 100%
rename from test/vpd.dat
rename to test/vpd_files/keyword.dat
Binary files differ
diff --git a/test/vpd_files/keyword_corrupted_index_0.dat b/test/vpd_files/keyword_corrupted_index_0.dat
new file mode 100644
index 0000000..cda52ce
--- /dev/null
+++ b/test/vpd_files/keyword_corrupted_index_0.dat
Binary files differ
diff --git a/test/vpd_files/keyword_corrupted_index_177.dat b/test/vpd_files/keyword_corrupted_index_177.dat
new file mode 100644
index 0000000..69810aa
--- /dev/null
+++ b/test/vpd_files/keyword_corrupted_index_177.dat
Binary files differ
diff --git a/test/vpd_files/keyword_corrupted_index_178.dat b/test/vpd_files/keyword_corrupted_index_178.dat
new file mode 100644
index 0000000..40aab82
--- /dev/null
+++ b/test/vpd_files/keyword_corrupted_index_178.dat
Binary files differ
diff --git a/test/vpd_files/keyword_corrupted_index_179.dat b/test/vpd_files/keyword_corrupted_index_179.dat
new file mode 100644
index 0000000..ac2e89d
--- /dev/null
+++ b/test/vpd_files/keyword_corrupted_index_179.dat
Binary files differ
diff --git a/test/vpd_files/keyword_corrupted_index_19.dat b/test/vpd_files/keyword_corrupted_index_19.dat
new file mode 100644
index 0000000..58f146d
--- /dev/null
+++ b/test/vpd_files/keyword_corrupted_index_19.dat
Binary files differ
diff --git a/test/vpd_files/keyword_corrupted_index_20.dat b/test/vpd_files/keyword_corrupted_index_20.dat
new file mode 100644
index 0000000..f18282f
--- /dev/null
+++ b/test/vpd_files/keyword_corrupted_index_20.dat
Binary files differ
diff --git a/test/vpd_files/keyword_corrupted_index_24_large_size.dat b/test/vpd_files/keyword_corrupted_index_24_large_size.dat
new file mode 100644
index 0000000..03122bb
--- /dev/null
+++ b/test/vpd_files/keyword_corrupted_index_24_large_size.dat
Binary files differ
diff --git a/test/vpd_files/keyword_corrupted_index_24_small_size.dat b/test/vpd_files/keyword_corrupted_index_24_small_size.dat
new file mode 100644
index 0000000..1bb1e26
--- /dev/null
+++ b/test/vpd_files/keyword_corrupted_index_24_small_size.dat
Binary files differ
diff --git a/types.hpp b/types.hpp
deleted file mode 100644
index 7917e4f..0000000
--- a/types.hpp
+++ /dev/null
@@ -1,87 +0,0 @@
-#pragma once
-
-#include <sdbusplus/server.hpp>
-
-#include <climits>
-#include <map>
-#include <string>
-#include <unordered_map>
-#include <vector>
-
-namespace openpower
-{
-namespace vpd
-{
-
-/** @brief The OpenPOWER VPD, in binary, is specified as a
- *         sequence of characters */
-static_assert((8 == CHAR_BIT), "A byte is not 8 bits!");
-using Byte = uint8_t;
-using Binary = std::vector<Byte>;
-using BIOSAttrValueType = std::variant<int64_t, std::string>;
-using PendingBIOSAttrItemType =
-    std::pair<std::string, std::tuple<std::string, BIOSAttrValueType>>;
-using PendingBIOSAttrsType = std::vector<PendingBIOSAttrItemType>;
-
-namespace inventory
-{
-
-using Path = std::string;
-using Property = std::string;
-using Value = std::variant<bool, size_t, int64_t, std::string, Binary>;
-using PropertyMap = std::map<Property, Value>;
-using kwdVpdValueTypes = std::variant<size_t, Binary, std::string>;
-
-using Interface = std::string;
-using InterfaceMap = std::map<Interface, PropertyMap>;
-
-using Object = sdbusplus::message::object_path;
-using ObjectMap = std::map<Object, InterfaceMap>;
-
-using VPDfilepath = std::string;
-using FruIsMotherboard = bool;
-using FrusMap =
-    std::multimap<Path, std::tuple<VPDfilepath, VPDfilepath, FruIsMotherboard>>;
-using LocationCode = std::string;
-using LocationCodeMap = std::unordered_multimap<LocationCode, Path>;
-using ListOfPaths = std::vector<sdbusplus::message::object_path>;
-using NodeNumber = uint16_t;
-using KeywordVpdMap = std::unordered_map<std::string, kwdVpdValueTypes>;
-
-using systemType = std::string;
-using deviceTree = std::string;
-using deviceTreeMap = std::unordered_map<systemType, deviceTree>;
-using PelAdditionalData = std::map<std::string, std::string>;
-using Keyword = std::string;
-using KeywordData = std::string;
-using DbusPropertyMap = std::unordered_map<Keyword, KeywordData>;
-using PelAdditionalData = std::map<std::string, std::string>;
-using Service = std::string;
-using MapperResponse =
-    std::map<Path, std::map<Service, std::vector<Interface>>>;
-using MapperGetObjectResponse = std::map<Service, std::vector<Interface>>;
-using RestoredEeproms = std::tuple<Path, std::string, Keyword, Binary>;
-using ReplaceableFrus = std::vector<VPDfilepath>;
-using EssentialFrus = std::vector<Path>;
-using RecordName = std::string;
-using KeywordDefault = Binary;
-using isPELReqOnRestoreFailure = bool;
-using isMFGResetRequired = bool;
-using SystemKeywordInfo =
-    std::tuple<Keyword, KeywordDefault, isPELReqOnRestoreFailure,
-               isMFGResetRequired, RecordName, Keyword>;
-
-/** Map of system backplane records to list of keywords and its related data. {
- * Record : { Keyword, Default value, Is PEL required on restore failure, Is MFG
- * reset required }} **/
-using SystemKeywordsMap =
-    std::unordered_map<RecordName, std::vector<SystemKeywordInfo>>;
-
-using GetAllResultType = std::vector<std::pair<Keyword, Value>>;
-using IntfPropMap = std::map<RecordName, GetAllResultType>;
-using RecKwValMap =
-    std::unordered_map<RecordName, std::unordered_map<Keyword, Binary>>;
-} // namespace inventory
-
-} // namespace vpd
-} // namespace openpower
diff --git a/utilInterface.hpp b/utilInterface.hpp
deleted file mode 100644
index 14c821c..0000000
--- a/utilInterface.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-#pragma once
-#include "ibm_vpd_utils.hpp"
-
-#include <string>
-
-namespace openpower
-{
-namespace vpd
-{
-namespace utils
-{
-namespace interface
-{
-
-class UtilityInterface
-{
-  public:
-    virtual ~UtilityInterface() {}
-
-    virtual std::string readBusProperty(const std::string& obj,
-                                        const std::string& inf,
-                                        const std::string& prop) = 0;
-};
-
-class utility : public UtilityInterface
-{
-  public:
-    virtual ~utility() {}
-
-    std::string readBusProperty(const std::string& obj, const std::string& inf,
-                                const std::string& prop) override
-    {
-        return openpower::vpd::readBusProperty(obj, inf, prop);
-    }
-};
-
-} // namespace interface
-} // namespace utils
-} // namespace vpd
-} // namespace openpower
diff --git a/vpd-manager/bios_handler.cpp b/vpd-manager/bios_handler.cpp
deleted file mode 100644
index 7cc5aac..0000000
--- a/vpd-manager/bios_handler.cpp
+++ /dev/null
@@ -1,691 +0,0 @@
-#include "config.h"
-
-#include "bios_handler.hpp"
-
-#include "const.hpp"
-#include "ibm_vpd_utils.hpp"
-#include "manager.hpp"
-#include "types.hpp"
-
-#include <sdbusplus/bus.hpp>
-
-#include <iostream>
-#include <memory>
-#include <string>
-#include <tuple>
-#include <variant>
-
-using namespace openpower::vpd;
-using namespace openpower::vpd::constants;
-
-namespace openpower
-{
-namespace vpd
-{
-namespace manager
-{
-void BiosHandler::checkAndListenPLDMService()
-{
-    // Setup a match on NameOwnerChanged to determine when PLDM is up. In
-    // the signal handler, call restoreBIOSAttribs
-    static std::shared_ptr<sdbusplus::bus::match_t> nameOwnerMatch =
-        std::make_shared<sdbusplus::bus::match_t>(
-            *conn,
-            sdbusplus::bus::match::rules::nameOwnerChanged(
-                "xyz.openbmc_project.PLDM"),
-            [this](sdbusplus::message_t& msg) {
-                if (msg.is_method_error())
-                {
-                    std::cerr
-                        << "Error in reading name owner signal " << std::endl;
-                    return;
-                }
-                std::string name;
-                std::string newOwner;
-                std::string oldOwner;
-
-                msg.read(name, oldOwner, newOwner);
-                if (newOwner != "" && name == "xyz.openbmc_project.PLDM")
-                {
-                    this->restoreBIOSAttribs();
-                    // We don't need the match anymore
-                    nameOwnerMatch.reset();
-                }
-            });
-    // Check if PLDM is already running, if it is, we can go ahead and attempt
-    // to sync BIOS attributes (since PLDM would have initialized them by the
-    // time it acquires a bus name).
-    bool isPLDMRunning = false;
-    try
-    {
-        auto bus = sdbusplus::bus::new_default();
-        auto method =
-            bus.new_method_call("org.freedesktop.DBus", "/org/freedesktop/DBus",
-                                "org.freedesktop.DBus", "NameHasOwner");
-        method.append("xyz.openbmc_project.PLDM");
-
-        auto result = bus.call(method);
-        result.read(isPLDMRunning);
-    }
-    catch (const sdbusplus::exception::SdBusError& e)
-    {
-        std::cerr << "Failed to check if PLDM is running, assume false"
-                  << std::endl;
-        std::cerr << e.what() << std::endl;
-    }
-
-    std::cout << "Is PLDM running: " << isPLDMRunning << std::endl;
-
-    if (isPLDMRunning)
-    {
-        nameOwnerMatch.reset();
-        restoreBIOSAttribs();
-    }
-}
-
-void BiosHandler::listenBiosAttribs()
-{
-    static std::shared_ptr<sdbusplus::bus::match_t> biosMatcher =
-        std::make_shared<sdbusplus::bus::match_t>(
-            *conn,
-            sdbusplus::bus::match::rules::propertiesChanged(
-                "/xyz/openbmc_project/bios_config/manager",
-                "xyz.openbmc_project.BIOSConfig.Manager"),
-            [this](sdbusplus::message_t& msg) { biosAttribsCallback(msg); });
-}
-
-void BiosHandler::biosAttribsCallback(sdbusplus::message_t& msg)
-{
-    if (msg.is_method_error())
-    {
-        std::cerr << "Error in reading BIOS attribute signal " << std::endl;
-        return;
-    }
-    using BiosProperty = std::tuple<
-        std::string, bool, std::string, std::string, std::string,
-        std::variant<int64_t, std::string>, std::variant<int64_t, std::string>,
-        std::vector<std::tuple<std::string, std::variant<int64_t, std::string>,
-                               std::string>>>;
-
-    using BiosBaseTable =
-        std::variant<std::monostate, std::map<std::string, BiosProperty>>;
-    using BiosBaseTableType = std::map<std::string, BiosBaseTable>;
-
-    std::string object;
-    BiosBaseTableType propMap;
-    msg.read(object, propMap);
-    for (auto prop : propMap)
-    {
-        if (prop.first == "BaseBIOSTable")
-        {
-            if (auto list = std::get_if<std::map<std::string, BiosProperty>>(
-                    &(prop.second)))
-            {
-                for (const auto& item : *list)
-                {
-                    std::string attributeName = std::get<0>(item);
-                    if (attributeName == "hb_memory_mirror_mode")
-                    {
-                        auto attrValue = std::get<5>(std::get<1>(item));
-                        auto val = std::get_if<std::string>(&attrValue);
-                        if (val)
-                        {
-                            saveAMMToVPD(*val);
-                        }
-                    }
-                    else if (attributeName == "hb_field_core_override")
-                    {
-                        auto attrValue = std::get<5>(std::get<1>(item));
-                        auto val = std::get_if<int64_t>(&attrValue);
-                        if (val)
-                        {
-                            saveFCOToVPD(*val);
-                        }
-                    }
-                    else if (attributeName == "pvm_keep_and_clear")
-                    {
-                        auto attrValue = std::get<5>(std::get<1>(item));
-                        auto val = std::get_if<std::string>(&attrValue);
-                        if (val)
-                        {
-                            saveKeepAndClearToVPD(*val);
-                        }
-                    }
-                    else if (attributeName == "pvm_create_default_lpar")
-                    {
-                        auto attrValue = std::get<5>(std::get<1>(item));
-                        auto val = std::get_if<std::string>(&attrValue);
-                        if (val)
-                        {
-                            saveCreateDefaultLparToVPD(*val);
-                        }
-                    }
-                    else if (attributeName == "pvm_clear_nvram")
-                    {
-                        auto attrValue = std::get<5>(std::get<1>(item));
-                        auto val = std::get_if<std::string>(&attrValue);
-                        if (val)
-                        {
-                            saveClearNVRAMToVPD(*val);
-                        }
-                    }
-                }
-            }
-            else
-            {
-                inventory::PelAdditionalData additionalData;
-                additionalData.emplace(
-                    "DESCRIPTION",
-                    "Invalid type received for BIOS base table property");
-
-                createPEL(additionalData, PelSeverity::ERROR,
-                          errIntfForVPDDefault, nullptr);
-                std::cerr
-                    << "Invalid type received for BIOS base table property"
-                    << std::endl;
-            }
-        }
-    }
-}
-
-void BiosHandler::saveFCOToVPD(int64_t fcoVal)
-{
-    if (fcoVal == -1)
-    {
-        std::cerr << "Invalid FCO value from BIOS: " << fcoVal << std::endl;
-        return;
-    }
-
-    Binary vpdVal = {0, 0, 0, static_cast<uint8_t>(fcoVal)};
-    auto valInVPD = readBusProperty(SYSTEM_OBJECT, "com.ibm.ipzvpd.VSYS", "RG");
-
-    if (valInVPD.size() != 4)
-    {
-        std::cerr << "Read bad size for VSYS/RG: " << valInVPD.size()
-                  << std::endl;
-        return;
-    }
-
-    if (std::memcmp(vpdVal.data(), valInVPD.data(), 4) != 0)
-    {
-        std::cout << "Writing FCO to VPD: " << fcoVal << std::endl;
-        manager.writeKeyword(sdbusplus::message::object_path{SYSTEM_OBJECT},
-                             "VSYS", "RG", vpdVal);
-    }
-}
-
-void BiosHandler::saveAMMToVPD(const std::string& mirrorMode)
-{
-    Binary vpdVal;
-    auto valInVPD = readBusProperty(SYSTEM_OBJECT, "com.ibm.ipzvpd.UTIL", "D0");
-
-    if (valInVPD.size() != 1)
-    {
-        std::cerr << "Read bad size for UTIL/D0: " << valInVPD.size()
-                  << std::endl;
-        return;
-    }
-
-    if (mirrorMode != "Enabled" && mirrorMode != "Disabled")
-    {
-        std::cerr << "Bad value for Mirror mode BIOS attribute: " << mirrorMode
-                  << std::endl;
-        return;
-    }
-
-    // Write to VPD only if the value is not already what we want to write.
-    if (mirrorMode == "Enabled" && valInVPD.at(0) != 2)
-    {
-        vpdVal.emplace_back(2);
-    }
-    else if (mirrorMode == "Disabled" && valInVPD.at(0) != 1)
-    {
-        vpdVal.emplace_back(1);
-    }
-
-    if (!vpdVal.empty())
-    {
-        std::cout << "Writing AMM to VPD: " << static_cast<int>(vpdVal.at(0))
-                  << std::endl;
-        manager.writeKeyword(sdbusplus::message::object_path{SYSTEM_OBJECT},
-                             "UTIL", "D0", vpdVal);
-    }
-}
-
-void BiosHandler::saveKeepAndClearToVPD(const std::string& keepAndClear)
-{
-    Binary vpdVal;
-    auto valInVPD = readBusProperty(SYSTEM_OBJECT, "com.ibm.ipzvpd.UTIL", "D1");
-
-    if (valInVPD.size() != 1)
-    {
-        std::cerr << "Read bad size for UTIL/D1: " << valInVPD.size()
-                  << std::endl;
-        return;
-    }
-
-    if (keepAndClear != "Enabled" && keepAndClear != "Disabled")
-    {
-        std::cerr << "Bad value for keep and clear BIOS attribute: "
-                  << keepAndClear << std::endl;
-        return;
-    }
-
-    // Write to VPD only if the value is not already what we want to write.
-    if (keepAndClear == "Enabled" && ((valInVPD.at(0) & 0x01) != 0x01))
-    {
-        vpdVal.emplace_back(valInVPD.at(0) | 0x01);
-    }
-    else if (keepAndClear == "Disabled" && ((valInVPD.at(0) & 0x01) != 0))
-    {
-        vpdVal.emplace_back(valInVPD.at(0) & ~(0x01));
-    }
-
-    if (!vpdVal.empty())
-    {
-        std::cout << "Writing Keep and Clear to VPD: "
-                  << static_cast<int>(vpdVal.at(0)) << std::endl;
-        manager.writeKeyword(sdbusplus::message::object_path{SYSTEM_OBJECT},
-                             "UTIL", "D1", vpdVal);
-    }
-}
-
-void BiosHandler::saveCreateDefaultLparToVPD(
-    const std::string& createDefaultLpar)
-{
-    Binary vpdVal;
-    auto valInVPD = readBusProperty(SYSTEM_OBJECT, "com.ibm.ipzvpd.UTIL", "D1");
-
-    if (valInVPD.size() != 1)
-    {
-        std::cerr << "Read bad size for UTIL/D1: " << valInVPD.size()
-                  << std::endl;
-        return;
-    }
-
-    if (createDefaultLpar != "Enabled" && createDefaultLpar != "Disabled")
-    {
-        std::cerr << "Bad value for create default lpar BIOS attribute: "
-                  << createDefaultLpar << std::endl;
-        return;
-    }
-
-    // Write to VPD only if the value is not already what we want to write.
-    if (createDefaultLpar == "Enabled" && ((valInVPD.at(0) & 0x02) != 0x02))
-    {
-        vpdVal.emplace_back(valInVPD.at(0) | 0x02);
-    }
-    else if (createDefaultLpar == "Disabled" && ((valInVPD.at(0) & 0x02) != 0))
-    {
-        vpdVal.emplace_back(valInVPD.at(0) & ~(0x02));
-    }
-
-    if (!vpdVal.empty())
-    {
-        std::cout << "Writing create default lpar to VPD: "
-                  << static_cast<int>(vpdVal.at(0)) << std::endl;
-        manager.writeKeyword(sdbusplus::message::object_path{SYSTEM_OBJECT},
-                             "UTIL", "D1", vpdVal);
-    }
-}
-
-void BiosHandler::saveClearNVRAMToVPD(const std::string& clearNVRAM)
-{
-    Binary vpdVal;
-    auto valInVPD = readBusProperty(SYSTEM_OBJECT, "com.ibm.ipzvpd.UTIL", "D1");
-
-    if (valInVPD.size() != 1)
-    {
-        std::cerr << "Read bad size for UTIL/D1: " << valInVPD.size()
-                  << std::endl;
-        return;
-    }
-
-    if (clearNVRAM != "Enabled" && clearNVRAM != "Disabled")
-    {
-        std::cerr << "Bad value for clear NVRAM BIOS attribute: " << clearNVRAM
-                  << std::endl;
-        return;
-    }
-
-    // Write to VPD only if the value is not already what we want to write.
-    if (clearNVRAM == "Enabled" && ((valInVPD.at(0) & 0x04) != 0x04))
-    {
-        vpdVal.emplace_back(valInVPD.at(0) | 0x04);
-    }
-    else if (clearNVRAM == "Disabled" && ((valInVPD.at(0) & 0x04) != 0))
-    {
-        vpdVal.emplace_back(valInVPD.at(0) & ~(0x04));
-    }
-
-    if (!vpdVal.empty())
-    {
-        std::cout << "Writing clear NVRAM to VPD: "
-                  << static_cast<int>(vpdVal.at(0)) << std::endl;
-        manager.writeKeyword(sdbusplus::message::object_path{SYSTEM_OBJECT},
-                             "UTIL", "D1", vpdVal);
-    }
-}
-
-int64_t BiosHandler::readBIOSFCO()
-{
-    int64_t fcoVal = -1;
-    auto val = readBIOSAttribute("hb_field_core_override");
-
-    if (auto pVal = std::get_if<int64_t>(&val))
-    {
-        fcoVal = *pVal;
-    }
-    else
-    {
-        std::cerr << "FCO is not an int" << std::endl;
-    }
-    return fcoVal;
-}
-
-std::string BiosHandler::readBIOSAMM()
-{
-    std::string ammVal{};
-    auto val = readBIOSAttribute("hb_memory_mirror_mode");
-
-    if (auto pVal = std::get_if<std::string>(&val))
-    {
-        ammVal = *pVal;
-    }
-    else
-    {
-        std::cerr << "AMM is not a string" << std::endl;
-    }
-    return ammVal;
-}
-
-std::string BiosHandler::readBIOSKeepAndClear()
-{
-    std::string keepAndClear{};
-    auto val = readBIOSAttribute("pvm_keep_and_clear");
-
-    if (auto pVal = std::get_if<std::string>(&val))
-    {
-        keepAndClear = *pVal;
-    }
-    else
-    {
-        std::cerr << "Keep and clear is not a string" << std::endl;
-    }
-    return keepAndClear;
-}
-
-std::string BiosHandler::readBIOSCreateDefaultLpar()
-{
-    std::string createDefaultLpar{};
-    auto val = readBIOSAttribute("pvm_create_default_lpar");
-
-    if (auto pVal = std::get_if<std::string>(&val))
-    {
-        createDefaultLpar = *pVal;
-    }
-    else
-    {
-        std::cerr << "Create default LPAR is not a string" << std::endl;
-    }
-    return createDefaultLpar;
-}
-
-std::string BiosHandler::readBIOSClearNVRAM()
-{
-    std::string clearNVRAM{};
-    auto val = readBIOSAttribute("pvm_clear_nvram");
-
-    if (auto pVal = std::get_if<std::string>(&val))
-    {
-        clearNVRAM = *pVal;
-    }
-    else
-    {
-        std::cerr << "Clear NVRAM is not a string" << std::endl;
-    }
-    return clearNVRAM;
-}
-
-void BiosHandler::saveFCOToBIOS(const std::string& fcoVal, int64_t fcoInBIOS)
-{
-    if (fcoVal.size() != 4)
-    {
-        std::cerr << "Bad size for FCO in VPD: " << fcoVal.size() << std::endl;
-        return;
-    }
-
-    // Need to write?
-    if (fcoInBIOS == static_cast<int64_t>(fcoVal.at(3)))
-    {
-        std::cout << "Skip FCO BIOS write, value is already: " << fcoInBIOS
-                  << std::endl;
-        return;
-    }
-
-    PendingBIOSAttrsType biosAttrs;
-    biosAttrs.push_back(
-        std::make_pair("hb_field_core_override",
-                       std::make_tuple("xyz.openbmc_project.BIOSConfig.Manager."
-                                       "AttributeType.Integer",
-                                       fcoVal.at(3))));
-
-    std::cout << "Set hb_field_core_override to: "
-              << static_cast<int>(fcoVal.at(3)) << std::endl;
-
-    setBusProperty<PendingBIOSAttrsType>(
-        "xyz.openbmc_project.BIOSConfigManager",
-        "/xyz/openbmc_project/bios_config/manager",
-        "xyz.openbmc_project.BIOSConfig.Manager", "PendingAttributes",
-        biosAttrs);
-}
-
-void BiosHandler::saveAMMToBIOS(const std::string& ammVal,
-                                const std::string& ammInBIOS)
-{
-    if (ammVal.size() != 1)
-    {
-        std::cerr << "Bad size for AMM in VPD: " << ammVal.size() << std::endl;
-        return;
-    }
-
-    // Make sure data in VPD is sane
-    if (ammVal.at(0) != 1 && ammVal.at(0) != 2)
-    {
-        std::cerr << "Bad value for AMM read from VPD: "
-                  << static_cast<int>(ammVal.at(0)) << std::endl;
-        return;
-    }
-
-    // Need to write?
-    std::string toWrite = (ammVal.at(0) == 2) ? "Enabled" : "Disabled";
-    if (ammInBIOS == toWrite)
-    {
-        std::cout << "Skip AMM BIOS write, value is already: " << toWrite
-                  << std::endl;
-        return;
-    }
-
-    PendingBIOSAttrsType biosAttrs;
-    biosAttrs.push_back(
-        std::make_pair("hb_memory_mirror_mode",
-                       std::make_tuple("xyz.openbmc_project.BIOSConfig.Manager."
-                                       "AttributeType.Enumeration",
-                                       toWrite)));
-
-    std::cout << "Set hb_memory_mirror_mode to: " << toWrite << std::endl;
-
-    setBusProperty<PendingBIOSAttrsType>(
-        "xyz.openbmc_project.BIOSConfigManager",
-        "/xyz/openbmc_project/bios_config/manager",
-        "xyz.openbmc_project.BIOSConfig.Manager", "PendingAttributes",
-        biosAttrs);
-}
-
-void BiosHandler::saveKeepAndClearToBIOS(const std::string& keepAndClear,
-                                         const std::string& keepAndClearInBIOS)
-{
-    if (keepAndClear.size() != 1)
-    {
-        std::cerr << "Bad size for Keep and Clear in VPD: "
-                  << keepAndClear.size() << std::endl;
-        return;
-    }
-
-    // Need to write?
-    std::string toWrite = (keepAndClear.at(0) & 0x01) ? "Enabled" : "Disabled";
-    if (keepAndClearInBIOS == toWrite)
-    {
-        std::cout << "Skip Keep and Clear BIOS write, value is already: "
-                  << toWrite << std::endl;
-        return;
-    }
-
-    PendingBIOSAttrsType biosAttrs;
-    biosAttrs.push_back(
-        std::make_pair("pvm_keep_and_clear",
-                       std::make_tuple("xyz.openbmc_project.BIOSConfig.Manager."
-                                       "AttributeType.Enumeration",
-                                       toWrite)));
-
-    std::cout << "Set pvm_keep_and_clear to: " << toWrite << std::endl;
-
-    setBusProperty<PendingBIOSAttrsType>(
-        "xyz.openbmc_project.BIOSConfigManager",
-        "/xyz/openbmc_project/bios_config/manager",
-        "xyz.openbmc_project.BIOSConfig.Manager", "PendingAttributes",
-        biosAttrs);
-}
-
-void BiosHandler::saveCreateDefaultLparToBIOS(
-    const std::string& createDefaultLpar,
-    const std::string& createDefaultLparInBIOS)
-{
-    if (createDefaultLpar.size() != 1)
-    {
-        std::cerr << "Bad size for Create default LPAR in VPD: "
-                  << createDefaultLpar.size() << std::endl;
-        return;
-    }
-
-    // Need to write?
-    std::string toWrite =
-        (createDefaultLpar.at(0) & 0x02) ? "Enabled" : "Disabled";
-    if (createDefaultLparInBIOS == toWrite)
-    {
-        std::cout << "Skip Create default LPAR BIOS write, value is already: "
-                  << toWrite << std::endl;
-        return;
-    }
-
-    PendingBIOSAttrsType biosAttrs;
-    biosAttrs.push_back(
-        std::make_pair("pvm_create_default_lpar",
-                       std::make_tuple("xyz.openbmc_project.BIOSConfig.Manager."
-                                       "AttributeType.Enumeration",
-                                       toWrite)));
-
-    std::cout << "Set pvm_create_default_lpar to: " << toWrite << std::endl;
-
-    setBusProperty<PendingBIOSAttrsType>(
-        "xyz.openbmc_project.BIOSConfigManager",
-        "/xyz/openbmc_project/bios_config/manager",
-        "xyz.openbmc_project.BIOSConfig.Manager", "PendingAttributes",
-        biosAttrs);
-}
-
-void BiosHandler::saveClearNVRAMToBIOS(const std::string& clearNVRAM,
-                                       const std::string& clearNVRAMInBIOS)
-{
-    if (clearNVRAM.size() != 1)
-    {
-        std::cerr << "Bad size for Clear NVRAM in VPD: " << clearNVRAM.size()
-                  << std::endl;
-        return;
-    }
-
-    // Need to write?
-    std::string toWrite = (clearNVRAM.at(0) & 0x04) ? "Enabled" : "Disabled";
-    if (clearNVRAMInBIOS == toWrite)
-    {
-        std::cout << "Skip Clear NVRAM BIOS write, value is already: "
-                  << toWrite << std::endl;
-        return;
-    }
-
-    PendingBIOSAttrsType biosAttrs;
-    biosAttrs.push_back(
-        std::make_pair("pvm_clear_nvram",
-                       std::make_tuple("xyz.openbmc_project.BIOSConfig.Manager."
-                                       "AttributeType.Enumeration",
-                                       toWrite)));
-
-    std::cout << "Set pvm_clear_nvram to: " << toWrite << std::endl;
-
-    setBusProperty<PendingBIOSAttrsType>(
-        "xyz.openbmc_project.BIOSConfigManager",
-        "/xyz/openbmc_project/bios_config/manager",
-        "xyz.openbmc_project.BIOSConfig.Manager", "PendingAttributes",
-        biosAttrs);
-}
-
-void BiosHandler::restoreBIOSAttribs()
-{
-    // TODO: We could make this slightly more scalable by defining a table of
-    // attributes and their corresponding VPD keywords. However, that needs much
-    // more thought.
-    std::cout << "Attempting BIOS attribute reset" << std::endl;
-    // Check if the VPD contains valid data for FCO, AMM, Keep and Clear,
-    // Create default LPAR and Clear NVRAM *and* that it differs from the data
-    // already in the attributes. If so, set the BIOS attributes as per the
-    // value in the VPD. If the VPD contains default data, then initialize the
-    // VPD keywords with data taken from the BIOS.
-    auto fcoInVPD = readBusProperty(SYSTEM_OBJECT, "com.ibm.ipzvpd.VSYS", "RG");
-    auto ammInVPD = readBusProperty(SYSTEM_OBJECT, "com.ibm.ipzvpd.UTIL", "D0");
-    auto keepAndClearInVPD =
-        readBusProperty(SYSTEM_OBJECT, "com.ibm.ipzvpd.UTIL", "D1");
-    auto fcoInBIOS = readBIOSFCO();
-    auto ammInBIOS = readBIOSAMM();
-    auto keepAndClearInBIOS = readBIOSKeepAndClear();
-    auto createDefaultLparInBIOS = readBIOSCreateDefaultLpar();
-    auto clearNVRAMInBIOS = readBIOSClearNVRAM();
-
-    if (fcoInVPD == "    ")
-    {
-        saveFCOToVPD(fcoInBIOS);
-    }
-    else
-    {
-        saveFCOToBIOS(fcoInVPD, fcoInBIOS);
-    }
-
-    if (ammInVPD.at(0) == 0)
-    {
-        saveAMMToVPD(ammInBIOS);
-    }
-    else
-    {
-        saveAMMToBIOS(ammInVPD, ammInBIOS);
-    }
-
-    // No uninitialized handling needed for keep and clear, create default
-    // lpar and clear nvram attributes. Their defaults in VPD are 0's which is
-    // what we want.
-    saveKeepAndClearToBIOS(keepAndClearInVPD, keepAndClearInBIOS);
-    // Have to read D1 again because two attributes are stored in the same
-    // keyword.
-    auto createDefaultLparInVPD =
-        readBusProperty(SYSTEM_OBJECT, "com.ibm.ipzvpd.UTIL", "D1");
-    saveCreateDefaultLparToBIOS(createDefaultLparInVPD,
-                                createDefaultLparInBIOS);
-
-    auto clearNVRAMInVPD =
-        readBusProperty(SYSTEM_OBJECT, "com.ibm.ipzvpd.UTIL", "D1");
-    saveClearNVRAMToBIOS(clearNVRAMInVPD, clearNVRAMInBIOS);
-
-    // Start listener now that we have done the restore
-    listenBiosAttribs();
-}
-} // namespace manager
-} // namespace vpd
-} // namespace openpower
diff --git a/vpd-manager/bios_handler.hpp b/vpd-manager/bios_handler.hpp
deleted file mode 100644
index adee3c7..0000000
--- a/vpd-manager/bios_handler.hpp
+++ /dev/null
@@ -1,254 +0,0 @@
-#pragma once
-
-#include "types.hpp"
-
-#include <stdint.h>
-
-#include <sdbusplus/asio/connection.hpp>
-
-#include <string>
-
-namespace openpower
-{
-namespace vpd
-{
-namespace manager
-{
-
-class Manager;
-/**
- * @brief A class that handles changes to BIOS attributes backed by VPD.
- *
- * This class has APIs that handle updates to BIOS attributes that need to
- * be backed up to VPD. It mainly does the following:
- * 1) Checks if the VPD keywords that BIOS attributes are backed to are
- * uninitialized. If so, it initializes them.
- * 2) Listens for changes to BIOS attributes and synchronizes them to the
- * appropriate VPD keyword.
- *
- * Since on a factory reset like scenario, the BIOS attributes are initialized
- * by PLDM, this code waits until PLDM has grabbed a bus name before attempting
- * any syncs.
- */
-class BiosHandler
-{
-  public:
-    // Some default and deleted constructors and assignments.
-    BiosHandler() = delete;
-    BiosHandler(const BiosHandler&) = delete;
-    BiosHandler& operator=(const BiosHandler&) = delete;
-    BiosHandler(Manager&&) = delete;
-    BiosHandler& operator=(BiosHandler&&) = delete;
-    ~BiosHandler() = default;
-
-    BiosHandler(std::shared_ptr<sdbusplus::asio::connection>& conn,
-                Manager& manager) : conn(conn), manager(manager)
-    {
-        checkAndListenPLDMService();
-    }
-
-  private:
-    /**
-     * @brief Check if PLDM service is running and run BIOS sync
-     *
-     * This API checks if the PLDM service is running and if yes it will start
-     * an immediate sync of BIOS attributes. If the service is not running, it
-     * registers a listener to be notified when the service starts so that a
-     * restore can be performed.
-     */
-    void checkAndListenPLDMService();
-
-    /**
-     * @brief Register listener for changes to BIOS Attributes.
-     *
-     * The VPD manager needs to listen to changes to certain BIOS attributes
-     * that are backed by VPD. When the attributes we are interested in
-     * change, the VPD manager will make sure that we write them back to the
-     * VPD keywords that back them up.
-     */
-    void listenBiosAttribs();
-
-    /**
-     * @brief Callback for BIOS Attribute changes
-     *
-     * Checks if the BIOS attribute(s) changed are those backed up by VPD. If
-     * yes, it will update the VPD with the new attribute value.
-     * @param[in] msg - The callback message.
-     */
-    void biosAttribsCallback(sdbusplus::message_t& msg);
-
-    /**
-     * @brief Persistently saves the Memory mirror mode
-     *
-     * Memory mirror mode setting is saved to the UTIL/D0 keyword in the
-     * motherboard VPD. If the mirror mode in BIOS is "Disabled", set D0 to 1,
-     * if "Enabled" set D0 to 2
-     *
-     * @param[in] mirrorMode - The mirror mode BIOS attribute.
-     */
-    void saveAMMToVPD(const std::string& mirrorMode);
-
-    /**
-     * @brief Persistently saves the Field Core Override setting
-     *
-     * Saves the field core override value (FCO) into the VSYS/RG keyword in
-     * the motherboard VPD.
-     *
-     * @param[in] fcoVal - The FCO value as an integer.
-     */
-    void saveFCOToVPD(int64_t fcoVal);
-
-    /**
-     * @brief Persistently saves the Keep and Clear setting
-     *
-     * Keep and clear setting is saved to the UTIL/D1 keyword's 0th bit in the
-     * motherboard VPD. If the keep and clear in BIOS is "Disabled", set D1:0 to
-     * 0, if "Enabled" set D1:0 to 1
-     *
-     * @param[in] keepAndClear - The keep and clear BIOS attribute.
-     */
-    void saveKeepAndClearToVPD(const std::string& keepAndClear);
-
-    /**
-     * @brief Persistently saves the Create default LPAR setting
-     *
-     * Create default LPAR setting is saved to the UTIL/D1 keyword's 1st bit in
-     * the motherboard VPD. If the create default LPAR in BIOS is "Disabled",
-     * set D1:1 to 0, if "Enabled" set D1:1 to 1
-     *
-     * @param[in] createDefaultLpar - The mirror mode BIOS attribute.
-     */
-    void saveCreateDefaultLparToVPD(const std::string& createDefaultLpar);
-
-    /**
-     * @brief Persistently saves the Clear NVRAM setting
-     *
-     * Create default LPAR setting is saved to the UTIL/D1 keyword's 2nd bit in
-     * the motherboard VPD. If the clear NVRAM in BIOS is "Disabled",
-     * set D1:2 to 0, if "Enabled" set D1:2 to 1
-     *
-     * @param[in] createDefaultLpar - The mirror mode BIOS attribute.
-     */
-    void saveClearNVRAMToVPD(const std::string& clearNVRAM);
-
-    /**
-     * @brief Writes Memory mirror mode to BIOS
-     *
-     * Writes to the hb_memory_mirror_mode BIOS attribute, if the value is
-     * not already the same as we are trying to write.
-     *
-     * @param[in] ammVal - The mirror mode as read from VPD.
-     * @param[in] ammInBIOS - The mirror mode in the BIOS table.
-     */
-    void saveAMMToBIOS(const std::string& ammVal, const std::string& ammInBIOS);
-
-    /**
-     * @brief Writes Field Core Override to BIOS
-     *
-     * Writes to the hb_field_core_override BIOS attribute, if the value is not
-     * already the same as we are trying to write.
-     *
-     * @param[in] fcoVal - The FCO value as read from VPD.
-     * @param[in] fcoInBIOS - The FCO value already in the BIOS table.
-     */
-    void saveFCOToBIOS(const std::string& fcoVal, int64_t fcoInBIOS);
-
-    /**
-     * @brief Writes Keep and clear setting to BIOS
-     *
-     * Writes to the pvm_keep_and_clear BIOS attribute, if the value is
-     * not already the same as we are trying to write.
-     *
-     * @param[in] keepAndClear - The keep and clear as read from VPD.
-     * @param[in] keepAndClearInBIOS - The keep and clear in the BIOS table.
-     */
-    void saveKeepAndClearToBIOS(const std::string& keepAndClear,
-                                const std::string& keepAndClearInBIOS);
-
-    /**
-     * @brief Writes Create default LPAR setting to BIOS
-     *
-     * Writes to the pvm_create_default_lpar BIOS attribute, if the value is
-     * not already the same as we are trying to write.
-     *
-     * @param[in] createDefaultLpar - The create default LPAR as read from VPD.
-     * @param[in] createDefaultLparInBIOS - The create default LPAR in the BIOS
-     * table.
-     */
-    void
-        saveCreateDefaultLparToBIOS(const std::string& createDefaultLpar,
-                                    const std::string& createDefaultLparInBIOS);
-
-    /**
-     * @brief Writes Clear NVRAM setting to BIOS
-     *
-     * Writes to the pvm_clear_nvram BIOS attribute, if the value is
-     * not already the same as we are trying to write.
-     *
-     * @param[in] clearNVRAM - The clear NVRAM as read from VPD.
-     * @param[in] clearNVRAMInBIOS - The clear NVRAM in the BIOS table.
-     */
-    void saveClearNVRAMToBIOS(const std::string& clearNVRAM,
-                              const std::string& clearNVRAMInBIOS);
-
-    /**
-     * @brief Reads the hb_memory_mirror_mode attribute
-     *
-     * @return std::string - The AMM BIOS attribute. Empty string on failure.
-     */
-    std::string readBIOSAMM();
-
-    /**
-     * @brief Reads the hb_field_core_override attribute
-     *
-     * @return int64_t - The FCO BIOS attribute.  -1 on failure.
-     */
-    int64_t readBIOSFCO();
-
-    /**
-     * @brief Reads the pvm_keep_and_clear attribute
-     *
-     * @return std::string - The Keep and clear BIOS attribute. Empty string on
-     * failure.
-     */
-    std::string readBIOSKeepAndClear();
-
-    /**
-     * @brief Reads the pvm_create_default_lpar attribute
-     *
-     * @return std::string - The Create default LPAR BIOS attribute. Empty
-     * string on failure.
-     */
-    std::string readBIOSCreateDefaultLpar();
-
-    /**
-     * @brief Reads the pvm_clear_nvram attribute
-     *
-     * @return std::string - The Clear NVRAM BIOS attribute. Empty
-     * string on failure.
-     */
-    std::string readBIOSClearNVRAM();
-
-    /**
-     * @brief Restore BIOS attributes
-     *
-     * This function checks if we are coming out of a factory reset. If yes,
-     * it checks the VPD cache for valid backed up copy of the applicable
-     * BIOS attributes. If valid values are found in the VPD, it will apply
-     * those to the BIOS attributes.
-     */
-    void restoreBIOSAttribs();
-
-    /**
-     * @brief Reference to the connection.
-     */
-    std::shared_ptr<sdbusplus::asio::connection>& conn;
-
-    /**
-     * @brief Reference to the manager.
-     */
-    Manager& manager;
-}; // class BiosHandler
-} // namespace manager
-} // namespace vpd
-} // namespace openpower
diff --git a/vpd-manager/editor_impl.cpp b/vpd-manager/editor_impl.cpp
deleted file mode 100644
index c24cc0f..0000000
--- a/vpd-manager/editor_impl.cpp
+++ /dev/null
@@ -1,732 +0,0 @@
-#include "config.h"
-
-#include "editor_impl.hpp"
-
-#include "vpdecc/vpdecc.h"
-
-#include "common_utility.hpp"
-#include "ibm_vpd_utils.hpp"
-#include "ipz_parser.hpp"
-#include "parser_factory.hpp"
-#include "vpd_exceptions.hpp"
-
-#include <phosphor-logging/elog-errors.hpp>
-#include <xyz/openbmc_project/Common/error.hpp>
-
-using namespace openpower::vpd::parser::interface;
-using namespace openpower::vpd::constants;
-using namespace openpower::vpd::parser::factory;
-using namespace openpower::vpd::ipz::parser;
-
-namespace openpower
-{
-namespace vpd
-{
-namespace manager
-{
-namespace editor
-{
-
-void EditorImpl::checkPTForRecord(Binary::const_iterator& iterator,
-                                  Byte ptLength)
-{
-    // auto iterator = ptRecord.cbegin();
-    auto end = std::next(iterator, ptLength + 1);
-
-    // Look at each entry in the PT keyword for the record name
-    while (iterator < end)
-    {
-        auto stop = std::next(iterator, lengths::RECORD_NAME);
-        std::string record(iterator, stop);
-
-        if (record == thisRecord.recName)
-        {
-            // Skip record name and record type
-            std::advance(iterator, lengths::RECORD_NAME + sizeof(RecordType));
-
-            // Get record offset
-            thisRecord.recOffset = readUInt16LE(iterator);
-
-            // pass the record offset length to read record length
-            std::advance(iterator, lengths::RECORD_OFFSET);
-            thisRecord.recSize = readUInt16LE(iterator);
-
-            std::advance(iterator, lengths::RECORD_LENGTH);
-            thisRecord.recECCoffset = readUInt16LE(iterator);
-
-            ECCLength len;
-            std::advance(iterator, lengths::RECORD_ECC_OFFSET);
-            len = readUInt16LE(iterator);
-            thisRecord.recECCLength = len;
-
-            // once we find the record we don't need to look further
-            return;
-        }
-        else
-        {
-            // Jump the record
-            std::advance(iterator,
-                         lengths::RECORD_NAME + sizeof(RecordType) +
-                             sizeof(RecordOffset) + sizeof(RecordLength) +
-                             sizeof(ECCOffset) + sizeof(ECCLength));
-        }
-    }
-    // imples the record was not found
-    throw std::runtime_error("Record not found");
-}
-
-void EditorImpl::updateData(const Binary& kwdData)
-{
-    std::size_t lengthToUpdate = kwdData.size() <= thisRecord.kwdDataLength
-                                     ? kwdData.size()
-                                     : thisRecord.kwdDataLength;
-
-    auto iteratorToNewdata = kwdData.cbegin();
-    auto end = iteratorToNewdata;
-    std::advance(end, lengthToUpdate);
-
-    // update data in file buffer as it will be needed to update ECC
-    // avoiding extra stream operation here
-    auto iteratorToKWdData = vpdFile.begin();
-    std::advance(iteratorToKWdData, thisRecord.kwDataOffset);
-    std::copy(iteratorToNewdata, end, iteratorToKWdData);
-
-#ifdef ManagerTest
-    auto startItr = vpdFile.begin();
-    std::advance(iteratorToKWdData, thisRecord.kwDataOffset);
-    auto endItr = startItr;
-    std::advance(endItr, thisRecord.kwdDataLength);
-
-    Binary updatedData(startItr, endItr);
-    if (updatedData == kwdData)
-    {
-        throw std::runtime_error("Data updated successfully");
-    }
-#else
-
-    // update data in EEPROM as well. As we will not write complete file back
-    vpdFileStream.seekp(startOffset + thisRecord.kwDataOffset, std::ios::beg);
-
-    iteratorToNewdata = kwdData.cbegin();
-    std::copy(iteratorToNewdata, end,
-              std::ostreambuf_iterator<char>(vpdFileStream));
-
-    // get a hold to new data in case encoding is needed
-    thisRecord.kwdUpdatedData.resize(thisRecord.kwdDataLength);
-    auto itrToKWdData = vpdFile.cbegin();
-    std::advance(itrToKWdData, thisRecord.kwDataOffset);
-    auto kwdDataEnd = itrToKWdData;
-    std::advance(kwdDataEnd, thisRecord.kwdDataLength);
-    std::copy(itrToKWdData, kwdDataEnd, thisRecord.kwdUpdatedData.begin());
-#endif
-}
-
-void EditorImpl::checkRecordForKwd()
-{
-    RecordOffset recOffset = thisRecord.recOffset;
-
-    // Amount to skip for record ID, size, and the RT keyword
-    constexpr auto skipBeg = sizeof(RecordId) + sizeof(RecordSize) +
-                             lengths::KW_NAME + sizeof(KwSize);
-
-    auto iterator = vpdFile.cbegin();
-    std::advance(iterator, recOffset + skipBeg + lengths::RECORD_NAME);
-
-    auto end = iterator;
-    std::advance(end, thisRecord.recSize);
-    std::size_t dataLength = 0;
-
-    while (iterator < end)
-    {
-        // Note keyword name
-        std::string kw(iterator, iterator + lengths::KW_NAME);
-
-        // Check if the Keyword starts with '#'
-        char kwNameStart = *iterator;
-        std::advance(iterator, lengths::KW_NAME);
-
-        // if keyword starts with #
-        if (POUND_KW == kwNameStart)
-        {
-            // Note existing keyword data length
-            dataLength = readUInt16LE(iterator);
-
-            // Jump past 2Byte keyword length + data
-            std::advance(iterator, sizeof(PoundKwSize));
-        }
-        else
-        {
-            // Note existing keyword data length
-            dataLength = *iterator;
-
-            // Jump past keyword length and data
-            std::advance(iterator, sizeof(KwSize));
-        }
-
-        if (thisRecord.recKWd == kw)
-        {
-            thisRecord.kwDataOffset = std::distance(vpdFile.cbegin(), iterator);
-            thisRecord.kwdDataLength = dataLength;
-            return;
-        }
-
-        // jump the data of current kwd to point to next kwd name
-        std::advance(iterator, dataLength);
-    }
-
-    throw std::runtime_error("Keyword not found");
-}
-
-void EditorImpl::updateRecordECC()
-{
-    auto itrToRecordData = vpdFile.cbegin();
-    std::advance(itrToRecordData, thisRecord.recOffset);
-
-    auto itrToRecordECC = vpdFile.cbegin();
-    std::advance(itrToRecordECC, thisRecord.recECCoffset);
-
-    auto l_status = vpdecc_create_ecc(
-        const_cast<uint8_t*>(&itrToRecordData[0]), thisRecord.recSize,
-        const_cast<uint8_t*>(&itrToRecordECC[0]), &thisRecord.recECCLength);
-    if (l_status != VPD_ECC_OK)
-    {
-        throw std::runtime_error("Ecc update failed");
-    }
-
-    auto end = itrToRecordECC;
-    std::advance(end, thisRecord.recECCLength);
-
-#ifndef ManagerTest
-    vpdFileStream.seekp(startOffset + thisRecord.recECCoffset, std::ios::beg);
-    std::copy(itrToRecordECC, end,
-              std::ostreambuf_iterator<char>(vpdFileStream));
-#endif
-}
-
-auto EditorImpl::getValue(offsets::Offsets offset)
-{
-    auto itr = vpdFile.cbegin();
-    std::advance(itr, offset);
-    LE2ByteData lowByte = *itr;
-    LE2ByteData highByte = *(itr + 1);
-    lowByte |= (highByte << 8);
-
-    return lowByte;
-}
-
-void EditorImpl::checkRecordData()
-{
-    auto itrToRecordData = vpdFile.cbegin();
-    std::advance(itrToRecordData, thisRecord.recOffset);
-
-    auto itrToRecordECC = vpdFile.cbegin();
-    std::advance(itrToRecordECC, thisRecord.recECCoffset);
-
-    checkECC(itrToRecordData, itrToRecordECC, thisRecord.recSize,
-             thisRecord.recECCLength);
-}
-
-void EditorImpl::checkECC(Binary::const_iterator& itrToRecData,
-                          Binary::const_iterator& itrToECCData,
-                          RecordLength recLength, ECCLength eccLength)
-{
-    auto l_status =
-        vpdecc_check_data(const_cast<uint8_t*>(&itrToRecData[0]), recLength,
-                          const_cast<uint8_t*>(&itrToECCData[0]), eccLength);
-
-    if (l_status == VPD_ECC_CORRECTABLE_DATA)
-    {
-        try
-        {
-            if (vpdFileStream.is_open())
-            {
-                vpdFileStream.seekp(startOffset + thisRecord.recOffset,
-                                    std::ios::beg);
-                auto end = itrToRecData;
-                std::advance(end, recLength);
-                std::copy(itrToRecData, end,
-                          std::ostreambuf_iterator<char>(vpdFileStream));
-            }
-            else
-            {
-                throw std::runtime_error("Ecc correction failed");
-            }
-        }
-        catch (const std::fstream::failure& e)
-        {
-            std::cout << "Error while operating on file with exception";
-            throw std::runtime_error("Ecc correction failed");
-        }
-    }
-    else if (l_status != VPD_ECC_OK)
-    {
-        throw std::runtime_error("Ecc check failed");
-    }
-}
-
-void EditorImpl::readVTOC()
-{
-    // read VTOC offset
-    RecordOffset tocOffset = getValue(offsets::VTOC_PTR);
-
-    // read VTOC record length
-    RecordLength tocLength = getValue(offsets::VTOC_REC_LEN);
-
-    // read TOC ecc offset
-    ECCOffset tocECCOffset = getValue(offsets::VTOC_ECC_OFF);
-
-    // read TOC ecc length
-    ECCLength tocECCLength = getValue(offsets::VTOC_ECC_LEN);
-
-    auto itrToRecord = vpdFile.cbegin();
-    std::advance(itrToRecord, tocOffset);
-
-    auto iteratorToECC = vpdFile.cbegin();
-    std::advance(iteratorToECC, tocECCOffset);
-
-    // validate ecc for the record
-    checkECC(itrToRecord, iteratorToECC, tocLength, tocECCLength);
-
-    // to get to the record name.
-    std::advance(itrToRecord, sizeof(RecordId) + sizeof(RecordSize) +
-                                  // Skip past the RT keyword, which contains
-                                  // the record name.
-                                  lengths::KW_NAME + sizeof(KwSize));
-
-    std::string recordName(itrToRecord, itrToRecord + lengths::RECORD_NAME);
-
-    if ("VTOC" != recordName)
-    {
-        throw std::runtime_error("VTOC record not found");
-    }
-
-    // jump to length of PT kwd
-    std::advance(itrToRecord, lengths::RECORD_NAME + lengths::KW_NAME);
-
-    // Note size of PT
-    Byte ptLen = *itrToRecord;
-    std::advance(itrToRecord, 1);
-
-    checkPTForRecord(itrToRecord, ptLen);
-}
-
-template <typename T>
-void EditorImpl::makeDbusCall(
-    const std::string& object, const std::string& interface,
-    const std::string& property, const std::variant<T>& data)
-{
-    auto bus = sdbusplus::bus::new_default();
-    auto properties =
-        bus.new_method_call(INVENTORY_MANAGER_SERVICE, object.c_str(),
-                            "org.freedesktop.DBus.Properties", "Set");
-    properties.append(interface);
-    properties.append(property);
-    properties.append(data);
-
-    auto result = bus.call(properties);
-
-    if (result.is_method_error())
-    {
-        throw std::runtime_error("bus call failed");
-    }
-}
-
-void EditorImpl::processAndUpdateCI(const std::string& objectPath)
-{
-    inventory::ObjectMap objects;
-    for (auto& commonInterface : jsonFile["commonInterfaces"].items())
-    {
-        for (auto& ciPropertyList : commonInterface.value().items())
-        {
-            if (ciPropertyList.value().type() ==
-                nlohmann::json::value_t::object)
-            {
-                if ((ciPropertyList.value().value("recordName", "") ==
-                     thisRecord.recName) &&
-                    (ciPropertyList.value().value("keywordName", "") ==
-                     thisRecord.recKWd))
-                {
-                    inventory::PropertyMap prop;
-                    inventory::InterfaceMap interfaces;
-                    std::string kwdData(thisRecord.kwdUpdatedData.begin(),
-                                        thisRecord.kwdUpdatedData.end());
-
-                    prop.emplace(ciPropertyList.key(), std::move(kwdData));
-                    interfaces.emplace(commonInterface.key(), std::move(prop));
-                    objects.emplace(objectPath, std::move(interfaces));
-                }
-            }
-        }
-    }
-    // Notify PIM
-    common::utility::callPIM(std::move(objects));
-}
-
-void EditorImpl::processAndUpdateEI(const nlohmann::json& Inventory,
-                                    const inventory::Path& objPath)
-{
-    inventory::ObjectMap objects;
-    for (const auto& extraInterface : Inventory["extraInterfaces"].items())
-    {
-        if (extraInterface.value() != NULL)
-        {
-            for (const auto& eiPropertyList : extraInterface.value().items())
-            {
-                if (eiPropertyList.value().type() ==
-                    nlohmann::json::value_t::object)
-                {
-                    if ((eiPropertyList.value().value("recordName", "") ==
-                         thisRecord.recName) &&
-                        ((eiPropertyList.value().value("keywordName", "") ==
-                          thisRecord.recKWd)))
-                    {
-                        inventory::PropertyMap prop;
-                        inventory::InterfaceMap interfaces;
-                        std::string kwdData(thisRecord.kwdUpdatedData.begin(),
-                                            thisRecord.kwdUpdatedData.end());
-                        encodeKeyword(kwdData, eiPropertyList.value().value(
-                                                   "encoding", ""));
-
-                        prop.emplace(eiPropertyList.key(), std::move(kwdData));
-                        interfaces.emplace(extraInterface.key(),
-                                           std::move(prop));
-                        objects.emplace(objPath, std::move(interfaces));
-                    }
-                }
-            }
-        }
-    }
-    // Notify PIM
-    common::utility::callPIM(std::move(objects));
-}
-
-void EditorImpl::updateCache()
-{
-    const std::vector<nlohmann::json>& groupEEPROM =
-        jsonFile["frus"][vpdFilePath].get_ref<const nlohmann::json::array_t&>();
-
-    inventory::ObjectMap objects;
-    // iterate through all the inventories for this file path
-    for (const auto& singleInventory : groupEEPROM)
-    {
-        inventory::PropertyMap prop;
-        inventory::InterfaceMap interfaces;
-        // by default inherit property is true
-        bool isInherit = true;
-
-        if (singleInventory.find("inherit") != singleInventory.end())
-        {
-            isInherit = singleInventory["inherit"].get<bool>();
-        }
-
-        if (isInherit)
-        {
-            prop.emplace(getDbusNameForThisKw(thisRecord.recKWd),
-                         thisRecord.kwdUpdatedData);
-            interfaces.emplace(
-                (IPZ_INTERFACE + (std::string) "." + thisRecord.recName),
-                std::move(prop));
-            objects.emplace(
-                (singleInventory["inventoryPath"].get<std::string>()),
-                std::move(interfaces));
-
-            // process Common interface
-            processAndUpdateCI(singleInventory["inventoryPath"]
-                                   .get_ref<const nlohmann::json::string_t&>());
-        }
-
-        // process extra interfaces
-        processAndUpdateEI(singleInventory,
-                           singleInventory["inventoryPath"]
-                               .get_ref<const nlohmann::json::string_t&>());
-
-        // check if we need to copy some specific records in this case.
-        if (singleInventory.find("copyRecords") != singleInventory.end())
-        {
-            if (find(singleInventory["copyRecords"].begin(),
-                     singleInventory["copyRecords"].end(),
-                     thisRecord.recName) !=
-                singleInventory["copyRecords"].end())
-            {
-                prop.emplace(thisRecord.recKWd, thisRecord.kwdUpdatedData);
-                interfaces.emplace(
-                    (IPZ_INTERFACE + std::string{"."} + thisRecord.recName),
-                    std::move(prop));
-                objects.emplace(
-                    (singleInventory["inventoryPath"].get<std::string>()),
-                    std::move(interfaces));
-            }
-        }
-    }
-    // Notify PIM
-    common::utility::callPIM(std::move(objects));
-}
-
-void EditorImpl::expandLocationCode(const std::string& locationCodeType)
-{
-    std::string propertyFCorTM{};
-    std::string propertySE{};
-
-    if (locationCodeType == "fcs")
-    {
-        propertyFCorTM =
-            readBusProperty(SYSTEM_OBJECT, "com.ibm.ipzvpd.VCEN", "FC");
-        propertySE =
-            readBusProperty(SYSTEM_OBJECT, "com.ibm.ipzvpd.VCEN", "SE");
-    }
-    else if (locationCodeType == "mts")
-    {
-        propertyFCorTM =
-            readBusProperty(SYSTEM_OBJECT, "com.ibm.ipzvpd.VSYS", "TM");
-        propertySE =
-            readBusProperty(SYSTEM_OBJECT, "com.ibm.ipzvpd.VSYS", "SE");
-    }
-
-    const nlohmann::json& groupFRUS =
-        jsonFile["frus"].get_ref<const nlohmann::json::object_t&>();
-    inventory::ObjectMap objects;
-
-    for (const auto& itemFRUS : groupFRUS.items())
-    {
-        const std::vector<nlohmann::json>& groupEEPROM =
-            itemFRUS.value().get_ref<const nlohmann::json::array_t&>();
-        for (const auto& itemEEPROM : groupEEPROM)
-        {
-            inventory::PropertyMap prop;
-            inventory::InterfaceMap interfaces;
-            const auto& objectPath = itemEEPROM["inventoryPath"];
-            sdbusplus::message::object_path object(objectPath);
-
-            // check if the given item implements location code interface
-            if (itemEEPROM["extraInterfaces"].find(IBM_LOCATION_CODE_INF) !=
-                itemEEPROM["extraInterfaces"].end())
-            {
-                const std::string& unexpandedLocationCode =
-                    itemEEPROM["extraInterfaces"][IBM_LOCATION_CODE_INF]
-                              ["LocationCode"]
-                                  .get_ref<const nlohmann::json::string_t&>();
-                std::size_t idx = unexpandedLocationCode.find(locationCodeType);
-                if (idx != std::string::npos)
-                {
-                    std::string expandedLocationCode(unexpandedLocationCode);
-
-                    if (locationCodeType == "fcs")
-                    {
-                        expandedLocationCode.replace(
-                            idx, 3,
-                            propertyFCorTM.substr(0, 4) + ".ND0." + propertySE);
-                    }
-                    else if (locationCodeType == "mts")
-                    {
-                        std::replace(propertyFCorTM.begin(),
-                                     propertyFCorTM.end(), '-', '.');
-                        expandedLocationCode.replace(
-                            idx, 3, propertyFCorTM + "." + propertySE);
-                    }
-
-                    // update the DBUS interface COM as well as XYZ path
-                    prop.emplace("LocationCode", expandedLocationCode);
-                    // TODO deprecate this com.ibm interface later
-                    interfaces.emplace(IBM_LOCATION_CODE_INF, prop);
-                    interfaces.emplace(XYZ_LOCATION_CODE_INF, std::move(prop));
-                }
-            }
-            objects.emplace(std::move(object), std::move(interfaces));
-        }
-    }
-    // Notify PIM
-    common::utility::callPIM(std::move(objects));
-}
-
-#ifndef ManagerTest
-static void enableRebootGuard()
-{
-    try
-    {
-        auto bus = sdbusplus::bus::new_default();
-        auto method = bus.new_method_call(
-            "org.freedesktop.systemd1", "/org/freedesktop/systemd1",
-            "org.freedesktop.systemd1.Manager", "StartUnit");
-        method.append("reboot-guard-enable.service", "replace");
-        bus.call_noreply(method);
-    }
-    catch (const sdbusplus::exception_t& e)
-    {
-        std::string errMsg =
-            "Bus call to enable BMC reboot failed for reason: ";
-        errMsg += e.what();
-
-        throw std::runtime_error(errMsg);
-    }
-}
-
-static void disableRebootGuard()
-{
-    try
-    {
-        auto bus = sdbusplus::bus::new_default();
-        auto method = bus.new_method_call(
-            "org.freedesktop.systemd1", "/org/freedesktop/systemd1",
-            "org.freedesktop.systemd1.Manager", "StartUnit");
-        method.append("reboot-guard-disable.service", "replace");
-        bus.call_noreply(method);
-    }
-    catch (const sdbusplus::exception_t& e)
-    {
-        using namespace phosphor::logging;
-        using InternalFailure =
-            sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
-
-        std::string errMsg =
-            "Bus call to disable BMC reboot failed for reason: ";
-        errMsg += e.what();
-
-        log<level::ERR>("Disable boot guard failed");
-        elog<InternalFailure>();
-
-        throw std::runtime_error(errMsg);
-    }
-}
-#endif
-
-void EditorImpl::updateKeyword(const Binary& kwdData, uint32_t offset,
-                               const bool& updCache)
-{
-    try
-    {
-        startOffset = offset;
-#ifndef ManagerTest
-        // Restrict BMC from rebooting when VPD is being written. This will
-        // prevent any data/ECC corruption in case BMC reboots while VPD update.
-        enableRebootGuard();
-
-        Binary completeVPDFile;
-        vpdFileStream.exceptions(
-            std::ifstream::badbit | std::ifstream::failbit);
-        try
-        {
-            vpdFileStream.open(vpdFilePath,
-                               std::ios::in | std::ios::out | std::ios::binary);
-
-            auto vpdFileSize =
-                std::min(std::filesystem::file_size(vpdFilePath), MAX_VPD_SIZE);
-            if (vpdFileSize == 0)
-            {
-                std::cerr << "File size is 0 for " << vpdFilePath << std::endl;
-                throw std::runtime_error("File size is 0.");
-            }
-
-            completeVPDFile.resize(vpdFileSize);
-            vpdFileStream.seekg(startOffset, std::ios_base::cur);
-            vpdFileStream.read(reinterpret_cast<char*>(&completeVPDFile[0]),
-                               vpdFileSize);
-            vpdFileStream.clear(std::ios_base::eofbit);
-        }
-        catch (const std::system_error& fail)
-        {
-            std::cerr << "Exception in file handling [" << vpdFilePath
-                      << "] error : " << fail.what();
-            std::cerr << "Stream file size = " << vpdFileStream.gcount()
-                      << std::endl;
-            throw;
-        }
-        vpdFile = completeVPDFile;
-
-        if (objPath.empty() &&
-            jsonFile["frus"].find(vpdFilePath) != jsonFile["frus"].end())
-        {
-            objPath = jsonFile["frus"][vpdFilePath][0]["inventoryPath"]
-                          .get_ref<const nlohmann::json::string_t&>();
-        }
-
-#else
-
-        Binary completeVPDFile = vpdFile;
-
-#endif
-        if (vpdFile.empty())
-        {
-            throw std::runtime_error("Invalid File");
-        }
-        auto iterator = vpdFile.cbegin();
-        std::advance(iterator, IPZ_DATA_START);
-
-        Byte vpdType = *iterator;
-        if (vpdType == KW_VAL_PAIR_START_TAG)
-        {
-            // objPath should be empty only in case of test run.
-            ParserInterface* Iparser = ParserFactory::getParser(
-                completeVPDFile, objPath, vpdFilePath, startOffset);
-            IpzVpdParser* ipzParser = dynamic_cast<IpzVpdParser*>(Iparser);
-
-            try
-            {
-                if (ipzParser == nullptr)
-                {
-                    throw std::runtime_error("Invalid cast");
-                }
-
-                ipzParser->processHeader();
-                delete ipzParser;
-                ipzParser = nullptr;
-                // ParserFactory::freeParser(Iparser);
-
-                // process VTOC for PTT rkwd
-                readVTOC();
-
-                // check record for keywrod
-                checkRecordForKwd();
-
-                // Check Data before updating
-                checkRecordData();
-
-                // update the data to the file
-                updateData(kwdData);
-
-                // update the ECC data for the record once data has been updated
-                updateRecordECC();
-
-                if (updCache)
-                {
-#ifndef ManagerTest
-                    // update the cache once data has been updated
-                    updateCache();
-#endif
-                }
-            }
-            catch (const std::exception& e)
-            {
-                if (ipzParser != nullptr)
-                {
-                    delete ipzParser;
-                }
-                throw std::runtime_error(e.what());
-            }
-
-#ifndef ManagerTest
-            // Once VPD data and Ecc update is done, disable BMC boot guard.
-            disableRebootGuard();
-#endif
-
-            return;
-        }
-        else
-        {
-            throw openpower::vpd::exceptions::VpdDataException(
-                "Could not find start tag in VPD " + vpdFilePath);
-        }
-    }
-    catch (const std::exception& e)
-    {
-#ifndef ManagerTest
-        // Disable reboot guard.
-        disableRebootGuard();
-#endif
-
-        throw std::runtime_error(e.what());
-    }
-}
-} // namespace editor
-} // namespace manager
-} // namespace vpd
-} // namespace openpower
diff --git a/vpd-manager/editor_impl.hpp b/vpd-manager/editor_impl.hpp
deleted file mode 100644
index cf0ef2b..0000000
--- a/vpd-manager/editor_impl.hpp
+++ /dev/null
@@ -1,216 +0,0 @@
-#pragma once
-
-#include "const.hpp"
-#include "types.hpp"
-
-#include <nlohmann/json.hpp>
-
-#include <cstddef>
-#include <fstream>
-#include <tuple>
-
-namespace openpower
-{
-namespace vpd
-{
-namespace manager
-{
-namespace editor
-{
-
-/** @class EditorImpl */
-class EditorImpl
-{
-  public:
-    EditorImpl() = delete;
-    EditorImpl(const EditorImpl&) = delete;
-    EditorImpl& operator=(const EditorImpl&) = delete;
-    EditorImpl(EditorImpl&&) = delete;
-    EditorImpl& operator=(EditorImpl&&) = delete;
-    ~EditorImpl() {}
-
-    /** @brief Construct EditorImpl class
-     *
-     *  @param[in] record - Record Name
-     *  @param[in] kwd - Keyword
-     *  @param[in] vpd - Vpd Vector
-     */
-    EditorImpl(const std::string& record, const std::string& kwd,
-               Binary&& vpd) :
-        startOffset(0), thisRecord(record, kwd), vpdFile(std::move(vpd))
-    {}
-
-    /** @brief Construct EditorImpl class
-     *
-     *  @param[in] path - Path to the vpd file
-     *  @param[in] json - Parsed inventory json
-     *  @param[in] record - Record name
-     *  @param[in] kwd - Keyword
-     *  @param[in] inventoryPath - Inventory path of the vpd
-     */
-    EditorImpl(const inventory::Path& path, const nlohmann::json& json,
-               const std::string& record, const std::string& kwd,
-               const sdbusplus::message::object_path& inventoryPath) :
-        vpdFilePath(path), objPath(inventoryPath), startOffset(0),
-        jsonFile(json), thisRecord(record, kwd)
-    {}
-
-    /** @brief Construct EditorImpl class
-     *
-     * @param[in] path - EEPROM path
-     * @param[in] json - Parsed inventory json object
-     * @param[in] record - Record name
-     * @param[in] kwd - Keyword name
-     */
-    EditorImpl(const inventory::Path& path, const nlohmann::json& json,
-               const std::string& record, const std::string& kwd) :
-        vpdFilePath(path), jsonFile(json), thisRecord(record, kwd)
-    {}
-
-    /**
-     * @brief Update data for keyword
-     * The method looks for the record name to update in VTOC and then
-     * looks for the keyword name in that record. when found it updates the data
-     * of keyword with the given data. It does not block keyword data update in
-     * case the length of new data is greater than or less than the current data
-     * length. If the new data length is more than the length allotted to that
-     * keyword the new data will be truncated to update only the allotted
-     * length. Similarly if the new data length is less then only that much data
-     * will be updated for the keyword and remaining bits will be left
-     * unchanged.
-     *
-     * Following is the algorithm used to update keyword:
-     * 1) Look for the record name in the given VPD file
-     * 2) Look for the keyword name for which data needs to be updated
-     *    which is the table of contents record.
-     * 3) update the data for that keyword with the new data
-     *
-     * @param[in] kwdData - data to update
-     * @param[in] offset - offset at which the VPD starts
-     * @param[in] updCache - Flag which tells whether to update Cache or not.
-     */
-    void updateKeyword(const Binary& kwdData, uint32_t offset,
-                       const bool& updCache);
-
-    /** @brief Expands location code on DBUS
-     *  @param[in] locationCodeType - "fcs" or "mts"
-     */
-    void expandLocationCode(const std::string& locationCodeType);
-
-  private:
-    /** @brief read VTOC record from the vpd file
-     */
-    void readVTOC();
-
-    /** @brief validate ecc data for the VTOC record
-     *  @param[in] itrToRecData -iterator to the record data
-     *  @param[in] itrToECCData - iterator to the ECC data
-     *  @param[in] recLength - Length of the record
-     *  @param[in] eccLength - Length of the record's ECC
-     */
-    void checkECC(Binary::const_iterator& itrToRecData,
-                  Binary::const_iterator& itrToECCData,
-                  openpower::vpd::constants::RecordLength recLength,
-                  openpower::vpd::constants::ECCLength eccLength);
-
-    /** @brief reads value at the given offset
-     *  @param[in] offset - offset value
-     *  @return  value at that offset in bigendian
-     */
-    auto getValue(openpower::vpd::constants::offsets::Offsets offset);
-
-    /** @brief Checks if required record name exist in the VPD file
-     *  @param[in] iterator - pointing to start of PT kwd
-     *  @param[in] ptLength - length of the PT kwd
-     */
-    void checkPTForRecord(Binary::const_iterator& iterator, Byte ptLength);
-
-    /** @brief Checks for required keyword in the record */
-    void checkRecordForKwd();
-
-    /** @brief update data for given keyword
-     *  @param[in] kwdData- data to be updated
-     */
-    void updateData(const Binary& kwdData);
-
-    /** @brief update record ECC */
-    void updateRecordECC();
-
-    /** @brief method to update cache once the data for keyword has been updated
-     */
-    void updateCache();
-
-    /** @brief method to process and update CI in case required
-     *  @param[in] - objectPath - path of the object to introspect
-     */
-    void processAndUpdateCI(const std::string& objectPath);
-
-    /** @brief method to process and update extra interface
-     *  @param[in] Inventory - single inventory json subpart
-     *  @param[in] objPath - path of the object to introspect
-     */
-    void processAndUpdateEI(const nlohmann::json& Inventory,
-                            const inventory::Path& objPath);
-
-    /** @brief method to make busctl call
-     *
-     *  @param[in] object - bus object path
-     *  @param[in] interface - bus interface
-     *  @param[in] property - property to update on BUS
-     *  @param[in] data - data to be updated on Bus
-     *
-     */
-    template <typename T>
-    void makeDbusCall(const std::string& object, const std::string& interface,
-                      const std::string& property, const std::variant<T>& data);
-
-    /** @brief Method to check the record's Data using ECC */
-    void checkRecordData();
-
-    // path to the VPD file to edit
-    inventory::Path vpdFilePath;
-
-    // inventory path of the vpd fru to update keyword
-    inventory::Path objPath{};
-
-    // stream to perform operation on file
-    std::fstream vpdFileStream;
-
-    // stream to operate on VPD data
-    std::fstream vpdDataFileStream;
-
-    // offset to get vpd data from EEPROM
-    uint32_t startOffset;
-
-    // file to store parsed json
-    const nlohmann::json jsonFile;
-
-    // structure to hold info about record to edit
-    struct RecInfo
-    {
-        Binary kwdUpdatedData; // need access to it in case encoding is needed
-        const std::string recName;
-        const std::string recKWd;
-        openpower::vpd::constants::RecordOffset recOffset;
-        openpower::vpd::constants::ECCOffset recECCoffset;
-        std::size_t recECCLength;
-        std::size_t kwdDataLength;
-        openpower::vpd::constants::RecordSize recSize;
-        openpower::vpd::constants::DataOffset kwDataOffset;
-        // constructor
-        RecInfo(const std::string& rec, const std::string& kwd) :
-            recName(rec), recKWd(kwd), recOffset(0), recECCoffset(0),
-            recECCLength(0), kwdDataLength(0), recSize(0), kwDataOffset(0)
-        {}
-    } thisRecord;
-
-    Binary vpdFile;
-
-    // If requested Interface is common Interface
-    bool isCI;
-}; // class EditorImpl
-
-} // namespace editor
-} // namespace manager
-} // namespace vpd
-} // namespace openpower
diff --git a/vpd-manager/gpioMonitor.cpp b/vpd-manager/gpioMonitor.cpp
deleted file mode 100644
index 3196fee..0000000
--- a/vpd-manager/gpioMonitor.cpp
+++ /dev/null
@@ -1,201 +0,0 @@
-#include "gpioMonitor.hpp"
-
-#include "common_utility.hpp"
-#include "ibm_vpd_utils.hpp"
-
-#include <boost/asio.hpp>
-#include <boost/bind/bind.hpp>
-#include <gpiod.hpp>
-
-using namespace std;
-using namespace openpower::vpd::constants;
-
-namespace openpower
-{
-namespace vpd
-{
-namespace manager
-{
-
-bool GpioEventHandler::getPresencePinValue()
-{
-    Byte gpioData = 1;
-    gpiod::line presenceLine = gpiod::find_line(presencePin);
-    if (!presenceLine)
-    {
-        cerr << "Error getPresencePinValue: couldn't find presence line:"
-             << presencePin << " on GPIO \n";
-        // return previous state as we couldn't read current state
-        return prevPresPinValue;
-    }
-
-    presenceLine.request(
-        {"Op-panel presence line", gpiod::line_request::DIRECTION_INPUT, 0});
-
-    gpioData = presenceLine.get_value();
-
-    return gpioData;
-}
-
-void GpioMonitor::initGpioInfos(
-    std::shared_ptr<boost::asio::io_context>& ioContext)
-{
-    Byte outputValue = 0;
-    Byte presenceValue = 0;
-    string presencePinName{}, outputPinName{};
-    string devNameAddr{}, driverType{}, busType{}, objectPath{};
-
-    for (const auto& eachFRU : jsonFile["frus"].items())
-    {
-        for (const auto& eachInventory : eachFRU.value())
-        {
-            objectPath = eachInventory["inventoryPath"];
-
-            if ((eachInventory.find("presence") != eachInventory.end()) &&
-                (eachInventory.find("preAction") != eachInventory.end()))
-            {
-                if (!eachInventory["presence"].value("pollingRequired", false))
-                {
-                    // Polling not required for this FRU , skip.
-                    continue;
-                }
-
-                for (const auto& presStatus : eachInventory["presence"].items())
-                {
-                    if (presStatus.key() == "pin")
-                    {
-                        presencePinName = presStatus.value();
-                    }
-                    else if (presStatus.key() == "value")
-                    {
-                        presenceValue = presStatus.value();
-                    }
-                }
-
-                // Based on presence pin value, preAction pin will be set/reset
-                // This action will be taken before vpd collection.
-                for (const auto& preAction : eachInventory["preAction"].items())
-                {
-                    if (preAction.key() == "pin")
-                    {
-                        outputPinName = preAction.value();
-                    }
-                    else if (preAction.key() == "value")
-                    {
-                        outputValue = preAction.value();
-                    }
-                }
-
-                if ((eachInventory.find("devAddress") != eachInventory.end()) &&
-                    (eachInventory.find("driverType") != eachInventory.end()) &&
-                    (eachInventory.find("busType") != eachInventory.end()))
-                {
-                    devNameAddr = eachInventory["devAddress"];
-                    driverType = eachInventory["driverType"];
-                    busType = eachInventory["busType"];
-
-                    // Init all Gpio info variables
-                    std::shared_ptr<GpioEventHandler> gpioObj =
-                        make_shared<GpioEventHandler>(
-                            presencePinName, presenceValue, outputPinName,
-                            outputValue, devNameAddr, driverType, busType,
-                            objectPath, ioContext);
-
-                    gpioObjects.push_back(gpioObj);
-                }
-            }
-        }
-    }
-}
-
-void GpioEventHandler::toggleGpio()
-{
-    bool presPinVal = getPresencePinValue();
-    bool isPresent = false;
-
-    // preserve the new value
-    prevPresPinValue = presPinVal;
-
-    if (presPinVal == presenceValue)
-    {
-        isPresent = true;
-    }
-
-    // if FRU went away set the present property to false
-    if (!isPresent)
-    {
-        inventory::ObjectMap objects;
-        inventory::InterfaceMap interfaces;
-        inventory::PropertyMap presProp;
-
-        presProp.emplace("Present", false);
-        interfaces.emplace("xyz.openbmc_project.Inventory.Item", presProp);
-        objects.emplace(objectPath, move(interfaces));
-
-        common::utility::callPIM(move(objects));
-    }
-
-    gpiod::line outputLine = gpiod::find_line(outputPin);
-    if (!outputLine)
-    {
-        cerr << "Error: toggleGpio: couldn't find output line:" << outputPin
-             << ". Skipping update\n";
-
-        return;
-    }
-
-    outputLine.request({"FRU presence: update the output GPIO pin",
-                        gpiod::line_request::DIRECTION_OUTPUT, 0},
-                       isPresent ? outputValue : (!outputValue));
-
-    string cmnd = createBindUnbindDriverCmnd(devNameAddr, busType, driverType,
-                                             isPresent ? "bind" : "unbind");
-
-    cout << cmnd << endl;
-    executeCmd(cmnd);
-}
-
-void GpioEventHandler::handleTimerExpiry(
-    const boost::system::error_code& ec,
-    std::shared_ptr<boost::asio::steady_timer>& timer)
-{
-    if (ec == boost::asio::error::operation_aborted)
-    {
-        return;
-    }
-
-    if (ec)
-    {
-        std::cerr << "Timer wait failed for gpio pin" << ec.message();
-        return;
-    }
-
-    if (hasEventOccurred())
-    {
-        toggleGpio();
-    }
-    timer->expires_at(
-        std::chrono::steady_clock::now() + std::chrono::seconds(5));
-    timer->async_wait(boost::bind(&GpioEventHandler::handleTimerExpiry, this,
-                                  boost::asio::placeholders::error, timer));
-}
-
-void GpioEventHandler::doEventAndTimerSetup(
-    std::shared_ptr<boost::asio::io_context>& ioContext)
-{
-    prevPresPinValue = getPresencePinValue();
-
-    static vector<std::shared_ptr<boost::asio::steady_timer>> timers;
-
-    auto timer = make_shared<boost::asio::steady_timer>(
-        *ioContext, std::chrono::seconds(5));
-
-    timer->async_wait(boost::bind(&GpioEventHandler::handleTimerExpiry, this,
-                                  boost::asio::placeholders::error, timer));
-
-    timers.push_back(timer);
-}
-
-} // namespace manager
-} // namespace vpd
-} // namespace openpower
diff --git a/vpd-manager/gpioMonitor.hpp b/vpd-manager/gpioMonitor.hpp
deleted file mode 100644
index 5f34336..0000000
--- a/vpd-manager/gpioMonitor.hpp
+++ /dev/null
@@ -1,143 +0,0 @@
-#pragma once
-#include "types.hpp"
-
-#include <boost/asio/steady_timer.hpp>
-#include <nlohmann/json.hpp>
-#include <sdbusplus/asio/connection.hpp>
-
-namespace openpower
-{
-namespace vpd
-{
-namespace manager
-{
-/** @class GpioEventHandler
- *  @brief Responsible for catching the event and handle it.
- *         This keeps checking for the FRU's presence.
- *         If any attachment or de-attachment found, it enables/disables that
- * fru's output gpio and bind/unbind the driver, respectively.
- */
-class GpioEventHandler
-{
-  public:
-    GpioEventHandler() = default;
-    ~GpioEventHandler() = default;
-    GpioEventHandler(const GpioEventHandler&) = default;
-    GpioEventHandler& operator=(const GpioEventHandler&) = delete;
-    GpioEventHandler(GpioEventHandler&&) = delete;
-    GpioEventHandler& operator=(GpioEventHandler&&) = delete;
-
-    GpioEventHandler(std::string& presPin, Byte& presValue, std::string& outPin,
-                     Byte& outValue, std::string& devAddr, std::string& driver,
-                     std::string& bus, std::string& objPath,
-                     std::shared_ptr<boost::asio::io_context>& ioCon) :
-        presencePin(presPin), presenceValue(presValue), outputPin(outPin),
-        outputValue(outValue), devNameAddr(devAddr), driverType(driver),
-        busType(bus), objectPath(objPath)
-    {
-        doEventAndTimerSetup(ioCon);
-    }
-
-  private:
-    /** @brief GPIO information to get parsed from vpd json*/
-
-    // gpio pin indicates presence/absence of fru
-    const std::string presencePin;
-    // value which means fru is present
-    const Byte presenceValue;
-    // gpio pin to enable If fru is present
-    const std::string outputPin;
-    // Value to set, to enable the output pin
-    const Byte outputValue;
-
-    // FRU address on bus
-    const std::string devNameAddr;
-    // Driver type
-    const std::string driverType;
-    // Bus type
-    const std::string busType;
-    // object path of FRU
-    const std::string objectPath;
-
-    /** Preserves the GPIO pin value to compare it next time. Default init by
-     *  false*/
-    bool prevPresPinValue = false;
-
-    /** @brief This is a helper function to read the
-     *        current value of Presence GPIO
-     *
-     *  @returns The GPIO value
-     */
-    bool getPresencePinValue();
-
-    /** @brief This function will toggle the output gpio as per the presence
-     *         state of fru.
-     */
-    void toggleGpio();
-
-    /** @brief This function checks for fru's presence pin and detects change of
-     *         value on that pin, (in case of fru gets attached or de-attached).
-     *
-     *  @returns true if presence pin value changed
-     *           false otherwise
-     */
-    inline bool hasEventOccurred()
-    {
-        return getPresencePinValue() != prevPresPinValue;
-    }
-
-    /** @brief This function runs a timer , which keeps checking for if an event
-     *         happened, if event occurred then takes action.
-     *
-     *  @param[in] ioContext - Pointer to io context object.
-     */
-    void doEventAndTimerSetup(
-        std::shared_ptr<boost::asio::io_context>& ioContext);
-
-    /**
-     * @brief Api to handle timer expiry.
-     *
-     * @param ec - Error code.
-     * @param timer - Pointer to timer object.
-     */
-    void handleTimerExpiry(const boost::system::error_code& ec,
-                           std::shared_ptr<boost::asio::steady_timer>& timer);
-};
-
-/** @class GpioMonitor
- *  @brief Responsible for initialising the private variables containing gpio
- *         infos. These information will be fetched from vpd json.
- */
-class GpioMonitor
-{
-  public:
-    GpioMonitor() = delete;
-    ~GpioMonitor() = default;
-    GpioMonitor(const GpioMonitor&) = delete;
-    GpioMonitor& operator=(const GpioMonitor&) = delete;
-    GpioMonitor(GpioMonitor&&) = delete;
-    GpioMonitor& operator=(GpioMonitor&&) = delete;
-
-    GpioMonitor(nlohmann::json& js,
-                std::shared_ptr<boost::asio::io_context>& ioCon) : jsonFile(js)
-    {
-        initGpioInfos(ioCon);
-    }
-
-  private:
-    // Json file to get the data
-    nlohmann::json& jsonFile;
-    // Array of event handlers for all the attachable FRUs
-    std::vector<std::shared_ptr<GpioEventHandler>> gpioObjects;
-
-    /** @brief This function will extract the gpio information from vpd json
-     * and store it in GpioEventHandler's private variables
-     *
-     * @param[in] ioContext - Pointer to io context object.
-     */
-    void initGpioInfos(std::shared_ptr<boost::asio::io_context>& ioContext);
-};
-
-} // namespace manager
-} // namespace vpd
-} // namespace openpower
diff --git a/vpd-manager/include/backup_restore.hpp b/vpd-manager/include/backup_restore.hpp
new file mode 100644
index 0000000..12ec384
--- /dev/null
+++ b/vpd-manager/include/backup_restore.hpp
@@ -0,0 +1,102 @@
+#pragma once
+
+#include "types.hpp"
+
+#include <nlohmann/json.hpp>
+
+#include <tuple>
+
+namespace vpd
+{
+
+// Backup and restore operation status.
+enum class BackupAndRestoreStatus : uint8_t
+{
+    NotStarted,
+    Invoked,
+    Completed
+};
+
+/**
+ * @brief class to implement backup and restore VPD.
+ *
+ */
+
+class BackupAndRestore
+{
+  public:
+    // delete functions
+    BackupAndRestore() = delete;
+    BackupAndRestore(const BackupAndRestore&) = delete;
+    BackupAndRestore& operator=(const BackupAndRestore&) = delete;
+    BackupAndRestore(BackupAndRestore&&) = delete;
+    BackupAndRestore& operator=(BackupAndRestore&&) = delete;
+
+    /**
+     * @brief Constructor.
+     *
+     * @param[in] i_sysCfgJsonObj - System config JSON object.
+     *
+     * @throw std::runtime_error in case constructor failure.
+     */
+    BackupAndRestore(const nlohmann::json& i_sysCfgJsonObj);
+
+    /**
+     * @brief Default destructor.
+     */
+    ~BackupAndRestore() = default;
+
+    /**
+     * @brief An API to backup and restore VPD.
+     *
+     * Note: This API works on the keywords declared in the backup and restore
+     * config JSON. Restore or backup action could be triggered for each
+     * keyword, based on the keyword's value present in the source and
+     * destination keyword.
+     *
+     * Restore source keyword's value with destination keyword's value,
+     * when source keyword has default value but
+     * destination's keyword has non default value.
+     *
+     * Backup the source keyword value to the destination's keyword's value,
+     * when source keyword has non default value but
+     * destination's keyword has default value.
+     *
+     * @return Tuple of updated source and destination VPD map variant.
+     */
+    std::tuple<types::VPDMapVariant, types::VPDMapVariant> backupAndRestore();
+
+    /**
+     * @brief An API to set backup and restore status.
+     *
+     * @param[in] i_status - Status to set.
+     */
+    static void
+        setBackupAndRestoreStatus(const BackupAndRestoreStatus& i_status);
+
+  private:
+    /**
+     * @brief An API to handle backup and restore of IPZ type VPD.
+     *
+     * @param[in,out] io_srcVpdMap - Source VPD map.
+     * @param[in,out] io_dstVpdMap - Destination VPD map.
+     * @param[in] i_srcPath - Source EEPROM file path or inventory path.
+     * @param[in] i_dstPath - Destination EEPROM file path or inventory path.
+     *
+     * @throw std::runtime_error
+     */
+    void backupAndRestoreIpzVpd(
+        types::IPZVpdMap& io_srcVpdMap, types::IPZVpdMap& io_dstVpdMap,
+        const std::string& i_srcPath, const std::string& i_dstPath);
+
+    // System JSON config JSON object.
+    nlohmann::json m_sysCfgJsonObj{};
+
+    // Backup and restore config JSON object.
+    nlohmann::json m_backupAndRestoreCfgJsonObj{};
+
+    // Backup and restore status.
+    static BackupAndRestoreStatus m_backupAndRestoreStatus;
+};
+
+} // namespace vpd
diff --git a/vpd-manager/include/bios_handler.hpp b/vpd-manager/include/bios_handler.hpp
new file mode 100644
index 0000000..916811e
--- /dev/null
+++ b/vpd-manager/include/bios_handler.hpp
@@ -0,0 +1,273 @@
+#pragma once
+#include "manager.hpp"
+#include "types.hpp"
+
+#include <sdbusplus/asio/connection.hpp>
+#include <sdbusplus/bus.hpp>
+
+namespace vpd
+{
+
+/**
+ * @brief Interface class for BIOS handling.
+ *
+ * The class layout has the virtual methods required to be implemented by any
+ * concrete class that intends to use the feature provided via BIOS handler
+ * class.
+ */
+class BiosHandlerInterface
+{
+  public:
+    /**
+     * @brief API to back up or restore BIOS attributes.
+     *
+     * Concrete class should implement the API and read the backed up data from
+     * its designated location and take a call if it should be backed up or
+     * restored.
+     */
+    virtual void backUpOrRestoreBiosAttributes() = 0;
+
+    /**
+     * @brief Callback API to be triggered on BIOS attribute change.
+     *
+     * Concrete class should implement the API to extract the attribute and its
+     * value from DBus message broadcasted on BIOS attribute change.
+     * The definition should be overridden in concrete class to deal with BIOS
+     * attributes interested in.
+     *
+     * @param[in] i_msg - The callback message.
+     */
+    virtual void biosAttributesCallback(sdbusplus::message_t& i_msg) = 0;
+};
+
+/**
+ * @brief IBM specifc BIOS handler class.
+ */
+class IbmBiosHandler : public BiosHandlerInterface
+{
+  public:
+    /**
+     * @brief Construct a new IBM BIOS Handler object
+     *
+     * This constructor constructs a new IBM BIOS Handler object
+     * @param[in] i_manager - Manager object.
+     */
+    explicit IbmBiosHandler(const std::shared_ptr<Manager>& i_manager) :
+        m_manager(i_manager)
+    {}
+
+    /**
+     * @brief API to back up or restore BIOS attributes.
+     *
+     * The API will read the backed up data from the VPD keyword and based on
+     * its value, either backs up or restores the data.
+     */
+    virtual void backUpOrRestoreBiosAttributes();
+
+    /**
+     * @brief Callback API to be triggered on BIOS attribute change.
+     *
+     * The API to extract the required attribute and its value from DBus message
+     * broadcasted on BIOS attribute change.
+     *
+     * @param[in] i_msg - The callback message.
+     */
+    virtual void biosAttributesCallback(sdbusplus::message_t& i_msg);
+
+  private:
+    /**
+     * @brief API to read given attribute from BIOS table.
+     *
+     * @param[in] attributeName - Attribute to be read.
+     * @return - Bios attribute current value.
+     */
+    types::BiosAttributeCurrentValue
+        readBiosAttribute(const std::string& attributeName);
+
+    /**
+     * @brief API to process "hb_field_core_override" attribute.
+     *
+     * The API checks value stored in VPD. If found default then the BIOS value
+     * is saved to VPD else VPD value is restored in BIOS pending attribute
+     * table.
+     */
+    void processFieldCoreOverride();
+
+    /**
+     * @brief API to save FCO data into VPD.
+     *
+     * @param[in] i_fcoInBios - FCO value.
+     */
+    void saveFcoToVpd(int64_t i_fcoInBios);
+
+    /**
+     * @brief API to save given value to "hb_field_core_override" attribute.
+     *
+     * @param[in] i_fcoVal - FCO value.
+     */
+    void saveFcoToBios(const types::BinaryVector& i_fcoVal);
+
+    /**
+     * @brief API to save AMM data into VPD.
+     *
+     * @param[in] i_memoryMirrorMode - Memory mirror mode value.
+     */
+    void saveAmmToVpd(const std::string& i_memoryMirrorMode);
+
+    /**
+     * @brief API to save given value to "hb_memory_mirror_mode" attribute.
+     *
+     * @param[in] i_ammVal - AMM value.
+     */
+    void saveAmmToBios(const std::string& i_ammVal);
+
+    /**
+     * @brief API to process "hb_memory_mirror_mode" attribute.
+     *
+     * The API checks value stored in VPD. If found default then the BIOS value
+     * is saved to VPD else VPD value is restored in BIOS pending attribute
+     * table.
+     */
+    void processActiveMemoryMirror();
+
+    /**
+     * @brief API to process "pvm_create_default_lpar" attribute.
+     *
+     * The API reads the value from VPD and restore it to the BIOS attribute
+     * in BIOS pending attribute table.
+     */
+    void processCreateDefaultLpar();
+
+    /**
+     * @brief API to save given value to "pvm_create_default_lpar" attribute.
+     *
+     * @param[in] i_createDefaultLparVal - Value to be saved;
+     */
+    void saveCreateDefaultLparToBios(const std::string& i_createDefaultLparVal);
+
+    /**
+     * @brief API to save given value to VPD.
+     *
+     * @param[in] i_createDefaultLparVal - Value to be saved.
+     *
+     */
+    void saveCreateDefaultLparToVpd(const std::string& i_createDefaultLparVal);
+
+    /**
+     * @brief API to process "pvm_clear_nvram" attribute.
+     *
+     * The API reads the value from VPD and restores it to the BIOS pending
+     * attribute table.
+     */
+    void processClearNvram();
+
+    /**
+     * @brief API to save given value to "pvm_clear_nvram" attribute.
+     *
+     * @param[in] i_clearNvramVal - Value to be saved.
+     */
+    void saveClearNvramToBios(const std::string& i_clearNvramVal);
+
+    /**
+     * @brief API to save given value to VPD.
+     *
+     * @param[in] i_clearNvramVal - Value to be saved.
+     */
+    void saveClearNvramToVpd(const std::string& i_clearNvramVal);
+
+    /**
+     * @brief API to process "pvm_keep_and_clear" attribute.
+     *
+     * The API reads the value from VPD and restore it to the BIOS pending
+     * attribute table.
+     */
+    void processKeepAndClear();
+
+    /**
+     * @brief API to save given value to "pvm_keep_and_clear" attribute.
+     *
+     * @param[in] i_KeepAndClearVal - Value to be saved.
+     */
+    void saveKeepAndClearToBios(const std::string& i_KeepAndClearVal);
+
+    /**
+     * @brief API to save given value to VPD.
+     *
+     * @param[in] i_KeepAndClearVal - Value to be saved.
+     */
+    void saveKeepAndClearToVpd(const std::string& i_KeepAndClearVal);
+
+    // const reference to shared pointer to Manager object.
+    const std::shared_ptr<Manager>& m_manager;
+};
+
+/**
+ * @brief A class to operate upon BIOS attributes.
+ *
+ * The class along with specific BIOS handler class(es), provides a feature
+ * where specific BIOS attributes identified by the concrete specific class can
+ * be listened for any change and can be backed up to a desired location or
+ * restored back to the BIOS table.
+ *
+ * To use the feature, "BiosHandlerInterface" should be implemented by a
+ * concrete class and the same should be used to instantiate BiosHandler.
+ *
+ * This class registers call back to listen to PLDM service as it is being used
+ * for reading/writing BIOS attributes.
+ *
+ * The feature can be used in a factory reset scenario where backed up values
+ * can be used to restore BIOS.
+ *
+ */
+template <typename T>
+class BiosHandler
+{
+  public:
+    // deleted APIs
+    BiosHandler() = delete;
+    BiosHandler(const BiosHandler&) = delete;
+    BiosHandler& operator=(const BiosHandler&) = delete;
+    BiosHandler& operator=(BiosHandler&&) = delete;
+    ~BiosHandler() = default;
+
+    /**
+     * @brief Constructor.
+     *
+     * @param[in] i_connection - Asio connection object.
+     * @param[in] i_manager - Manager object.
+     */
+    BiosHandler(
+        const std::shared_ptr<sdbusplus::asio::connection>& i_connection,
+        const std::shared_ptr<Manager>& i_manager) : m_asioConn(i_connection)
+    {
+        m_specificBiosHandler = std::make_shared<T>(i_manager);
+        checkAndListenPldmService();
+    }
+
+  private:
+    /**
+     * @brief API to check if PLDM service is running and run BIOS sync.
+     *
+     * This API checks if the PLDM service is running and if yes it will start
+     * an immediate sync of BIOS attributes. If the service is not running, it
+     * registers a listener to be notified when the service starts so that a
+     * restore can be performed.
+     */
+    void checkAndListenPldmService();
+
+    /**
+     * @brief Register listener for BIOS attribute property change.
+     *
+     * The VPD manager needs to listen for property change of certain BIOS
+     * attributes that are backed in VPD. When the attributes change, the new
+     * value is written back to the VPD keywords that backs them up.
+     */
+    void listenBiosAttributes();
+
+    // Reference to the connection.
+    const std::shared_ptr<sdbusplus::asio::connection>& m_asioConn;
+
+    // shared pointer to specific BIOS handler.
+    std::shared_ptr<T> m_specificBiosHandler;
+};
+} // namespace vpd
diff --git a/vpd-manager/include/constants.hpp b/vpd-manager/include/constants.hpp
new file mode 100644
index 0000000..5faf8da
--- /dev/null
+++ b/vpd-manager/include/constants.hpp
@@ -0,0 +1,196 @@
+#pragma once
+
+#include <cstdint>
+#include <iostream>
+namespace vpd
+{
+namespace constants
+{
+static constexpr auto KEYWORD_SIZE = 2;
+static constexpr auto RECORD_SIZE = 4;
+
+static constexpr uint8_t IPZ_DATA_START = 11;
+static constexpr uint8_t IPZ_DATA_START_TAG = 0x84;
+static constexpr uint8_t IPZ_RECORD_END_TAG = 0x78;
+
+static constexpr uint8_t KW_VPD_DATA_START = 0;
+static constexpr uint8_t KW_VPD_START_TAG = 0x82;
+static constexpr uint8_t KW_VPD_PAIR_START_TAG = 0x84;
+static constexpr uint8_t ALT_KW_VPD_PAIR_START_TAG = 0x90;
+static constexpr uint8_t KW_VPD_END_TAG = 0x78;
+static constexpr uint8_t KW_VAL_PAIR_END_TAG = 0x79;
+static constexpr uint8_t AMM_ENABLED_IN_VPD = 2;
+static constexpr uint8_t AMM_DISABLED_IN_VPD = 1;
+
+static constexpr auto DDIMM_11S_BARCODE_START = 416;
+static constexpr auto DDIMM_11S_BARCODE_START_TAG = "11S";
+static constexpr auto DDIMM_11S_FORMAT_LEN = 3;
+static constexpr auto DDIMM_11S_BARCODE_LEN = 26;
+static constexpr auto PART_NUM_LEN = 7;
+static constexpr auto SERIAL_NUM_LEN = 12;
+static constexpr auto CCIN_LEN = 4;
+static constexpr auto CONVERT_MB_TO_KB = 1024;
+static constexpr auto CONVERT_GB_TO_KB = 1024 * 1024;
+
+static constexpr auto SPD_BYTE_2 = 2;
+static constexpr auto SPD_BYTE_3 = 3;
+static constexpr auto SPD_BYTE_4 = 4;
+static constexpr auto SPD_BYTE_6 = 6;
+static constexpr auto SPD_BYTE_12 = 12;
+static constexpr auto SPD_BYTE_13 = 13;
+static constexpr auto SPD_BYTE_18 = 18;
+static constexpr auto SPD_BYTE_234 = 234;
+static constexpr auto SPD_BYTE_235 = 235;
+static constexpr auto SPD_BYTE_BIT_0_3_MASK = 0x0F;
+static constexpr auto SPD_BYTE_MASK = 0xFF;
+static constexpr auto SPD_MODULE_TYPE_DDIMM = 0x0A;
+static constexpr auto SPD_DRAM_TYPE_DDR5 = 0x12;
+static constexpr auto SPD_DRAM_TYPE_DDR4 = 0x0C;
+
+static constexpr auto JEDEC_SDRAM_CAP_MASK = 0x0F;
+static constexpr auto JEDEC_PRI_BUS_WIDTH_MASK = 0x07;
+static constexpr auto JEDEC_SDRAM_WIDTH_MASK = 0x07;
+static constexpr auto JEDEC_NUM_RANKS_MASK = 0x38;
+static constexpr auto JEDEC_DIE_COUNT_MASK = 0x70;
+static constexpr auto JEDEC_SINGLE_LOAD_STACK = 0x02;
+static constexpr auto JEDEC_SIGNAL_LOADING_MASK = 0x03;
+
+static constexpr auto JEDEC_SDRAMCAP_MULTIPLIER = 256;
+static constexpr auto JEDEC_PRI_BUS_WIDTH_MULTIPLIER = 8;
+static constexpr auto JEDEC_SDRAM_WIDTH_MULTIPLIER = 4;
+static constexpr auto JEDEC_SDRAMCAP_RESERVED = 7;
+static constexpr auto JEDEC_RESERVED_BITS = 3;
+static constexpr auto JEDEC_DIE_COUNT_RIGHT_SHIFT = 4;
+
+static constexpr auto LAST_KW = "PF";
+static constexpr auto POUND_KW = '#';
+static constexpr auto POUND_KW_PREFIX = "PD_";
+static constexpr auto MB_YEAR_END = 4;
+static constexpr auto MB_MONTH_END = 7;
+static constexpr auto MB_DAY_END = 10;
+static constexpr auto MB_HOUR_END = 13;
+static constexpr auto MB_MIN_END = 16;
+static constexpr auto MB_RESULT_LEN = 19;
+static constexpr auto MB_LEN_BYTES = 8;
+static constexpr auto UUID_LEN_BYTES = 16;
+static constexpr auto UUID_TIME_LOW_END = 8;
+static constexpr auto UUID_TIME_MID_END = 13;
+static constexpr auto UUID_TIME_HIGH_END = 18;
+static constexpr auto UUID_CLK_SEQ_END = 23;
+static constexpr auto MAC_ADDRESS_LEN_BYTES = 6;
+static constexpr auto ONE_BYTE = 1;
+static constexpr auto TWO_BYTES = 2;
+
+static constexpr auto VALUE_0 = 0;
+static constexpr auto VALUE_1 = 1;
+static constexpr auto VALUE_2 = 2;
+static constexpr auto VALUE_3 = 3;
+static constexpr auto VALUE_4 = 4;
+static constexpr auto VALUE_5 = 5;
+static constexpr auto VALUE_6 = 6;
+static constexpr auto VALUE_7 = 7;
+static constexpr auto VALUE_8 = 8;
+
+static constexpr auto MASK_BYTE_BITS_01 = 0x03;
+static constexpr auto MASK_BYTE_BITS_345 = 0x38;
+static constexpr auto MASK_BYTE_BITS_012 = 0x07;
+static constexpr auto MASK_BYTE_BITS_567 = 0xE0;
+static constexpr auto MASK_BYTE_BITS_01234 = 0x1F;
+
+static constexpr auto MASK_BYTE_BIT_6 = 0x40;
+static constexpr auto MASK_BYTE_BIT_7 = 0x80;
+
+static constexpr auto SHIFT_BITS_0 = 0;
+static constexpr auto SHIFT_BITS_3 = 3;
+static constexpr auto SHIFT_BITS_5 = 5;
+
+static constexpr auto ASCII_OF_SPACE = 32;
+
+// Size of 8 EQs' in CP00's PG keyword
+static constexpr auto SIZE_OF_8EQ_IN_PG = 24;
+
+// Zero based index position of first EQ in CP00's PG keyword
+static constexpr auto INDEX_OF_EQ0_IN_PG = 97;
+
+constexpr auto systemInvPath = "/xyz/openbmc_project/inventory/system";
+constexpr auto pimPath = "/xyz/openbmc_project/inventory";
+constexpr auto pimIntf = "xyz.openbmc_project.Inventory.Manager";
+constexpr auto ipzVpdInf = "com.ibm.ipzvpd.";
+constexpr auto kwdVpdInf = "com.ibm.ipzvpd.VINI";
+constexpr auto vsysInf = "com.ibm.ipzvpd.VSYS";
+constexpr auto utilInf = "com.ibm.ipzvpd.UTIL";
+constexpr auto vcenInf = "com.ibm.ipzvpd.VCEN";
+constexpr auto kwdCCIN = "CC";
+constexpr auto kwdRG = "RG";
+constexpr auto kwdAMM = "D0";
+constexpr auto kwdClearNVRAM_CreateLPAR = "D1";
+constexpr auto kwdKeepAndClear = "D1";
+constexpr auto kwdFC = "FC";
+constexpr auto kwdTM = "TM";
+constexpr auto kwdSE = "SE";
+constexpr auto recVSYS = "VSYS";
+constexpr auto recVCEN = "VCEN";
+constexpr auto locationCodeInf = "com.ibm.ipzvpd.Location";
+constexpr auto xyzLocationCodeInf =
+    "xyz.openbmc_project.Inventory.Decorator.LocationCode";
+constexpr auto operationalStatusInf =
+    "xyz.openbmc_project.State.Decorator.OperationalStatus";
+constexpr auto enableInf = "xyz.openbmc_project.Object.Enable";
+constexpr auto assetInf = "xyz.openbmc_project.Inventory.Decorator.Asset";
+constexpr auto inventoryItemInf = "xyz.openbmc_project.Inventory.Item";
+constexpr auto pldmServiceName = "xyz.openbmc_project.PLDM";
+constexpr auto pimServiceName = "xyz.openbmc_project.Inventory.Manager";
+constexpr auto biosConfigMgrObjPath =
+    "/xyz/openbmc_project/bios_config/manager";
+constexpr auto biosConfigMgrService = "xyz.openbmc_project.BIOSConfigManager";
+constexpr auto biosConfigMgrInterface =
+    "xyz.openbmc_project.BIOSConfig.Manager";
+constexpr auto objectMapperService = "xyz.openbmc_project.ObjectMapper";
+constexpr auto objectMapperPath = "/xyz/openbmc_project/object_mapper";
+constexpr auto objectMapperInf = "xyz.openbmc_project.ObjectMapper";
+constexpr auto systemVpdInvPath =
+    "/xyz/openbmc_project/inventory/system/chassis/motherboard";
+constexpr auto assetTagInf = "xyz.openbmc_project.Inventory.Decorator.AssetTag";
+constexpr auto hostObjectPath = "/xyz/openbmc_project/state/host0";
+constexpr auto hostInterface = "xyz.openbmc_project.State.Host";
+constexpr auto hostService = "xyz.openbmc_project.State.Host";
+constexpr auto hostRunningState =
+    "xyz.openbmc_project.State.Host.HostState.Running";
+static constexpr auto BD_YEAR_END = 4;
+static constexpr auto BD_MONTH_END = 7;
+static constexpr auto BD_DAY_END = 10;
+static constexpr auto BD_HOUR_END = 13;
+
+constexpr uint8_t UNEXP_LOCATION_CODE_MIN_LENGTH = 4;
+constexpr uint8_t EXP_LOCATION_CODE_MIN_LENGTH = 17;
+static constexpr auto SE_KWD_LENGTH = 7;
+static constexpr auto INVALID_NODE_NUMBER = -1;
+
+static constexpr auto CMD_BUFFER_LENGTH = 256;
+
+// To be explicitly used for string comparision.
+static constexpr auto STR_CMP_SUCCESS = 0;
+
+// Just a random value. Can be adjusted as required.
+static constexpr uint8_t MAX_THREADS = 10;
+
+static constexpr auto FAILURE = -1;
+static constexpr auto SUCCESS = 0;
+
+constexpr auto bmcStateService = "xyz.openbmc_project.State.BMC";
+constexpr auto bmcZeroStateObject = "/xyz/openbmc_project/state/bmc0";
+constexpr auto bmcStateInterface = "xyz.openbmc_project.State.BMC";
+constexpr auto currentBMCStateProperty = "CurrentBMCState";
+constexpr auto bmcReadyState = "xyz.openbmc_project.State.BMC.BMCState.Ready";
+
+static constexpr auto eventLoggingServiceName = "xyz.openbmc_project.Logging";
+static constexpr auto eventLoggingObjectPath = "/xyz/openbmc_project/logging";
+static constexpr auto eventLoggingInterface =
+    "xyz.openbmc_project.Logging.Create";
+
+static constexpr auto systemdService = "org.freedesktop.systemd1";
+static constexpr auto systemdObjectPath = "/org/freedesktop/systemd1";
+static constexpr auto systemdManagerInterface =
+    "org.freedesktop.systemd1.Manager";
+} // namespace constants
+} // namespace vpd
diff --git a/vpd-manager/include/ddimm_parser.hpp b/vpd-manager/include/ddimm_parser.hpp
new file mode 100644
index 0000000..a53ed17
--- /dev/null
+++ b/vpd-manager/include/ddimm_parser.hpp
@@ -0,0 +1,123 @@
+#pragma once
+
+#include "constants.hpp"
+#include "exceptions.hpp"
+#include "logger.hpp"
+#include "parser_interface.hpp"
+#include "types.hpp"
+
+namespace vpd
+{
+/**
+ * @brief Concrete class to implement DDIMM VPD parsing.
+ *
+ * The class inherits ParserInterface interface class and overrides the parser
+ * functionality to implement parsing logic for DDIMM VPD format.
+ */
+class DdimmVpdParser : public ParserInterface
+{
+  public:
+    // Deleted API's
+    DdimmVpdParser() = delete;
+    DdimmVpdParser(const DdimmVpdParser&) = delete;
+    DdimmVpdParser& operator=(const DdimmVpdParser&) = delete;
+    DdimmVpdParser(DdimmVpdParser&&) = delete;
+    DdimmVpdParser& operator=(DdimmVpdParser&&) = delete;
+
+    /**
+     * @brief Defaul destructor.
+     */
+    ~DdimmVpdParser() = default;
+
+    /**
+     * @brief Constructor
+     *
+     * @param[in] i_vpdVector - VPD data.
+     */
+    DdimmVpdParser(const types::BinaryVector& i_vpdVector) :
+        m_vpdVector(i_vpdVector)
+    {
+        if ((constants::DDIMM_11S_BARCODE_START +
+             constants::DDIMM_11S_BARCODE_LEN) > m_vpdVector.size())
+        {
+            throw(DataException("Malformed DDIMM VPD"));
+        }
+    }
+
+    /**
+     * @brief API to parse DDIMM VPD file.
+     *
+     * @return parsed VPD data
+     */
+    virtual types::VPDMapVariant parse() override;
+
+  private:
+    /**
+     * @brief API to read keyword data based on the type DDR4/DDR5.
+     *
+     * Updates the m_parsedVpdMap with read keyword data.
+     * @param[in] i_iterator - iterator to buffer containing VPD
+     */
+    void readKeywords(types::BinaryVector::const_iterator i_iterator);
+
+    /**
+     * @brief API to calculate DDIMM size from DDIMM VPD
+     *
+     * @param[in] i_iterator - iterator to buffer containing VPD
+     * @return calculated size or 0 in case of any error.
+     */
+    size_t getDdimmSize(types::BinaryVector::const_iterator i_iterator);
+
+    /**
+     * @brief This function calculates DDR5 based DDIMM's capacity
+     *
+     * @param[in] i_iterator - iterator to buffer containing VPD
+     * @return calculated size or 0 in case of any error.
+     */
+    size_t
+        getDdr5BasedDdimmSize(types::BinaryVector::const_iterator i_iterator);
+
+    /**
+     * @brief This function calculates DDR4 based DDIMM's capacity
+     *
+     * @param[in] i_iterator - iterator to buffer containing VPD
+     * @return calculated size or 0 in case of any error.
+     */
+    size_t
+        getDdr4BasedDdimmSize(types::BinaryVector::const_iterator i_iterator);
+
+    /**
+     * @brief This function calculates DDR5 based die per package
+     *
+     * @param[in] i_ByteValue - the bit value for calculation
+     * @return die per package value.
+     */
+    uint8_t getDdr5DiePerPackage(uint8_t i_ByteValue);
+
+    /**
+     * @brief This function calculates DDR5 based density per die
+     *
+     * @param[in] i_ByteValue - the bit value for calculation
+     * @return density per die.
+     */
+    uint8_t getDdr5DensityPerDie(uint8_t i_ByteValue);
+
+    /**
+     * @brief This function checks the validity of the bits
+     *
+     * @param[in] i_ByteValue - the byte value with relevant bits
+     * @param[in] i_shift - shifter value to selects needed bits
+     * @param[in] i_minValue - minimum value it can contain
+     * @param[in] i_maxValue - maximum value it can contain
+     * @return true if valid else false.
+     */
+    bool checkValidValue(uint8_t i_ByteValue, uint8_t i_shift,
+                         uint8_t i_minValue, uint8_t i_maxValue);
+
+    // VPD file to be parsed
+    const types::BinaryVector& m_vpdVector;
+
+    // Stores parsed VPD data.
+    types::DdimmVpdMap m_parsedVpdMap{};
+};
+} // namespace vpd
diff --git a/vpd-manager/include/event_logger.hpp b/vpd-manager/include/event_logger.hpp
new file mode 100644
index 0000000..0080be6
--- /dev/null
+++ b/vpd-manager/include/event_logger.hpp
@@ -0,0 +1,170 @@
+#pragma once
+
+#include "constants.hpp"
+#include "types.hpp"
+
+#include <iostream>
+#include <optional>
+#include <string>
+#include <unordered_map>
+
+namespace vpd
+{
+/**
+ * @brief Class for logging events.
+ *
+ * Class handles logging PEL under 'logging' service.
+ * Provide separate async API's for calling out inventory_path, device_path and
+ * i2c bus.
+ */
+class EventLogger
+{
+  public:
+    /**
+     * @brief An API to create a PEL with inventory path callout.
+     *
+     * This API calls an async method to create PEL, and also handles inventory
+     * path callout.
+     *
+     * Note: If inventory path callout info is not provided, it will create a
+     * PEL without any callout. Currently only one callout is handled in this
+     * API.
+     *
+     * @todo: Symbolic FRU and procedure callout needs to be handled in this
+     * API.
+     *
+     * @param[in] i_errorType - Enum to map with event message name.
+     * @param[in] i_severity - Severity of the event.
+     * @param[in] i_callouts - Callout information, list of tuple having
+     * inventory path and priority as input [optional].
+     * @param[in] i_fileName - File name.
+     * @param[in] i_funcName - Function name.
+     * @param[in] i_internalRc - Internal return code.
+     * @param[in] i_description - Error description.
+     * @param[in] i_userData1 - Additional user data [optional].
+     * @param[in] i_userData2 - Additional user data [optional].
+     * @param[in] i_symFru - Symblolic FRU callout data [optional].
+     * @param[in] i_procedure - Procedure callout data [optional].
+     *
+     * @throw exception in case of error.
+     */
+    static void createAsyncPelWithInventoryCallout(
+        const types::ErrorType& i_errorType,
+        const types::SeverityType& i_severity,
+        const std::vector<types::InventoryCalloutData>& i_callouts,
+        const std::string& i_fileName, const std::string& i_funcName,
+        const uint8_t i_internalRc, const std::string& i_description,
+        const std::optional<std::string> i_userData1,
+        const std::optional<std::string> i_userData2,
+        const std::optional<std::string> i_symFru,
+        const std::optional<std::string> i_procedure);
+
+    /**
+     * @brief An API to create a PEL with device path callout.
+     *
+     * @param[in] i_errorType - Enum to map with event message name.
+     * @param[in] i_severity - Severity of the event.
+     * @param[in] i_callouts - Callout information, list of tuple having device
+     * path and error number as input.
+     * @param[in] i_fileName - File name.
+     * @param[in] i_funcName - Function name.
+     * @param[in] i_internalRc - Internal return code.
+     * @param[in] i_userData1 - Additional user data [optional].
+     * @param[in] i_userData2 - Additional user data [optional].
+     */
+    static void createAsyncPelWithI2cDeviceCallout(
+        const types::ErrorType i_errorType,
+        const types::SeverityType i_severity,
+        const std::vector<types::DeviceCalloutData>& i_callouts,
+        const std::string& i_fileName, const std::string& i_funcName,
+        const uint8_t i_internalRc,
+        const std::optional<std::pair<std::string, std::string>> i_userData1,
+        const std::optional<std::pair<std::string, std::string>> i_userData2);
+
+    /**
+     * @brief An API to create a PEL with I2c bus callout.
+     *
+     * @param[in] i_errorType - Enum to map with event message name.
+     * @param[in] i_severity - Severity of the event.
+     * @param[in] i_callouts - Callout information, list of tuple having i2c
+     * bus, i2c address and error number as input.
+     * @param[in] i_fileName - File name.
+     * @param[in] i_funcName - Function name.
+     * @param[in] i_internalRc - Internal return code.
+     * @param[in] i_userData1 - Additional user data [optional].
+     * @param[in] i_userData2 - Additional user data [optional].
+     */
+    static void createAsyncPelWithI2cBusCallout(
+        const types::ErrorType i_errorType,
+        const types::SeverityType i_severity,
+        const std::vector<types::I2cBusCalloutData>& i_callouts,
+        const std::string& i_fileName, const std::string& i_funcName,
+        const uint8_t i_internalRc,
+        const std::optional<std::pair<std::string, std::string>> i_userData1,
+        const std::optional<std::pair<std::string, std::string>> i_userData2);
+
+    /**
+     * @brief An API to create a PEL.
+     *
+     * @param[in] i_errorType - Enum to map with event message name.
+     * @param[in] i_severity - Severity of the event.
+     * @param[in] i_fileName - File name.
+     * @param[in] i_funcName - Function name.
+     * @param[in] i_internalRc - Internal return code.
+     * @param[in] i_description - Error description.
+     * @param[in] i_userData1 - Additional user data [optional].
+     * @param[in] i_userData2 - Additional user data [optional].
+     * @param[in] i_symFru - Symblolic FRU callout data [optional].
+     * @param[in] i_procedure - Procedure callout data [optional].
+     *
+     * @todo: Symbolic FRU and procedure callout needs to be handled in this
+     * API.
+     */
+    static void createAsyncPel(
+        const types::ErrorType& i_errorType,
+        const types::SeverityType& i_severity, const std::string& i_fileName,
+        const std::string& i_funcName, const uint8_t i_internalRc,
+        const std::string& i_description,
+        const std::optional<std::string> i_userData1,
+        const std::optional<std::string> i_userData2,
+        const std::optional<std::string> i_symFru,
+        const std::optional<std::string> i_procedure);
+
+    /**
+     * @brief An API to create PEL.
+     *
+     * This API makes synchronous call to phosphor-logging Create method.
+     *
+     * @param[in] i_errorType - Enum to map with event message name.
+     * @param[in] i_severity - Severity of the event.
+     * @param[in] i_fileName - File name.
+     * @param[in] i_funcName - Function name.
+     * @param[in] i_internalRc - Internal return code.
+     * @param[in] i_description - Error description.
+     * @param[in] i_userData1 - Additional user data [optional].
+     * @param[in] i_userData2 - Additional user data [optional].
+     * @param[in] i_symFru - Symblolic FRU callout data [optional].s
+     * @param[in] i_procedure - Procedure callout data [optional].
+     *
+     * @todo: Symbolic FRU and procedure callout needs to be handled in this
+     * API.
+     */
+    static void createSyncPel(
+        const types::ErrorType& i_errorType,
+        const types::SeverityType& i_severity, const std::string& i_fileName,
+        const std::string& i_funcName, const uint8_t i_internalRc,
+        const std::string& i_description,
+        const std::optional<std::string> i_userData1,
+        const std::optional<std::string> i_userData2,
+        const std::optional<std::string> i_symFru,
+        const std::optional<std::string> i_procedure);
+
+  private:
+    static const std::unordered_map<types::SeverityType, std::string>
+        m_severityMap;
+    static const std::unordered_map<types::ErrorType, std::string>
+        m_errorMsgMap;
+    static const std::unordered_map<types::CalloutPriority, std::string>
+        m_priorityMap;
+};
+} // namespace vpd
diff --git a/vpd-manager/include/exceptions.hpp b/vpd-manager/include/exceptions.hpp
new file mode 100644
index 0000000..a787d08
--- /dev/null
+++ b/vpd-manager/include/exceptions.hpp
@@ -0,0 +1,157 @@
+#pragma once
+
+#include <stdexcept>
+
+namespace vpd
+{
+/** @class Exception
+ * @brief This class inherits std::runtime_error and overrrides "what" method
+ * to return the description of exception.
+ * This class also works as base class for custom exception classes for
+ * VPD repository.
+ */
+class Exception : public std::runtime_error
+{
+  public:
+    // deleted methods
+    Exception() = delete;
+    Exception(const Exception&) = delete;
+    Exception(Exception&&) = delete;
+    Exception& operator=(const Exception&) = delete;
+
+    // default destructor
+    ~Exception() = default;
+
+    /** @brief constructor
+     *
+     *  @param[in] msg - Information w.r.t exception.
+     */
+    explicit Exception(const std::string& msg) :
+        std::runtime_error(msg), m_errMsg(msg)
+    {}
+
+    /** @brief inline method to return exception string.
+     *
+     * This is overridden method of std::runtime class.
+     */
+    inline const char* what() const noexcept override
+    {
+        return m_errMsg.c_str();
+    }
+
+  private:
+    /** @brief string to hold the reason of exception */
+    std::string m_errMsg;
+
+}; // class Exception
+
+/** @class EccException
+ *
+ *  @brief This class extends Exceptions class and define type for ECC related
+ * exception in VPD.
+ */
+class EccException : public Exception
+{
+  public:
+    // deleted methods
+    EccException() = delete;
+    EccException(const EccException&) = delete;
+    EccException(EccException&&) = delete;
+    EccException& operator=(const EccException&) = delete;
+
+    // default destructor
+    ~EccException() = default;
+
+    /** @brief constructor
+     *
+     *  @param[in] msg - Information w.r.t exception.
+     */
+    explicit EccException(const std::string& msg) : Exception(msg) {}
+
+}; // class EccException
+
+/** @class DataException
+ *
+ * @brief This class extends Exceptions class and define type for data related
+ * exception in VPD
+ */
+class DataException : public Exception
+{
+  public:
+    // deleted methods
+    DataException() = delete;
+    DataException(const DataException&) = delete;
+    DataException(DataException&&) = delete;
+    DataException& operator=(const DataException&) = delete;
+
+    // default destructor
+    ~DataException() = default;
+
+    /** @brief constructor
+     *
+     *  @param[in] msg - string to define exception
+     */
+    explicit DataException(const std::string& msg) : Exception(msg) {}
+
+}; // class DataException
+
+class JsonException : public Exception
+{
+  public:
+    // deleted methods
+    JsonException() = delete;
+    JsonException(const JsonException&) = delete;
+    JsonException(JsonException&&) = delete;
+    JsonException& operator=(const JsonException&) = delete;
+
+    // default destructor
+    ~JsonException() = default;
+
+    /** @brief constructor
+     *  @param[in] msg - Information w.r.t. exception.
+     *  @param[in] path - Json path
+     */
+    JsonException(const std::string& msg, const std::string& path) :
+        Exception(msg), m_jsonPath(path)
+    {}
+
+    /** @brief Json path getter method.
+     *
+     *  @return - Json path
+     */
+    inline std::string getJsonPath() const
+    {
+        return m_jsonPath;
+    }
+
+  private:
+    /** To hold the path of Json that failed*/
+    std::string m_jsonPath;
+
+}; // class JSonException
+
+/** @class GpioException
+ *  @brief Custom handler for GPIO exception.
+ *
+ *  This class extends Exceptions class and define
+ *  type for GPIO related exception in VPD.
+ */
+class GpioException : public Exception
+{
+  public:
+    // deleted methods
+    GpioException() = delete;
+    GpioException(const GpioException&) = delete;
+    GpioException(GpioException&&) = delete;
+    GpioException& operator=(const GpioException&) = delete;
+
+    // default destructor
+    ~GpioException() = default;
+
+    /** @brief constructor
+     *  @param[in] msg - string to define exception
+     */
+    explicit GpioException(const std::string& msg) : Exception(msg) {}
+};
+
+} // namespace vpd
diff --git a/vpd-manager/include/gpio_monitor.hpp b/vpd-manager/include/gpio_monitor.hpp
new file mode 100644
index 0000000..476a31d
--- /dev/null
+++ b/vpd-manager/include/gpio_monitor.hpp
@@ -0,0 +1,142 @@
+#pragma once
+
+#include "worker.hpp"
+
+#include <boost/asio/steady_timer.hpp>
+#include <nlohmann/json.hpp>
+#include <sdbusplus/asio/connection.hpp>
+
+#include <vector>
+
+namespace vpd
+{
+/**
+ * @brief class for GPIO event handling.
+ *
+ * Responsible for detecting events and handling them. It continuously
+ * monitors the presence of the FRU. If it detects any change, performs
+ * deletion of FRU VPD if FRU is not present, otherwise performs VPD
+ * collection if FRU gets added.
+ */
+class GpioEventHandler
+{
+  public:
+    GpioEventHandler() = delete;
+    ~GpioEventHandler() = default;
+    GpioEventHandler(const GpioEventHandler&) = delete;
+    GpioEventHandler& operator=(const GpioEventHandler&) = delete;
+    GpioEventHandler(GpioEventHandler&&) = delete;
+    GpioEventHandler& operator=(GpioEventHandler&&) = delete;
+
+    /**
+     * @brief Constructor
+     *
+     * @param[in] i_fruPath - EEPROM path of the FRU.
+     * @param[in] i_worker - pointer to the worker object.
+     * @param[in] i_ioContext - pointer to the io context object
+     */
+    GpioEventHandler(
+        const std::string i_fruPath, const std::shared_ptr<Worker>& i_worker,
+        const std::shared_ptr<boost::asio::io_context>& i_ioContext) :
+        m_fruPath(i_fruPath), m_worker(i_worker)
+    {
+        setEventHandlerForGpioPresence(i_ioContext);
+    }
+
+  private:
+    /**
+     * @brief API to take action based on GPIO presence pin value.
+     *
+     * This API takes action based on the change in the presence pin value.
+     * It performs deletion of FRU VPD if FRU is not present, otherwise performs
+     * VPD collection if FRU gets added.
+     *
+     * @param[in] i_isFruPresent - Holds the present status of the FRU.
+     */
+    void handleChangeInGpioPin(const bool& i_isFruPresent);
+
+    /**
+     * @brief An API to set event handler for FRUs GPIO presence.
+     *
+     * An API to set timer to call event handler to detect GPIO presence
+     * of the FRU.
+     *
+     * @param[in] i_ioContext - pointer to io context object
+     */
+    void setEventHandlerForGpioPresence(
+        const std::shared_ptr<boost::asio::io_context>& i_ioContext);
+
+    /**
+     * @brief API to handle timer expiry.
+     *
+     * This API handles timer expiry and checks on the GPIO presence state,
+     * takes action if there is any change in the GPIO presence value.
+     *
+     * @param[in] i_errorCode - Error Code
+     * @param[in] i_timerObj - Pointer to timer Object.
+     */
+    void handleTimerExpiry(
+        const boost::system::error_code& i_errorCode,
+        const std::shared_ptr<boost::asio::steady_timer>& i_timerObj);
+
+    const std::string m_fruPath;
+
+    const std::shared_ptr<Worker>& m_worker;
+
+    // Preserves the GPIO pin value to compare. Default value is false.
+    bool m_prevPresencePinValue = false;
+};
+
+class GpioMonitor
+{
+  public:
+    GpioMonitor() = delete;
+    ~GpioMonitor() = default;
+    GpioMonitor(const GpioMonitor&) = delete;
+    GpioMonitor& operator=(const GpioMonitor&) = delete;
+    GpioMonitor(GpioMonitor&&) = delete;
+    GpioMonitor& operator=(GpioMonitor&&) = delete;
+
+    /**
+     * @brief constructor
+     *
+     * @param[in] i_sysCfgJsonObj - System config JSON Object.
+     * @param[in] i_worker - pointer to the worker object.
+     * @param[in] i_ioContext - pointer to IO context object.
+     */
+    GpioMonitor(const nlohmann::json i_sysCfgJsonObj,
+                const std::shared_ptr<Worker>& i_worker,
+                const std::shared_ptr<boost::asio::io_context>& i_ioContext) :
+        m_sysCfgJsonObj(i_sysCfgJsonObj)
+    {
+        if (!m_sysCfgJsonObj.empty())
+        {
+            initHandlerForGpio(i_ioContext, i_worker);
+        }
+        else
+        {
+            throw std::runtime_error(
+                "Gpio Monitoring can't be instantiated with empty config JSON");
+        }
+    }
+
+  private:
+    /**
+     * @brief API to instantiate GpioEventHandler for GPIO pins.
+     *
+     * This API will extract the GPIO information from system config JSON
+     * and instantiate event handler for GPIO pins.
+     *
+     * @param[in] i_ioContext - Pointer to IO context object.
+     * @param[in] i_worker - Pointer to worker class.
+     */
+    void initHandlerForGpio(
+        const std::shared_ptr<boost::asio::io_context>& i_ioContext,
+        const std::shared_ptr<Worker>& i_worker);
+
+    // Array of event handlers for all the attachable FRUs.
+    std::vector<std::shared_ptr<GpioEventHandler>> m_gpioEventHandlerObjects;
+
+    const nlohmann::json& m_sysCfgJsonObj;
+};
+} // namespace vpd
diff --git a/vpd-manager/include/ipz_parser.hpp b/vpd-manager/include/ipz_parser.hpp
new file mode 100644
index 0000000..2d50ddd
--- /dev/null
+++ b/vpd-manager/include/ipz_parser.hpp
@@ -0,0 +1,273 @@
+#pragma once
+
+#include "logger.hpp"
+#include "parser_interface.hpp"
+#include "types.hpp"
+
+#include <fstream>
+#include <string_view>
+
+namespace vpd
+{
+/**
+ * @brief Concrete class to implement IPZ VPD parsing.
+ *
+ * The class inherits ParserInterface interface class and overrides the parser
+ * functionality to implement parsing logic for IPZ VPD format.
+ */
+class IpzVpdParser : public ParserInterface
+{
+  public:
+    // Deleted APIs
+    IpzVpdParser() = delete;
+    IpzVpdParser(const IpzVpdParser&) = delete;
+    IpzVpdParser& operator=(const IpzVpdParser&) = delete;
+    IpzVpdParser(IpzVpdParser&&) = delete;
+    IpzVpdParser& operator=(IpzVpdParser&&) = delete;
+
+    /**
+     * @brief Constructor.
+     *
+     * @param[in] vpdVector - VPD data.
+     * @param[in] vpdFilePath - Path to VPD EEPROM.
+     * @param[in] vpdStartOffset - Offset from where VPD starts in the file.
+     * Defaulted to 0.
+     */
+    IpzVpdParser(const types::BinaryVector& vpdVector,
+                 const std::string& vpdFilePath, size_t vpdStartOffset = 0) :
+        m_vpdVector(vpdVector), m_vpdFilePath(vpdFilePath),
+        m_vpdStartOffset(vpdStartOffset)
+    {
+        try
+        {
+            m_vpdFileStream.exceptions(
+                std::ifstream::badbit | std::ifstream::failbit);
+            m_vpdFileStream.open(vpdFilePath, std::ios::in | std::ios::out |
+                                                  std::ios::binary);
+        }
+        catch (const std::fstream::failure& e)
+        {
+            logging::logMessage(e.what());
+        }
+    }
+
+    /**
+     * @brief Defaul destructor.
+     */
+    ~IpzVpdParser() = default;
+
+    /**
+     * @brief API to parse IPZ VPD file.
+     *
+     * Note: Caller needs to check validity of the map returned. Throws
+     * exception in certain situation, needs to be handled accordingly.
+     *
+     * @return parsed VPD data.
+     */
+    virtual types::VPDMapVariant parse() override;
+
+    /**
+     * @brief API to check validity of VPD header.
+     *
+     * Note: The API throws exception in case of any failure or malformed VDP.
+     *
+     * @param[in] itrToVPD - Iterator to the beginning of VPD file.
+     * Don't change the parameter to reference as movement of passsed iterator
+     * to an offset is not required after header check.
+     */
+    void checkHeader(types::BinaryVector::const_iterator itrToVPD);
+
+    /**
+     * @brief API to read keyword's value from hardware
+     *
+     * @param[in] i_paramsToReadData - Data required to perform read
+     *
+     * @throw
+     * sdbusplus::xyz::openbmc_project::Common::Device::Error::ReadFailure.
+     *
+     * @return On success return the value read. On failure throw exception.
+     */
+    types::DbusVariantType
+        readKeywordFromHardware(const types::ReadVpdParams i_paramsToReadData);
+
+    /**
+     * @brief API to write keyword's value on hardware.
+     *
+     * @param[in] i_paramsToWriteData - Data required to perform write.
+     *
+     * @throw sdbusplus::xyz::openbmc_project::Common::Error::InvalidArgument.
+     * @throw sdbusplus::xyz::openbmc_project::Common::Error::NotAllowed.
+     * @throw DataException
+     * @throw EccException
+     *
+     *
+     * @return On success returns number of bytes written on hardware, On
+     * failure throws exception.
+     */
+    int writeKeywordOnHardware(const types::WriteVpdParams i_paramsToWriteData);
+
+  private:
+    /**
+     * @brief Check ECC of VPD header.
+     *
+     * @return true/false based on check result.
+     */
+    bool vhdrEccCheck();
+
+    /**
+     * @brief Check ECC of VTOC.
+     *
+     * @return true/false based on check result.
+     */
+    bool vtocEccCheck();
+
+    /**
+     * @brief Check ECC of a record.
+     *
+     * Note: Throws exception in case of failure. Caller need to handle as
+     * required.
+     *
+     * @param[in] iterator - Iterator to the record.
+     * @return success/failre
+     */
+    bool recordEccCheck(types::BinaryVector::const_iterator iterator);
+
+    /**
+     * @brief API to read VTOC record.
+     *
+     * The API reads VTOC record and returns the length of PT keyword.
+     *
+     * Note: Throws exception in case of any error. Caller need to handle as
+     * required.
+     *
+     * @param[in] itrToVPD - Iterator to begining of VPD data.
+     * @return Length of PT keyword.
+     */
+    auto readTOC(types::BinaryVector::const_iterator& itrToVPD);
+
+    /**
+     * @brief API to read PT record.
+     *
+     * Note: Throws exception in case ECC check fails.
+     *
+     * @param[in] itrToPT - Iterator to PT record in VPD vector.
+     * @param[in] ptLength - length of the PT record.
+     * @return List of record's offset.
+     */
+    types::RecordOffsetList readPT(types::BinaryVector::const_iterator& itrToPT,
+                                   auto ptLength);
+
+    /**
+     * @brief API to read keyword data based on its encoding type.
+     *
+     * @param[in] kwdName - Name of the keyword.
+     * @param[in] kwdDataLength - Length of keyword data.
+     * @param[in] itrToKwdData - Iterator to start of keyword data.
+     * @return keyword data, empty otherwise.
+     */
+    std::string readKwData(std::string_view kwdName, std::size_t kwdDataLength,
+                           types::BinaryVector::const_iterator itrToKwdData);
+
+    /**
+     * @brief API to read keyword and its value under a record.
+     *
+     * @param[in] iterator - pointer to the start of keywords under the record.
+     * @return keyword-value map of keywords under that record.
+     */
+    types::IPZVpdMap::mapped_type
+        readKeywords(types::BinaryVector::const_iterator& itrToKwds);
+
+    /**
+     * @brief API to process a record.
+     *
+     * @param[in] recordOffset - Offset of the record in VPD.
+     */
+    void processRecord(auto recordOffset);
+
+    /**
+     * @brief Get keyword's value from record
+     *
+     * @param[in] i_record - Record's name
+     * @param[in] i_keyword - Keyword's name
+     * @param[in] i_recordDataOffset - Record's offset value
+     *
+     * @throw std::runtime_error
+     *
+     * @return On success return bytes read, on failure throws error.
+     */
+    types::BinaryVector getKeywordValueFromRecord(
+        const types::Record& i_recordName, const types::Keyword& i_keywordName,
+        const types::RecordOffset& i_recordDataOffset);
+
+    /**
+     * @brief Get record's details from VTOC's PT keyword value
+     *
+     * This API parses through VTOC's PT keyword value and returns the given
+     * record's offset, record's length, ECC offset and ECC length.
+     *
+     * @param[in] i_record - Record's name.
+     * @param[in] i_vtocOffset - Offset to VTOC record
+     *
+     * @return On success return record's details, on failure return empty
+     * buffer.
+     */
+    types::RecordData
+        getRecordDetailsFromVTOC(const types::Record& l_recordName,
+                                 const types::RecordOffset& i_vtocOffset);
+
+    /**
+     * @brief API to update record's ECC
+     *
+     * This API is required to update the record's ECC based on the record's
+     * current data.
+     *
+     * @param[in] i_recordDataOffset - Record's data offset
+     * @param[in] i_recordDataLength - Record's data length
+     * @param[in] i_recordECCOffset - Record's ECC offset
+     * @param[in] i_recordECCLength - Record's ECC length
+     * @param[in,out] io_vpdVector - FRU VPD in vector to update record's ECC.
+     *
+     * @throw EccException
+     */
+    void updateRecordECC(const auto& i_recordDataOffset,
+                         const auto& i_recordDataLength,
+                         const auto& i_recordECCOffset,
+                         size_t i_recordECCLength,
+                         types::BinaryVector& io_vpdVector);
+
+    /**
+     * @brief API to set record's keyword's value on hardware.
+     *
+     * @param[in] i_recordName - Record name.
+     * @param[in] i_keywordName - Keyword name.
+     * @param[in] i_keywordData - Keyword data.
+     * @param[in] i_recordDataOffset - Offset to record's data.
+     * @param[in,out] io_vpdVector - FRU VPD in vector to read and write
+     * keyword's value.
+     *
+     * @throw DataException
+     *
+     * @return On success returns number of bytes set. On failure returns -1.
+     */
+    int setKeywordValueInRecord(const types::Record& i_recordName,
+                                const types::Keyword& i_keywordName,
+                                const types::BinaryVector& i_keywordData,
+                                const types::RecordOffset& i_recordDataOffset,
+                                types::BinaryVector& io_vpdVector);
+
+    // Holds VPD data.
+    const types::BinaryVector& m_vpdVector;
+
+    // stores parsed VPD data.
+    types::IPZVpdMap m_parsedVPDMap{};
+
+    // Holds the VPD file path
+    const std::string& m_vpdFilePath;
+
+    // Stream to the VPD file. Required to correct ECC
+    std::fstream m_vpdFileStream;
+
+    // VPD start offset. Required for ECC correction.
+    size_t m_vpdStartOffset = 0;
+};
+} // namespace vpd
diff --git a/vpd-manager/include/isdimm_parser.hpp b/vpd-manager/include/isdimm_parser.hpp
new file mode 100644
index 0000000..091285c
--- /dev/null
+++ b/vpd-manager/include/isdimm_parser.hpp
@@ -0,0 +1,150 @@
+#pragma once
+
+#include "parser_interface.hpp"
+#include "types.hpp"
+
+#include <string_view>
+
+namespace vpd
+{
+/**
+ * @brief Concrete class to implement JEDEC SPD parsing.
+ *
+ * The class inherits ParserInterface interface class and overrides the parser
+ * functionality to implement parsing logic for JEDEC SPD format.
+ */
+class JedecSpdParser : public ParserInterface
+{
+  public:
+    // Deleted API's
+    JedecSpdParser() = delete;
+    JedecSpdParser(const JedecSpdParser&) = delete;
+    JedecSpdParser& operator=(const JedecSpdParser&) = delete;
+    JedecSpdParser(JedecSpdParser&&) = delete;
+    JedecSpdParser& operator=(JedecSpdParser&&) = delete;
+    ~JedecSpdParser() = default;
+
+    /**
+     * @brief Constructor
+     *
+     * @param[in] i_spdVector - JEDEC SPD data.
+     */
+    explicit JedecSpdParser(const types::BinaryVector& i_spdVector) :
+        m_memSpd(i_spdVector)
+    {}
+
+    /**
+     * @brief Parse the memory SPD binary data.
+     *
+     * Collects and emplace the keyword-value pairs in map.
+     *
+     * @return map of keyword:value
+     */
+    types::VPDMapVariant parse();
+
+  private:
+    /**
+     * @brief An API to read keywords.
+     *
+     * @param[in] i_iterator - iterator to buffer containing SPD
+     * @return- map of kwd:value
+     */
+    types::JedecSpdMap
+        readKeywords(types::BinaryVector::const_iterator& i_iterator);
+
+    /**
+     * @brief This function calculates DIMM size from DDR4 SPD
+     *
+     * @param[in] i_iterator - iterator to buffer containing SPD
+     * @return calculated size or 0 in case of any error.
+     */
+    auto getDDR4DimmCapacity(types::BinaryVector::const_iterator& i_iterator);
+
+    /**
+     * @brief This function calculates part number from DDR4 SPD
+     *
+     * @param[in] i_iterator - iterator to buffer containing SPD
+     * @return calculated part number or a default value.
+     */
+    std::string_view
+        getDDR4PartNumber(types::BinaryVector::const_iterator& i_iterator);
+
+    /**
+     * @brief This function calculates serial number from DDR4 SPD
+     *
+     * @param[in] i_iterator - iterator to buffer containing SPD
+     * @return calculated serial number or a default value.
+     */
+    std::string
+        getDDR4SerialNumber(types::BinaryVector::const_iterator& i_iterator);
+
+    /**
+     * @brief This function allocates FRU number based on part number
+     *
+     * Mappings for FRU number from calculated part number is used
+     * for DDR4 ISDIMM.
+     *
+     * @param[in] i_partNumber - part number of the DIMM
+     * @param[in] i_iterator - iterator to buffer containing SPD
+     * @return allocated FRU number or a default value
+     */
+    std::string_view
+        getDDR4FruNumber(const std::string& i_partNumber,
+                         types::BinaryVector::const_iterator& i_iterator);
+
+    /**
+     * @brief This function allocates CCIN based on part number for DDR4 SPD
+     *
+     * @param[in] i_partNumber - part number of the DIMM
+     * @return allocated CCIN or a default value.
+     */
+    std::string_view getDDR4CCIN(const std::string& i_partNumber);
+
+    /**
+     * @brief This function calculates DIMM size from DDR5 SPD
+     *
+     * @param[in] i_iterator - iterator to buffer containing SPD
+     * @return calculated size or 0 in case of any error.
+     */
+    auto getDDR5DimmCapacity(types::BinaryVector::const_iterator& i_iterator);
+
+    /**
+     * @brief This function calculates part number from DDR5 SPD
+     *
+     * @param[in] i_iterator - iterator to buffer containing SPD
+     * @return calculated part number or a default value.
+     */
+    auto getDDR5PartNumber(types::BinaryVector::const_iterator& i_iterator);
+
+    /**
+     * @brief This function calculates serial number from DDR5 SPD
+     *
+     * @param[in] i_iterator - iterator to buffer containing SPD
+     * @return calculated serial number.
+     */
+    auto getDDR5SerialNumber(types::BinaryVector::const_iterator& i_iterator);
+
+    /**
+     * @brief This function allocates FRU number based on part number
+     *
+     * Mappings for FRU number from calculated part number is used
+     * for DDR5 ISDIMM.
+     *
+     * @param[in] i_partNumber - part number of the DIMM
+     * @return allocated FRU number.
+     */
+    auto getDDR5FruNumber(const std::string& i_partNumber);
+
+    /**
+     * @brief This function allocates CCIN based on part number for DDR5 SPD
+     *
+     * @param[in] i_partNumber - part number of the DIMM
+     * @return allocated CCIN.
+     */
+    auto getDDR5CCIN(const std::string& i_partNumber);
+
+    // SPD file to be parsed
+    const types::BinaryVector& m_memSpd;
+};
+
+} // namespace vpd
diff --git a/vpd-manager/include/keyword_vpd_parser.hpp b/vpd-manager/include/keyword_vpd_parser.hpp
new file mode 100644
index 0000000..ae30a34
--- /dev/null
+++ b/vpd-manager/include/keyword_vpd_parser.hpp
@@ -0,0 +1,97 @@
+#pragma once
+
+#include "parser_interface.hpp"
+#include "types.hpp"
+
+namespace vpd
+{
+
+/**
+ * @brief Concrete class to implement Keyword VPD parsing
+ *
+ * The class inherits ParserInterface class and overrides the parser
+ * functionality to implement parsing logic for Keyword VPD format.
+ */
+class KeywordVpdParser : public ParserInterface
+{
+  public:
+    KeywordVpdParser() = delete;
+    KeywordVpdParser(const KeywordVpdParser&) = delete;
+    KeywordVpdParser(KeywordVpdParser&&) = delete;
+    ~KeywordVpdParser() = default;
+
+    /**
+     * @brief Constructor
+     *
+     * @param kwVpdVector - move it to object's m_keywordVpdVector
+     */
+    KeywordVpdParser(const types::BinaryVector& kwVpdVector) :
+        m_keywordVpdVector(kwVpdVector),
+        m_vpdIterator(m_keywordVpdVector.begin())
+    {}
+
+    /**
+     * @brief A wrapper function to parse the keyword VPD binary data.
+     *
+     * It validates certain tags and checksum data, calls helper function
+     * to parse and emplace the data as keyword-value pairs in KeywordVpdMap.
+     *
+     * @throw DataException - VPD is not valid
+     * @return map of keyword:value
+     */
+    types::VPDMapVariant parse();
+
+  private:
+    /**
+     * @brief Parse the VPD data and emplace them as pair into the Map.
+     *
+     * @throw DataException - VPD data size is 0, check VPD
+     * @return map of keyword:value
+     */
+    types::KeywordVpdMap populateVpdMap();
+
+    /**
+     * @brief Validate checksum.
+     *
+     * Finding the 2's complement of sum of all the
+     * keywords,values and large resource identifier string.
+     *
+     * @param[in] i_checkSumStart - VPD iterator pointing at checksum start
+     * value
+     * @param[in] i_checkSumEnd - VPD iterator pointing at checksum end value
+     * @throw DataException - checksum invalid, check VPD
+     */
+    void validateChecksum(types::BinaryVector::const_iterator i_checkSumStart,
+                          types::BinaryVector::const_iterator i_checkSumEnd);
+
+    /**
+     * @brief It reads 2 bytes from current VPD pointer
+     *
+     * @return 2 bytes of VPD data
+     */
+    inline size_t getKwDataSize()
+    {
+        return (*(m_vpdIterator + 1) << 8 | *m_vpdIterator);
+    }
+
+    /**
+     * @brief Check for given number of bytes validity
+     *
+     * Check if number of elements from (begining of the vector) to (iterator +
+     * numberOfBytes) is lesser than or equal to the total no.of elements in
+     * the vector. This check is performed before advancement of the iterator.
+     *
+     * @param[in] numberOfBytes - no.of positions the iterator is going to be
+     * iterated
+     *
+     * @throw DataException - Truncated VPD data, check VPD.
+     */
+    void checkNextBytesValidity(uint8_t numberOfBytes);
+
+    /*Vector of keyword VPD data*/
+    const types::BinaryVector& m_keywordVpdVector;
+
+    /*Iterator to VPD data*/
+    types::BinaryVector::const_iterator m_vpdIterator;
+};
+} // namespace vpd
diff --git a/vpd-manager/include/logger.hpp b/vpd-manager/include/logger.hpp
new file mode 100644
index 0000000..a4160c1
--- /dev/null
+++ b/vpd-manager/include/logger.hpp
@@ -0,0 +1,26 @@
+#pragma once
+
+#include <iostream>
+#include <source_location>
+#include <string_view>
+
+namespace vpd
+{
+/**
+ * @brief The namespace defines logging related methods for VPD.
+ */
+namespace logging
+{
+
+/**
+ * @brief An api to log message.
+ * This API should be called to log message. It will auto append information
+ * like file name, line and function name to the message being logged.
+ *
+ * @param[in] message - Information that we want  to log.
+ * @param[in] location - Object of source_location class.
+ */
+void logMessage(std::string_view message, const std::source_location& location =
+                                              std::source_location::current());
+} // namespace logging
+} // namespace vpd
diff --git a/vpd-manager/include/manager.hpp b/vpd-manager/include/manager.hpp
new file mode 100644
index 0000000..cb64123
--- /dev/null
+++ b/vpd-manager/include/manager.hpp
@@ -0,0 +1,300 @@
+#pragma once
+
+#include "constants.hpp"
+#include "gpio_monitor.hpp"
+#include "types.hpp"
+#include "worker.hpp"
+
+#include <sdbusplus/asio/object_server.hpp>
+
+namespace vpd
+{
+/**
+ * @brief Class to manage VPD processing.
+ *
+ * The class is responsible to implement methods to manage VPD on the system.
+ * It also implements methods to be exposed over D-Bus required to access/edit
+ * VPD data.
+ */
+class Manager
+{
+  public:
+    /**
+     * List of deleted methods.
+     */
+    Manager(const Manager&) = delete;
+    Manager& operator=(const Manager&) = delete;
+    Manager(Manager&&) = delete;
+
+    /**
+     * @brief Constructor.
+     *
+     * @param[in] ioCon - IO context.
+     * @param[in] iFace - interface to implement.
+     * @param[in] connection - Dbus Connection.
+     */
+    Manager(const std::shared_ptr<boost::asio::io_context>& ioCon,
+            const std::shared_ptr<sdbusplus::asio::dbus_interface>& iFace,
+            const std::shared_ptr<sdbusplus::asio::connection>& asioConnection);
+
+    /**
+     * @brief Destructor.
+     */
+    ~Manager() = default;
+
+    /**
+     * @brief Update keyword value.
+     *
+     * This API is used to update keyword value on the given input path and its
+     * redundant path(s) if any taken from system config JSON.
+     *
+     * To update IPZ type VPD, input parameter for writing should be in the form
+     * of (Record, Keyword, Value). Eg: ("VINI", "SN", {0x01, 0x02, 0x03}).
+     *
+     * To update Keyword type VPD, input parameter for writing should be in the
+     * form of (Keyword, Value). Eg: ("PE", {0x01, 0x02, 0x03}).
+     *
+     * @param[in] i_vpdPath - Path (inventory object path/FRU EEPROM path).
+     * @param[in] i_paramsToWriteData - Input details.
+     *
+     * @return On success returns number of bytes written, on failure returns
+     * -1.
+     */
+    int updateKeyword(const types::Path i_vpdPath,
+                      const types::WriteVpdParams i_paramsToWriteData);
+
+    /**
+     * @brief Update keyword value on hardware.
+     *
+     * This API is used to update keyword value on hardware. Updates only on the
+     * given input hardware path, does not look for corresponding redundant or
+     * primary path against the given path. To update corresponding paths, make
+     * separate call with respective path.
+     *
+     * To update IPZ type VPD, input parameter for writing should be in the form
+     * of (Record, Keyword, Value). Eg: ("VINI", "SN", {0x01, 0x02, 0x03}).
+     *
+     * To update Keyword type VPD, input parameter for writing should be in the
+     * form of (Keyword, Value). Eg: ("PE", {0x01, 0x02, 0x03}).
+     *
+     * @param[in] i_fruPath - EEPROM path of the FRU.
+     * @param[in] i_paramsToWriteData - Input details.
+     *
+     * @return On success returns number of bytes written, on failure returns
+     * -1.
+     */
+    int updateKeywordOnHardware(
+        const types::Path i_fruPath,
+        const types::WriteVpdParams i_paramsToWriteData) noexcept;
+
+    /**
+     * @brief Read keyword value.
+     *
+     * API can be used to read VPD keyword from the given input path.
+     *
+     * To read keyword of type IPZ, input parameter for reading should be in the
+     * form of (Record, Keyword). Eg: ("VINI", "SN").
+     *
+     * To read keyword from keyword type VPD, just keyword name has to be
+     * supplied in the input parameter. Eg: ("SN").
+     *
+     * @param[in] i_fruPath - EEPROM path.
+     * @param[in] i_paramsToReadData - Input details.
+     *
+     * @throw
+     * sdbusplus::xyz::openbmc_project::Common::Device::Error::ReadFailure.
+     *
+     * @return On success returns the read value in variant of array of bytes.
+     * On failure throws exception.
+     */
+    types::DbusVariantType
+        readKeyword(const types::Path i_fruPath,
+                    const types::ReadVpdParams i_paramsToReadData);
+
+    /**
+     * @brief Collect single FRU VPD
+     * API can be used to perform VPD collection for the given FRU, only if the
+     * current state of the system matches with the state at which the FRU is
+     * allowed for VPD recollection.
+     *
+     * @param[in] i_dbusObjPath - D-bus object path
+     */
+    void collectSingleFruVpd(
+        const sdbusplus::message::object_path& i_dbusObjPath);
+
+    /**
+     * @brief Delete single FRU VPD
+     * API can be used to perform VPD deletion for the given FRU.
+     *
+     * @param[in] i_dbusObjPath - D-bus object path
+     */
+    void deleteSingleFruVpd(
+        const sdbusplus::message::object_path& i_dbusObjPath);
+
+    /**
+     * @brief Get expanded location code.
+     *
+     * API to get expanded location code from the unexpanded location code.
+     *
+     * @param[in] i_unexpandedLocationCode - Unexpanded location code.
+     * @param[in] i_nodeNumber - Denotes the node in case of a multi-node
+     * configuration, defaulted to zero incase of single node system.
+     *
+     * @throw xyz.openbmc_project.Common.Error.InvalidArgument for
+     * invalid argument.
+     *
+     * @return Location code of the FRU.
+     */
+    std::string getExpandedLocationCode(
+        const std::string& i_unexpandedLocationCode,
+        [[maybe_unused]] const uint16_t i_nodeNumber = 0);
+
+    /**
+     * @brief Get D-Bus object path of FRUs from expanded location code.
+     *
+     * An API to get list of FRU D-Bus object paths for a given expanded
+     * location code.
+     *
+     * @param[in] i_expandedLocationCode - Expanded location code.
+     *
+     * @throw xyz.openbmc_project.Common.Error.InvalidArgument for
+     * invalid argument.
+     *
+     * @return List of FRUs D-Bus object paths for the given location code.
+     */
+    types::ListOfPaths getFrusByExpandedLocationCode(
+        const std::string& i_expandedLocationCode);
+
+    /**
+     * @brief Get D-Bus object path of FRUs from unexpanded location code.
+     *
+     * An API to get list of FRU D-Bus object paths for a given unexpanded
+     * location code.
+     *
+     * @param[in] i_unexpandedLocationCode - Unexpanded location code.
+     * @param[in] i_nodeNumber - Denotes the node in case of a multi-node
+     * configuration, defaulted to zero incase of single node system.
+     *
+     * @throw xyz.openbmc_project.Common.Error.InvalidArgument for
+     * invalid argument.
+     *
+     * @return List of FRUs D-Bus object paths for the given location code.
+     */
+    types::ListOfPaths getFrusByUnexpandedLocationCode(
+        const std::string& i_unexpandedLocationCode,
+        [[maybe_unused]] const uint16_t i_nodeNumber = 0);
+
+    /**
+     * @brief Get Hardware path
+     * API can be used to get EEPROM path for the given inventory path.
+     *
+     * @param[in] i_dbusObjPath - D-bus object path
+     *
+     * @return Corresponding EEPROM path.
+     */
+    std::string getHwPath(const sdbusplus::message::object_path& i_dbusObjPath);
+
+    /**
+     * @brief  Perform VPD recollection
+     * This api will trigger parser to perform VPD recollection for FRUs that
+     * can be replaced at standby.
+     */
+    void performVpdRecollection();
+
+    /**
+     * @brief Get unexpanded location code.
+     *
+     * An API to get unexpanded location code and node number from expanded
+     * location code.
+     *
+     * @param[in] i_expandedLocationCode - Expanded location code.
+     *
+     * @throw xyz.openbmc_project.Common.Error.InvalidArgument for
+     * invalid argument.
+     *
+     * @return Location code in unexpanded format and its node number.
+     */
+    std::tuple<std::string, uint16_t>
+        getUnexpandedLocationCode(const std::string& i_expandedLocationCode);
+
+  private:
+#ifdef IBM_SYSTEM
+    /**
+     * @brief API to set timer to detect system VPD over D-Bus.
+     *
+     * System VPD is required before bus name for VPD-Manager is claimed. Once
+     * system VPD is published, VPD for other FRUs should be collected. This API
+     * detects id system VPD is already published on D-Bus and based on that
+     * triggers VPD collection for rest of the FRUs.
+     *
+     * Note: Throws exception in case of any failure. Needs to be handled by the
+     * caller.
+     */
+    void SetTimerToDetectSVPDOnDbus();
+
+    /**
+     * @brief Set timer to detect and set VPD collection status for the system.
+     *
+     * Collection of FRU VPD is triggered in a separate thread. Resulting in
+     * multiple threads at  a given time. The API creates a timer which on
+     * regular interval will check if all the threads were collected back and
+     * sets the status of the VPD collection for the system accordingly.
+     *
+     * @throw std::runtime_error
+     */
+    void SetTimerToDetectVpdCollectionStatus();
+
+    /**
+     * @brief API to register callback for "AssetTag" property change.
+     */
+    void registerAssetTagChangeCallback();
+
+    /**
+     * @brief Callback API to be triggered on "AssetTag" property change.
+     *
+     * @param[in] i_msg - The callback message.
+     */
+    void processAssetTagChangeCallback(sdbusplus::message_t& i_msg);
+#endif
+
+    /**
+     * @brief An api to check validity of unexpanded location code.
+     *
+     * @param[in] i_locationCode - Unexpanded location code.
+     *
+     * @return True/False based on validity check.
+     */
+    bool isValidUnexpandedLocationCode(const std::string& i_locationCode);
+
+    /**
+     * @brief API to register callback for Host state change.
+     */
+    void registerHostStateChangeCallback();
+
+    /**
+     * @brief API to process host state change callback.
+     *
+     * @param[in] i_msg - Callback message.
+     */
+    void hostStateChangeCallBack(sdbusplus::message_t& i_msg);
+
+    // Shared pointer to asio context object.
+    const std::shared_ptr<boost::asio::io_context>& m_ioContext;
+
+    // Shared pointer to Dbus interface class.
+    const std::shared_ptr<sdbusplus::asio::dbus_interface>& m_interface;
+
+    // Shared pointer to bus connection.
+    const std::shared_ptr<sdbusplus::asio::connection>& m_asioConnection;
+
+    // Shared pointer to worker class
+    std::shared_ptr<Worker> m_worker;
+
+    // Shared pointer to GpioMonitor class
+    std::shared_ptr<GpioMonitor> m_gpioMonitor;
+
+    // Variable to hold current collection status
+    std::string m_vpdCollectionStatus = "NotStarted";
+};
+
+} // namespace vpd
diff --git a/vpd-manager/include/parser.hpp b/vpd-manager/include/parser.hpp
new file mode 100644
index 0000000..9af3088
--- /dev/null
+++ b/vpd-manager/include/parser.hpp
@@ -0,0 +1,126 @@
+#pragma once
+
+#include "parser_factory.hpp"
+#include "parser_interface.hpp"
+#include "types.hpp"
+
+#include <string.h>
+
+#include <nlohmann/json.hpp>
+
+#include <iostream>
+
+namespace vpd
+{
+/**
+ * @brief Class to implement a wrapper around concrete parser class.
+ * The class based on VPD file passed, selects the required parser and exposes
+ * API to parse the VPD and return the parsed data in required format to the
+ * caller.
+ */
+class Parser
+{
+  public:
+    /**
+     * @brief Constructor
+     *
+     * @param[in] vpdFilePath - Path to the VPD file.
+     * @param[in] parsedJson - Parsed JSON.
+     */
+    Parser(const std::string& vpdFilePath, nlohmann::json parsedJson);
+
+    /**
+     * @brief API to implement a generic parsing logic.
+     *
+     * This API is called to select parser based on the vpd data extracted from
+     * the VPD file path passed to the constructor of the class.
+     * It further parses the data based on the parser selected and returned
+     * parsed map to the caller.
+     */
+    types::VPDMapVariant parse();
+
+    /**
+     * @brief API to get parser instance based on VPD type.
+     *
+     * This API detects the VPD type based on the file path passed to the
+     * constructor of the class and returns the respective parser instance.
+     *
+     * @return Parser instance.
+     */
+    std::shared_ptr<vpd::ParserInterface> getVpdParserInstance();
+
+    /**
+     * @brief Update keyword value.
+     *
+     * This API is used to update keyword value on the EEPROM path and its
+     * redundant path(s) if any taken from system config JSON. And also updates
+     * keyword value on DBus.
+     *
+     * To update IPZ type VPD, input parameter for writing should be in the form
+     * of (Record, Keyword, Value). Eg: ("VINI", "SN", {0x01, 0x02, 0x03}).
+     *
+     * To update Keyword type VPD, input parameter for writing should be in the
+     * form of (Keyword, Value). Eg: ("PE", {0x01, 0x02, 0x03}).
+     *
+     * @param[in] i_paramsToWriteData - Input details.
+     *
+     * @return On success returns number of bytes written, on failure returns
+     * -1.
+     */
+    int updateVpdKeyword(const types::WriteVpdParams& i_paramsToWriteData);
+
+    /**
+     * @brief Update keyword value on hardware.
+     *
+     * This API is used to update keyword value on the hardware path.
+     *
+     * To update IPZ type VPD, input parameter for writing should be in the form
+     * of (Record, Keyword, Value). Eg: ("VINI", "SN", {0x01, 0x02, 0x03}).
+     *
+     * To update Keyword type VPD, input parameter for writing should be in the
+     * form of (Keyword, Value). Eg: ("PE", {0x01, 0x02, 0x03}).
+     *
+     * @param[in] i_paramsToWriteData - Input details.
+     *
+     * @return On success returns number of bytes written, on failure returns
+     * -1.
+     */
+    int updateVpdKeywordOnHardware(
+        const types::WriteVpdParams& i_paramsToWriteData);
+
+  private:
+    /**
+     * @brief Update keyword value on redundant path.
+     *
+     * This API is used to update keyword value on the given redundant path(s).
+     *
+     * To update IPZ type VPD, input parameter for writing should be in the form
+     * of (Record, Keyword, Value). Eg: ("VINI", "SN", {0x01, 0x02, 0x03}).
+     *
+     * To update Keyword type VPD, input parameter for writing should be in the
+     * form of (Keyword, Value). Eg: ("PE", {0x01, 0x02, 0x03}).
+     *
+     * @param[in] i_fruPath - Redundant EEPROM path.
+     * @param[in] i_paramsToWriteData - Input details.
+     *
+     * @return On success returns number of bytes written, on failure returns
+     * -1.
+     */
+    int updateVpdKeywordOnRedundantPath(
+        const std::string& i_fruPath,
+        const types::WriteVpdParams& i_paramsToWriteData);
+
+    // holds offfset to VPD if applicable.
+    size_t m_vpdStartOffset = 0;
+
+    // Path to the VPD file
+    const std::string& m_vpdFilePath;
+
+    // Path to configuration file, can be empty.
+    nlohmann::json m_parsedJson;
+
+    // Vector to hold VPD.
+    types::BinaryVector m_vpdVector;
+
+}; // parser
+} // namespace vpd
diff --git a/vpd-manager/include/parser_factory.hpp b/vpd-manager/include/parser_factory.hpp
new file mode 100644
index 0000000..819ec59
--- /dev/null
+++ b/vpd-manager/include/parser_factory.hpp
@@ -0,0 +1,50 @@
+#pragma once
+
+#include "logger.hpp"
+#include "parser_interface.hpp"
+#include "types.hpp"
+
+#include <memory>
+
+namespace vpd
+{
+/**
+ * @brief Factory calss to instantiate concrete parser class.
+ *
+ * This class should be used to instantiate an instance of parser class based
+ * on the type of vpd file.
+ */
+class ParserFactory
+{
+  public:
+    // Deleted APIs
+    ParserFactory() = delete;
+    ~ParserFactory() = delete;
+    ParserFactory(const ParserFactory&) = delete;
+    ParserFactory& operator=(const ParserFactory&) = delete;
+    ParserFactory(ParserFactory&&) = delete;
+    ParserFactory& operator=(ParserFactory&&) = delete;
+
+    /**
+     * @brief An API to get object of concrete parser class.
+     *
+     * The method is used to get object of respective parser class based on the
+     * type of VPD extracted from VPD vector passed to the API.
+     * To detect respective parser from VPD vector, add logic into the API
+     * vpdTypeCheck.
+     *
+     * Note: API throws DataException in case vpd type check fails for any
+     * unknown type. Caller responsibility to handle the exception.
+     *
+     * @param[in] i_vpdVector - vpd file content to check for the type.
+     * @param[in] i_vpdFilePath - FRU EEPROM path.
+     * @param[in] i_vpdStartOffset - Offset from where VPD starts in the VPD
+     * file.
+     *
+     * @return - Pointer to concrete parser class object.
+     */
+    static std::shared_ptr<ParserInterface>
+        getParser(const types::BinaryVector& i_vpdVector,
+                  const std::string& i_vpdFilePath, size_t i_vpdStartOffset);
+};
+} // namespace vpd
diff --git a/vpd-manager/include/parser_interface.hpp b/vpd-manager/include/parser_interface.hpp
new file mode 100644
index 0000000..0ff2862
--- /dev/null
+++ b/vpd-manager/include/parser_interface.hpp
@@ -0,0 +1,69 @@
+#pragma once
+
+#include "types.hpp"
+
+#include <variant>
+
+namespace vpd
+{
+/**
+ * @brief Interface class for parsers.
+ *
+ * Any concrete parser class, implementing parsing logic need to derive from
+ * this interface class and override the parse method declared in this class.
+ */
+class ParserInterface
+{
+  public:
+    /**
+     * @brief Pure virtual function for parsing VPD file.
+     *
+     * The API needs to be overridden by all the classes deriving from parser
+     * inerface class to implement respective VPD parsing logic.
+     *
+     * @return parsed format for VPD data, depending upon the
+     * parsing logic.
+     */
+    virtual types::VPDMapVariant parse() = 0;
+
+    /**
+     * @brief Read keyword's value from hardware
+     *
+     * @param[in] types::ReadVpdParams - Parameters required to perform read.
+     *
+     * @return keyword's value on successful read. Exception on failure.
+     */
+    virtual types::DbusVariantType
+        readKeywordFromHardware(const types::ReadVpdParams)
+    {
+        return types::DbusVariantType();
+    }
+
+    /**
+     * @brief API to write keyword's value on hardware.
+     *
+     * This virtual method is created to achieve runtime polymorphism for
+     * hardware writes on VPD of different types. This virtual method can be
+     * redefined at derived classess to implement write according to the type of
+     * VPD.
+     *
+     * @param[in] i_paramsToWriteData - Data required to perform write.
+     *
+     * @throw May throw exception depending on the implementation of derived
+     * methods.
+     * @return On success returns number of bytes written on hardware, On
+     * failure returns -1.
+     */
+    virtual int
+        writeKeywordOnHardware(const types::WriteVpdParams i_paramsToWriteData)
+    {
+        (void)i_paramsToWriteData;
+        return -1;
+    }
+
+    /**
+     * @brief Virtual destructor.
+     */
+    virtual ~ParserInterface() {}
+};
+} // namespace vpd
diff --git a/vpd-manager/include/types.hpp b/vpd-manager/include/types.hpp
new file mode 100644
index 0000000..314aebd
--- /dev/null
+++ b/vpd-manager/include/types.hpp
@@ -0,0 +1,192 @@
+#pragma once
+
+#include <phosphor-logging/elog-errors.hpp>
+#include <sdbusplus/asio/property.hpp>
+#include <sdbusplus/server.hpp>
+#include <xyz/openbmc_project/Common/Device/error.hpp>
+#include <xyz/openbmc_project/Common/error.hpp>
+
+#include <tuple>
+#include <unordered_map>
+#include <variant>
+
+namespace vpd
+{
+namespace types
+{
+
+using BiosProperty = std::tuple<
+    std::string, bool, std::string, std::string, std::string,
+    std::variant<int64_t, std::string>, std::variant<int64_t, std::string>,
+    std::vector<std::tuple<std::string, std::variant<int64_t, std::string>,
+                           std::string>>>;
+using BiosBaseTable =
+    std::variant<std::monostate, std::map<std::string, BiosProperty>>;
+using BiosBaseTableType = std::map<std::string, BiosBaseTable>;
+using BiosAttributeCurrentValue =
+    std::variant<std::monostate, int64_t, std::string>;
+using BiosAttributePendingValue = std::variant<int64_t, std::string>;
+using BiosGetAttrRetType = std::tuple<std::string, BiosAttributeCurrentValue,
+                                      BiosAttributePendingValue>;
+using PendingBIOSAttrItem =
+    std::pair<std::string, std::tuple<std::string, BiosAttributePendingValue>>;
+using PendingBIOSAttrs = std::vector<PendingBIOSAttrItem>;
+
+using BinaryVector = std::vector<uint8_t>;
+
+// This covers mostly all the data type supported over Dbus for a property.
+// clang-format off
+using DbusVariantType = std::variant<
+    std::vector<std::tuple<std::string, std::string, std::string>>,
+    std::vector<std::string>,
+    std::vector<double>,
+    std::string,
+    int64_t,
+    uint64_t,
+    double,
+    int32_t,
+    uint32_t,
+    int16_t,
+    uint16_t,
+    uint8_t,
+    bool,
+    BinaryVector,
+    std::vector<uint32_t>,
+    std::vector<uint16_t>,
+    sdbusplus::message::object_path,
+    std::tuple<uint64_t, std::vector<std::tuple<std::string, std::string, double, uint64_t>>>,
+    std::vector<std::tuple<std::string, std::string>>,
+    std::vector<std::tuple<uint32_t, std::vector<uint32_t>>>,
+    std::vector<std::tuple<uint32_t, size_t>>,
+    std::vector<std::tuple<sdbusplus::message::object_path, std::string,
+                           std::string, std::string>>,
+    PendingBIOSAttrs
+ >;
+
+using MapperGetObject =
+    std::vector<std::pair<std::string, std::vector<std::string>>>;
+using MapperGetSubTree = std::map<std::string, std::map<std::string, std::vector<std::string>>>;
+
+/* A type for holding the innermost map of property::value.*/
+using IPZKwdValueMap = std::unordered_map<std::string, std::string>;
+/*IPZ VPD Map of format <Record name, <keyword, value>>*/
+using IPZVpdMap = std::unordered_map<std::string, IPZKwdValueMap>;
+
+/*Value types supported by Keyword VPD*/
+using KWdVPDValueType = std::variant<BinaryVector,std::string, size_t>;
+/* This hold map of parsed data of keyword VPD type*/
+using KeywordVpdMap = std::unordered_map<std::string, KWdVPDValueType>;
+
+/**
+ * Both Keyword VPD parser and DDIMM parser stores the
+ * parsed VPD in the same format.
+ * To have better readability, two types are defined for underneath data structure.
+*/
+using DdimmVpdMap = KeywordVpdMap;
+
+/**
+ * Both Keyword VPD parser and ISDIMM parser stores the
+ * parsed SPD in the same format.
+*/
+using JedecSpdMap = KeywordVpdMap;
+
+/**
+ * Type to hold keyword::value map of a VPD.
+ * Variant can be extended to support additional type.
+*/
+using VPDKWdValueMap = std::variant<IPZKwdValueMap, KeywordVpdMap>;
+
+/* Map<Property, Value>*/
+using PropertyMap = std::map<std::string, DbusVariantType>;
+/* Map<Interface<Property, Value>>*/
+using InterfaceMap = std::map<std::string, PropertyMap>;
+using ObjectMap = std::map<sdbusplus::message::object_path, InterfaceMap>;
+
+using KwSize = uint8_t;
+using RecordId = uint8_t;
+using RecordSize = uint16_t;
+using RecordType = uint16_t;
+using RecordOffset = uint16_t;
+using RecordLength = uint16_t;
+using ECCOffset = uint16_t;
+using ECCLength = uint16_t;
+using PoundKwSize = uint16_t;
+
+using RecordOffsetList = std::vector<uint32_t>;
+
+using VPDMapVariant = std::variant<std::monostate, IPZVpdMap, KeywordVpdMap>;
+
+using HWVerList = std::vector<std::pair<std::string, std::string>>;
+/**
+ * Map of <systemIM, pair<Default version, vector<HW version, JSON suffix>>>
+*/
+using SystemTypeMap =
+    std::unordered_map<std::string, std::pair<std::string, HWVerList>>;
+
+using Path = std::string;
+using Record = std::string;
+using Keyword = std::string;
+
+using IpzData = std::tuple<Record, Keyword, BinaryVector>;
+using KwData = std::tuple<Keyword, BinaryVector>;
+using VpdData = std::variant<IpzData, KwData>;
+
+using IpzType = std::tuple<Record, Keyword>;
+using ReadVpdParams = std::variant<IpzType, Keyword>;
+using WriteVpdParams = std::variant<IpzData, KwData>;
+
+using ListOfPaths = std::vector<sdbusplus::message::object_path>;
+using RecordData = std::tuple<RecordOffset, RecordLength, ECCOffset, ECCLength>;
+
+using DbusInvalidArgument =
+    sdbusplus::xyz::openbmc_project::Common::Error::InvalidArgument;
+using DbusNotAllowed = sdbusplus::xyz::openbmc_project::Common::Error::NotAllowed;
+
+using InvalidArgument = phosphor::logging::xyz::openbmc_project::Common::InvalidArgument;
+
+namespace DeviceError = sdbusplus::xyz::openbmc_project::Common::Device::Error;
+
+/* PEL Severity enum as defined in [xyz.openbmc_project.Logging.Entry.Level]log.hpp from 'phosphor-logging' repo. */
+enum SeverityType
+{
+    Notice,
+    Informational,
+    Debug,
+    Warning,
+    Critical,
+    Emergency,
+    Alert,
+    Error
+};
+
+/* PEL callout priority from 'phosphor-logging' pel_types.hpp. If any change in 'phosphor-logging', it needs update here as well. */
+enum CalloutPriority
+{
+    High,
+    Medium,
+    MediumGroupA,
+    MediumGroupB,
+    MediumGroupC,
+    Low
+};
+
+/* The Message property of the event entry for creating PEL, to introduce new message needs to be added in 'phosphor-logging' message_registry.json as well. */
+enum ErrorType
+{
+    DefaultValue,
+    InvalidVpdMessage,
+    VpdMismatch,
+    InvalidEeprom,
+    EccCheckFailed,
+    JsonFailure,
+    DbusFailure,
+    InvalidSystem,
+    EssentialFru,
+    GpioError
+};
+
+using InventoryCalloutData = std::tuple<std::string, CalloutPriority>;
+using DeviceCalloutData = std::tuple<std::string, std::string>;
+using I2cBusCalloutData = std::tuple<std::string, std::string, std::string>;
+} // namespace types
+} // namespace vpd
diff --git a/vpd-manager/include/utility/common_utility.hpp b/vpd-manager/include/utility/common_utility.hpp
new file mode 100644
index 0000000..15b33a2
--- /dev/null
+++ b/vpd-manager/include/utility/common_utility.hpp
@@ -0,0 +1,117 @@
+#pragma once
+
+#include "constants.hpp"
+#include "logger.hpp"
+
+#include <algorithm>
+#include <cstdio>
+#include <cstdlib>
+#include <vector>
+
+/**
+ * @brief Namespace to host common utility methods.
+ *
+ * A method qualifies as a common utility function if,
+ * A)It is being used by the utility namespace at the same level as well as
+ * other files directly.
+ * B) The utility should be a leaf node and should not be dependent on any other
+ * utility.
+ *                  *******************
+ *                  | Commmon Utility | - - - - - - -
+ *                  *******************              |
+ *                          /\                       |
+ *                         /  \                      |
+ *         ****************    ****************      |
+ *         | json utility |    | dbus utility |      |
+ *         ****************    ****************      |
+ *                 \                 /               |
+ *                  \               /                |
+ *               ************************            |
+ *               | Vpd specific Utility | - - - - - - -
+ *               ************************
+ */
+
+namespace vpd
+{
+
+namespace commonUtility
+{
+/** @brief Return the hex representation of the incoming byte.
+ *
+ * @param [in] i_aByte - The input byte.
+ * @returns Hex representation of the byte as a character.
+ */
+constexpr auto toHex(size_t i_aByte)
+{
+    constexpr auto l_map = "0123456789abcdef";
+    return l_map[i_aByte];
+}
+
+/**
+ * @brief API to return null at the end of variadic template args.
+ *
+ * @return empty string.
+ */
+inline std::string getCommand()
+{
+    return "";
+}
+
+/**
+ * @brief API to arrange create command.
+ *
+ * @param[in] arguments to create the command
+ * @return Command string
+ */
+template <typename T, typename... Types>
+inline std::string getCommand(T i_arg1, Types... i_args)
+{
+    std::string l_cmd = " " + i_arg1 + getCommand(i_args...);
+
+    return l_cmd;
+}
+
+/**
+ * @brief API to create shell command and execute.
+ *
+ * @throw std::runtime_error.
+ *
+ * @param[in] arguments for command
+ * @returns output of that command
+ */
+template <typename T, typename... Types>
+inline std::vector<std::string> executeCmd(T&& i_path, Types... i_args)
+{
+    std::vector<std::string> l_cmdOutput;
+    std::array<char, constants::CMD_BUFFER_LENGTH> l_buffer;
+
+    std::string l_cmd = i_path + getCommand(i_args...);
+
+    std::unique_ptr<FILE, decltype(&pclose)> l_cmdPipe(
+        popen(l_cmd.c_str(), "r"), pclose);
+
+    if (!l_cmdPipe)
+    {
+        logging::logMessage(
+            "popen failed with error " + std::string(strerror(errno)));
+        throw std::runtime_error("popen failed!");
+    }
+    while (fgets(l_buffer.data(), l_buffer.size(), l_cmdPipe.get()) != nullptr)
+    {
+        l_cmdOutput.emplace_back(l_buffer.data());
+    }
+
+    return l_cmdOutput;
+}
+
+/** @brief Converts string to lower case.
+ *
+ * @param [in] i_string - Input string.
+ */
+inline void toLower(std::string& i_string)
+{
+    std::transform(i_string.begin(), i_string.end(), i_string.begin(),
+                   [](unsigned char l_char) { return std::tolower(l_char); });
+}
+} // namespace commonUtility
+} // namespace vpd
diff --git a/vpd-manager/include/utility/dbus_utility.hpp b/vpd-manager/include/utility/dbus_utility.hpp
new file mode 100644
index 0000000..4c81815
--- /dev/null
+++ b/vpd-manager/include/utility/dbus_utility.hpp
@@ -0,0 +1,567 @@
+#pragma once
+
+#include "constants.hpp"
+#include "logger.hpp"
+#include "types.hpp"
+
+#include <chrono>
+
+namespace vpd
+{
+/**
+ * @brief The namespace defines utlity methods for generic D-Bus operations.
+ */
+namespace dbusUtility
+{
+
+/**
+ * @brief An API to get Map of service and interfaces for an object path.
+ *
+ * The API returns a Map of service name and interfaces for a given pair of
+ * object path and interface list. It can be used to determine service name
+ * which implemets a particular object path and interface.
+ *
+ * Note: It will be caller's responsibility to check for empty map returned and
+ * generate appropriate error.
+ *
+ * @param [in] objectPath - Object path under the service.
+ * @param [in] interfaces - Array of interface(s).
+ * @return - A Map of service name to object to interface(s), if success.
+ *           If failed,  empty map.
+ */
+inline types::MapperGetObject getObjectMap(const std::string& objectPath,
+                                           std::span<const char*> interfaces)
+{
+    types::MapperGetObject getObjectMap;
+
+    // interface list is optional argument, hence no check required.
+    if (objectPath.empty())
+    {
+        logging::logMessage("Path value is empty, invalid call to GetObject");
+        return getObjectMap;
+    }
+
+    try
+    {
+        auto bus = sdbusplus::bus::new_default();
+        auto method = bus.new_method_call(
+            "xyz.openbmc_project.ObjectMapper",
+            "/xyz/openbmc_project/object_mapper",
+            "xyz.openbmc_project.ObjectMapper", "GetObject");
+
+        method.append(objectPath, interfaces);
+        auto result = bus.call(method);
+        result.read(getObjectMap);
+    }
+    catch (const sdbusplus::exception::SdBusError& e)
+    {
+        // logging::logMessage(e.what());
+        return getObjectMap;
+    }
+
+    return getObjectMap;
+}
+
+/**
+ * @brief An API to get property map for an interface.
+ *
+ * This API returns a map of property and its value with respect to a particular
+ * interface.
+ *
+ * Note: It will be caller's responsibility to check for empty map returned and
+ * generate appropriate error.
+ *
+ * @param[in] i_service - Service name.
+ * @param[in] i_objectPath - object path.
+ * @param[in] i_interface - Interface, for the properties to be listed.
+ *
+ * @return - A map of property and value of an interface, if success.
+ *           if failed, empty map.
+ */
+inline types::PropertyMap getPropertyMap(const std::string& i_service,
+                                         const std::string& i_objectPath,
+                                         const std::string& i_interface)
+{
+    types::PropertyMap l_propertyValueMap;
+    if (i_service.empty() || i_objectPath.empty() || i_interface.empty())
+    {
+        logging::logMessage("Invalid parameters to get property map");
+        return l_propertyValueMap;
+    }
+
+    try
+    {
+        auto l_bus = sdbusplus::bus::new_default();
+        auto l_method =
+            l_bus.new_method_call(i_service.c_str(), i_objectPath.c_str(),
+                                  "org.freedesktop.DBus.Properties", "GetAll");
+        l_method.append(i_interface);
+        auto l_result = l_bus.call(l_method);
+        l_result.read(l_propertyValueMap);
+    }
+    catch (const sdbusplus::exception::SdBusError& l_ex)
+    {
+        logging::logMessage(l_ex.what());
+    }
+
+    return l_propertyValueMap;
+}
+
+/**
+ * @brief API to get object subtree from D-bus.
+ *
+ * The API returns the map of object, services and interfaces in the
+ * subtree that implement a certain interface. If no interfaces are provided
+ * then all the objects, services and interfaces under the subtree will
+ * be returned.
+ *
+ * Note: Depth can be 0 and interfaces can be null.
+ * It will be caller's responsibility to check for empty vector returned
+ * and generate appropriate error.
+ *
+ * @param[in] i_objectPath - Path to search for an interface.
+ * @param[in] i_depth - Maximum depth of the tree to search.
+ * @param[in] i_interfaces - List of interfaces to search.
+ *
+ * @return - A map of object and its related services and interfaces, if
+ *           success. If failed, empty map.
+ */
+
+inline types::MapperGetSubTree
+    getObjectSubTree(const std::string& i_objectPath, const int& i_depth,
+                     const std::vector<std::string>& i_interfaces)
+{
+    types::MapperGetSubTree l_subTreeMap;
+
+    if (i_objectPath.empty())
+    {
+        logging::logMessage("Object path is empty.");
+        return l_subTreeMap;
+    }
+
+    try
+    {
+        auto l_bus = sdbusplus::bus::new_default();
+        auto l_method = l_bus.new_method_call(
+            constants::objectMapperService, constants::objectMapperPath,
+            constants::objectMapperInf, "GetSubTree");
+        l_method.append(i_objectPath, i_depth, i_interfaces);
+        auto l_result = l_bus.call(l_method);
+        l_result.read(l_subTreeMap);
+    }
+    catch (const sdbusplus::exception::SdBusError& l_ex)
+    {
+        logging::logMessage(l_ex.what());
+    }
+
+    return l_subTreeMap;
+}
+
+/**
+ * @brief An API to read property from Dbus.
+ *
+ * The caller of the API needs to validate the validatity and correctness of the
+ * type and value of data returned. The API will just fetch and retun the data
+ * without any data validation.
+ *
+ * Note: It will be caller's responsibility to check for empty value returned
+ * and generate appropriate error if required.
+ *
+ * @param [in] serviceName - Name of the Dbus service.
+ * @param [in] objectPath - Object path under the service.
+ * @param [in] interface - Interface under which property exist.
+ * @param [in] property - Property whose value is to be read.
+ * @return - Value read from Dbus, if success.
+ *           If failed, empty variant.
+ */
+inline types::DbusVariantType readDbusProperty(
+    const std::string& serviceName, const std::string& objectPath,
+    const std::string& interface, const std::string& property)
+{
+    types::DbusVariantType propertyValue;
+
+    // Mandatory fields to make a read dbus call.
+    if (serviceName.empty() || objectPath.empty() || interface.empty() ||
+        property.empty())
+    {
+        logging::logMessage(
+            "One of the parameter to make Dbus read call is empty.");
+        return propertyValue;
+    }
+
+    try
+    {
+        auto bus = sdbusplus::bus::new_default();
+        auto method =
+            bus.new_method_call(serviceName.c_str(), objectPath.c_str(),
+                                "org.freedesktop.DBus.Properties", "Get");
+        method.append(interface, property);
+
+        auto result = bus.call(method);
+        result.read(propertyValue);
+    }
+    catch (const sdbusplus::exception::SdBusError& e)
+    {
+        return propertyValue;
+    }
+    return propertyValue;
+}
+
+/**
+ * @brief An API to write property on Dbus.
+ *
+ * The caller of this API needs to handle exception thrown by this method to
+ * identify any write failure. The API in no other way indicate write  failure
+ * to the caller.
+ *
+ * Note: It will be caller's responsibility ho handle the exception thrown in
+ * case of write failure and generate appropriate error.
+ *
+ * @param [in] serviceName - Name of the Dbus service.
+ * @param [in] objectPath - Object path under the service.
+ * @param [in] interface - Interface under which property exist.
+ * @param [in] property - Property whose value is to be written.
+ * @param [in] propertyValue - The value to be written.
+ */
+inline void writeDbusProperty(
+    const std::string& serviceName, const std::string& objectPath,
+    const std::string& interface, const std::string& property,
+    const types::DbusVariantType& propertyValue)
+{
+    // Mandatory fields to make a write dbus call.
+    if (serviceName.empty() || objectPath.empty() || interface.empty() ||
+        property.empty())
+    {
+        logging::logMessage(
+            "One of the parameter to make Dbus read call is empty.");
+
+        // caller need to handle the throw to ensure Dbus write success.
+        throw std::runtime_error("Dbus write failed, Parameter empty");
+    }
+
+    try
+    {
+        auto bus = sdbusplus::bus::new_default();
+        auto method =
+            bus.new_method_call(serviceName.c_str(), objectPath.c_str(),
+                                "org.freedesktop.DBus.Properties", "Set");
+        method.append(interface, property, propertyValue);
+        bus.call(method);
+    }
+    catch (const sdbusplus::exception::SdBusError& e)
+    {
+        logging::logMessage(e.what());
+
+        // caller needs to handle this throw to handle error in writing Dbus.
+        throw std::runtime_error("Dbus write failed");
+    }
+}
+
+/**
+ * @brief API to publish data on PIM
+ *
+ * The API calls notify on PIM object to publlish VPD.
+ *
+ * @param[in] objectMap - Object, its interface and data.
+ * @return bool - Status of call to PIM notify.
+ */
+inline bool callPIM(types::ObjectMap&& objectMap)
+{
+    try
+    {
+        for (const auto& l_objectKeyValue : objectMap)
+        {
+            auto l_nodeHandle = objectMap.extract(l_objectKeyValue.first);
+
+            if (l_nodeHandle.key().str.find(constants::pimPath, 0) !=
+                std::string::npos)
+            {
+                l_nodeHandle.key() = l_nodeHandle.key().str.replace(
+                    0, std::strlen(constants::pimPath), "");
+                objectMap.insert(std::move(l_nodeHandle));
+            }
+        }
+
+        auto bus = sdbusplus::bus::new_default();
+        auto pimMsg =
+            bus.new_method_call(constants::pimServiceName, constants::pimPath,
+                                constants::pimIntf, "Notify");
+        pimMsg.append(std::move(objectMap));
+        bus.call(pimMsg);
+    }
+    catch (const sdbusplus::exception::SdBusError& e)
+    {
+        return false;
+    }
+    return true;
+}
+
+/**
+ * @brief API to check if a D-Bus service is running or not.
+ *
+ * Any failure in calling the method "NameHasOwner" implies that the service is
+ * not in a running state. Hence the API returns false in case of any exception
+ * as well.
+ *
+ * @param[in] i_serviceName - D-Bus service name whose status is to be checked.
+ * @return bool - True if the service is running, false otherwise.
+ */
+inline bool isServiceRunning(const std::string& i_serviceName)
+{
+    bool l_retVal = false;
+
+    try
+    {
+        auto l_bus = sdbusplus::bus::new_default();
+        auto l_method = l_bus.new_method_call(
+            "org.freedesktop.DBus", "/org/freedesktop/DBus",
+            "org.freedesktop.DBus", "NameHasOwner");
+        l_method.append(i_serviceName);
+
+        l_bus.call(l_method).read(l_retVal);
+    }
+    catch (const sdbusplus::exception::SdBusError& l_ex)
+    {
+        logging::logMessage(
+            "Call to check service status failed with exception: " +
+            std::string(l_ex.what()));
+    }
+
+    return l_retVal;
+}
+
+/**
+ * @brief API to call "GetAttribute" method uner BIOS manager.
+ *
+ * The API reads the given attribuute from BIOS and returns a tuple of both
+ * current as well as pending value for that attribute.
+ * The API return only the current attribute value if found.
+ * API returns an empty variant of type BiosAttributeCurrentValue in case of any
+ * error.
+ *
+ * @param[in] i_attributeName - Attribute to be read.
+ * @return Tuple of PLDM attribute Type, current attribute value and pending
+ * attribute value.
+ */
+inline types::BiosAttributeCurrentValue
+    biosGetAttributeMethodCall(const std::string& i_attributeName)
+{
+    auto l_bus = sdbusplus::bus::new_default();
+    auto l_method = l_bus.new_method_call(
+        constants::biosConfigMgrService, constants::biosConfigMgrObjPath,
+        constants::biosConfigMgrInterface, "GetAttribute");
+    l_method.append(i_attributeName);
+
+    types::BiosGetAttrRetType l_attributeVal;
+    try
+    {
+        auto l_result = l_bus.call(l_method);
+        l_result.read(std::get<0>(l_attributeVal), std::get<1>(l_attributeVal),
+                      std::get<2>(l_attributeVal));
+    }
+    catch (const sdbusplus::exception::SdBusError& l_ex)
+    {
+        logging::logMessage(
+            "Failed to read BIOS Attribute: " + i_attributeName +
+            " due to error " + std::string(l_ex.what()));
+
+        // TODO: Log an informational PEL here.
+    }
+
+    return std::get<1>(l_attributeVal);
+}
+
+/**
+ * @brief API to check if Chassis is powered on.
+ *
+ * This API queries Phosphor Chassis State Manager to know whether
+ * Chassis is powered on.
+ *
+ * @return true if chassis is powered on, false otherwise
+ */
+inline bool isChassisPowerOn()
+{
+    auto powerState = dbusUtility::readDbusProperty(
+        "xyz.openbmc_project.State.Chassis",
+        "/xyz/openbmc_project/state/chassis0",
+        "xyz.openbmc_project.State.Chassis", "CurrentPowerState");
+
+    if (auto curPowerState = std::get_if<std::string>(&powerState))
+    {
+        if ("xyz.openbmc_project.State.Chassis.PowerState.On" == *curPowerState)
+        {
+            return true;
+        }
+        return false;
+    }
+
+    /*
+        TODO: Add PEL.
+        Callout: Firmware callout
+        Type: Informational
+        Description: Chassis state can't be determined, defaulting to chassis
+        off. : e.what()
+    */
+    return false;
+}
+
+/**
+ * @brief API to check if host is in running state.
+ *
+ * This API reads the current host state from D-bus and returns true if the host
+ * is running.
+ *
+ * @return true if host is in running state. false otherwise.
+ */
+inline bool isHostRunning()
+{
+    const auto l_hostState = dbusUtility::readDbusProperty(
+        constants::hostService, constants::hostObjectPath,
+        constants::hostInterface, "CurrentHostState");
+
+    if (const auto l_currHostState = std::get_if<std::string>(&l_hostState))
+    {
+        if (*l_currHostState == constants::hostRunningState)
+        {
+            return true;
+        }
+    }
+
+    return false;
+}
+
+/**
+ * @brief API to check if BMC is in ready state.
+ *
+ * This API reads the current state of BMC from D-bus and returns true if BMC is
+ * in ready state.
+ *
+ * @return true if BMC is ready, false otherwise.
+ */
+inline bool isBMCReady()
+{
+    const auto l_bmcState = dbusUtility::readDbusProperty(
+        constants::bmcStateService, constants::bmcZeroStateObject,
+        constants::bmcStateInterface, constants::currentBMCStateProperty);
+
+    if (const auto l_currBMCState = std::get_if<std::string>(&l_bmcState))
+    {
+        if (*l_currBMCState == constants::bmcReadyState)
+        {
+            return true;
+        }
+    }
+
+    return false;
+}
+
+/**
+ * @brief An API to enable BMC reboot guard
+ *
+ * This API does a D-Bus method call to enable BMC reboot guard.
+ *
+ * @return On success, returns 0, otherwise returns -1.
+ */
+inline int EnableRebootGuard() noexcept
+{
+    int l_rc{constants::FAILURE};
+    try
+    {
+        auto l_bus = sdbusplus::bus::new_default();
+        auto l_method = l_bus.new_method_call(
+            constants::systemdService, constants::systemdObjectPath,
+            constants::systemdManagerInterface, "StartUnit");
+        l_method.append("reboot-guard-enable.service", "replace");
+        l_bus.call_noreply(l_method);
+        l_rc = constants::SUCCESS;
+    }
+    catch (const sdbusplus::exception::SdBusError& l_ex)
+    {
+        std::string l_errMsg =
+            "D-Bus call to enable BMC reboot guard failed for reason: ";
+        l_errMsg += l_ex.what();
+
+        logging::logMessage(l_errMsg);
+    }
+    return l_rc;
+}
+
+/**
+ * @brief An API to disable BMC reboot guard
+ *
+ * This API disables BMC reboot guard. This API has an inbuilt re-try mechanism.
+ * If Disable Reboot Guard fails, this API attempts to Disable Reboot Guard for
+ * 3 more times at an interval of 333ms.
+ *
+ * @return On success, returns 0, otherwise returns -1.
+ */
+inline int DisableRebootGuard() noexcept
+{
+    int l_rc{constants::FAILURE};
+
+    // A lambda which executes the DBus call to disable BMC reboot guard.
+    auto l_executeDisableRebootGuard = []() -> int {
+        int l_dBusCallRc{constants::FAILURE};
+        try
+        {
+            auto l_bus = sdbusplus::bus::new_default();
+            auto l_method = l_bus.new_method_call(
+                constants::systemdService, constants::systemdObjectPath,
+                constants::systemdManagerInterface, "StartUnit");
+            l_method.append("reboot-guard-disable.service", "replace");
+            l_bus.call_noreply(l_method);
+            l_dBusCallRc = constants::SUCCESS;
+        }
+        catch (const sdbusplus::exception::SdBusError& l_ex)
+        {}
+        return l_dBusCallRc;
+    };
+
+    if (constants::FAILURE == l_executeDisableRebootGuard())
+    {
+        std::function<void()> l_retryDisableRebootGuard;
+
+        // A lambda which tries to disable BMC reboot guard for 3 times at an
+        // interval of 333 ms.
+        l_retryDisableRebootGuard = [&]() {
+            constexpr int MAX_RETRIES{3};
+            static int l_numRetries{0};
+
+            if (l_numRetries < MAX_RETRIES)
+            {
+                l_numRetries++;
+                if (constants::FAILURE == l_executeDisableRebootGuard())
+                {
+                    // sleep for 333ms before next retry. This is just a random
+                    // value so that 3 re-tries * 333ms takes ~1 second in the
+                    // worst case.
+                    const std::chrono::milliseconds l_sleepTime{333};
+                    std::this_thread::sleep_for(l_sleepTime);
+                    l_retryDisableRebootGuard();
+                }
+                else
+                {
+                    l_numRetries = 0;
+                    l_rc = constants::SUCCESS;
+                }
+            }
+            else
+            {
+                // Failed to Disable Reboot Guard even after 3 retries.
+                logging::logMessage("Failed to Disable Reboot Guard after " +
+                                    std::to_string(MAX_RETRIES) + " re-tries");
+                l_numRetries = 0;
+            }
+        };
+
+        l_retryDisableRebootGuard();
+    }
+    else
+    {
+        l_rc = constants::SUCCESS;
+    }
+    return l_rc;
+}
+
+} // namespace dbusUtility
+} // namespace vpd
diff --git a/vpd-manager/include/utility/json_utility.hpp b/vpd-manager/include/utility/json_utility.hpp
new file mode 100644
index 0000000..3dab105
--- /dev/null
+++ b/vpd-manager/include/utility/json_utility.hpp
@@ -0,0 +1,1043 @@
+#pragma once
+
+#include "event_logger.hpp"
+#include "exceptions.hpp"
+#include "logger.hpp"
+#include "types.hpp"
+
+#include <gpiod.hpp>
+#include <nlohmann/json.hpp>
+#include <utility/common_utility.hpp>
+
+#include <fstream>
+#include <type_traits>
+#include <unordered_map>
+
+namespace vpd
+{
+namespace jsonUtility
+{
+
+// forward declaration of API for function map.
+bool processSystemCmdTag(const nlohmann::json& i_parsedConfigJson,
+                         const std::string& i_vpdFilePath,
+                         const std::string& i_baseAction,
+                         const std::string& i_flagToProcess);
+
+// forward declaration of API for function map.
+bool processGpioPresenceTag(
+    const nlohmann::json& i_parsedConfigJson, const std::string& i_vpdFilePath,
+    const std::string& i_baseAction, const std::string& i_flagToProcess);
+
+// forward declaration of API for function map.
+bool procesSetGpioTag(const nlohmann::json& i_parsedConfigJson,
+                      const std::string& i_vpdFilePath,
+                      const std::string& i_baseAction,
+                      const std::string& i_flagToProcess);
+
+// Function pointers to process tags from config JSON.
+typedef bool (*functionPtr)(
+    const nlohmann::json& i_parsedConfigJson, const std::string& i_vpdFilePath,
+    const std::string& i_baseAction, const std::string& i_flagToProcess);
+
+inline std::unordered_map<std::string, functionPtr> funcionMap{
+    {"gpioPresence", processGpioPresenceTag},
+    {"setGpio", procesSetGpioTag},
+    {"systemCmd", processSystemCmdTag}};
+
+/**
+ * @brief API to read VPD offset from JSON file.
+ *
+ * @param[in] i_sysCfgJsonObj - Parsed system config JSON object.
+ * @param[in] i_vpdFilePath - VPD file path.
+ * @return VPD offset if found in JSON, 0 otherwise.
+ */
+inline size_t getVPDOffset(const nlohmann::json& i_sysCfgJsonObj,
+                           const std::string& i_vpdFilePath)
+{
+    if (i_vpdFilePath.empty() || (i_sysCfgJsonObj.empty()) ||
+        (!i_sysCfgJsonObj.contains("frus")))
+    {
+        return 0;
+    }
+
+    if (i_sysCfgJsonObj["frus"].contains(i_vpdFilePath))
+    {
+        return i_sysCfgJsonObj["frus"][i_vpdFilePath].at(0).value("offset", 0);
+    }
+
+    const nlohmann::json& l_fruList =
+        i_sysCfgJsonObj["frus"].get_ref<const nlohmann::json::object_t&>();
+
+    for (const auto& l_fru : l_fruList.items())
+    {
+        const auto l_fruPath = l_fru.key();
+
+        // check if given path is redundant FRU path
+        if (i_vpdFilePath == i_sysCfgJsonObj["frus"][l_fruPath].at(0).value(
+                                 "redundantEeprom", ""))
+        {
+            // Return the offset of redundant EEPROM taken from JSON.
+            return i_sysCfgJsonObj["frus"][l_fruPath].at(0).value("offset", 0);
+        }
+    }
+
+    return 0;
+}
+
+/**
+ * @brief API to parse respective JSON.
+ *
+ * Exception is thrown in case of JSON parse error.
+ *
+ * @param[in] pathToJson - Path to JSON.
+ * @return Parsed JSON.
+ */
+inline nlohmann::json getParsedJson(const std::string& pathToJson)
+{
+    if (pathToJson.empty())
+    {
+        throw std::runtime_error("Path to JSON is missing");
+    }
+
+    if (!std::filesystem::exists(pathToJson) ||
+        std::filesystem::is_empty(pathToJson))
+    {
+        throw std::runtime_error("Incorrect File Path or empty file");
+    }
+
+    std::ifstream jsonFile(pathToJson);
+    if (!jsonFile)
+    {
+        throw std::runtime_error("Failed to access Json path = " + pathToJson);
+    }
+
+    try
+    {
+        return nlohmann::json::parse(jsonFile);
+    }
+    catch (const nlohmann::json::parse_error& e)
+    {
+        throw std::runtime_error("Failed to parse JSON file");
+    }
+}
+
+/**
+ * @brief Get inventory object path from system config JSON.
+ *
+ * Given either D-bus inventory path/FRU EEPROM path/redundant EEPROM path,
+ * this API returns D-bus inventory path if present in JSON.
+ *
+ * @param[in] i_sysCfgJsonObj - System config JSON object
+ * @param[in] i_vpdPath - Path to where VPD is stored.
+ *
+ * @throw std::runtime_error.
+ *
+ * @return On success a valid path is returned, on failure an empty string is
+ * returned or an exception is thrown.
+ */
+inline std::string getInventoryObjPathFromJson(
+    const nlohmann::json& i_sysCfgJsonObj, const std::string& i_vpdPath)
+{
+    if (i_vpdPath.empty())
+    {
+        throw std::runtime_error("Path parameter is empty.");
+    }
+
+    if (!i_sysCfgJsonObj.contains("frus"))
+    {
+        throw std::runtime_error("Missing frus tag in system config JSON.");
+    }
+
+    // check if given path is FRU path
+    if (i_sysCfgJsonObj["frus"].contains(i_vpdPath))
+    {
+        return i_sysCfgJsonObj["frus"][i_vpdPath].at(0).value(
+            "inventoryPath", "");
+    }
+
+    const nlohmann::json& l_fruList =
+        i_sysCfgJsonObj["frus"].get_ref<const nlohmann::json::object_t&>();
+
+    for (const auto& l_fru : l_fruList.items())
+    {
+        const auto l_fruPath = l_fru.key();
+        const auto l_invObjPath =
+            i_sysCfgJsonObj["frus"][l_fruPath].at(0).value("inventoryPath", "");
+
+        // check if given path is redundant FRU path or inventory path
+        if (i_vpdPath == i_sysCfgJsonObj["frus"][l_fruPath].at(0).value(
+                             "redundantEeprom", "") ||
+            (i_vpdPath == l_invObjPath))
+        {
+            return l_invObjPath;
+        }
+    }
+    return std::string();
+}
+
+/**
+ * @brief Process "PostFailAction" defined in config JSON.
+ *
+ * In case there is some error in the processing of "preAction" execution and a
+ * set of procedure needs to be done as a part of post fail action. This base
+ * action can be defined in the config JSON for that FRU and it will be handled
+ * under this API.
+ *
+ * @param[in] i_parsedConfigJson - config JSON
+ * @param[in] i_vpdFilePath - EEPROM file path
+ * @param[in] i_flagToProcess - To identify which flag(s) needs to be processed
+ * under PostFailAction tag of config JSON.
+ * @return - success or failure
+ */
+inline bool executePostFailAction(const nlohmann::json& i_parsedConfigJson,
+                                  const std::string& i_vpdFilePath,
+                                  const std::string& i_flagToProcess)
+{
+    if (i_parsedConfigJson.empty() || i_vpdFilePath.empty() ||
+        i_flagToProcess.empty())
+    {
+        logging::logMessage(
+            "Invalid parameters. Abort processing for post fail action");
+
+        return false;
+    }
+
+    if (!(i_parsedConfigJson["frus"][i_vpdFilePath].at(0))["PostFailAction"]
+             .contains(i_flagToProcess))
+    {
+        logging::logMessage(
+            "Config JSON missing flag " + i_flagToProcess +
+            " to execute post fail action for path = " + i_vpdFilePath);
+
+        return false;
+    }
+
+    for (const auto& l_tags : (i_parsedConfigJson["frus"][i_vpdFilePath].at(
+             0))["PostFailAction"][i_flagToProcess]
+                                  .items())
+    {
+        auto itrToFunction = funcionMap.find(l_tags.key());
+        if (itrToFunction != funcionMap.end())
+        {
+            if (!itrToFunction->second(i_parsedConfigJson, i_vpdFilePath,
+                                       "PostFailAction", i_flagToProcess))
+            {
+                return false;
+            }
+        }
+    }
+
+    return true;
+}
+
+/**
+ * @brief Process "systemCmd" tag for a given FRU.
+ *
+ * The API will process "systemCmd" tag if it is defined in the config
+ * JSON for the given FRU.
+ *
+ * @param[in] i_parsedConfigJson - config JSON
+ * @param[in] i_vpdFilePath - EEPROM file path
+ * @param[in] i_baseAction - Base action for which this tag has been called.
+ * @param[in] i_flagToProcess - Flag nested under the base action for which this
+ * tag has been called.
+ * @return Execution status.
+ */
+inline bool processSystemCmdTag(
+    const nlohmann::json& i_parsedConfigJson, const std::string& i_vpdFilePath,
+    const std::string& i_baseAction, const std::string& i_flagToProcess)
+{
+    if (i_vpdFilePath.empty() || i_parsedConfigJson.empty() ||
+        i_baseAction.empty() || i_flagToProcess.empty())
+    {
+        logging::logMessage(
+            "Invalid parameter. Abort processing of processSystemCmd.");
+        return false;
+    }
+
+    if (!((i_parsedConfigJson["frus"][i_vpdFilePath].at(
+               0)[i_baseAction][i_flagToProcess]["systemCmd"])
+              .contains("cmd")))
+    {
+        logging::logMessage(
+            "Config JSON missing required information to execute system command for EEPROM " +
+            i_vpdFilePath);
+
+        return false;
+    }
+
+    try
+    {
+        const std::string& l_systemCommand =
+            i_parsedConfigJson["frus"][i_vpdFilePath].at(
+                0)[i_baseAction][i_flagToProcess]["systemCmd"]["cmd"];
+
+        commonUtility::executeCmd(l_systemCommand);
+        return true;
+    }
+    catch (const std::exception& e)
+    {
+        std::string l_errMsg = "Process system tag failed for exception: ";
+        l_errMsg += e.what();
+
+        logging::logMessage(l_errMsg);
+        return false;
+    }
+}
+
+/**
+ * @brief Checks for presence of a given FRU using GPIO line.
+ *
+ * This API returns the presence information of the FRU corresponding to the
+ * given VPD file path by setting the presence pin.
+ *
+ * @param[in] i_parsedConfigJson - config JSON
+ * @param[in] i_vpdFilePath - EEPROM file path
+ * @param[in] i_baseAction - Base action for which this tag has been called.
+ * @param[in] i_flagToProcess - Flag nested under the base action for which this
+ * tag has been called.
+ * @return Execution status.
+ */
+inline bool processGpioPresenceTag(
+    const nlohmann::json& i_parsedConfigJson, const std::string& i_vpdFilePath,
+    const std::string& i_baseAction, const std::string& i_flagToProcess)
+{
+    if (i_vpdFilePath.empty() || i_parsedConfigJson.empty() ||
+        i_baseAction.empty() || i_flagToProcess.empty())
+    {
+        logging::logMessage(
+            "Invalid parameter. Abort processing of processGpioPresence tag");
+        return false;
+    }
+
+    if (!(((i_parsedConfigJson["frus"][i_vpdFilePath].at(
+                0)[i_baseAction][i_flagToProcess]["gpioPresence"])
+               .contains("pin")) &&
+          ((i_parsedConfigJson["frus"][i_vpdFilePath].at(
+                0)[i_baseAction][i_flagToProcess]["gpioPresence"])
+               .contains("value"))))
+    {
+        logging::logMessage(
+            "Config JSON missing required information to detect presence for EEPROM " +
+            i_vpdFilePath);
+
+        return false;
+    }
+
+    // get the pin name
+    const std::string& l_presencePinName =
+        i_parsedConfigJson["frus"][i_vpdFilePath].at(
+            0)[i_baseAction][i_flagToProcess]["gpioPresence"]["pin"];
+
+    // get the pin value
+    uint8_t l_presencePinValue = i_parsedConfigJson["frus"][i_vpdFilePath].at(
+        0)[i_baseAction][i_flagToProcess]["gpioPresence"]["value"];
+
+    try
+    {
+        gpiod::line l_presenceLine = gpiod::find_line(l_presencePinName);
+
+        if (!l_presenceLine)
+        {
+            throw GpioException("Couldn't find the GPIO line.");
+        }
+
+        l_presenceLine.request({"Read the presence line",
+                                gpiod::line_request::DIRECTION_INPUT, 0});
+
+        return (l_presencePinValue == l_presenceLine.get_value());
+    }
+    catch (const std::exception& ex)
+    {
+        std::string l_errMsg = "Exception on GPIO line: ";
+        l_errMsg += l_presencePinName;
+        l_errMsg += " Reason: ";
+        l_errMsg += ex.what();
+        l_errMsg += " File: " + i_vpdFilePath + " Pel Logged";
+
+        // ToDo -- Update Internal Rc code.
+        EventLogger::createAsyncPelWithInventoryCallout(
+            types::ErrorType::GpioError, types::SeverityType::Informational,
+            {{getInventoryObjPathFromJson(i_parsedConfigJson, i_vpdFilePath),
+              types::CalloutPriority::High}},
+            std::source_location::current().file_name(),
+            std::source_location::current().function_name(), 0, l_errMsg,
+            std::nullopt, std::nullopt, std::nullopt, std::nullopt);
+
+        logging::logMessage(l_errMsg);
+
+        // Except when GPIO pin value is false, we go and try collecting the
+        // FRU VPD as we couldn't able to read GPIO pin value due to some
+        // error/exception. So returning true in error scenario.
+        return true;
+    }
+}
+
+/**
+ * @brief Process "setGpio" tag for a given FRU.
+ *
+ * This API enables the GPIO line.
+ *
+ * @param[in] i_parsedConfigJson - config JSON
+ * @param[in] i_vpdFilePath - EEPROM file path
+ * @param[in] i_baseAction - Base action for which this tag has been called.
+ * @param[in] i_flagToProcess - Flag nested under the base action for which this
+ * tag has been called.
+ * @return Execution status.
+ */
+inline bool procesSetGpioTag(
+    const nlohmann::json& i_parsedConfigJson, const std::string& i_vpdFilePath,
+    const std::string& i_baseAction, const std::string& i_flagToProcess)
+{
+    if (i_vpdFilePath.empty() || i_parsedConfigJson.empty() ||
+        i_baseAction.empty() || i_flagToProcess.empty())
+    {
+        logging::logMessage(
+            "Invalid parameter. Abort processing of procesSetGpio.");
+        return false;
+    }
+
+    if (!(((i_parsedConfigJson["frus"][i_vpdFilePath].at(
+                0)[i_baseAction][i_flagToProcess]["setGpio"])
+               .contains("pin")) &&
+          ((i_parsedConfigJson["frus"][i_vpdFilePath].at(
+                0)[i_baseAction][i_flagToProcess]["setGpio"])
+               .contains("value"))))
+    {
+        logging::logMessage(
+            "Config JSON missing required information to set gpio line for EEPROM " +
+            i_vpdFilePath);
+
+        return false;
+    }
+
+    const std::string& l_pinName = i_parsedConfigJson["frus"][i_vpdFilePath].at(
+        0)[i_baseAction][i_flagToProcess]["setGpio"]["pin"];
+
+    // Get the value to set
+    uint8_t l_pinValue = i_parsedConfigJson["frus"][i_vpdFilePath].at(
+        0)[i_baseAction][i_flagToProcess]["setGpio"]["value"];
+
+    logging::logMessage(
+        "Setting GPIO: " + l_pinName + " to " + std::to_string(l_pinValue));
+    try
+    {
+        gpiod::line l_outputLine = gpiod::find_line(l_pinName);
+
+        if (!l_outputLine)
+        {
+            throw GpioException("Couldn't find GPIO line.");
+        }
+
+        l_outputLine.request(
+            {"FRU Action", ::gpiod::line_request::DIRECTION_OUTPUT, 0},
+            l_pinValue);
+        return true;
+    }
+    catch (const std::exception& ex)
+    {
+        std::string l_errMsg = "Exception on GPIO line: ";
+        l_errMsg += l_pinName;
+        l_errMsg += " Reason: ";
+        l_errMsg += ex.what();
+        l_errMsg += " File: " + i_vpdFilePath + " Pel Logged";
+
+        // ToDo -- Update Internal RC code
+        EventLogger::createAsyncPelWithInventoryCallout(
+            types::ErrorType::GpioError, types::SeverityType::Informational,
+            {{getInventoryObjPathFromJson(i_parsedConfigJson, i_vpdFilePath),
+              types::CalloutPriority::High}},
+            std::source_location::current().file_name(),
+            std::source_location::current().function_name(), 0, l_errMsg,
+            std::nullopt, std::nullopt, std::nullopt, std::nullopt);
+
+        logging::logMessage(l_errMsg);
+
+        return false;
+    }
+}
+
+/**
+ * @brief Process any action, if defined in config JSON.
+ *
+ * If any FRU(s) requires any special handling, then this base action can be
+ * defined for that FRU in the config JSON, processing of which will be handled
+ * in this API.
+ * Examples of action - preAction, PostAction etc.
+ *
+ * @param[in] i_parsedConfigJson - config JSON
+ * @param[in] i_action - Base action to be performed.
+ * @param[in] i_vpdFilePath - EEPROM file path
+ * @param[in] i_flagToProcess - To identify which flag(s) needs to be processed
+ * under PreAction tag of config JSON.
+ * @return - success or failure
+ */
+inline bool executeBaseAction(
+    const nlohmann::json& i_parsedConfigJson, const std::string& i_action,
+    const std::string& i_vpdFilePath, const std::string& i_flagToProcess)
+{
+    if (i_flagToProcess.empty() || i_action.empty() || i_vpdFilePath.empty() ||
+        !i_parsedConfigJson.contains("frus"))
+    {
+        logging::logMessage("Invalid parameter");
+        return false;
+    }
+
+    if (!i_parsedConfigJson["frus"].contains(i_vpdFilePath))
+    {
+        logging::logMessage(
+            "File path: " + i_vpdFilePath + " not found in JSON");
+        return false;
+    }
+
+    if (!i_parsedConfigJson["frus"][i_vpdFilePath].at(0).contains(i_action))
+    {
+        logging::logMessage("Action [" + i_action +
+                            "] not defined for file path:" + i_vpdFilePath);
+        return false;
+    }
+
+    if (!(i_parsedConfigJson["frus"][i_vpdFilePath].at(0))[i_action].contains(
+            i_flagToProcess))
+    {
+        logging::logMessage("Config JSON missing flag [" + i_flagToProcess +
+                            "] to execute action for path = " + i_vpdFilePath);
+
+        return false;
+    }
+
+    const nlohmann::json& l_tagsJson =
+        (i_parsedConfigJson["frus"][i_vpdFilePath].at(
+            0))[i_action][i_flagToProcess];
+
+    for (const auto& l_tag : l_tagsJson.items())
+    {
+        auto itrToFunction = funcionMap.find(l_tag.key());
+        if (itrToFunction != funcionMap.end())
+        {
+            if (!itrToFunction->second(i_parsedConfigJson, i_vpdFilePath,
+                                       i_action, i_flagToProcess))
+            {
+                // In case any of the tag fails to execute. Mark action
+                // as failed for that flag.
+                return false;
+            }
+        }
+    }
+
+    return true;
+}
+
+/**
+ * @brief Get redundant FRU path from system config JSON
+ *
+ * Given either D-bus inventory path/FRU path/redundant FRU path, this
+ * API returns the redundant FRU path taken from "redundantEeprom" tag from
+ * system config JSON.
+ *
+ * @param[in] i_sysCfgJsonObj - System config JSON object.
+ * @param[in] i_vpdPath - Path to where VPD is stored.
+ *
+ * @throw std::runtime_error.
+ * @return On success return valid path, on failure return empty string.
+ */
+inline std::string getRedundantEepromPathFromJson(
+    const nlohmann::json& i_sysCfgJsonObj, const std::string& i_vpdPath)
+{
+    if (i_vpdPath.empty())
+    {
+        throw std::runtime_error("Path parameter is empty.");
+    }
+
+    if (!i_sysCfgJsonObj.contains("frus"))
+    {
+        throw std::runtime_error("Missing frus tag in system config JSON.");
+    }
+
+    // check if given path is FRU path
+    if (i_sysCfgJsonObj["frus"].contains(i_vpdPath))
+    {
+        return i_sysCfgJsonObj["frus"][i_vpdPath].at(0).value(
+            "redundantEeprom", "");
+    }
+
+    const nlohmann::json& l_fruList =
+        i_sysCfgJsonObj["frus"].get_ref<const nlohmann::json::object_t&>();
+
+    for (const auto& l_fru : l_fruList.items())
+    {
+        const std::string& l_fruPath = l_fru.key();
+        const std::string& l_redundantFruPath =
+            i_sysCfgJsonObj["frus"][l_fruPath].at(0).value("redundantEeprom",
+                                                           "");
+
+        // check if given path is inventory path or redundant FRU path
+        if ((i_sysCfgJsonObj["frus"][l_fruPath].at(0).value("inventoryPath",
+                                                            "") == i_vpdPath) ||
+            (l_redundantFruPath == i_vpdPath))
+        {
+            return l_redundantFruPath;
+        }
+    }
+    return std::string();
+}
+
+/**
+ * @brief Get FRU EEPROM path from system config JSON
+ *
+ * Given either D-bus inventory path/FRU EEPROM path/redundant EEPROM path,
+ * this API returns FRU EEPROM path if present in JSON.
+ *
+ * @param[in] i_sysCfgJsonObj - System config JSON object
+ * @param[in] i_vpdPath - Path to where VPD is stored.
+ *
+ * @throw std::runtime_error.
+ *
+ * @return On success return valid path, on failure return empty string.
+ */
+inline std::string getFruPathFromJson(const nlohmann::json& i_sysCfgJsonObj,
+                                      const std::string& i_vpdPath)
+{
+    if (i_vpdPath.empty())
+    {
+        throw std::runtime_error("Path parameter is empty.");
+    }
+
+    if (!i_sysCfgJsonObj.contains("frus"))
+    {
+        throw std::runtime_error("Missing frus tag in system config JSON.");
+    }
+
+    // check if given path is FRU path
+    if (i_sysCfgJsonObj["frus"].contains(i_vpdPath))
+    {
+        return i_vpdPath;
+    }
+
+    const nlohmann::json& l_fruList =
+        i_sysCfgJsonObj["frus"].get_ref<const nlohmann::json::object_t&>();
+
+    for (const auto& l_fru : l_fruList.items())
+    {
+        const auto l_fruPath = l_fru.key();
+
+        // check if given path is redundant FRU path or inventory path
+        if (i_vpdPath == i_sysCfgJsonObj["frus"][l_fruPath].at(0).value(
+                             "redundantEeprom", "") ||
+            (i_vpdPath == i_sysCfgJsonObj["frus"][l_fruPath].at(0).value(
+                              "inventoryPath", "")))
+        {
+            return l_fruPath;
+        }
+    }
+    return std::string();
+}
+
+/**
+ * @brief An API to check backup and restore VPD is required.
+ *
+ * The API checks if there is provision for backup and restore mentioned in the
+ * system config JSON, by looking "backupRestoreConfigPath" tag.
+ * Checks if the path mentioned is a hardware path, by checking if the file path
+ * exists and size of contents in the path.
+ *
+ * @param[in] i_sysCfgJsonObj - System config JSON object.
+ *
+ * @return true if backup and restore is required, false otherwise.
+ */
+inline bool isBackupAndRestoreRequired(const nlohmann::json& i_sysCfgJsonObj)
+{
+    try
+    {
+        const std::string& l_backupAndRestoreCfgFilePath =
+            i_sysCfgJsonObj.value("backupRestoreConfigPath", "");
+        if (!l_backupAndRestoreCfgFilePath.empty() &&
+            std::filesystem::exists(l_backupAndRestoreCfgFilePath) &&
+            !std::filesystem::is_empty(l_backupAndRestoreCfgFilePath))
+        {
+            return true;
+        }
+    }
+    catch (std::exception& ex)
+    {
+        logging::logMessage(ex.what());
+    }
+    return false;
+}
+
+/** @brief API to check if an action is required for given EEPROM path.
+ *
+ * System config JSON can contain pre-action, post-action etc. like actions
+ * defined for an EEPROM path. The API will check if any such action is defined
+ * for the EEPROM.
+ *
+ * @param[in] i_sysCfgJsonObj - System config JSON object.
+ * @param[in] i_vpdFruPath - EEPROM path.
+ * @param[in] i_action - Action to be checked.
+ * @param[in] i_flowFlag - Denotes the flow w.r.t which the action should be
+ * triggered.
+ * @return - True if action is defined for the flow, false otherwise.
+ */
+inline bool isActionRequired(
+    const nlohmann::json& i_sysCfgJsonObj, const std::string& i_vpdFruPath,
+    const std::string& i_action, const std::string& i_flowFlag)
+{
+    if (i_vpdFruPath.empty() || i_action.empty() || i_flowFlag.empty())
+    {
+        logging::logMessage("Invalid parameters recieved.");
+        return false;
+    }
+
+    if (!i_sysCfgJsonObj.contains("frus"))
+    {
+        logging::logMessage("Invalid JSON object recieved.");
+        return false;
+    }
+
+    if (!i_sysCfgJsonObj["frus"].contains(i_vpdFruPath))
+    {
+        logging::logMessage(
+            "JSON object does not contain EEPROM path " + i_vpdFruPath);
+        return false;
+    }
+
+    if ((i_sysCfgJsonObj["frus"][i_vpdFruPath].at(0)).contains(i_action))
+    {
+        if ((i_sysCfgJsonObj["frus"][i_vpdFruPath].at(0))[i_action].contains(
+                i_flowFlag))
+        {
+            return true;
+        }
+
+        logging::logMessage("Flow flag: [" + i_flowFlag +
+                            "], not found in JSON for path: " + i_vpdFruPath);
+        return false;
+    }
+    return false;
+}
+
+/**
+ * @brief An API to return list of FRUs that needs GPIO polling.
+ *
+ * An API that checks for the FRUs that requires GPIO polling and returns
+ * a list of FRUs that needs polling. Returns an empty list if there are
+ * no FRUs that requires polling.
+ *
+ * @throw std::runtime_error
+ *
+ * @param[in] i_sysCfgJsonObj - System config JSON object.
+ *
+ * @return list of FRUs parameters that needs polling.
+ */
+inline std::vector<std::string>
+    getListOfGpioPollingFrus(const nlohmann::json& i_sysCfgJsonObj)
+{
+    if (i_sysCfgJsonObj.empty())
+    {
+        throw std::runtime_error("Invalid Parameters");
+    }
+
+    if (!i_sysCfgJsonObj.contains("frus"))
+    {
+        throw std::runtime_error("Missing frus section in system config JSON");
+    }
+
+    std::vector<std::string> l_gpioPollingRequiredFrusList;
+
+    for (const auto& l_fru : i_sysCfgJsonObj["frus"].items())
+    {
+        const auto l_fruPath = l_fru.key();
+
+        try
+        {
+            if (isActionRequired(i_sysCfgJsonObj, l_fruPath, "pollingRequired",
+                                 "hotPlugging"))
+            {
+                if (i_sysCfgJsonObj["frus"][l_fruPath]
+                        .at(0)["pollingRequired"]["hotPlugging"]
+                        .contains("gpioPresence"))
+                {
+                    l_gpioPollingRequiredFrusList.push_back(l_fruPath);
+                }
+            }
+        }
+        catch (const std::exception& l_ex)
+        {
+            logging::logMessage(l_ex.what());
+        }
+    }
+
+    return l_gpioPollingRequiredFrusList;
+}
+
+/**
+ * @brief Get all related path(s) to update keyword value.
+ *
+ * Given FRU EEPROM path/Inventory path needs keyword's value update, this API
+ * returns tuple of FRU EEPROM path, inventory path and redundant EEPROM path if
+ * exists in the system config JSON.
+ *
+ * Note: If the inventory object path or redundant EEPROM path(s) are not found
+ * in the system config JSON, corresponding fields will have empty value in the
+ * returning tuple.
+ *
+ * @param[in] i_sysCfgJsonObj - System config JSON object.
+ * @param[in,out] io_vpdPath - Inventory object path or FRU EEPROM path.
+ *
+ * @return On success returns tuple of EEPROM path, inventory path & redundant
+ * path, on failure returns tuple with given input path alone.
+ */
+inline std::tuple<std::string, std::string, std::string>
+    getAllPathsToUpdateKeyword(const nlohmann::json& i_sysCfgJsonObj,
+                               std::string io_vpdPath)
+{
+    types::Path l_inventoryObjPath;
+    types::Path l_redundantFruPath;
+    try
+    {
+        if (!i_sysCfgJsonObj.empty())
+        {
+            // Get hardware path from system config JSON.
+            const types::Path l_fruPath =
+                jsonUtility::getFruPathFromJson(i_sysCfgJsonObj, io_vpdPath);
+
+            if (!l_fruPath.empty())
+            {
+                io_vpdPath = l_fruPath;
+
+                // Get inventory object path from system config JSON
+                l_inventoryObjPath = jsonUtility::getInventoryObjPathFromJson(
+                    i_sysCfgJsonObj, l_fruPath);
+
+                // Get redundant hardware path if present in system config JSON
+                l_redundantFruPath =
+                    jsonUtility::getRedundantEepromPathFromJson(i_sysCfgJsonObj,
+                                                                l_fruPath);
+            }
+        }
+    }
+    catch (const std::exception& l_exception)
+    {
+        logging::logMessage(
+            "Failed to get all paths to update keyword value, error " +
+            std::string(l_exception.what()));
+    }
+    return std::make_tuple(io_vpdPath, l_inventoryObjPath, l_redundantFruPath);
+}
+
+/**
+ * @brief An API to get DBus service name.
+ *
+ * Given DBus inventory path, this API returns DBus service name if present in
+ * the JSON.
+ *
+ * @param[in] i_sysCfgJsonObj - System config JSON object.
+ * @param[in] l_inventoryPath - DBus inventory path.
+ *
+ * @return On success returns the service name present in the system config
+ * JSON, otherwise empty string.
+ *
+ * Note: Caller has to handle in case of empty string received.
+ */
+inline std::string getServiceName(const nlohmann::json& i_sysCfgJsonObj,
+                                  const std::string& l_inventoryPath)
+{
+    try
+    {
+        if (l_inventoryPath.empty())
+        {
+            throw std::runtime_error("Path parameter is empty.");
+        }
+
+        if (!i_sysCfgJsonObj.contains("frus"))
+        {
+            throw std::runtime_error("Missing frus tag in system config JSON.");
+        }
+
+        const nlohmann::json& l_listOfFrus =
+            i_sysCfgJsonObj["frus"].get_ref<const nlohmann::json::object_t&>();
+
+        for (const auto& l_frus : l_listOfFrus.items())
+        {
+            for (const auto& l_inventoryItem : l_frus.value())
+            {
+                if (l_inventoryPath.compare(l_inventoryItem["inventoryPath"]) ==
+                    constants::STR_CMP_SUCCESS)
+                {
+                    return l_inventoryItem["serviceName"];
+                }
+            }
+        }
+        throw std::runtime_error(
+            "Inventory path not found in the system config JSON");
+    }
+    catch (const std::exception& l_exception)
+    {
+        logging::logMessage(
+            "Error while getting DBus service name for given path " +
+            l_inventoryPath + ", error: " + std::string(l_exception.what()));
+        // TODO:log PEL
+    }
+    return std::string{};
+}
+
+/**
+ * @brief An API to check if a FRU is tagged as "powerOffOnly"
+ *
+ * Given the system config JSON and VPD FRU path, this API checks if the FRU
+ * VPD can be collected at Chassis Power Off state only.
+ *
+ * @param[in] i_sysCfgJsonObj - System config JSON object.
+ * @param[in] i_vpdFruPath - EEPROM path.
+ * @return - True if FRU VPD can be collected at Chassis Power Off state only.
+ *           False otherwise
+ */
+inline bool isFruPowerOffOnly(const nlohmann::json& i_sysCfgJsonObj,
+                              const std::string& i_vpdFruPath)
+{
+    if (i_vpdFruPath.empty())
+    {
+        logging::logMessage("FRU path is empty.");
+        return false;
+    }
+
+    if (!i_sysCfgJsonObj.contains("frus"))
+    {
+        logging::logMessage("Missing frus tag in system config JSON.");
+        return false;
+    }
+
+    if (!i_sysCfgJsonObj["frus"].contains(i_vpdFruPath))
+    {
+        logging::logMessage("JSON object does not contain EEPROM path \'" +
+                            i_vpdFruPath + "\'");
+        return false;
+    }
+
+    return ((i_sysCfgJsonObj["frus"][i_vpdFruPath].at(0))
+                .contains("powerOffOnly") &&
+            (i_sysCfgJsonObj["frus"][i_vpdFruPath].at(0)["powerOffOnly"]));
+}
+
+/**
+ * @brief API which tells if the FRU is replaceable at runtime
+ *
+ * @param[in] i_sysCfgJsonObj - System config JSON object.
+ * @param[in] i_vpdFruPath - EEPROM path.
+ *
+ * @return true if FRU is replaceable at runtime. false otherwise.
+ */
+inline bool isFruReplaceableAtRuntime(const nlohmann::json& i_sysCfgJsonObj,
+                                      const std::string& i_vpdFruPath)
+{
+    try
+    {
+        if (i_vpdFruPath.empty())
+        {
+            throw std::runtime_error("Given FRU path is empty.");
+        }
+
+        if (i_sysCfgJsonObj.empty() || (!i_sysCfgJsonObj.contains("frus")))
+        {
+            throw std::runtime_error("Invalid system config JSON object.");
+        }
+
+        return ((i_sysCfgJsonObj["frus"][i_vpdFruPath].at(0))
+                    .contains("replaceableAtRuntime") &&
+                (i_sysCfgJsonObj["frus"][i_vpdFruPath].at(
+                    0)["replaceableAtRuntime"]));
+    }
+    catch (const std::exception& l_error)
+    {
+        // TODO: Log PEL
+        logging::logMessage(l_error.what());
+    }
+
+    return false;
+}
+
+/**
+ * @brief API which tells if the FRU is replaceable at standby
+ *
+ * @param[in] i_sysCfgJsonObj - System config JSON object.
+ * @param[in] i_vpdFruPath - EEPROM path.
+ *
+ * @return true if FRU is replaceable at standby. false otherwise.
+ */
+inline bool isFruReplaceableAtStandby(const nlohmann::json& i_sysCfgJsonObj,
+                                      const std::string& i_vpdFruPath)
+{
+    try
+    {
+        if (i_vpdFruPath.empty())
+        {
+            throw std::runtime_error("Given FRU path is empty.");
+        }
+
+        if (i_sysCfgJsonObj.empty() || (!i_sysCfgJsonObj.contains("frus")))
+        {
+            throw std::runtime_error("Invalid system config JSON object.");
+        }
+
+        return ((i_sysCfgJsonObj["frus"][i_vpdFruPath].at(0))
+                    .contains("replaceableAtStandby") &&
+                (i_sysCfgJsonObj["frus"][i_vpdFruPath].at(
+                    0)["replaceableAtStandby"]));
+    }
+    catch (const std::exception& l_error)
+    {
+        // TODO: Log PEL
+        logging::logMessage(l_error.what());
+    }
+
+    return false;
+}
+
+/**
+ * @brief API to get list of FRUs replaceable at standby from JSON.
+ *
+ * The API will return a vector of FRUs inventory path which are replaceable at
+ * standby.
+ * The API can throw exception in case of error scenarios. Caller's
+ * responsibility to handle those exceptions.
+ *
+ * @param[in] i_sysCfgJsonObj - System config JSON object.
+ *
+ * @return - List of FRUs replaceable at standby.
+ */
+inline std::vector<std::string>
+    getListOfFrusReplaceableAtStandby(const nlohmann::json& i_sysCfgJsonObj)
+{
+    std::vector<std::string> l_frusReplaceableAtStandby;
+
+    if (!i_sysCfgJsonObj.contains("frus"))
+    {
+        logging::logMessage("Missing frus tag in system config JSON.");
+        return l_frusReplaceableAtStandby;
+    }
+
+    const nlohmann::json& l_fruList =
+        i_sysCfgJsonObj["frus"].get_ref<const nlohmann::json::object_t&>();
+
+    for (const auto& l_fru : l_fruList.items())
+    {
+        if (i_sysCfgJsonObj["frus"][l_fru.key()].at(0).value(
+                "replaceableAtStandby", false))
+        {
+            const std::string& l_inventoryObjectPath =
+                i_sysCfgJsonObj["frus"][l_fru.key()].at(0).value(
+                    "inventoryPath", "");
+
+            if (!l_inventoryObjectPath.empty())
+            {
+                l_frusReplaceableAtStandby.emplace_back(l_inventoryObjectPath);
+            }
+        }
+    }
+
+    return l_frusReplaceableAtStandby;
+}
+
+} // namespace jsonUtility
+} // namespace vpd
diff --git a/vpd-manager/include/utility/vpd_specific_utility.hpp b/vpd-manager/include/utility/vpd_specific_utility.hpp
new file mode 100644
index 0000000..d6b92fd
--- /dev/null
+++ b/vpd-manager/include/utility/vpd_specific_utility.hpp
@@ -0,0 +1,556 @@
+#pragma once
+
+#include "config.h"
+
+#include "constants.hpp"
+#include "exceptions.hpp"
+#include "logger.hpp"
+#include "types.hpp"
+
+#include <nlohmann/json.hpp>
+#include <utility/common_utility.hpp>
+#include <utility/dbus_utility.hpp>
+
+#include <filesystem>
+#include <fstream>
+#include <regex>
+
+namespace vpd
+{
+namespace vpdSpecificUtility
+{
+/**
+ * @brief API to generate file name for bad VPD.
+ *
+ * For i2c eeproms - the pattern of the vpd-name will be
+ * i2c-<bus-number>-<eeprom-address>.
+ * For spi eeproms - the pattern of the vpd-name will be spi-<spi-number>.
+ *
+ * @param[in] vpdFilePath - file path of the vpd.
+ * @return Generated file name.
+ */
+inline std::string generateBadVPDFileName(const std::string& vpdFilePath)
+{
+    std::string badVpdFileName = BAD_VPD_DIR;
+    if (vpdFilePath.find("i2c") != std::string::npos)
+    {
+        badVpdFileName += "i2c-";
+        std::regex i2cPattern("(at24/)([0-9]+-[0-9]+)\\/");
+        std::smatch match;
+        if (std::regex_search(vpdFilePath, match, i2cPattern))
+        {
+            badVpdFileName += match.str(2);
+        }
+    }
+    else if (vpdFilePath.find("spi") != std::string::npos)
+    {
+        std::regex spiPattern("((spi)[0-9]+)(.0)");
+        std::smatch match;
+        if (std::regex_search(vpdFilePath, match, spiPattern))
+        {
+            badVpdFileName += match.str(1);
+        }
+    }
+    return badVpdFileName;
+}
+
+/**
+ * @brief API which dumps the broken/bad vpd in a directory.
+ * When the vpd is bad, this API places  the bad vpd file inside
+ * "/tmp/bad-vpd" in BMC, in order to collect bad VPD data as a part of user
+ * initiated BMC dump.
+ *
+ * Note: Throws exception in case of any failure.
+ *
+ * @param[in] vpdFilePath - vpd file path
+ * @param[in] vpdVector - vpd vector
+ */
+inline void dumpBadVpd(const std::string& vpdFilePath,
+                       const types::BinaryVector& vpdVector)
+{
+    std::filesystem::create_directory(BAD_VPD_DIR);
+    auto badVpdPath = generateBadVPDFileName(vpdFilePath);
+
+    if (std::filesystem::exists(badVpdPath))
+    {
+        std::error_code ec;
+        std::filesystem::remove(badVpdPath, ec);
+        if (ec) // error code
+        {
+            std::string error = "Error removing the existing broken vpd in ";
+            error += badVpdPath;
+            error += ". Error code : ";
+            error += ec.value();
+            error += ". Error message : ";
+            error += ec.message();
+            throw std::runtime_error(error);
+        }
+    }
+
+    std::ofstream badVpdFileStream(badVpdPath, std::ofstream::binary);
+    if (badVpdFileStream.is_open())
+    {
+        throw std::runtime_error(
+            "Failed to open bad vpd file path in /tmp/bad-vpd. "
+            "Unable to dump the broken/bad vpd file.");
+    }
+
+    badVpdFileStream.write(reinterpret_cast<const char*>(vpdVector.data()),
+                           vpdVector.size());
+}
+
+/**
+ * @brief An API to read value of a keyword.
+ *
+ * Note: Throws exception. Caller needs to handle.
+ *
+ * @param[in] kwdValueMap - A map having Kwd value pair.
+ * @param[in] kwd - keyword name.
+ * @param[out] kwdValue - Value of the keyword read from map.
+ */
+inline void getKwVal(const types::IPZKwdValueMap& kwdValueMap,
+                     const std::string& kwd, std::string& kwdValue)
+{
+    if (kwd.empty())
+    {
+        logging::logMessage("Invalid parameters");
+        throw std::runtime_error("Invalid parameters");
+    }
+
+    auto itrToKwd = kwdValueMap.find(kwd);
+    if (itrToKwd != kwdValueMap.end())
+    {
+        kwdValue = itrToKwd->second;
+        return;
+    }
+
+    throw std::runtime_error("Keyword not found");
+}
+
+/**
+ * @brief An API to process encoding of a keyword.
+ *
+ * @param[in] keyword - Keyword to be processed.
+ * @param[in] encoding - Type of encoding.
+ * @return Value after being processed for encoded type.
+ */
+inline std::string encodeKeyword(const std::string& keyword,
+                                 const std::string& encoding)
+{
+    // Default value is keyword value
+    std::string result(keyword.begin(), keyword.end());
+
+    if (encoding == "MAC")
+    {
+        result.clear();
+        size_t firstByte = keyword[0];
+        result += commonUtility::toHex(firstByte >> 4);
+        result += commonUtility::toHex(firstByte & 0x0f);
+        for (size_t i = 1; i < keyword.size(); ++i)
+        {
+            result += ":";
+            result += commonUtility::toHex(keyword[i] >> 4);
+            result += commonUtility::toHex(keyword[i] & 0x0f);
+        }
+    }
+    else if (encoding == "DATE")
+    {
+        // Date, represent as
+        // <year>-<month>-<day> <hour>:<min>
+        result.clear();
+        static constexpr uint8_t skipPrefix = 3;
+
+        auto strItr = keyword.begin();
+        advance(strItr, skipPrefix);
+        for_each(strItr, keyword.end(), [&result](size_t c) { result += c; });
+
+        result.insert(constants::BD_YEAR_END, 1, '-');
+        result.insert(constants::BD_MONTH_END, 1, '-');
+        result.insert(constants::BD_DAY_END, 1, ' ');
+        result.insert(constants::BD_HOUR_END, 1, ':');
+    }
+
+    return result;
+}
+
+/**
+ * @brief Helper function to insert or merge in map.
+ *
+ * This method checks in an interface if the given interface exists. If the
+ * interface key already exists, property map is inserted corresponding to it.
+ * If the key does'nt exist then given interface and property map pair is newly
+ * created. If the property present in propertymap already exist in the
+ * InterfaceMap, then the new property value is ignored.
+ *
+ * @param[in,out] map - Interface map.
+ * @param[in] interface - Interface to be processed.
+ * @param[in] propertyMap - new property map that needs to be emplaced.
+ */
+inline void insertOrMerge(types::InterfaceMap& map,
+                          const std::string& interface,
+                          types::PropertyMap&& propertyMap)
+{
+    if (map.find(interface) != map.end())
+    {
+        try
+        {
+            auto& prop = map.at(interface);
+            std::for_each(propertyMap.begin(), propertyMap.end(),
+                          [&prop](auto l_keyValue) {
+                              prop[l_keyValue.first] = l_keyValue.second;
+                          });
+        }
+        catch (const std::exception& l_ex)
+        {
+            // ToDo:: Log PEL
+            logging::logMessage(
+                "Inserting properties into interface[" + interface +
+                "] map is failed, reason: " + std::string(l_ex.what()));
+        }
+    }
+    else
+    {
+        map.emplace(interface, propertyMap);
+    }
+}
+
+/**
+ * @brief API to expand unpanded location code.
+ *
+ * Note: The API handles all the exception internally, in case of any error
+ * unexpanded location code will be returned as it is.
+ *
+ * @param[in] unexpandedLocationCode - Unexpanded location code.
+ * @param[in] parsedVpdMap - Parsed VPD map.
+ * @return Expanded location code. In case of any error, unexpanded is returned
+ * as it is.
+ */
+inline std::string
+    getExpandedLocationCode(const std::string& unexpandedLocationCode,
+                            const types::VPDMapVariant& parsedVpdMap)
+{
+    auto expanded{unexpandedLocationCode};
+
+    try
+    {
+        // Expanded location code is formed by combining two keywords
+        // depending on type in unexpanded one. Second one is always "SE".
+        std::string kwd1, kwd2{constants::kwdSE};
+
+        // interface to search for required keywords;
+        std::string kwdInterface;
+
+        // record which holds the required keywords.
+        std::string recordName;
+
+        auto pos = unexpandedLocationCode.find("fcs");
+        if (pos != std::string::npos)
+        {
+            kwd1 = constants::kwdFC;
+            kwdInterface = constants::vcenInf;
+            recordName = constants::recVCEN;
+        }
+        else
+        {
+            pos = unexpandedLocationCode.find("mts");
+            if (pos != std::string::npos)
+            {
+                kwd1 = constants::kwdTM;
+                kwdInterface = constants::vsysInf;
+                recordName = constants::recVSYS;
+            }
+            else
+            {
+                throw std::runtime_error(
+                    "Error detecting type of unexpanded location code.");
+            }
+        }
+
+        std::string firstKwdValue, secondKwdValue;
+
+        if (auto ipzVpdMap = std::get_if<types::IPZVpdMap>(&parsedVpdMap);
+            ipzVpdMap && (*ipzVpdMap).find(recordName) != (*ipzVpdMap).end())
+        {
+            auto itrToVCEN = (*ipzVpdMap).find(recordName);
+            // The exceptions will be cautght at end.
+            getKwVal(itrToVCEN->second, kwd1, firstKwdValue);
+            getKwVal(itrToVCEN->second, kwd2, secondKwdValue);
+        }
+        else
+        {
+            std::array<const char*, 1> interfaceList = {kwdInterface.c_str()};
+
+            types::MapperGetObject mapperRetValue = dbusUtility::getObjectMap(
+                std::string(constants::systemVpdInvPath), interfaceList);
+
+            if (mapperRetValue.empty())
+            {
+                throw std::runtime_error("Mapper failed to get service");
+            }
+
+            const std::string& serviceName = std::get<0>(mapperRetValue.at(0));
+
+            auto retVal = dbusUtility::readDbusProperty(
+                serviceName, std::string(constants::systemVpdInvPath),
+                kwdInterface, kwd1);
+
+            if (auto kwdVal = std::get_if<types::BinaryVector>(&retVal))
+            {
+                firstKwdValue.assign(
+                    reinterpret_cast<const char*>(kwdVal->data()),
+                    kwdVal->size());
+            }
+            else
+            {
+                throw std::runtime_error(
+                    "Failed to read value of " + kwd1 + " from Bus");
+            }
+
+            retVal = dbusUtility::readDbusProperty(
+                serviceName, std::string(constants::systemVpdInvPath),
+                kwdInterface, kwd2);
+
+            if (auto kwdVal = std::get_if<types::BinaryVector>(&retVal))
+            {
+                secondKwdValue.assign(
+                    reinterpret_cast<const char*>(kwdVal->data()),
+                    kwdVal->size());
+            }
+            else
+            {
+                throw std::runtime_error(
+                    "Failed to read value of " + kwd2 + " from Bus");
+            }
+        }
+
+        if (unexpandedLocationCode.find("fcs") != std::string::npos)
+        {
+            // TODO: See if ND0 can be placed in the JSON
+            expanded.replace(
+                pos, 3, firstKwdValue.substr(0, 4) + ".ND0." + secondKwdValue);
+        }
+        else
+        {
+            replace(firstKwdValue.begin(), firstKwdValue.end(), '-', '.');
+            expanded.replace(pos, 3, firstKwdValue + "." + secondKwdValue);
+        }
+    }
+    catch (const std::exception& ex)
+    {
+        logging::logMessage("Failed to expand location code with exception: " +
+                            std::string(ex.what()));
+    }
+
+    return expanded;
+}
+
+/**
+ * @brief An API to get VPD in a vector.
+ *
+ * The vector is required by the respective parser to fill the VPD map.
+ * Note: API throws exception in case of failure. Caller needs to handle.
+ *
+ * @param[in] vpdFilePath - EEPROM path of the FRU.
+ * @param[out] vpdVector - VPD in vector form.
+ * @param[in] vpdStartOffset - Offset of VPD data in EEPROM.
+ */
+inline void getVpdDataInVector(const std::string& vpdFilePath,
+                               types::BinaryVector& vpdVector,
+                               size_t& vpdStartOffset)
+{
+    try
+    {
+        std::fstream vpdFileStream;
+        vpdFileStream.exceptions(
+            std::ifstream::badbit | std::ifstream::failbit);
+        vpdFileStream.open(vpdFilePath, std::ios::in | std::ios::binary);
+        auto vpdSizeToRead = std::min(std::filesystem::file_size(vpdFilePath),
+                                      static_cast<uintmax_t>(65504));
+        vpdVector.resize(vpdSizeToRead);
+
+        vpdFileStream.seekg(vpdStartOffset, std::ios_base::beg);
+        vpdFileStream.read(reinterpret_cast<char*>(&vpdVector[0]),
+                           vpdSizeToRead);
+
+        vpdVector.resize(vpdFileStream.gcount());
+        vpdFileStream.clear(std::ios_base::eofbit);
+    }
+    catch (const std::ifstream::failure& fail)
+    {
+        std::cerr << "Exception in file handling [" << vpdFilePath
+                  << "] error : " << fail.what();
+        throw;
+    }
+}
+
+/**
+ * @brief An API to get D-bus representation of given VPD keyword.
+ *
+ * @param[in] i_keywordName - VPD keyword name.
+ *
+ * @return D-bus representation of given keyword.
+ */
+inline std::string getDbusPropNameForGivenKw(const std::string& i_keywordName)
+{
+    // Check for "#" prefixed VPD keyword.
+    if ((i_keywordName.size() == vpd::constants::TWO_BYTES) &&
+        (i_keywordName.at(0) == constants::POUND_KW))
+    {
+        // D-bus doesn't support "#". Replace "#" with "PD_" for those "#"
+        // prefixed keywords.
+        return (std::string(constants::POUND_KW_PREFIX) +
+                i_keywordName.substr(1));
+    }
+
+    // Return the keyword name back, if D-bus representation is same as the VPD
+    // keyword name.
+    return i_keywordName;
+}
+
+/**
+ * @brief API to find CCIN in parsed VPD map.
+ *
+ * Few FRUs need some special handling. To identify those FRUs CCIN are used.
+ * The API will check from parsed VPD map if the FRU is the one with desired
+ * CCIN.
+ *
+ * @throw std::runtime_error
+ * @throw DataException
+ *
+ * @param[in] i_JsonObject - Any JSON which contains CCIN tag to match.
+ * @param[in] i_parsedVpdMap - Parsed VPD map.
+ * @return True if found, false otherwise.
+ */
+inline bool findCcinInVpd(const nlohmann::json& i_JsonObject,
+                          const types::VPDMapVariant& i_parsedVpdMap)
+{
+    if (i_JsonObject.empty())
+    {
+        throw std::runtime_error("Json object is empty. Can't find CCIN");
+    }
+
+    if (auto l_ipzVPDMap = std::get_if<types::IPZVpdMap>(&i_parsedVpdMap))
+    {
+        auto l_itrToRec = (*l_ipzVPDMap).find("VINI");
+        if (l_itrToRec == (*l_ipzVPDMap).end())
+        {
+            throw DataException(
+                "VINI record not found in parsed VPD. Can't find CCIN");
+        }
+
+        std::string l_ccinFromVpd;
+        vpdSpecificUtility::getKwVal(l_itrToRec->second, "CC", l_ccinFromVpd);
+        if (l_ccinFromVpd.empty())
+        {
+            throw DataException("Empty CCIN value in VPD map. Can't find CCIN");
+        }
+
+        transform(l_ccinFromVpd.begin(), l_ccinFromVpd.end(),
+                  l_ccinFromVpd.begin(), ::toupper);
+
+        for (std::string l_ccinValue : i_JsonObject["ccin"])
+        {
+            transform(l_ccinValue.begin(), l_ccinValue.end(),
+                      l_ccinValue.begin(), ::toupper);
+
+            if (l_ccinValue.compare(l_ccinFromVpd) ==
+                constants::STR_CMP_SUCCESS)
+            {
+                // CCIN found
+                return true;
+            }
+        }
+
+        logging::logMessage("No match found for CCIN");
+        return false;
+    }
+
+    logging::logMessage("VPD type not supported. Can't find CCIN");
+    return false;
+}
+
+/**
+ * @brief API to reset data of a FRU populated under PIM.
+ *
+ * This API resets the data for particular interfaces of a FRU under PIM.
+ *
+ * @param[in] i_objectPath - DBus object path of the FRU.
+ * @param[in] io_interfaceMap - Interface and its properties map.
+ */
+inline void resetDataUnderPIM(const std::string& i_objectPath,
+                              types::InterfaceMap& io_interfaceMap)
+{
+    try
+    {
+        std::array<const char*, 0> l_interfaces;
+        const types::MapperGetObject& l_getObjectMap =
+            dbusUtility::getObjectMap(i_objectPath, l_interfaces);
+
+        const std::vector<std::string>& l_vpdRelatedInterfaces{
+            constants::operationalStatusInf, constants::inventoryItemInf,
+            constants::assetInf};
+
+        for (const auto& [l_service, l_interfaceList] : l_getObjectMap)
+        {
+            if (l_service.compare(constants::pimServiceName) !=
+                constants::STR_CMP_SUCCESS)
+            {
+                continue;
+            }
+
+            for (const auto& l_interface : l_interfaceList)
+            {
+                if ((l_interface.find(constants::ipzVpdInf) !=
+                     std::string::npos) ||
+                    ((std::find(l_vpdRelatedInterfaces.begin(),
+                                l_vpdRelatedInterfaces.end(), l_interface)) !=
+                     l_vpdRelatedInterfaces.end()))
+                {
+                    const types::PropertyMap& l_propertyValueMap =
+                        dbusUtility::getPropertyMap(l_service, i_objectPath,
+                                                    l_interface);
+
+                    types::PropertyMap l_propertyMap;
+
+                    for (const auto& l_aProperty : l_propertyValueMap)
+                    {
+                        const std::string& l_propertyName = l_aProperty.first;
+                        const auto& l_propertyValue = l_aProperty.second;
+
+                        if (std::holds_alternative<types::BinaryVector>(
+                                l_propertyValue))
+                        {
+                            l_propertyMap.emplace(l_propertyName,
+                                                  types::BinaryVector{});
+                        }
+                        else if (std::holds_alternative<std::string>(
+                                     l_propertyValue))
+                        {
+                            l_propertyMap.emplace(l_propertyName,
+                                                  std::string{});
+                        }
+                        else if (std::holds_alternative<bool>(l_propertyValue))
+                        {
+                            // ToDo -- Update the functional status property
+                            // to true.
+                            if (l_propertyName.compare("Present") ==
+                                constants::STR_CMP_SUCCESS)
+                            {
+                                l_propertyMap.emplace(l_propertyName, false);
+                            }
+                        }
+                    }
+                    io_interfaceMap.emplace(l_interface,
+                                            std::move(l_propertyMap));
+                }
+            }
+        }
+    }
+    catch (const std::exception& l_ex)
+    {
+        logging::logMessage("Failed to remove VPD for FRU: " + i_objectPath +
+                            " with error: " + std::string(l_ex.what()));
+    }
+}
+} // namespace vpdSpecificUtility
+} // namespace vpd
diff --git a/vpd-manager/include/worker.hpp b/vpd-manager/include/worker.hpp
new file mode 100644
index 0000000..85a1818
--- /dev/null
+++ b/vpd-manager/include/worker.hpp
@@ -0,0 +1,529 @@
+#pragma once
+
+#include "constants.hpp"
+#include "types.hpp"
+
+#include <nlohmann/json.hpp>
+
+#include <mutex>
+#include <optional>
+#include <semaphore>
+#include <tuple>
+
+namespace vpd
+{
+/**
+ * @brief A class to process and publish VPD data.
+ *
+ * The class works on VPD and is mainly responsible for following tasks:
+ * 1) Select appropriate device tree and JSON. Reboot if required.
+ * 2) Get desired parser using parser factory.
+ * 3) Calling respective parser class to get parsed VPD.
+ * 4) Arranging VPD data under required interfaces.
+ * 5) Calling PIM to publish VPD.
+ *
+ * The class may also implement helper functions required for VPD handling.
+ */
+class Worker
+{
+  public:
+    /**
+     * List of deleted functions.
+     */
+    Worker(const Worker&);
+    Worker& operator=(const Worker&);
+    Worker(Worker&&) = delete;
+
+    /**
+     * @brief Constructor.
+     *
+     * In case the processing is not JSON based, no argument needs to be passed.
+     * Constructor will also, based on symlink pick the correct JSON and
+     * initialize the parsed JSON variable.
+     *
+     * @param[in] pathToConfigJSON - Path to the config JSON, if applicable.
+     *
+     * Note: Throws std::exception in case of construction failure. Caller needs
+     * to handle to detect successful object creation.
+     */
+    Worker(std::string pathToConfigJson = std::string());
+
+    /**
+     * @brief Destructor
+     */
+    ~Worker() = default;
+
+#ifdef IBM_SYSTEM
+    /**
+     * @brief API to perform initial setup before manager claims Bus name.
+     *
+     * Before BUS name for VPD-Manager is claimed, fitconfig whould be set for
+     * corret device tree, inventory JSON w.r.t system should be linked and
+     * system VPD should be on DBus.
+     */
+    void performInitialSetup();
+#endif
+
+    /**
+     * @brief An API to check if system VPD is already published.
+     *
+     * @return Status, true if system is already collected else false.
+     */
+    bool isSystemVPDOnDBus() const;
+
+    /**
+     * @brief API to process all FRUs presnt in config JSON file.
+     *
+     * This API based on config JSON passed/selected for the system, will
+     * trigger parser for all the FRUs and publish it on DBus.
+     *
+     * Note: Config JSON file path should be passed to worker class constructor
+     * to make use of this API.
+     *
+     */
+    void collectFrusFromJson();
+
+    /**
+     * @brief API to parse VPD data
+     *
+     * @param[in] i_vpdFilePath - Path to the VPD file.
+     */
+    types::VPDMapVariant parseVpdFile(const std::string& i_vpdFilePath);
+
+    /**
+     * @brief An API to populate DBus interfaces for a FRU.
+     *
+     * Note: Call this API to populate D-Bus. Also caller should handle empty
+     * objectInterfaceMap.
+     *
+     * @param[in] parsedVpdMap - Parsed VPD as a map.
+     * @param[out] objectInterfaceMap - Object and its interfaces map.
+     * @param[in] vpdFilePath - EEPROM path of FRU.
+     */
+    void populateDbus(const types::VPDMapVariant& parsedVpdMap,
+                      types::ObjectMap& objectInterfaceMap,
+                      const std::string& vpdFilePath);
+
+    /**
+     * @brief An API to delete FRU VPD over DBus.
+     *
+     * @param[in] i_dbusObjPath - Dbus object path of the FRU.
+     *
+     * @throw std::runtime_error if given input path is empty.
+     */
+    void deleteFruVpd(const std::string& i_dbusObjPath);
+
+    /**
+     * @brief API to get status of VPD collection process.
+     *
+     * @return - True when done, false otherwise.
+     */
+    inline bool isAllFruCollectionDone() const
+    {
+        return m_isAllFruCollected;
+    }
+
+    /**
+     * @brief API to get system config JSON object
+     *
+     * @return System config JSON object.
+     */
+    inline nlohmann::json getSysCfgJsonObj() const
+    {
+        return m_parsedJson;
+    }
+
+    /**
+     * @brief API to get active thread count.
+     *
+     * Each FRU is collected in a separate thread. This API gives the active
+     * thread collecting FRU's VPD at any given time.
+     *
+     * @return Count of active threads.
+     */
+    size_t getActiveThreadCount() const
+    {
+        return m_activeCollectionThreadCount;
+    }
+
+  private:
+    /**
+     * @brief An API to parse and publish a FRU VPD over D-Bus.
+     *
+     * Note: This API will handle all the exceptions internally and will only
+     * return status of parsing and publishing of VPD over D-Bus.
+     *
+     * @param[in] i_vpdFilePath - Path of file containing VPD.
+     * @return Tuple of status and file path. Status, true if successfull else
+     * false.
+     */
+    std::tuple<bool, std::string>
+        parseAndPublishVPD(const std::string& i_vpdFilePath);
+
+    /**
+     * @brief An API to set appropriate device tree and JSON.
+     *
+     * This API based on system chooses corresponding device tree and JSON.
+     * If device tree change is required, it updates the "fitconfig" and reboots
+     * the system. Else it is NOOP.
+     *
+     * @throw std::runtime_error
+     */
+    void setDeviceTreeAndJson();
+
+    /**
+     * @brief API to select system specific JSON.
+     *
+     * The API based on the IM value of VPD, will select appropriate JSON for
+     * the system. In case no system is found corresponding to the extracted IM
+     * value, error will be logged.
+     *
+     * @param[out] systemJson - System JSON name.
+     * @param[in] parsedVpdMap - Parsed VPD map.
+     */
+    void getSystemJson(std::string& systemJson,
+                       const types::VPDMapVariant& parsedVpdMap);
+
+    /**
+     * @brief An API to read IM value from VPD.
+     *
+     * Note: Throws exception in case of error. Caller need to handle.
+     *
+     * @param[in] parsedVpd - Parsed VPD.
+     */
+    std::string getIMValue(const types::IPZVpdMap& parsedVpd) const;
+
+    /**
+     * @brief An API to read HW version from VPD.
+     *
+     * Note: Throws exception in case of error. Caller need to handle.
+     *
+     * @param[in] parsedVpd - Parsed VPD.
+     */
+    std::string getHWVersion(const types::IPZVpdMap& parsedVpd) const;
+
+    /**
+     * @brief An API to parse given VPD file path.
+     *
+     * @param[in] vpdFilePath - EEPROM file path.
+     * @param[out] parsedVpd - Parsed VPD as a map.
+     */
+    void fillVPDMap(const std::string& vpdFilePath,
+                    types::VPDMapVariant& parsedVpd);
+
+    /**
+     * @brief An API to parse and publish system VPD on D-Bus.
+     *
+     * Note: Throws exception in case of invalid VPD format.
+     *
+     * @param[in] parsedVpdMap - Parsed VPD as a map.
+     */
+    void publishSystemVPD(const types::VPDMapVariant& parsedVpdMap);
+
+    /**
+     * @brief An API to process extrainterfaces w.r.t a FRU.
+     *
+     * @param[in] singleFru - JSON block for a single FRU.
+     * @param[out] interfaces - Map to hold interface along with its properties.
+     * @param[in] parsedVpdMap - Parsed VPD as a map.
+     */
+    void processExtraInterfaces(const nlohmann::json& singleFru,
+                                types::InterfaceMap& interfaces,
+                                const types::VPDMapVariant& parsedVpdMap);
+
+    /**
+     * @brief An API to process embedded and synthesized FRUs.
+     *
+     * @param[in] singleFru - FRU to be processed.
+     * @param[out] interfaces - Map to hold interface along with its properties.
+     */
+    void processEmbeddedAndSynthesizedFrus(const nlohmann::json& singleFru,
+                                           types::InterfaceMap& interfaces);
+
+    /**
+     * @brief An API to read process FRU based in CCIN.
+     *
+     * For some FRUs VPD can be processed only if the FRU has some specific
+     * value for CCIN. In case the value is not from that set, VPD for those
+     * FRUs can't be processed.
+     *
+     * @param[in] singleFru - Fru whose CCIN value needs to be matched.
+     * @param[in] parsedVpdMap - Parsed VPD map.
+     */
+    bool processFruWithCCIN(const nlohmann::json& singleFru,
+                            const types::VPDMapVariant& parsedVpdMap);
+
+    /**
+     * @brief API to process json's inherit flag.
+     *
+     * Inherit flag denotes that some property in the child FRU needs to be
+     * inherited from parent FRU.
+     *
+     * @param[in] parsedVpdMap - Parsed VPD as a map.
+     * @param[out] interfaces - Map to hold interface along with its properties.
+     */
+    void processInheritFlag(const types::VPDMapVariant& parsedVpdMap,
+                            types::InterfaceMap& interfaces);
+
+    /**
+     * @brief API to process json's "copyRecord" flag.
+     *
+     * copyRecord flag denotes if some record data needs to be copies in the
+     * given FRU.
+     *
+     * @param[in] singleFru - FRU being processed.
+     * @param[in] parsedVpdMap - Parsed VPD as a map.
+     * @param[out] interfaces - Map to hold interface along with its properties.
+     */
+    void processCopyRecordFlag(const nlohmann::json& singleFru,
+                               const types::VPDMapVariant& parsedVpdMap,
+                               types::InterfaceMap& interfaces);
+
+    /**
+     * @brief An API to populate IPZ VPD property map.
+     *
+     * @param[out] interfacePropMap - Map of interface and properties under it.
+     * @param[in] keyordValueMap - Keyword value map of IPZ VPD.
+     * @param[in] interfaceName - Name of the interface.
+     */
+    void populateIPZVPDpropertyMap(types::InterfaceMap& interfacePropMap,
+                                   const types::IPZKwdValueMap& keyordValueMap,
+                                   const std::string& interfaceName);
+
+    /**
+     * @brief An API to populate Kwd VPD property map.
+     *
+     * @param[in] keyordValueMap - Keyword value map of Kwd VPD.
+     * @param[out] interfaceMap - interface and property,value under it.
+     */
+    void populateKwdVPDpropertyMap(const types::KeywordVpdMap& keyordVPDMap,
+                                   types::InterfaceMap& interfaceMap);
+
+    /**
+     * @brief API to populate all required interface for a FRU.
+     *
+     * @param[in] interfaceJson - JSON containing interfaces to be populated.
+     * @param[out] interfaceMap - Map to hold populated interfaces.
+     * @param[in] parsedVpdMap - Parsed VPD as a map.
+     */
+    void populateInterfaces(const nlohmann::json& interfaceJson,
+                            types::InterfaceMap& interfaceMap,
+                            const types::VPDMapVariant& parsedVpdMap);
+
+    /**
+     * @brief Helper function to insert or merge in map.
+     *
+     * This method checks in the given inventory::InterfaceMap if the given
+     * interface key is existing or not. If the interface key already exists,
+     * given property map is inserted into it. If the key does'nt exist then
+     * given interface and property map pair is newly created. If the property
+     * present in propertymap already exist in the InterfaceMap, then the new
+     * property value is ignored.
+     *
+     * @param[in,out] interfaceMap - map object of type inventory::InterfaceMap
+     * only.
+     * @param[in] interface - Interface name.
+     * @param[in] property - new property map that needs to be emplaced.
+     */
+    void insertOrMerge(types::InterfaceMap& interfaceMap,
+                       const std::string& interface,
+                       types::PropertyMap&& property);
+
+    /**
+     * @brief Check if the given CPU is an IO only chip.
+     *
+     * The CPU is termed as IO, whose all of the cores are bad and can never be
+     * used. Those CPU chips can be used for IO purpose like connecting PCIe
+     * devices etc., The CPU whose every cores are bad, can be identified from
+     * the CP00 record's PG keyword, only if all of the 8 EQs' value equals
+     * 0xE7F9FF. (1EQ has 4 cores grouped together by sharing its cache memory.)
+     *
+     * @param [in] pgKeyword - PG Keyword of CPU.
+     * @return true if the given cpu is an IO, false otherwise.
+     */
+    bool isCPUIOGoodOnly(const std::string& pgKeyword);
+
+    /**
+     * @brief API to prime inventory Objects.
+     *
+     * @param[in] i_vpdFilePath - EEPROM file path.
+     * @return true if the prime inventory is success, false otherwise.
+     */
+    bool primeInventory(const std::string& i_vpdFilePath);
+
+    /**
+     * @brief API to process preAction(base_action) defined in config JSON.
+     *
+     * @note sequence of tags under any given flag of preAction is EXTREMELY
+     * important to ensure proper processing. The API will process all the
+     * nested items under the base action sequentially. Also if any of the tag
+     * processing fails, the code will not process remaining tags under the
+     * flag.
+     * ******** sample format **************
+     * fru EEPROM path: {
+     *     base_action: {
+     *         flag1: {
+     *           tag1: {
+     *            },
+     *           tag2: {
+     *            }
+     *         }
+     *         flag2: {
+     *           tags: {
+     *            }
+     *         }
+     *     }
+     * }
+     * *************************************
+     *
+     * @param[in] i_vpdFilePath - Path to the EEPROM file.
+     * @param[in] i_flagToProcess - To identify which flag(s) needs to be
+     * processed under PreAction tag of config JSON.
+     * @return Execution status.
+     */
+    bool processPreAction(const std::string& i_vpdFilePath,
+                          const std::string& i_flagToProcess);
+
+    /**
+     * @brief API to process postAction(base_action) defined in config JSON.
+     *
+     * @note Sequence of tags under any given flag of postAction is EXTREMELY
+     * important to ensure proper processing. The API will process all the
+     * nested items under the base action sequentially. Also if any of the tag
+     * processing fails, the code will not process remaining tags under the
+     * flag.
+     * ******** sample format **************
+     * fru EEPROM path: {
+     *     base_action: {
+     *         flag1: {
+     *           tag1: {
+     *            },
+     *           tag2: {
+     *            }
+     *         }
+     *         flag2: {
+     *           tags: {
+     *            }
+     *         }
+     *     }
+     * }
+     * *************************************
+     * Also, if post action is required to be processed only for FRUs with
+     * certain CCIN then CCIN list can be provided under flag.
+     *
+     * @param[in] i_vpdFruPath - Path to the EEPROM file.
+     * @param[in] i_flagToProcess - To identify which flag(s) needs to be
+     * processed under postAction tag of config JSON.
+     * @param[in] i_parsedVpd - Optional Parsed VPD map. If CCIN match is
+     * required.
+     * @return Execution status.
+     */
+    bool processPostAction(
+        const std::string& i_vpdFruPath, const std::string& i_flagToProcess,
+        const std::optional<types::VPDMapVariant> i_parsedVpd = std::nullopt);
+
+    /**
+     * @brief Function to enable and bring MUX out of idle state.
+     *
+     * This finds all the MUX defined in the system json and enables them by
+     * setting the holdidle parameter to 0.
+     *
+     * @throw std::runtime_error
+     */
+    void enableMuxChips();
+
+    /**
+     * @brief An API to perform backup or restore of VPD.
+     *
+     * @param[in,out] io_srcVpdMap - Source VPD map.
+     */
+    void performBackupAndRestore(types::VPDMapVariant& io_srcVpdMap);
+
+    /**
+     * @brief API to update "Functional" property.
+     *
+     * The API sets the default value for "Functional" property once if the
+     * property is not yet populated over DBus. As the property value is not
+     * controlled by the VPD-Collection process, if it is found already
+     * populated, the functions skips re-populating the property so that already
+     * existing value can be retained.
+     *
+     * @param[in] i_inventoryObjPath - Inventory path as read from config JSON.
+     * @param[in] io_interfaces - Map to hold all the interfaces for the FRU.
+     */
+    void processFunctionalProperty(const std::string& i_inventoryObjPath,
+                                   types::InterfaceMap& io_interfaces);
+
+    /**
+     * @brief API to update "enabled" property.
+     *
+     * The API sets the default value for "enabled" property once if the
+     * property is not yet populated over DBus. As the property value is not
+     * controlled by the VPD-Collection process, if it is found already
+     * populated, the functions skips re-populating the property so that already
+     * existing value can be retained.
+     *
+     * @param[in] i_inventoryObjPath - Inventory path as read from config JSON.
+     * @param[in] io_interfaces - Map to hold all the interfaces for the FRU.
+     */
+    void processEnabledProperty(const std::string& i_inventoryObjPath,
+                                types::InterfaceMap& io_interfaces);
+
+    /**
+     * @brief API to form asset tag string for the system.
+     *
+     * @param[in] i_parsedVpdMap - Parsed VPD map.
+     *
+     * @throw std::runtime_error
+     *
+     * @return - Formed asset tag string.
+     */
+    std::string
+        createAssetTagString(const types::VPDMapVariant& i_parsedVpdMap);
+
+    /**
+     * @brief API to prime system blueprint.
+     *
+     * The API will traverse the system config JSON and will prime all the FRU
+     * paths which qualifies for priming.
+     */
+    void primeSystemBlueprint();
+
+    /**
+     * @brief API to set symbolic link for system config JSON.
+     *
+     * Once correct device tree is set, symbolic link to the correct sytsem
+     * config JSON is set to be used in subsequent BMC boot.
+     *
+     * @param[in] i_systemJson - system config JSON.
+     */
+    void setJsonSymbolicLink(const std::string& i_systemJson);
+
+    // Parsed JSON file.
+    nlohmann::json m_parsedJson{};
+
+    // Hold if symlink is present or not.
+    bool m_isSymlinkPresent = false;
+
+    // Path to config JSON if applicable.
+    std::string& m_configJsonPath;
+
+    // Keeps track of active thread(s) doing VPD collection.
+    size_t m_activeCollectionThreadCount = 0;
+
+    // Holds status, if VPD collection has been done or not.
+    // Note: This variable does not give information about successfull or failed
+    // collection. It just states, if the VPD collection process is over or not.
+    bool m_isAllFruCollected = false;
+
+    // To distinguish the factory reset path.
+    bool m_isFactoryResetDone = false;
+
+    // Mutex to guard critical resource m_activeCollectionThreadCount.
+    std::mutex m_mutex;
+
+    // Counting semaphore to limit the number of threads.
+    std::counting_semaphore<constants::MAX_THREADS> m_semaphore{
+        constants::MAX_THREADS};
+};
+} // namespace vpd
diff --git a/vpd-manager/manager.cpp b/vpd-manager/manager.cpp
deleted file mode 100644
index 8913474..0000000
--- a/vpd-manager/manager.cpp
+++ /dev/null
@@ -1,918 +0,0 @@
-#include "config.h"
-
-#include "manager.hpp"
-
-#include "common_utility.hpp"
-#include "editor_impl.hpp"
-#include "ibm_vpd_utils.hpp"
-#include "ipz_parser.hpp"
-#include "parser_factory.hpp"
-#include "reader_impl.hpp"
-#include "vpd_exceptions.hpp"
-
-#include <unistd.h>
-
-#include <phosphor-logging/elog-errors.hpp>
-#include <xyz/openbmc_project/Common/error.hpp>
-
-#include <filesystem>
-
-using namespace openpower::vpd::constants;
-using namespace openpower::vpd::inventory;
-using namespace openpower::vpd::manager::editor;
-using namespace openpower::vpd::manager::reader;
-using namespace std;
-using namespace openpower::vpd::parser;
-using namespace openpower::vpd::parser::factory;
-using namespace openpower::vpd::ipz::parser;
-using namespace openpower::vpd::exceptions;
-using namespace phosphor::logging;
-
-namespace openpower
-{
-namespace vpd
-{
-namespace manager
-{
-
-Manager::Manager(std::shared_ptr<boost::asio::io_context>& ioCon,
-                 std::shared_ptr<sdbusplus::asio::dbus_interface>& iFace,
-                 std::shared_ptr<sdbusplus::asio::connection>& conn) :
-    ioContext(ioCon), interface(iFace), conn(conn)
-{
-    interface->register_method(
-        "WriteKeyword",
-        [this](const sdbusplus::message::object_path& path,
-               const std::string& recordName, const std::string& keyword,
-               const Binary& value) {
-            this->writeKeyword(path, recordName, keyword, value);
-        });
-
-    interface->register_method(
-        "GetFRUsByUnexpandedLocationCode",
-        [this](const std::string& locationCode,
-               const uint16_t nodeNumber) -> inventory::ListOfPaths {
-            return this->getFRUsByUnexpandedLocationCode(locationCode,
-                                                         nodeNumber);
-        });
-
-    interface->register_method(
-        "GetFRUsByExpandedLocationCode",
-        [this](const std::string& locationCode) -> inventory::ListOfPaths {
-            return this->getFRUsByExpandedLocationCode(locationCode);
-        });
-
-    interface->register_method(
-        "GetExpandedLocationCode",
-        [this](const std::string& locationCode,
-               const uint16_t nodeNumber) -> std::string {
-            return this->getExpandedLocationCode(locationCode, nodeNumber);
-        });
-
-    interface->register_method("PerformVPDRecollection", [this]() {
-        this->performVPDRecollection();
-    });
-
-    interface->register_method(
-        "deleteFRUVPD", [this](const sdbusplus::message::object_path& path) {
-            this->deleteFRUVPD(path);
-        });
-
-    interface->register_method(
-        "CollectFRUVPD", [this](const sdbusplus::message::object_path& path) {
-            this->collectFRUVPD(path);
-        });
-
-    sd_bus_default(&sdBus);
-    initManager();
-}
-
-void Manager::initManager()
-{
-    try
-    {
-        processJSON();
-        restoreSystemVpd();
-        listenHostState();
-        listenAssetTag();
-
-        // Create an instance of the BIOS handler
-        biosHandler = std::make_shared<BiosHandler>(conn, *this);
-
-        // instantiate gpioMonitor class
-        gpioMon = std::make_shared<GpioMonitor>(jsonFile, ioContext);
-    }
-    catch (const std::exception& e)
-    {
-        std::cerr << e.what() << "\n";
-    }
-}
-
-/**
- * @brief An api to get list of blank system VPD properties.
- * @param[in] vpdMap - IPZ vpd map.
- * @param[in] objectPath - Object path for the FRU.
- * @param[out] blankPropertyList - Properties which are blank in System VPD and
- * needs to be updated as standby.
- */
-static void
-    getListOfBlankSystemVpd(Parsed& vpdMap, const string& objectPath,
-                            std::vector<RestoredEeproms>& blankPropertyList)
-{
-    for (const auto& systemRecKwdPair : svpdKwdMap)
-    {
-        auto it = vpdMap.find(systemRecKwdPair.first);
-
-        // check if record is found in map we got by parser
-        if (it != vpdMap.end())
-        {
-            const auto& kwdListForRecord = systemRecKwdPair.second;
-            for (const auto& keywordInfo : kwdListForRecord)
-            {
-                const auto& keyword = get<0>(keywordInfo);
-
-                DbusPropertyMap& kwdValMap = it->second;
-                auto iterator = kwdValMap.find(keyword);
-
-                if (iterator != kwdValMap.end())
-                {
-                    string& kwdValue = iterator->second;
-
-                    // check bus data
-                    const string& recordName = systemRecKwdPair.first;
-                    const string& busValue = readBusProperty(
-                        objectPath, ipzVpdInf + recordName, keyword);
-
-                    const auto& defaultValue = get<1>(keywordInfo);
-
-                    if (Binary(busValue.begin(), busValue.end()) !=
-                        defaultValue)
-                    {
-                        if (Binary(kwdValue.begin(), kwdValue.end()) ==
-                            defaultValue)
-                        {
-                            // implies data is blank on EEPROM but not on cache.
-                            // So EEPROM vpd update is required.
-                            Binary busData(busValue.begin(), busValue.end());
-
-                            blankPropertyList.push_back(std::make_tuple(
-                                objectPath, recordName, keyword, busData));
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
-
-void Manager::restoreSystemVpd()
-{
-    std::cout << "Attempting system VPD restore" << std::endl;
-    ParserInterface* parser = nullptr;
-    try
-    {
-        auto vpdVector = getVpdDataInVector(jsonFile, systemVpdFilePath);
-        uint32_t vpdStartOffset = 0;
-        const auto& inventoryPath =
-            jsonFile["frus"][systemVpdFilePath][0]["inventoryPath"]
-                .get_ref<const nlohmann::json::string_t&>();
-
-        parser = ParserFactory::getParser(vpdVector, (pimPath + inventoryPath),
-                                          systemVpdFilePath, vpdStartOffset);
-        auto parseResult = parser->parse();
-
-        if (auto pVal = std::get_if<Store>(&parseResult))
-        {
-            // map to hold all the keywords whose value is blank and
-            // needs to be updated at standby.
-            std::vector<RestoredEeproms> blankSystemVpdProperties{};
-            getListOfBlankSystemVpd(pVal->getVpdMap(), SYSTEM_OBJECT,
-                                    blankSystemVpdProperties);
-
-            // if system VPD restore is required, update the
-            // EEPROM
-            for (const auto& item : blankSystemVpdProperties)
-            {
-                std::cout << "Restoring keyword: " << std::get<2>(item)
-                          << std::endl;
-                writeKeyword(std::get<0>(item), std::get<1>(item),
-                             std::get<2>(item), std::get<3>(item));
-            }
-        }
-        else
-        {
-            std::cerr << "Not a valid format to restore system VPD"
-                      << std::endl;
-        }
-    }
-    catch (const std::exception& e)
-    {
-        std::cerr << "Failed to restore system VPD due to exception: "
-                  << e.what() << std::endl;
-    }
-    // release the parser object
-    ParserFactory::freeParser(parser);
-}
-
-void Manager::listenHostState()
-{
-    static std::shared_ptr<sdbusplus::bus::match_t> hostState =
-        std::make_shared<sdbusplus::bus::match_t>(
-            *conn,
-            sdbusplus::bus::match::rules::propertiesChanged(
-                "/xyz/openbmc_project/state/host0",
-                "xyz.openbmc_project.State.Host"),
-            [this](sdbusplus::message_t& msg) { hostStateCallBack(msg); });
-}
-
-void Manager::checkEssentialFrus()
-{
-    for (const auto& invPath : essentialFrus)
-    {
-        const auto res = readBusProperty(invPath, invItemIntf, "Present");
-
-        // implies the essential FRU is missing. Log PEL.
-        if (res == "false")
-        {
-            auto rc = sd_bus_call_method_async(
-                sdBus, NULL, loggerService, loggerObjectPath,
-                loggerCreateInterface, "Create", NULL, NULL, "ssa{ss}",
-                errIntfForEssentialFru,
-                "xyz.openbmc_project.Logging.Entry.Level.Warning", 2,
-                "DESCRIPTION", "Essential fru missing from the system.",
-                "CALLOUT_INVENTORY_PATH", (pimPath + invPath).c_str());
-
-            if (rc < 0)
-            {
-                log<level::ERR>("Error calling sd_bus_call_method_async",
-                                entry("RC=%d", rc),
-                                entry("MSG=%s", strerror(-rc)));
-            }
-        }
-    }
-}
-
-void Manager::hostStateCallBack(sdbusplus::message_t& msg)
-{
-    if (msg.is_method_error())
-    {
-        std::cerr << "Error in reading signal " << std::endl;
-    }
-
-    Path object;
-    PropertyMap propMap;
-    msg.read(object, propMap);
-    const auto itr = propMap.find("CurrentHostState");
-    if (itr != propMap.end())
-    {
-        if (auto hostState = std::get_if<std::string>(&(itr->second)))
-        {
-            // implies system is moving from standby to power on state
-            if (*hostState == "xyz.openbmc_project.State.Host.HostState."
-                              "TransitioningToRunning")
-            {
-                // detect if essential frus are present in the system.
-                checkEssentialFrus();
-
-                // check and perform recollection for FRUs replaceable at
-                // standby.
-                performVPDRecollection();
-                return;
-            }
-        }
-    }
-}
-
-void Manager::listenAssetTag()
-{
-    static std::shared_ptr<sdbusplus::bus::match_t> assetMatcher =
-        std::make_shared<sdbusplus::bus::match_t>(
-            *conn,
-            sdbusplus::bus::match::rules::propertiesChanged(
-                "/xyz/openbmc_project/inventory/system",
-                "xyz.openbmc_project.Inventory.Decorator.AssetTag"),
-            [this](sdbusplus::message_t& msg) { assetTagCallback(msg); });
-}
-
-void Manager::assetTagCallback(sdbusplus::message_t& msg)
-{
-    if (msg.is_method_error())
-    {
-        std::cerr << "Error in reading signal " << std::endl;
-    }
-
-    Path object;
-    PropertyMap propMap;
-    msg.read(object, propMap);
-    const auto itr = propMap.find("AssetTag");
-    if (itr != propMap.end())
-    {
-        if (auto assetTag = std::get_if<std::string>(&(itr->second)))
-        {
-            // Call Notify to persist the AssetTag
-            inventory::ObjectMap objectMap = {
-                {std::string{"/system"},
-                 {{"xyz.openbmc_project.Inventory.Decorator.AssetTag",
-                   {{"AssetTag", *assetTag}}}}}};
-
-            common::utility::callPIM(std::move(objectMap));
-        }
-        else
-        {
-            std::cerr << "Failed to read asset tag" << std::endl;
-        }
-    }
-}
-
-void Manager::processJSON()
-{
-    std::ifstream json(INVENTORY_JSON_SYM_LINK, std::ios::binary);
-
-    if (!json)
-    {
-        throw std::runtime_error("json file not found");
-    }
-
-    jsonFile = nlohmann::json::parse(json);
-    if (jsonFile.find("frus") == jsonFile.end())
-    {
-        throw std::runtime_error("frus group not found in json");
-    }
-
-    const nlohmann::json& groupFRUS =
-        jsonFile["frus"].get_ref<const nlohmann::json::object_t&>();
-    for (const auto& itemFRUS : groupFRUS.items())
-    {
-        const std::vector<nlohmann::json>& groupEEPROM =
-            itemFRUS.value().get_ref<const nlohmann::json::array_t&>();
-        for (const auto& itemEEPROM : groupEEPROM)
-        {
-            bool isMotherboard = false;
-            std::string redundantPath;
-
-            if (itemEEPROM["extraInterfaces"].find(
-                    "xyz.openbmc_project.Inventory.Item.Board.Motherboard") !=
-                itemEEPROM["extraInterfaces"].end())
-            {
-                isMotherboard = true;
-            }
-            if (itemEEPROM.find("redundantEeprom") != itemEEPROM.end())
-            {
-                redundantPath = itemEEPROM["redundantEeprom"]
-                                    .get_ref<const nlohmann::json::string_t&>();
-            }
-            frus.emplace(
-                itemEEPROM["inventoryPath"]
-                    .get_ref<const nlohmann::json::string_t&>(),
-                std::make_tuple(itemFRUS.key(), redundantPath, isMotherboard));
-
-            if (itemEEPROM["extraInterfaces"].find(IBM_LOCATION_CODE_INF) !=
-                itemEEPROM["extraInterfaces"].end())
-            {
-                fruLocationCode.emplace(
-                    itemEEPROM["extraInterfaces"][IBM_LOCATION_CODE_INF]
-                              ["LocationCode"]
-                                  .get_ref<const nlohmann::json::string_t&>(),
-                    itemEEPROM["inventoryPath"]
-                        .get_ref<const nlohmann::json::string_t&>());
-            }
-
-            if (itemEEPROM.value("replaceableAtStandby", false))
-            {
-                replaceableFrus.emplace_back(itemFRUS.key());
-            }
-
-            if (itemEEPROM.value("essentialFru", false))
-            {
-                essentialFrus.emplace_back(itemEEPROM["inventoryPath"]);
-            }
-        }
-    }
-}
-
-void Manager::updateSystemVPDBackUpFRU(const std::string& recordName,
-                                       const std::string& keyword,
-                                       const Binary& value)
-{
-    const std::string& systemVpdBackupPath =
-        jsonFile["frus"][systemVpdFilePath].at(0).value("systemVpdBackupPath",
-                                                        "");
-
-    if (!systemVpdBackupPath.empty() &&
-        jsonFile["frus"][systemVpdBackupPath].at(0).contains("inventoryPath"))
-    {
-        std::string systemVpdBackupInvPath =
-            jsonFile["frus"][systemVpdBackupPath][0]["inventoryPath"]
-                .get_ref<const nlohmann::json::string_t&>();
-
-        const auto& itr = svpdKwdMap.find(recordName);
-        if (itr != svpdKwdMap.end())
-        {
-            auto systemKwdInfoList = itr->second;
-            const auto& itrToKwd =
-                find_if(systemKwdInfoList.begin(), systemKwdInfoList.end(),
-                        [&keyword](const auto& kwdInfo) {
-                            return (keyword == std::get<0>(kwdInfo));
-                        });
-
-            if (itrToKwd != systemKwdInfoList.end())
-            {
-                EditorImpl edit(systemVpdBackupPath, jsonFile,
-                                std::get<4>(*itrToKwd), std::get<5>(*itrToKwd),
-                                systemVpdBackupInvPath);
-
-                // Setup offset, if any
-                uint32_t offset = 0;
-                if (jsonFile["frus"][systemVpdBackupPath].at(0).contains(
-                        "offset"))
-                {
-                    offset =
-                        jsonFile["frus"][systemVpdBackupPath].at(0).contains(
-                            "offset");
-                }
-
-                edit.updateKeyword(value, offset, true);
-            }
-        }
-    }
-    else
-    {
-        if (systemVpdBackupPath.empty())
-        {
-            throw std::runtime_error(
-                "Invalid entry for systemVpdBackupPath in JSON");
-        }
-        else
-        {
-            throw std::runtime_error(
-                "Inventory path missing for systemVpdBackupPath");
-        }
-    }
-}
-
-void Manager::writeKeyword(const sdbusplus::message::object_path& path,
-                           const std::string& recordName,
-                           const std::string& keyword, const Binary& value)
-{
-    try
-    {
-        std::string objPath{path};
-        // Strip any inventory prefix in path
-        if (objPath.find(INVENTORY_PATH) == 0)
-        {
-            objPath = objPath.substr(sizeof(INVENTORY_PATH) - 1);
-        }
-
-        if (frus.find(objPath) == frus.end())
-        {
-            throw std::runtime_error("Inventory path not found");
-        }
-
-        inventory::Path vpdFilePath = std::get<0>(frus.find(objPath)->second);
-
-        // instantiate editor class to update the data
-        EditorImpl edit(vpdFilePath, jsonFile, recordName, keyword, objPath);
-
-        uint32_t offset = 0;
-        // Setup offset, if any
-        for (const auto& item : jsonFile["frus"][vpdFilePath])
-        {
-            if (item.find("offset") != item.end())
-            {
-                offset = item["offset"];
-                break;
-            }
-        }
-
-        edit.updateKeyword(value, offset, true);
-
-        // If system VPD is being updated and system VPD is marked for back up
-        // on another FRU, update data on back up as well.
-        if (objPath == sdbusplus::message::object_path{SYSTEM_OBJECT} &&
-            jsonFile["frus"][systemVpdFilePath].at(0).contains(
-                "systemVpdBackupPath"))
-        {
-            updateSystemVPDBackUpFRU(recordName, keyword, value);
-        }
-
-        // If we have a redundant EEPROM to update, then update just the EEPROM,
-        // not the cache since that is already done when we updated the primary
-        if (!std::get<1>(frus.find(objPath)->second).empty())
-        {
-            EditorImpl edit(std::get<1>(frus.find(objPath)->second), jsonFile,
-                            recordName, keyword, objPath);
-            edit.updateKeyword(value, offset, false);
-        }
-
-        // if it is a motehrboard FRU need to check for location expansion
-        if (std::get<2>(frus.find(objPath)->second))
-        {
-            if (recordName == "VCEN" && (keyword == "FC" || keyword == "SE"))
-            {
-                edit.expandLocationCode("fcs");
-            }
-            else if (recordName == "VSYS" &&
-                     (keyword == "TM" || keyword == "SE"))
-            {
-                edit.expandLocationCode("mts");
-            }
-        }
-
-        return;
-    }
-    catch (const std::exception& e)
-    {
-        std::cerr << e.what() << std::endl;
-    }
-}
-
-ListOfPaths Manager::getFRUsByUnexpandedLocationCode(
-    const LocationCode& locationCode, const NodeNumber nodeNumber)
-{
-    ReaderImpl read;
-    return read.getFrusAtLocation(locationCode, nodeNumber, fruLocationCode);
-}
-
-ListOfPaths
-    Manager::getFRUsByExpandedLocationCode(const LocationCode& locationCode)
-{
-    ReaderImpl read;
-    return read.getFRUsByExpandedLocationCode(locationCode, fruLocationCode);
-}
-
-LocationCode Manager::getExpandedLocationCode(const LocationCode& locationCode,
-                                              const NodeNumber nodeNumber)
-{
-    ReaderImpl read;
-    return read.getExpandedLocationCode(locationCode, nodeNumber,
-                                        fruLocationCode);
-}
-
-void Manager::performVPDRecollection()
-{
-    // get list of FRUs replaceable at standby
-    for (const auto& item : replaceableFrus)
-    {
-        const vector<nlohmann::json>& groupEEPROM = jsonFile["frus"][item];
-        const nlohmann::json& singleFru = groupEEPROM[0];
-
-        const string& inventoryPath =
-            singleFru["inventoryPath"]
-                .get_ref<const nlohmann::json::string_t&>();
-
-        bool prePostActionRequired = false;
-
-        if ((jsonFile["frus"][item].at(0)).find("preAction") !=
-            jsonFile["frus"][item].at(0).end())
-        {
-            try
-            {
-                if (!executePreAction(jsonFile, item))
-                {
-                    // if the FRU has preAction defined then its execution
-                    // should pass to ensure bind/unbind of data.
-                    // preAction execution failed. should not call
-                    // bind/unbind.
-                    log<level::ERR>(
-                        "Pre-Action execution failed for the FRU",
-                        entry("ERROR=%s",
-                              ("Inventory path: " + inventoryPath).c_str()));
-
-                    // As recollection failed delete FRU data.
-                    deleteFRUVPD(inventoryPath);
-                    continue;
-                }
-            }
-            catch (const GpioException& e)
-            {
-                log<level::ERR>(e.what());
-                PelAdditionalData additionalData{};
-                additionalData.emplace("DESCRIPTION", e.what());
-                createPEL(additionalData, PelSeverity::WARNING,
-                          errIntfForGpioError, sdBus);
-
-                // As recollection failed delete FRU data.
-                deleteFRUVPD(inventoryPath);
-
-                continue;
-            }
-            prePostActionRequired = true;
-        }
-
-        // unbind, bind the driver to trigger parser.
-        triggerVpdCollection(singleFru, inventoryPath);
-
-        // this check is added to avoid file system expensive call in case not
-        // required.
-        if (prePostActionRequired)
-        {
-            // The sleep of 1sec is sliced up in 10 retries of 10 milliseconds
-            // each.
-            for (auto retryCounter = VALUE_0; retryCounter <= VALUE_10;
-                 retryCounter++)
-            {
-                // sleep for 10 millisecond
-                if (usleep(VALUE_100000) != VALUE_0)
-                {
-                    std::cout << "Sleep failed before accessing the file"
-                              << std::endl;
-                }
-
-                // Check if file showed up
-                if (!filesystem::exists(item))
-                {
-                    // Do we need to retry?
-                    if (retryCounter < VALUE_10)
-                    {
-                        continue;
-                    }
-
-                    try
-                    {
-                        // If not, then take failure postAction
-                        executePostFailAction(jsonFile, item);
-
-                        // As recollection failed delete FRU data.
-                        deleteFRUVPD(inventoryPath);
-                    }
-                    catch (const GpioException& e)
-                    {
-                        PelAdditionalData additionalData{};
-                        additionalData.emplace("DESCRIPTION", e.what());
-                        createPEL(additionalData, PelSeverity::WARNING,
-                                  errIntfForGpioError, sdBus);
-
-                        // As recollection failed delete FRU data.
-                        deleteFRUVPD(inventoryPath);
-                    }
-                }
-                else
-                {
-                    // bind the LED driver
-                    string chipAddr = singleFru.value("pcaChipAddress", "");
-                    cout
-                        << "performVPDRecollection: Executing driver binding for "
-                           "chip "
-                           "address - "
-                        << chipAddr << endl;
-
-                    executeCmd(createBindUnbindDriverCmnd(
-                        chipAddr, "i2c", "leds-pca955x", "/bind"));
-
-                    // File has been found, kill the retry loop.
-                    break;
-                }
-            }
-        }
-    }
-}
-
-void Manager::collectFRUVPD(const sdbusplus::message::object_path& path)
-{
-    std::cout << "Manager called to collect vpd for fru: " << std::string{path}
-              << std::endl;
-
-    using InvalidArgument =
-        sdbusplus::xyz::openbmc_project::Common::Error::InvalidArgument;
-    using Argument = xyz::openbmc_project::Common::InvalidArgument;
-
-    std::string objPath{path};
-
-    // Strip any inventory prefix in path
-    if (objPath.find(INVENTORY_PATH) == 0)
-    {
-        objPath = objPath.substr(sizeof(INVENTORY_PATH) - 1);
-    }
-
-    // if path not found in Json.
-    if (frus.find(objPath) == frus.end())
-    {
-        elog<InvalidArgument>(Argument::ARGUMENT_NAME("Object Path"),
-                              Argument::ARGUMENT_VALUE(objPath.c_str()));
-    }
-
-    inventory::Path vpdFilePath = std::get<0>(frus.find(objPath)->second);
-
-    const std::vector<nlohmann::json>& groupEEPROM =
-        jsonFile["frus"][vpdFilePath].get_ref<const nlohmann::json::array_t&>();
-
-    nlohmann::json singleFru{};
-    for (const auto& item : groupEEPROM)
-    {
-        if (item["inventoryPath"] == objPath)
-        {
-            // this is the inventory we are looking for
-            singleFru = item;
-            break;
-        }
-    }
-
-    // check if the device qualifies for CM.
-    if (singleFru.value("concurrentlyMaintainable", false))
-    {
-        bool prePostActionRequired = false;
-
-        if ((jsonFile["frus"][vpdFilePath].at(0)).find("preAction") !=
-            jsonFile["frus"][vpdFilePath].at(0).end())
-        {
-            if (!executePreAction(jsonFile, vpdFilePath))
-            {
-                // if the FRU has preAction defined then its execution should
-                // pass to ensure bind/unbind of data.
-                // preAction execution failed. should not call bind/unbind.
-                log<level::ERR>("Pre-Action execution failed for the FRU");
-                return;
-            }
-
-            prePostActionRequired = true;
-        }
-
-        // unbind, bind the driver to trigger parser.
-        triggerVpdCollection(singleFru, objPath);
-
-        // this check is added to avoid file system expensive call in case not
-        // required.
-        if (prePostActionRequired)
-        {
-            // Check if device showed up (test for file)
-            if (!filesystem::exists(vpdFilePath))
-            {
-                try
-                {
-                    // If not, then take failure postAction
-                    executePostFailAction(jsonFile, vpdFilePath);
-                }
-                catch (const GpioException& e)
-                {
-                    PelAdditionalData additionalData{};
-                    additionalData.emplace("DESCRIPTION", e.what());
-                    createPEL(additionalData, PelSeverity::WARNING,
-                              errIntfForGpioError, sdBus);
-                }
-            }
-            else
-            {
-                // bind the LED driver
-                string chipAddr = jsonFile["frus"][vpdFilePath].at(0).value(
-                    "pcaChipAddress", "");
-                cout << "Executing driver binding for chip address - "
-                     << chipAddr << endl;
-
-                executeCmd(createBindUnbindDriverCmnd(chipAddr, "i2c",
-                                                      "leds-pca955x", "/bind"));
-            }
-        }
-        return;
-    }
-    else
-    {
-        elog<InvalidArgument>(Argument::ARGUMENT_NAME("Object Path"),
-                              Argument::ARGUMENT_VALUE(objPath.c_str()));
-    }
-}
-
-void Manager::triggerVpdCollection(const nlohmann::json& singleFru,
-                                   const std::string& path)
-{
-    if ((singleFru.find("devAddress") == singleFru.end()) ||
-        (singleFru.find("driverType") == singleFru.end()) ||
-        (singleFru.find("busType") == singleFru.end()))
-    {
-        // The FRUs is marked for collection but missing mandatory
-        // fields for collection. Log error and return.
-        log<level::ERR>(
-            "Collection Failed as mandatory field missing in Json",
-            entry("ERROR=%s", ("Recollection failed for " + (path)).c_str()));
-
-        return;
-    }
-
-    string deviceAddress = singleFru["devAddress"];
-    const string& driverType = singleFru["driverType"];
-    const string& busType = singleFru["busType"];
-
-    // devTreeStatus flag is present in json as false to mention
-    // that the EEPROM is not mentioned in device tree. If this flag
-    // is absent consider the value to be true, i.e EEPROM is
-    // mentioned in device tree
-    if (!singleFru.value("devTreeStatus", true))
-    {
-        auto pos = deviceAddress.find('-');
-        if (pos != string::npos)
-        {
-            string busNum = deviceAddress.substr(0, pos);
-            deviceAddress = "0x" + deviceAddress.substr(pos + 1, string::npos);
-
-            string deleteDevice =
-                "echo" + deviceAddress + " > /sys/bus/" + busType +
-                "/devices/" + busType + "-" + busNum + "/delete_device";
-            executeCmd(deleteDevice);
-
-            string addDevice =
-                "echo" + driverType + " " + deviceAddress + " > /sys/bus/" +
-                busType + "/devices/" + busType + "-" + busNum + "/new_device";
-            executeCmd(addDevice);
-        }
-        else
-        {
-            const string& inventoryPath =
-                singleFru["inventoryPath"]
-                    .get_ref<const nlohmann::json::string_t&>();
-
-            log<level::ERR>(
-                "Wrong format of device address in Json",
-                entry("ERROR=%s",
-                      ("Recollection failed for " + inventoryPath).c_str()));
-        }
-    }
-    else
-    {
-        executeCmd(createBindUnbindDriverCmnd(deviceAddress, busType,
-                                              driverType, "/unbind"));
-        executeCmd(createBindUnbindDriverCmnd(deviceAddress, busType,
-                                              driverType, "/bind"));
-    }
-}
-
-void Manager::deleteFRUVPD(const sdbusplus::message::object_path& path)
-{
-    std::cout << "Manager called to delete vpd for fru: " << std::string{path}
-              << std::endl;
-
-    using InvalidArgument =
-        sdbusplus::xyz::openbmc_project::Common::Error::InvalidArgument;
-    using Argument = xyz::openbmc_project::Common::InvalidArgument;
-
-    std::string objPath{path};
-
-    // Strip any inventory prefix in path
-    if (objPath.find(INVENTORY_PATH) == 0)
-    {
-        objPath = objPath.substr(sizeof(INVENTORY_PATH) - 1);
-    }
-
-    // if path not found in Json.
-    if (frus.find(objPath) == frus.end())
-    {
-        elog<InvalidArgument>(Argument::ARGUMENT_NAME("Object Path"),
-                              Argument::ARGUMENT_VALUE(objPath.c_str()));
-    }
-
-    inventory::Path& vpdFilePath = std::get<0>(frus.find(objPath)->second);
-
-    string chipAddress =
-        jsonFile["frus"][vpdFilePath].at(0).value("pcaChipAddress", "");
-
-    // if the FRU is present, then unbind the LED driver if any
-    if (readBusProperty(objPath, "xyz.openbmc_project.Inventory.Item",
-                        "Present") == "true")
-    {
-        // check if we have cxp-port populated for the given object path.
-        std::vector<std::string> interfaceList{
-            "xyz.openbmc_project.State.Decorator.OperationalStatus"};
-        MapperResponse subTree = getObjectSubtreeForInterfaces(
-            INVENTORY_PATH + objPath, 0, interfaceList);
-
-        if (subTree.size() != 0)
-        {
-            for (auto [objectPath, serviceInterfaceMap] : subTree)
-            {
-                std::string subTreeObjPath{objectPath};
-
-                // Strip any inventory prefix in path
-                if (subTreeObjPath.find(INVENTORY_PATH) == 0)
-                {
-                    subTreeObjPath =
-                        subTreeObjPath.substr(sizeof(INVENTORY_PATH) - 1);
-                }
-
-                inventory::ObjectMap objectMap{
-                    {subTreeObjPath,
-                     {{"xyz.openbmc_project.State.Decorator.OperationalStatus",
-                       {{"Functional", true}}},
-                      {"xyz.openbmc_project.Inventory.Item",
-                       {{"Present", false}}}}}};
-
-                // objectMap.emplace(objectPath, move(interfaceMap));
-                common::utility::callPIM(move(objectMap));
-            }
-        }
-
-        // Unbind the LED driver for this FRU
-        cout << "Unbinding device- " << chipAddress << endl;
-        executeCmd(createBindUnbindDriverCmnd(chipAddress, "i2c",
-                                              "leds-pca955x", "/unbind"));
-
-        inventory::InterfaceMap interfacesPropMap;
-        clearVpdOnRemoval(INVENTORY_PATH + objPath, interfacesPropMap);
-
-        inventory::ObjectMap objectMap;
-        objectMap.emplace(objPath, move(interfacesPropMap));
-
-        common::utility::callPIM(move(objectMap));
-    }
-}
-
-} // namespace manager
-} // namespace vpd
-} // namespace openpower
diff --git a/vpd-manager/manager.hpp b/vpd-manager/manager.hpp
deleted file mode 100644
index ae278ac..0000000
--- a/vpd-manager/manager.hpp
+++ /dev/null
@@ -1,232 +0,0 @@
-#pragma once
-
-#include "bios_handler.hpp"
-#include "editor_impl.hpp"
-#include "gpioMonitor.hpp"
-
-#include <sdbusplus/asio/object_server.hpp>
-
-#include <map>
-
-namespace openpower
-{
-namespace vpd
-{
-namespace manager
-{
-
-/** @class Manager
- *  @brief OpenBMC VPD Manager implementation.
- *
- *  Implements methods under interface com.ibm.vpd.Manager.
- */
-class Manager
-{
-  public:
-    /* Define all of the basic class operations:
-     * Not allowed:
-     * - Default constructor to avoid nullptrs.
-     * - Copy operations due to internal unique_ptr.
-     * - Move operations due to 'this' being registered as the
-     *  'context' with sdbus.
-     * Allowed:
-     * - Destructor.
-     */
-    Manager() = delete;
-    Manager(const Manager&) = delete;
-    Manager& operator=(const Manager&) = delete;
-    Manager(Manager&&) = delete;
-    ~Manager()
-    {
-        sd_bus_unref(sdBus);
-    }
-
-    /** @brief Constructor.
-     *  @param[in] ioCon - IO context.
-     *  @param[in] iFace - interface to implement.
-     *  @param[in] connection - Dbus Connection.
-     */
-    Manager(std::shared_ptr<boost::asio::io_context>& ioCon,
-            std::shared_ptr<sdbusplus::asio::dbus_interface>& iFace,
-            std::shared_ptr<sdbusplus::asio::connection>& conn);
-
-    /** @brief Implementation for WriteKeyword
-     *  Api to update the keyword value for a given inventory.
-     *
-     *  @param[in] path - Path to the D-Bus object that represents the FRU.
-     *  @param[in] recordName - name of the record for which the keyword value
-     *  has to be modified
-     *  @param[in] keyword - keyword whose value needs to be updated
-     *  @param[in] value - value that needs to be updated
-     */
-    void writeKeyword(const sdbusplus::message::object_path& path,
-                      const std::string& recordName, const std::string& keyword,
-                      const Binary& value);
-
-    /** @brief Implementation for GetFRUsByUnexpandedLocationCode
-     *  A method to get list of FRU D-BUS object paths for a given unexpanded
-     *  location code. Returns empty vector if no FRU found for that location
-     *  code.
-     *
-     *  @param[in] locationCode - An un-expanded Location code.
-     *  @param[in] nodeNumber - Denotes the node in case of a multi-node
-     *  configuration, ignored on a single node system.
-     *
-     *  @return inventoryList[std::vector<sdbusplus::message::object_path>] -
-     *  List of all the FRUs D-Bus object paths for the given location code.
-     */
-    inventory::ListOfPaths getFRUsByUnexpandedLocationCode(
-        const std::string& locationCode, const uint16_t nodeNumber);
-
-    /** @brief Implementation for GetFRUsByExpandedLocationCode
-     *  A method to get list of FRU D-BUS object paths for a given expanded
-     *  location code. Returns empty vector if no FRU found for that location
-     *  code.
-     *
-     *  @param[in] locationCode - Location code in expanded format.
-     *
-     *  @return inventoryList[std::vector<sdbusplus::message::object_path>] -
-     *  List of all the FRUs D-Bus object path for the given location code.
-     */
-    inventory::ListOfPaths
-        getFRUsByExpandedLocationCode(const std::string& locationCode);
-
-    /** @brief Implementation for GetExpandedLocationCode
-     *  An API to get expanded location code corresponding to a given
-     *  un-expanded location code.
-     *
-     *  @param[in] locationCode - Location code in un-expaned format.
-     *  @param[in] nodeNumber - Denotes the node in case of multi-node
-     *  configuration. Ignored in case of single node configuration.
-     *
-     *  @return locationCode[std::string] - Location code in expanded format.
-     */
-    std::string getExpandedLocationCode(const std::string& locationCode,
-                                        const uint16_t nodeNumber);
-
-    /** @brief Api to perform VPD recollection.
-     * This api will trigger parser to perform VPD recollection for FRUs that
-     * can be replaced at standby.
-     */
-    void performVPDRecollection();
-
-    /** @brief Api to delete FRU VPD.
-     * This api will set the present property of given FRU to false. If already
-     * set to false, It will log an error.
-     * @param[in] path - Object path of FRU.
-     */
-    void deleteFRUVPD(const sdbusplus::message::object_path& path);
-
-    /** @brief Api to perform VPD collection for a single fru.
-     *  @param[in] path - Dbus object path of that fru.
-     */
-    void collectFRUVPD(const sdbusplus::message::object_path& path);
-
-  private:
-    /**
-     * @brief An api to process some initial requirements.
-     */
-    void initManager();
-
-    /** @brief process the given JSON file
-     */
-    void processJSON();
-
-    /** @brief Api to register host state callback.
-     * This api will register callback to listen for host state property change.
-     */
-    void listenHostState();
-
-    /** @brief Callback to listen for Host state change
-     *  @param[in] msg - callback message.
-     */
-    void hostStateCallBack(sdbusplus::message_t& msg);
-
-    /** @brief Api to register AssetTag property change.
-     * This api will register callback to listen for asset tag property change.
-     */
-    void listenAssetTag();
-
-    /** @brief Callback to listen for Asset tag change
-     *  @param[in] msg - callback message.
-     */
-    void assetTagCallback(sdbusplus::message_t& msg);
-
-    /**
-     * @brief Restores and defaulted VPD on the system VPD EEPROM.
-     *
-     * This function will read the system VPD EEPROM and check if any of the
-     * keywords that need to be preserved across FRU replacements are defaulted
-     * in the EEPROM. If they are, this function will restore them from the
-     * value that is in the D-Bus cache.
-     */
-    void restoreSystemVpd();
-
-    /**
-     * @brief An api to trigger vpd collection for a fru by bind/unbind of
-     * driver.
-     * @param[in] singleFru - Json of a single fru inder a given EEPROM path.
-     * @param[in] path - Inventory path.
-     */
-    void triggerVpdCollection(const nlohmann::json& singleFru,
-                              const std::string& path);
-
-    /** @brief Update FRU that back up system VPD.
-     *
-     * The API checks if the FRU being updated is system FRU and the record
-     * keyword pair being updated is the one that needs to be backed up and
-     * updates the back up FRU accordingly.
-     *
-     *  @param[in] recordName - name of the record.
-     *  @param[in] keyword - keyword whose value needs to be updated.
-     *  @param[in] value - value that needs to be updated.
-     */
-    void updateSystemVPDBackUpFRU(const std::string& recordName,
-                                  const std::string& keyword,
-                                  const Binary& value);
-
-    /**
-     * @brief Check for essential fru in the system.
-     * The api check for the presence of FRUs marked as essential and logs PEL
-     * in case they are missing.
-     */
-    void checkEssentialFrus();
-
-    // Shared pointer to asio context object.
-    std::shared_ptr<boost::asio::io_context>& ioContext;
-
-    // Shared pointer to Dbus interface class.
-    std::shared_ptr<sdbusplus::asio::dbus_interface>& interface;
-
-    // Shared pointer to bus connection.
-    std::shared_ptr<sdbusplus::asio::connection>& conn;
-
-    // file to store parsed json
-    nlohmann::json jsonFile;
-
-    // map to hold mapping to inventory path to vpd file path
-    // we need as map here as it is in reverse order to that of json
-    inventory::FrusMap frus;
-
-    // map to hold the mapping of location code and inventory path
-    inventory::LocationCodeMap fruLocationCode;
-
-    // map to hold FRUs which can be replaced at standby
-    inventory::ReplaceableFrus replaceableFrus;
-
-    // Shared pointer to gpio monitor object.
-    std::shared_ptr<GpioMonitor> gpioMon;
-
-    // Shared pointer to instance of the BIOS handler.
-    std::shared_ptr<BiosHandler> biosHandler;
-
-    // List of FRUs marked as essential in the system.
-    inventory::EssentialFrus essentialFrus;
-
-    // sd-bus
-    sd_bus* sdBus = nullptr;
-};
-
-} // namespace manager
-} // namespace vpd
-} // namespace openpower
diff --git a/vpd-manager/manager_main.cpp b/vpd-manager/manager_main.cpp
deleted file mode 100644
index bf8c0d9..0000000
--- a/vpd-manager/manager_main.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-#include "config.h"
-
-#include "manager.hpp"
-
-#include <sdbusplus/asio/connection.hpp>
-
-int main(int /*argc*/, char** /*argv*/)
-{
-    try
-    {
-        auto io_con = std::make_shared<boost::asio::io_context>();
-        auto connection =
-            std::make_shared<sdbusplus::asio::connection>(*io_con);
-        connection->request_name(BUSNAME);
-
-        auto server = sdbusplus::asio::object_server(connection);
-
-        std::shared_ptr<sdbusplus::asio::dbus_interface> interface =
-            server.add_interface(OBJPATH, IFACE);
-
-        auto vpdManager = std::make_shared<openpower::vpd::manager::Manager>(
-            io_con, interface, connection);
-        interface->initialize();
-
-        // Start event loop.
-        io_con->run();
-
-        exit(EXIT_SUCCESS);
-    }
-    catch (const std::exception& e)
-    {
-        std::cerr << e.what() << "\n";
-    }
-    exit(EXIT_FAILURE);
-}
diff --git a/vpd-manager/meson.build b/vpd-manager/meson.build
index 22ac81a..4e9c10b 100644
--- a/vpd-manager/meson.build
+++ b/vpd-manager/meson.build
@@ -1,42 +1,47 @@
-systemd = dependency('libsystemd', version: '>= 221')
-sdeventplus = dependency('sdeventplus')
+common_SOURCES = ['src/logger.cpp',
+                  'src/parser_factory.cpp',
+                  'src/ipz_parser.cpp',
+                  'src/keyword_vpd_parser.cpp',
+                  'src/ddimm_parser.cpp',
+                  'src/isdimm_parser.cpp',
+                  'src/parser.cpp',
+                  'src/worker.cpp',
+                  'src/backup_restore.cpp',
+                  'src/gpio_monitor.cpp',
+                  'src/event_logger.cpp']
 
-configuration_inc = include_directories('.', '../', '../vpd-parser/')
+vpd_manager_SOURCES = ['src/manager_main.cpp',
+                    'src/manager.cpp',
+                    'src/bios_handler.cpp',
+                    ] + common_SOURCES
 
-vpd_manager_SOURCES = [
-    'manager_main.cpp',
-    'manager.cpp',
-    'editor_impl.cpp',
-    'reader_impl.cpp',
-    'gpioMonitor.cpp',
-    'bios_handler.cpp',
-    '../impl.cpp',
-    '../vpd-parser/ipz_parser.cpp',
-    '../ibm_vpd_utils.cpp',
-    '../common_utility.cpp',
-    '../vpd-parser//keyword_vpd_parser.cpp',
-    '../vpd-parser/memory_vpd_parser.cpp',
-    '../vpd-parser/isdimm_vpd_parser.cpp',
-    '../vpd-parser/parser_factory.cpp'
-]
+parser_dependencies = [sdbusplus, libgpiodcxx, phosphor_logging, phosphor_dbus_interfaces]
 
-vpd_manager_dependencies = [
-    CLI11_dep,
-    libgpiodcxx,
-    phosphor_logging,
-    sdeventplus,
-    systemd,
-    nlohmann_json_dep,
-]
+parser_build_arguments = []
+if get_option('ibm_system').enabled()
+    parser_build_arguments += ['-DIBM_SYSTEM']
+endif
 
 vpd_manager_exe = executable(
-                 'vpd-manager',
-                 vpd_manager_SOURCES,
-                 include_directories : configuration_inc,
-                 dependencies : [
-                                vpd_manager_dependencies,
+                'vpd-manager',
+                vpd_manager_SOURCES,
+                include_directories : ['../', 'include/', '../configuration/'],
+                link_with : libvpdecc,
+                dependencies : [
+                                parser_dependencies,
                                 ],
-                 link_with : libvpdecc,
-                 install : true,
-                 cpp_args : '-DIPZ_PARSER'
+                install : true,
+                cpp_args : parser_build_arguments,
                 )
+
+vpd_parser_SOURCES = ['src/vpd_parser_main.cpp',
+                     ]+ common_SOURCES
+
+vpd_parser_exe = executable(
+                'vpd-parser',
+                vpd_parser_SOURCES,
+                include_directories : ['../', 'include/', '../configuration/'],
+                link_with : libvpdecc,
+                dependencies : parser_dependencies,
+                install : true,
+                )
\ No newline at end of file
diff --git a/vpd-manager/meson.options b/vpd-manager/meson.options
deleted file mode 100644
index 92afa55..0000000
--- a/vpd-manager/meson.options
+++ /dev/null
@@ -1,5 +0,0 @@
-option('BUSNAME', type : 'string', value : 'com.ibm.VPD.Manager', description : 'BUS NAME FOR THE SERVICE')
-option('OBJPATH', type : 'string', value : '/com/ibm/VPD/Manager', description : 'OBJECT PATH FOR THE SERVICE')
-option('IFACE', type : 'string', value : 'com.ibm.VPD.Manager', description : 'INTERFACE NAME')
-option('oe-sdk', type : 'feature', value : 'disabled', description : 'ENABLE OE SDK FOR VPD KEYWORD EDITOR')
-option('INVENTORY_JSON', type : 'string', value : '/var/lib/vpd/vpd_inventory.json', description : 'PATH TO INVENTORY JSON FILE')
diff --git a/vpd-manager/reader_impl.cpp b/vpd-manager/reader_impl.cpp
deleted file mode 100644
index e4f2d8b..0000000
--- a/vpd-manager/reader_impl.cpp
+++ /dev/null
@@ -1,229 +0,0 @@
-#include "config.h"
-
-#include "reader_impl.hpp"
-
-#include "ibm_vpd_utils.hpp"
-
-#include <com/ibm/VPD/error.hpp>
-#include <phosphor-logging/elog-errors.hpp>
-#include <xyz/openbmc_project/Common/error.hpp>
-
-#include <algorithm>
-#include <map>
-#include <vector>
-
-#ifdef ManagerTest
-#include "reader_test.hpp"
-#endif
-
-namespace openpower
-{
-namespace vpd
-{
-namespace manager
-{
-namespace reader
-{
-
-using namespace phosphor::logging;
-using namespace openpower::vpd::inventory;
-using namespace openpower::vpd::constants;
-using namespace openpower::vpd::utils::interface;
-
-using InvalidArgument =
-    sdbusplus::xyz::openbmc_project::Common::Error::InvalidArgument;
-using Argument = xyz::openbmc_project::Common::InvalidArgument;
-using LocationNotFound = sdbusplus::com::ibm::VPD::Error::LocationNotFound;
-
-bool ReaderImpl::isValidLocationCode(const LocationCode& locationCode) const
-{
-    if ((locationCode.length() < UNEXP_LOCATION_CODE_MIN_LENGTH) ||
-        (locationCode[0] != 'U') ||
-        ((locationCode.find("fcs", 1, 3) == std::string::npos) &&
-         (locationCode.find("mts", 1, 3) == std::string::npos)))
-    {
-        return false;
-    }
-
-    return true;
-}
-
-LocationCode ReaderImpl::getExpandedLocationCode(
-    const LocationCode& locationCode, const NodeNumber& nodeNumber,
-    const LocationCodeMap& frusLocationCode) const
-{
-    // unused at this moment. Hence to avoid warnings
-    (void)nodeNumber;
-    if (!isValidLocationCode(locationCode))
-    {
-        // argument is not valid
-        elog<InvalidArgument>(Argument::ARGUMENT_NAME("LOCATIONCODE"),
-                              Argument::ARGUMENT_VALUE(locationCode.c_str()));
-    }
-    auto iterator = frusLocationCode.find(locationCode);
-    if (iterator == frusLocationCode.end())
-    {
-        // TODO: Implementation of error logic till then throwing invalid
-        // argument
-        // the location code was not found in the system
-        // elog<LocationNotFound>();
-        elog<InvalidArgument>(Argument::ARGUMENT_NAME("LOCATIONCODE"),
-                              Argument::ARGUMENT_VALUE(locationCode.c_str()));
-    }
-
-    std::string expandedLocationCode{};
-#ifndef ManagerTest
-    utility utilObj;
-#endif
-    expandedLocationCode = utilObj.readBusProperty(
-        iterator->second, IBM_LOCATION_CODE_INF, "LocationCode");
-    return expandedLocationCode;
-}
-
-ListOfPaths ReaderImpl::getFrusAtLocation(
-    const LocationCode& locationCode, const NodeNumber& nodeNumber,
-    const LocationCodeMap& frusLocationCode) const
-{
-    // unused at this moment, to avoid compilation warning
-    (void)nodeNumber;
-
-    // TODO:Implementation related to node number
-    if (!isValidLocationCode(locationCode))
-    {
-        // argument is not valid
-        elog<InvalidArgument>(Argument::ARGUMENT_NAME("LOCATIONCODE"),
-                              Argument::ARGUMENT_VALUE(locationCode.c_str()));
-    }
-
-    auto range = frusLocationCode.equal_range(locationCode);
-
-    if (range.first == frusLocationCode.end())
-    {
-        // TODO: Implementation of error logic till then throwing invalid
-        // argument
-        // the location code was not found in the system
-        // elog<LocationNotFound>();
-        elog<InvalidArgument>(Argument::ARGUMENT_NAME("LOCATIONCODE"),
-                              Argument::ARGUMENT_VALUE(locationCode.c_str()));
-    }
-
-    ListOfPaths inventoryPaths;
-
-    for_each(range.first, range.second,
-             [&inventoryPaths](
-                 const inventory::LocationCodeMap::value_type& mappedItem) {
-                 inventoryPaths.push_back(INVENTORY_PATH + mappedItem.second);
-             });
-    return inventoryPaths;
-}
-
-std::tuple<LocationCode, NodeNumber>
-    ReaderImpl::getCollapsedLocationCode(const LocationCode& locationCode) const
-{
-    // Location code should always start with U and fulfil minimum length
-    // criteria.
-    if (locationCode[0] != 'U' ||
-        locationCode.length() < EXP_LOCATIN_CODE_MIN_LENGTH)
-    {
-        elog<InvalidArgument>(Argument::ARGUMENT_NAME("LOCATIONCODE"),
-                              Argument::ARGUMENT_VALUE(locationCode.c_str()));
-    }
-
-    std::string fc{};
-#ifndef ManagerTest
-    utility utilObj;
-#endif
-
-    fc = utilObj.readBusProperty(SYSTEM_OBJECT, "com.ibm.ipzvpd.VCEN", "FC");
-
-    // get the first part of expanded location code to check for FC or TM
-    std::string firstKeyword = locationCode.substr(1, 4);
-
-    LocationCode unexpandedLocationCode{};
-    NodeNumber nodeNummber = INVALID_NODE_NUMBER;
-
-    // check if this value matches the value of FC kwd
-    if (fc.substr(0, 4) ==
-        firstKeyword) // implies this is Ufcs format location code
-    {
-        // period(.) should be there in expanded location code to seggregate FC,
-        // Node number and SE values.
-        size_t nodeStartPos = locationCode.find('.');
-        if (nodeStartPos == std::string::npos)
-        {
-            elog<InvalidArgument>(
-                Argument::ARGUMENT_NAME("LOCATIONCODE"),
-                Argument::ARGUMENT_VALUE(locationCode.c_str()));
-        }
-
-        // second period(.) should be there to end the node details in non
-        // system location code
-        size_t nodeEndPos = locationCode.find('.', nodeStartPos + 1);
-        if (nodeEndPos == std::string::npos)
-        {
-            elog<InvalidArgument>(
-                Argument::ARGUMENT_NAME("LOCATIONCODE"),
-                Argument::ARGUMENT_VALUE(locationCode.c_str()));
-        }
-
-        // skip 3 for '.ND'
-        nodeNummber = std::stoi(locationCode.substr(
-            nodeStartPos + 3, (nodeEndPos - nodeStartPos - 3)));
-
-        // confirm if there are other details apart FC, Node number and SE in
-        // location code
-        if (locationCode.length() > EXP_LOCATIN_CODE_MIN_LENGTH)
-        {
-            unexpandedLocationCode =
-                locationCode[0] + (std::string) "fcs" +
-                locationCode.substr(nodeEndPos + 1 + SE_KWD_LENGTH,
-                                    std::string::npos);
-        }
-        else
-        {
-            unexpandedLocationCode = "Ufcs";
-        }
-    }
-    else
-    {
-        std::string tm{};
-        // read TM kwd value
-        tm =
-            utilObj.readBusProperty(SYSTEM_OBJECT, "com.ibm.ipzvpd.VSYS", "TM");
-        ;
-
-        // check if the substr matches to TM kwd
-        if (tm.substr(0, 4) ==
-            firstKeyword) // implies this is Umts format of location code
-        {
-            // system location code will not have any other details and node
-            // number
-            unexpandedLocationCode = "Umts";
-        }
-        // it does not belong to either "fcs" or "mts"
-        else
-        {
-            elog<InvalidArgument>(
-                Argument::ARGUMENT_NAME("LOCATIONCODE"),
-                Argument::ARGUMENT_VALUE(locationCode.c_str()));
-        }
-    }
-
-    return std::make_tuple(unexpandedLocationCode, nodeNummber);
-}
-
-ListOfPaths ReaderImpl::getFRUsByExpandedLocationCode(
-    const inventory::LocationCode& locationCode,
-    const inventory::LocationCodeMap& frusLocationCode) const
-{
-    std::tuple<LocationCode, NodeNumber> locationAndNodePair =
-        getCollapsedLocationCode(locationCode);
-
-    return getFrusAtLocation(std::get<0>(locationAndNodePair),
-                             std::get<1>(locationAndNodePair),
-                             frusLocationCode);
-}
-} // namespace reader
-} // namespace manager
-} // namespace vpd
-} // namespace openpower
diff --git a/vpd-manager/reader_impl.hpp b/vpd-manager/reader_impl.hpp
deleted file mode 100644
index 7525a4f..0000000
--- a/vpd-manager/reader_impl.hpp
+++ /dev/null
@@ -1,90 +0,0 @@
-#pragma once
-
-#include "types.hpp"
-#include "utilInterface.hpp"
-
-namespace openpower
-{
-namespace vpd
-{
-namespace manager
-{
-namespace reader
-{
-
-using IUtil = openpower::vpd::utils::interface::UtilityInterface;
-/** @class ReaderImpl
- *  @brief Implements functionalities related to reading of VPD related data
- *  from the system.
- */
-class ReaderImpl
-{
-  public:
-    ReaderImpl() = default;
-    ReaderImpl(const ReaderImpl&) = default;
-    ReaderImpl& operator=(const ReaderImpl&) = delete;
-    ReaderImpl(ReaderImpl&&) = default;
-    ReaderImpl& operator=(ReaderImpl&&) = delete;
-    ~ReaderImpl() = default;
-
-#ifdef ManagerTest
-    explicit ReaderImpl(IUtil& obj) : utilObj(obj) {}
-#endif
-
-    /** @brief An API to expand a given unexpanded location code.
-     *  @param[in] locationCode - unexpanded location code.
-     *  @param[in] nodeNumber - node on which we are looking for location code.
-     *  @param[in] frusLocationCode - mapping of inventory path and location
-     * code.
-     *  @return Expanded location code.
-     */
-    inventory::LocationCode getExpandedLocationCode(
-        const inventory::LocationCode& locationCode,
-        const inventory::NodeNumber& nodeNumber,
-        const inventory::LocationCodeMap& frusLocationCode) const;
-
-    /** @brief An API to get list of all the FRUs at the given location code
-     *  @param[in] - location code in unexpanded format
-     *  @param[in] - node number
-     *  @param[in] - mapping of location code and Inventory path
-     *  @return list of Inventory paths at the given location
-     */
-    inventory::ListOfPaths getFrusAtLocation(
-        const inventory::LocationCode& locationCode,
-        const inventory::NodeNumber& nodeNumber,
-        const inventory::LocationCodeMap& frusLocationCode) const;
-
-    /** @brief An API to get list of all the FRUs at the given location code
-     *  @param[in] - location code in unexpanded format
-     *  @param[in] - mapping of location code and Inventory path
-     *  @return list of Inventory paths at the given location
-     */
-    inventory::ListOfPaths getFRUsByExpandedLocationCode(
-        const inventory::LocationCode& locationCode,
-        const inventory::LocationCodeMap& frusLocationCode) const;
-
-  private:
-    /** @brief An api to check validity of location code
-     *  @param[in] - location code
-     *  @return true/false based on validity check
-     */
-    bool isValidLocationCode(const inventory::LocationCode& locationCode) const;
-
-    /** @brief An API to split expanded location code to its un-expanded
-     *  format as represented in VPD JSON and the node number.
-     *  @param[in] Location code in expanded format.
-     *  @return Location code in un-expanded format and its node number.
-     */
-    std::tuple<inventory::LocationCode, inventory::NodeNumber>
-        getCollapsedLocationCode(
-            const inventory::LocationCode& locationCode) const;
-#ifdef ManagerTest
-    IUtil& utilObj;
-#endif
-
-}; // class ReaderImpl
-
-} // namespace reader
-} // namespace manager
-} // namespace vpd
-} // namespace openpower
diff --git a/vpd-manager/src/backup_restore.cpp b/vpd-manager/src/backup_restore.cpp
new file mode 100644
index 0000000..294efc4
--- /dev/null
+++ b/vpd-manager/src/backup_restore.cpp
@@ -0,0 +1,384 @@
+#include "backup_restore.hpp"
+
+#include "constants.hpp"
+#include "event_logger.hpp"
+#include "exceptions.hpp"
+#include "logger.hpp"
+#include "parser.hpp"
+#include "types.hpp"
+
+#include <utility/json_utility.hpp>
+#include <utility/vpd_specific_utility.hpp>
+
+namespace vpd
+{
+BackupAndRestoreStatus BackupAndRestore::m_backupAndRestoreStatus =
+    BackupAndRestoreStatus::NotStarted;
+
+BackupAndRestore::BackupAndRestore(const nlohmann::json& i_sysCfgJsonObj) :
+    m_sysCfgJsonObj(i_sysCfgJsonObj)
+{
+    std::string l_backupAndRestoreCfgFilePath =
+        i_sysCfgJsonObj.value("backupRestoreConfigPath", "");
+    try
+    {
+        m_backupAndRestoreCfgJsonObj =
+            jsonUtility::getParsedJson(l_backupAndRestoreCfgFilePath);
+    }
+    catch (const std::exception& ex)
+    {
+        logging::logMessage(
+            "Failed to intialize backup and restore object for file = " +
+            l_backupAndRestoreCfgFilePath);
+        throw(ex);
+    }
+}
+
+std::tuple<types::VPDMapVariant, types::VPDMapVariant>
+    BackupAndRestore::backupAndRestore()
+{
+    auto l_emptyVariantPair =
+        std::make_tuple(std::monostate{}, std::monostate{});
+
+    if (m_backupAndRestoreStatus >= BackupAndRestoreStatus::Invoked)
+    {
+        logging::logMessage("Backup and restore invoked already.");
+        return l_emptyVariantPair;
+    }
+
+    m_backupAndRestoreStatus = BackupAndRestoreStatus::Invoked;
+    try
+    {
+        if (m_backupAndRestoreCfgJsonObj.empty() ||
+            !m_backupAndRestoreCfgJsonObj.contains("source") ||
+            !m_backupAndRestoreCfgJsonObj.contains("destination") ||
+            !m_backupAndRestoreCfgJsonObj.contains("type") ||
+            !m_backupAndRestoreCfgJsonObj.contains("backupMap"))
+        {
+            logging::logMessage(
+                "Backup restore config JSON is missing necessary tag(s), can't initiate backup and restore.");
+            return l_emptyVariantPair;
+        }
+
+        std::string l_srcVpdPath;
+        types::VPDMapVariant l_srcVpdVariant;
+        if (l_srcVpdPath = m_backupAndRestoreCfgJsonObj["source"].value(
+                "hardwarePath", "");
+            !l_srcVpdPath.empty() && std::filesystem::exists(l_srcVpdPath))
+        {
+            std::shared_ptr<Parser> l_vpdParser =
+                std::make_shared<Parser>(l_srcVpdPath, m_sysCfgJsonObj);
+            l_srcVpdVariant = l_vpdParser->parse();
+        }
+        else if (l_srcVpdPath = m_backupAndRestoreCfgJsonObj["source"].value(
+                     "inventoryPath", "");
+                 l_srcVpdPath.empty())
+        {
+            logging::logMessage(
+                "Couldn't extract source path, can't initiate backup and restore.");
+            return l_emptyVariantPair;
+        }
+
+        std::string l_dstVpdPath;
+        types::VPDMapVariant l_dstVpdVariant;
+        if (l_dstVpdPath = m_backupAndRestoreCfgJsonObj["destination"].value(
+                "hardwarePath", "");
+            !l_dstVpdPath.empty() && std::filesystem::exists(l_dstVpdPath))
+        {
+            std::shared_ptr<Parser> l_vpdParser =
+                std::make_shared<Parser>(l_dstVpdPath, m_sysCfgJsonObj);
+            l_dstVpdVariant = l_vpdParser->parse();
+        }
+        else if (l_dstVpdPath = m_backupAndRestoreCfgJsonObj["destination"]
+                                    .value("inventoryPath", "");
+                 l_dstVpdPath.empty())
+        {
+            logging::logMessage(
+                "Couldn't extract destination path, can't initiate backup and restore.");
+            return l_emptyVariantPair;
+        }
+
+        // Implement backup and restore for IPZ type VPD
+        auto l_backupAndRestoreType =
+            m_backupAndRestoreCfgJsonObj.value("type", "");
+        if (l_backupAndRestoreType.compare("IPZ") == constants::STR_CMP_SUCCESS)
+        {
+            types::IPZVpdMap l_srcVpdMap;
+            if (auto l_srcVpdPtr =
+                    std::get_if<types::IPZVpdMap>(&l_srcVpdVariant))
+            {
+                l_srcVpdMap = *l_srcVpdPtr;
+            }
+            else if (!std::holds_alternative<std::monostate>(l_srcVpdVariant))
+            {
+                logging::logMessage("Source VPD is not of IPZ type.");
+                return l_emptyVariantPair;
+            }
+
+            types::IPZVpdMap l_dstVpdMap;
+            if (auto l_dstVpdPtr =
+                    std::get_if<types::IPZVpdMap>(&l_dstVpdVariant))
+            {
+                l_dstVpdMap = *l_dstVpdPtr;
+            }
+            else if (!std::holds_alternative<std::monostate>(l_dstVpdVariant))
+            {
+                logging::logMessage("Destination VPD is not of IPZ type.");
+                return l_emptyVariantPair;
+            }
+
+            backupAndRestoreIpzVpd(l_srcVpdMap, l_dstVpdMap, l_srcVpdPath,
+                                   l_dstVpdPath);
+            m_backupAndRestoreStatus = BackupAndRestoreStatus::Completed;
+
+            return std::make_tuple(l_srcVpdMap, l_dstVpdMap);
+        }
+        // Note: add implementation here to support any other VPD type.
+    }
+    catch (const std::exception& ex)
+    {
+        logging::logMessage("Back up and restore failed with exception: " +
+                            std::string(ex.what()));
+    }
+    return l_emptyVariantPair;
+}
+
+void BackupAndRestore::backupAndRestoreIpzVpd(
+    types::IPZVpdMap& io_srcVpdMap, types::IPZVpdMap& io_dstVpdMap,
+    const std::string& i_srcPath, const std::string& i_dstPath)
+{
+    if (!m_backupAndRestoreCfgJsonObj["backupMap"].is_array())
+    {
+        logging::logMessage(
+            "Invalid value found for tag backupMap, in backup and restore config JSON.");
+        return;
+    }
+
+    const std::string l_srcFruPath =
+        jsonUtility::getFruPathFromJson(m_sysCfgJsonObj, i_srcPath);
+    const std::string l_dstFruPath =
+        jsonUtility::getFruPathFromJson(m_sysCfgJsonObj, i_dstPath);
+    if (l_srcFruPath.empty() || l_dstFruPath.empty())
+    {
+        logging::logMessage(
+            "Couldn't find either source or destination FRU path.");
+        return;
+    }
+
+    const std::string l_srcInvPath =
+        jsonUtility::getInventoryObjPathFromJson(m_sysCfgJsonObj, i_srcPath);
+    const std::string l_dstInvPath =
+        jsonUtility::getInventoryObjPathFromJson(m_sysCfgJsonObj, i_dstPath);
+    if (l_srcInvPath.empty() || l_dstInvPath.empty())
+    {
+        logging::logMessage(
+            "Couldn't find either source or destination inventory path.");
+        return;
+    }
+
+    const std::string l_srcServiceName =
+        jsonUtility::getServiceName(m_sysCfgJsonObj, l_srcInvPath);
+    const std::string l_dstServiceName =
+        jsonUtility::getServiceName(m_sysCfgJsonObj, l_dstInvPath);
+    if (l_srcServiceName.empty() || l_dstServiceName.empty())
+    {
+        logging::logMessage(
+            "Couldn't find either source or destination DBus service name.");
+        return;
+    }
+
+    for (const auto& l_aRecordKwInfo :
+         m_backupAndRestoreCfgJsonObj["backupMap"])
+    {
+        const std::string& l_srcRecordName =
+            l_aRecordKwInfo.value("sourceRecord", "");
+        const std::string& l_srcKeywordName =
+            l_aRecordKwInfo.value("sourceKeyword", "");
+        const std::string& l_dstRecordName =
+            l_aRecordKwInfo.value("destinationRecord", "");
+        const std::string& l_dstKeywordName =
+            l_aRecordKwInfo.value("destinationKeyword", "");
+
+        if (l_srcRecordName.empty() || l_dstRecordName.empty() ||
+            l_srcKeywordName.empty() || l_dstKeywordName.empty())
+        {
+            logging::logMessage(
+                "Record or keyword not found in the backup and restore config JSON.");
+            continue;
+        }
+
+        if (!io_srcVpdMap.empty() &&
+            io_srcVpdMap.find(l_srcRecordName) == io_srcVpdMap.end())
+        {
+            logging::logMessage(
+                "Record: " + l_srcRecordName +
+                ", is not found in the source path: " + i_srcPath);
+            continue;
+        }
+
+        if (!io_dstVpdMap.empty() &&
+            io_dstVpdMap.find(l_dstRecordName) == io_dstVpdMap.end())
+        {
+            logging::logMessage(
+                "Record: " + l_dstRecordName +
+                ", is not found in the destination path: " + i_dstPath);
+            continue;
+        }
+
+        types::BinaryVector l_defaultBinaryValue;
+        if (l_aRecordKwInfo.contains("defaultValue") &&
+            l_aRecordKwInfo["defaultValue"].is_array())
+        {
+            l_defaultBinaryValue =
+                l_aRecordKwInfo["defaultValue"].get<types::BinaryVector>();
+        }
+        else
+        {
+            logging::logMessage(
+                "Couldn't read default value for record name: " +
+                l_srcRecordName + ", keyword name: " + l_srcKeywordName +
+                " from backup and restore config JSON file.");
+            continue;
+        }
+
+        bool l_isPelRequired = l_aRecordKwInfo.value("isPelRequired", false);
+
+        types::BinaryVector l_srcBinaryValue;
+        std::string l_srcStrValue;
+        if (!io_srcVpdMap.empty())
+        {
+            vpdSpecificUtility::getKwVal(io_srcVpdMap.at(l_srcRecordName),
+                                         l_srcKeywordName, l_srcStrValue);
+            l_srcBinaryValue =
+                types::BinaryVector(l_srcStrValue.begin(), l_srcStrValue.end());
+        }
+        else
+        {
+            // Read keyword value from DBus
+            const auto l_value = dbusUtility::readDbusProperty(
+                l_srcServiceName, l_srcInvPath,
+                constants::ipzVpdInf + l_srcRecordName, l_srcKeywordName);
+            if (const auto l_binaryValue =
+                    std::get_if<types::BinaryVector>(&l_value))
+            {
+                l_srcBinaryValue = *l_binaryValue;
+                l_srcStrValue = std::string(l_srcBinaryValue.begin(),
+                                            l_srcBinaryValue.end());
+            }
+        }
+
+        types::BinaryVector l_dstBinaryValue;
+        std::string l_dstStrValue;
+        if (!io_dstVpdMap.empty())
+        {
+            vpdSpecificUtility::getKwVal(io_dstVpdMap.at(l_dstRecordName),
+                                         l_dstKeywordName, l_dstStrValue);
+            l_dstBinaryValue =
+                types::BinaryVector(l_dstStrValue.begin(), l_dstStrValue.end());
+        }
+        else
+        {
+            // Read keyword value from DBus
+            const auto l_value = dbusUtility::readDbusProperty(
+                l_dstServiceName, l_dstInvPath,
+                constants::ipzVpdInf + l_dstRecordName, l_dstKeywordName);
+            if (const auto l_binaryValue =
+                    std::get_if<types::BinaryVector>(&l_value))
+            {
+                l_dstBinaryValue = *l_binaryValue;
+                l_dstStrValue = std::string(l_dstBinaryValue.begin(),
+                                            l_dstBinaryValue.end());
+            }
+        }
+
+        if (l_srcBinaryValue != l_dstBinaryValue)
+        {
+            // ToDo: Handle if there is no valid default value in the backup and
+            // restore config JSON.
+            if (l_dstBinaryValue == l_defaultBinaryValue)
+            {
+                // Update keyword's value on hardware
+                auto l_vpdParser =
+                    std::make_shared<Parser>(l_dstFruPath, m_sysCfgJsonObj);
+
+                auto l_bytesUpdatedOnHardware = l_vpdParser->updateVpdKeyword(
+                    types::IpzData(l_dstRecordName, l_dstKeywordName,
+                                   l_srcBinaryValue));
+
+                /* To keep the data in sync between hardware and parsed map
+                 updating the io_dstVpdMap. This should only be done if write
+                 on hardware returns success.*/
+                if (!io_dstVpdMap.empty() && l_bytesUpdatedOnHardware > 0)
+                {
+                    io_dstVpdMap[l_dstRecordName][l_dstKeywordName] =
+                        l_srcStrValue;
+                }
+                continue;
+            }
+
+            if (l_srcBinaryValue == l_defaultBinaryValue)
+            {
+                // Update keyword's value on hardware
+                auto l_vpdParser =
+                    std::make_shared<Parser>(l_srcFruPath, m_sysCfgJsonObj);
+
+                auto l_bytesUpdatedOnHardware = l_vpdParser->updateVpdKeyword(
+                    types::IpzData(l_srcRecordName, l_srcKeywordName,
+                                   l_dstBinaryValue));
+
+                /* To keep the data in sync between hardware and parsed map
+                 updating the io_srcVpdMap. This should only be done if write
+                 on hardware returns success.*/
+                if (!io_srcVpdMap.empty() && l_bytesUpdatedOnHardware > 0)
+                {
+                    io_srcVpdMap[l_srcRecordName][l_srcKeywordName] =
+                        l_dstStrValue;
+                }
+            }
+            else
+            {
+                /**
+                 * Update io_srcVpdMap to publish the same data on DBus, which
+                 * is already present on the DBus. Because after calling
+                 * backupAndRestore API the map value will get published to DBus
+                 * in the worker flow.
+                 */
+                if (!io_srcVpdMap.empty() && io_dstVpdMap.empty())
+                {
+                    io_srcVpdMap[l_srcRecordName][l_srcKeywordName] =
+                        l_dstStrValue;
+                }
+
+                std::string l_errorMsg(
+                    "Mismatch found between source and destination VPD for record : " +
+                    l_srcRecordName + " and keyword : " + l_srcKeywordName +
+                    " . Value read from source : " + l_srcStrValue +
+                    " . Value read from destination : " + l_dstStrValue);
+
+                EventLogger::createSyncPel(
+                    types::ErrorType::VpdMismatch, types::SeverityType::Warning,
+                    __FILE__, __FUNCTION__, 0, l_errorMsg, std::nullopt,
+                    std::nullopt, std::nullopt, std::nullopt);
+            }
+        }
+        else if (l_srcBinaryValue == l_defaultBinaryValue &&
+                 l_dstBinaryValue == l_defaultBinaryValue && l_isPelRequired)
+        {
+            std::string l_errorMsg(
+                "Default value found on both source and destination VPD, for record: " +
+                l_srcRecordName + " and keyword: " + l_srcKeywordName);
+
+            EventLogger::createSyncPel(
+                types::ErrorType::DefaultValue, types::SeverityType::Error,
+                __FILE__, __FUNCTION__, 0, l_errorMsg, std::nullopt,
+                std::nullopt, std::nullopt, std::nullopt);
+        }
+    }
+}
+
+void BackupAndRestore::setBackupAndRestoreStatus(
+    const BackupAndRestoreStatus& i_status)
+{
+    m_backupAndRestoreStatus = i_status;
+}
+} // namespace vpd
diff --git a/vpd-manager/src/bios_handler.cpp b/vpd-manager/src/bios_handler.cpp
new file mode 100644
index 0000000..44afff3
--- /dev/null
+++ b/vpd-manager/src/bios_handler.cpp
@@ -0,0 +1,764 @@
+#include "config.h"
+
+#include "bios_handler.hpp"
+
+#include "constants.hpp"
+#include "logger.hpp"
+
+#include <sdbusplus/bus/match.hpp>
+#include <utility/common_utility.hpp>
+#include <utility/dbus_utility.hpp>
+
+#include <string>
+
+namespace vpd
+{
+// Template declaration to define APIs.
+template class BiosHandler<IbmBiosHandler>;
+
+template <typename T>
+void BiosHandler<T>::checkAndListenPldmService()
+{
+    // Setup a call back match on NameOwnerChanged to determine when PLDM is up.
+    static std::shared_ptr<sdbusplus::bus::match_t> l_nameOwnerMatch =
+        std::make_shared<sdbusplus::bus::match_t>(
+            *m_asioConn,
+            sdbusplus::bus::match::rules::nameOwnerChanged(
+                constants::pldmServiceName),
+            [this](sdbusplus::message_t& l_msg) {
+                if (l_msg.is_method_error())
+                {
+                    logging::logMessage(
+                        "Error in reading PLDM name owner changed signal.");
+                    return;
+                }
+
+                std::string l_name;
+                std::string l_newOwner;
+                std::string l_oldOwner;
+
+                l_msg.read(l_name, l_oldOwner, l_newOwner);
+
+                if (!l_newOwner.empty() &&
+                    (l_name.compare(constants::pldmServiceName) ==
+                     constants::STR_CMP_SUCCESS))
+                {
+                    m_specificBiosHandler->backUpOrRestoreBiosAttributes();
+
+                    // Start listener now that we have done the restore.
+                    listenBiosAttributes();
+
+                    //  We don't need the match anymore
+                    l_nameOwnerMatch.reset();
+                }
+            });
+
+    // Based on PLDM service status reset owner match registered above and
+    // trigger BIOS attribute sync.
+    if (dbusUtility::isServiceRunning(constants::pldmServiceName))
+    {
+        l_nameOwnerMatch.reset();
+        m_specificBiosHandler->backUpOrRestoreBiosAttributes();
+
+        // Start listener now that we have done the restore.
+        listenBiosAttributes();
+    }
+}
+
+template <typename T>
+void BiosHandler<T>::listenBiosAttributes()
+{
+    static std::shared_ptr<sdbusplus::bus::match_t> l_biosMatch =
+        std::make_shared<sdbusplus::bus::match_t>(
+            *m_asioConn,
+            sdbusplus::bus::match::rules::propertiesChanged(
+                constants::biosConfigMgrObjPath,
+                constants::biosConfigMgrInterface),
+            [this](sdbusplus::message_t& l_msg) {
+                m_specificBiosHandler->biosAttributesCallback(l_msg);
+            });
+}
+
+void IbmBiosHandler::biosAttributesCallback(sdbusplus::message_t& i_msg)
+{
+    if (i_msg.is_method_error())
+    {
+        logging::logMessage("Error in reading BIOS attribute signal. ");
+        return;
+    }
+
+    std::string l_objPath;
+    types::BiosBaseTableType l_propMap;
+    i_msg.read(l_objPath, l_propMap);
+
+    for (auto l_property : l_propMap)
+    {
+        if (l_property.first != "BaseBIOSTable")
+        {
+            // Looking for change in Base BIOS table only.
+            continue;
+        }
+
+        if (auto l_attributeList =
+                std::get_if<std::map<std::string, types::BiosProperty>>(
+                    &(l_property.second)))
+        {
+            for (const auto& l_attribute : *l_attributeList)
+            {
+                if (auto l_val = std::get_if<std::string>(
+                        &(std::get<5>(std::get<1>(l_attribute)))))
+                {
+                    std::string l_attributeName = std::get<0>(l_attribute);
+                    if (l_attributeName == "hb_memory_mirror_mode")
+                    {
+                        saveAmmToVpd(*l_val);
+                    }
+
+                    if (l_attributeName == "pvm_keep_and_clear")
+                    {
+                        saveKeepAndClearToVpd(*l_val);
+                    }
+
+                    if (l_attributeName == "pvm_create_default_lpar")
+                    {
+                        saveCreateDefaultLparToVpd(*l_val);
+                    }
+
+                    if (l_attributeName == "pvm_clear_nvram")
+                    {
+                        saveClearNvramToVpd(*l_val);
+                    }
+
+                    continue;
+                }
+
+                if (auto l_val = std::get_if<int64_t>(
+                        &(std::get<5>(std::get<1>(l_attribute)))))
+                {
+                    std::string l_attributeName = std::get<0>(l_attribute);
+                    if (l_attributeName == "hb_field_core_override")
+                    {
+                        saveFcoToVpd(*l_val);
+                    }
+                }
+            }
+        }
+        else
+        {
+            // TODO: log a predicitive PEL.
+            logging::logMessage("Invalid typre received from BIOS table.");
+            break;
+        }
+    }
+}
+
+void IbmBiosHandler::backUpOrRestoreBiosAttributes()
+{
+    // process FCO
+    processFieldCoreOverride();
+
+    // process AMM
+    processActiveMemoryMirror();
+
+    // process LPAR
+    processCreateDefaultLpar();
+
+    // process clear NVRAM
+    processClearNvram();
+
+    // process keep and clear
+    processKeepAndClear();
+}
+
+types::BiosAttributeCurrentValue
+    IbmBiosHandler::readBiosAttribute(const std::string& i_attributeName)
+{
+    types::BiosAttributeCurrentValue l_attrValueVariant =
+        dbusUtility::biosGetAttributeMethodCall(i_attributeName);
+
+    return l_attrValueVariant;
+}
+
+void IbmBiosHandler::processFieldCoreOverride()
+{
+    // TODO: Should we avoid doing this at runtime?
+
+    // Read required keyword from Dbus.
+    auto l_kwdValueVariant = dbusUtility::readDbusProperty(
+        constants::pimServiceName, constants::systemVpdInvPath,
+        constants::vsysInf, constants::kwdRG);
+
+    if (auto l_fcoInVpd = std::get_if<types::BinaryVector>(&l_kwdValueVariant))
+    {
+        // default length of the keyword is 4 bytes.
+        if (l_fcoInVpd->size() != constants::VALUE_4)
+        {
+            logging::logMessage(
+                "Invalid value read for FCO from D-Bus. Skipping.");
+        }
+
+        //  If FCO in VPD contains anything other that ASCII Space, restore to
+        //  BIOS
+        if (std::any_of(l_fcoInVpd->cbegin(), l_fcoInVpd->cend(),
+                        [](uint8_t l_val) {
+                            return l_val != constants::ASCII_OF_SPACE;
+                        }))
+        {
+            // Restore the data to BIOS.
+            saveFcoToBios(*l_fcoInVpd);
+        }
+        else
+        {
+            types::BiosAttributeCurrentValue l_attrValueVariant =
+                readBiosAttribute("hb_field_core_override");
+
+            if (auto l_fcoInBios = std::get_if<int64_t>(&l_attrValueVariant))
+            {
+                // save the BIOS data to VPD
+                saveFcoToVpd(*l_fcoInBios);
+
+                return;
+            }
+            logging::logMessage("Invalid type recieved for FCO from BIOS.");
+        }
+        return;
+    }
+    logging::logMessage("Invalid type recieved for FCO from VPD.");
+}
+
+void IbmBiosHandler::saveFcoToVpd(int64_t i_fcoInBios)
+{
+    if (i_fcoInBios < 0)
+    {
+        logging::logMessage("Invalid FCO value in BIOS. Skip updating to VPD");
+        return;
+    }
+
+    // Read required keyword from Dbus.
+    auto l_kwdValueVariant = dbusUtility::readDbusProperty(
+        constants::pimServiceName, constants::systemVpdInvPath,
+        constants::vsysInf, constants::kwdRG);
+
+    if (auto l_fcoInVpd = std::get_if<types::BinaryVector>(&l_kwdValueVariant))
+    {
+        // default length of the keyword is 4 bytes.
+        if (l_fcoInVpd->size() != constants::VALUE_4)
+        {
+            logging::logMessage(
+                "Invalid value read for FCO from D-Bus. Skipping.");
+            return;
+        }
+
+        // convert to VPD value type
+        types::BinaryVector l_biosValInVpdFormat = {
+            0, 0, 0, static_cast<uint8_t>(i_fcoInBios)};
+
+        // Update only when the data are different.
+        if (std::memcmp(l_biosValInVpdFormat.data(), l_fcoInVpd->data(),
+                        constants::VALUE_4) != constants::SUCCESS)
+        {
+            if (constants::FAILURE ==
+                m_manager->updateKeyword(
+                    SYSTEM_VPD_FILE_PATH,
+                    types::IpzData("VSYS", constants::kwdRG,
+                                   l_biosValInVpdFormat)))
+            {
+                logging::logMessage(
+                    "Failed to update " + std::string(constants::kwdRG) +
+                    " keyword to VPD.");
+            }
+        }
+    }
+    else
+    {
+        logging::logMessage("Invalid type read for FCO from DBus.");
+    }
+}
+
+void IbmBiosHandler::saveFcoToBios(const types::BinaryVector& i_fcoVal)
+{
+    if (i_fcoVal.size() != constants::VALUE_4)
+    {
+        logging::logMessage("Bad size for FCO received. Skip writing to BIOS");
+        return;
+    }
+
+    types::PendingBIOSAttrs l_pendingBiosAttribute;
+    l_pendingBiosAttribute.push_back(std::make_pair(
+        "hb_field_core_override",
+        std::make_tuple(
+            "xyz.openbmc_project.BIOSConfig.Manager.AttributeType.Integer",
+            i_fcoVal.at(constants::VALUE_3))));
+
+    try
+    {
+        dbusUtility::writeDbusProperty(
+            constants::biosConfigMgrService, constants::biosConfigMgrObjPath,
+            constants::biosConfigMgrInterface, "PendingAttributes",
+            l_pendingBiosAttribute);
+    }
+    catch (const std::exception& l_ex)
+    {
+        // TODO: Should we log informational PEL here as well?
+        logging::logMessage(
+            "DBus call to update FCO value in pending attribute failed. " +
+            std::string(l_ex.what()));
+    }
+}
+
+void IbmBiosHandler::saveAmmToVpd(const std::string& i_memoryMirrorMode)
+{
+    if (i_memoryMirrorMode.empty())
+    {
+        logging::logMessage(
+            "Empty memory mirror mode value from BIOS. Skip writing to VPD");
+        return;
+    }
+
+    // Read existing value.
+    auto l_kwdValueVariant = dbusUtility::readDbusProperty(
+        constants::pimServiceName, constants::systemVpdInvPath,
+        constants::utilInf, constants::kwdAMM);
+
+    if (auto l_pVal = std::get_if<types::BinaryVector>(&l_kwdValueVariant))
+    {
+        auto l_ammValInVpd = *l_pVal;
+
+        types::BinaryVector l_valToUpdateInVpd{
+            (i_memoryMirrorMode == "Enabled" ? constants::AMM_ENABLED_IN_VPD
+                                             : constants::AMM_DISABLED_IN_VPD)};
+
+        // Check if value is already updated on VPD.
+        if (l_ammValInVpd.at(0) == l_valToUpdateInVpd.at(0))
+        {
+            return;
+        }
+
+        if (constants::FAILURE ==
+            m_manager->updateKeyword(
+                SYSTEM_VPD_FILE_PATH,
+                types::IpzData("UTIL", constants::kwdAMM, l_valToUpdateInVpd)))
+        {
+            logging::logMessage(
+                "Failed to update " + std::string(constants::kwdAMM) +
+                " keyword to VPD");
+        }
+    }
+    else
+    {
+        // TODO: Add PEL
+        logging::logMessage(
+            "Invalid type read for memory mirror mode value from DBus. Skip writing to VPD");
+    }
+}
+
+void IbmBiosHandler::saveAmmToBios(const std::string& i_ammVal)
+{
+    if (i_ammVal.size() != constants::VALUE_1)
+    {
+        logging::logMessage("Bad size for AMM received, Skip writing to BIOS");
+        return;
+    }
+
+    const std::string l_valtoUpdate =
+        (i_ammVal.at(0) == constants::VALUE_2) ? "Enabled" : "Disabled";
+
+    types::PendingBIOSAttrs l_pendingBiosAttribute;
+    l_pendingBiosAttribute.push_back(std::make_pair(
+        "hb_memory_mirror_mode",
+        std::make_tuple(
+            "xyz.openbmc_project.BIOSConfig.Manager.AttributeType.Enumeration",
+            l_valtoUpdate)));
+
+    try
+    {
+        dbusUtility::writeDbusProperty(
+            constants::biosConfigMgrService, constants::biosConfigMgrObjPath,
+            constants::biosConfigMgrInterface, "PendingAttributes",
+            l_pendingBiosAttribute);
+    }
+    catch (const std::exception& l_ex)
+    {
+        // TODO: Should we log informational PEL here as well?
+        logging::logMessage(
+            "DBus call to update AMM value in pending attribute failed. " +
+            std::string(l_ex.what()));
+    }
+}
+
+void IbmBiosHandler::processActiveMemoryMirror()
+{
+    auto l_kwdValueVariant = dbusUtility::readDbusProperty(
+        constants::pimServiceName, constants::systemVpdInvPath,
+        constants::utilInf, constants::kwdAMM);
+
+    if (auto pVal = std::get_if<types::BinaryVector>(&l_kwdValueVariant))
+    {
+        auto l_ammValInVpd = *pVal;
+
+        // Check if active memory mirror value is default in VPD.
+        if (l_ammValInVpd.at(0) == constants::VALUE_0)
+        {
+            types::BiosAttributeCurrentValue l_attrValueVariant =
+                readBiosAttribute("hb_memory_mirror_mode");
+
+            if (auto pVal = std::get_if<std::string>(&l_attrValueVariant))
+            {
+                saveAmmToVpd(*pVal);
+                return;
+            }
+            logging::logMessage(
+                "Invalid type recieved for auto memory mirror mode from BIOS.");
+            return;
+        }
+        else
+        {
+            saveAmmToBios(std::to_string(l_ammValInVpd.at(0)));
+        }
+        return;
+    }
+    logging::logMessage(
+        "Invalid type recieved for auto memory mirror mode from VPD.");
+}
+
+void IbmBiosHandler::saveCreateDefaultLparToVpd(
+    const std::string& i_createDefaultLparVal)
+{
+    if (i_createDefaultLparVal.empty())
+    {
+        logging::logMessage(
+            "Empty value received for Lpar from BIOS. Skip writing in VPD.");
+        return;
+    }
+
+    // Read required keyword from DBus as we need to set only a Bit.
+    auto l_kwdValueVariant = dbusUtility::readDbusProperty(
+        constants::pimServiceName, constants::systemVpdInvPath,
+        constants::utilInf, constants::kwdClearNVRAM_CreateLPAR);
+
+    if (auto l_pVal = std::get_if<types::BinaryVector>(&l_kwdValueVariant))
+    {
+        commonUtility::toLower(
+            const_cast<std::string&>(i_createDefaultLparVal));
+
+        // Check for second bit. Bit set for enabled else disabled.
+        if (((((*l_pVal).at(0) & 0x02) == 0x02) &&
+             (i_createDefaultLparVal.compare("enabled") ==
+              constants::STR_CMP_SUCCESS)) ||
+            ((((*l_pVal).at(0) & 0x02) == 0x00) &&
+             (i_createDefaultLparVal.compare("disabled") ==
+              constants::STR_CMP_SUCCESS)))
+        {
+            // Values are same, Don;t update.
+            return;
+        }
+
+        types::BinaryVector l_valToUpdateInVpd;
+        if (i_createDefaultLparVal.compare("enabled") ==
+            constants::STR_CMP_SUCCESS)
+        {
+            // 2nd Bit is used to store the value.
+            l_valToUpdateInVpd.emplace_back((*l_pVal).at(0) | 0x02);
+        }
+        else
+        {
+            // 2nd Bit is used to store the value.
+            l_valToUpdateInVpd.emplace_back((*l_pVal).at(0) & ~(0x02));
+        }
+
+        if (-1 ==
+            m_manager->updateKeyword(
+                SYSTEM_VPD_FILE_PATH,
+                types::IpzData("UTIL", constants::kwdClearNVRAM_CreateLPAR,
+                               l_valToUpdateInVpd)))
+        {
+            logging::logMessage(
+                "Failed to update " +
+                std::string(constants::kwdClearNVRAM_CreateLPAR) +
+                " keyword to VPD");
+        }
+
+        return;
+    }
+    logging::logMessage(
+        "Invalid type recieved for create default Lpar from VPD.");
+}
+
+void IbmBiosHandler::saveCreateDefaultLparToBios(
+    const std::string& i_createDefaultLparVal)
+{
+    // checking for exact length as it is a string and can have garbage value.
+    if (i_createDefaultLparVal.size() != constants::VALUE_1)
+    {
+        logging::logMessage(
+            "Bad size for Create default LPAR in VPD. Skip writing to BIOS.");
+        return;
+    }
+
+    std::string l_valtoUpdate =
+        (i_createDefaultLparVal.at(0) & 0x02) ? "Enabled" : "Disabled";
+
+    types::PendingBIOSAttrs l_pendingBiosAttribute;
+    l_pendingBiosAttribute.push_back(std::make_pair(
+        "pvm_create_default_lpar",
+        std::make_tuple(
+            "xyz.openbmc_project.BIOSConfig.Manager.AttributeType.Enumeration",
+            l_valtoUpdate)));
+
+    try
+    {
+        dbusUtility::writeDbusProperty(
+            constants::biosConfigMgrService, constants::biosConfigMgrObjPath,
+            constants::biosConfigMgrInterface, "PendingAttributes",
+            l_pendingBiosAttribute);
+    }
+    catch (const std::exception& l_ex)
+    {
+        logging::logMessage(
+            "DBus call to update lpar value in pending attribute failed. " +
+            std::string(l_ex.what()));
+    }
+
+    return;
+}
+
+void IbmBiosHandler::processCreateDefaultLpar()
+{
+    // Read required keyword from DBus.
+    auto l_kwdValueVariant = dbusUtility::readDbusProperty(
+        constants::pimServiceName, constants::systemVpdInvPath,
+        constants::utilInf, constants::kwdClearNVRAM_CreateLPAR);
+
+    if (auto l_pVal = std::get_if<types::BinaryVector>(&l_kwdValueVariant))
+    {
+        saveCreateDefaultLparToBios(std::to_string(l_pVal->at(0)));
+        return;
+    }
+    logging::logMessage(
+        "Invalid type recieved for create default Lpar from VPD.");
+}
+
+void IbmBiosHandler::saveClearNvramToVpd(const std::string& i_clearNvramVal)
+{
+    if (i_clearNvramVal.empty())
+    {
+        logging::logMessage(
+            "Empty value received for clear NVRAM from BIOS. Skip updating to VPD.");
+        return;
+    }
+
+    // Read required keyword from DBus as we need to set only a Bit.
+    auto l_kwdValueVariant = dbusUtility::readDbusProperty(
+        constants::pimServiceName, constants::systemVpdInvPath,
+        constants::utilInf, constants::kwdClearNVRAM_CreateLPAR);
+
+    if (auto l_pVal = std::get_if<types::BinaryVector>(&l_kwdValueVariant))
+    {
+        commonUtility::toLower(const_cast<std::string&>(i_clearNvramVal));
+
+        // Check for third bit. Bit set for enabled else disabled.
+        if (((((*l_pVal).at(0) & 0x04) == 0x04) &&
+             (i_clearNvramVal.compare("enabled") ==
+              constants::STR_CMP_SUCCESS)) ||
+            ((((*l_pVal).at(0) & 0x04) == 0x00) &&
+             (i_clearNvramVal.compare("disabled") ==
+              constants::STR_CMP_SUCCESS)))
+        {
+            // Don't update, values are same.
+            return;
+        }
+
+        types::BinaryVector l_valToUpdateInVpd;
+        if (i_clearNvramVal.compare("enabled") == constants::STR_CMP_SUCCESS)
+        {
+            // 3rd bit is used to store the value.
+            l_valToUpdateInVpd.emplace_back(
+                (*l_pVal).at(0) | constants::VALUE_4);
+        }
+        else
+        {
+            // 3rd bit is used to store the value.
+            l_valToUpdateInVpd.emplace_back(
+                (*l_pVal).at(0) & ~(constants::VALUE_4));
+        }
+
+        if (-1 ==
+            m_manager->updateKeyword(
+                SYSTEM_VPD_FILE_PATH,
+                types::IpzData("UTIL", constants::kwdClearNVRAM_CreateLPAR,
+                               l_valToUpdateInVpd)))
+        {
+            logging::logMessage(
+                "Failed to update " +
+                std::string(constants::kwdClearNVRAM_CreateLPAR) +
+                " keyword to VPD");
+        }
+
+        return;
+    }
+    logging::logMessage("Invalid type recieved for clear NVRAM from VPD.");
+}
+
+void IbmBiosHandler::saveClearNvramToBios(const std::string& i_clearNvramVal)
+{
+    // Check for the exact length as it is a string and it can have a garbage
+    // value.
+    if (i_clearNvramVal.size() != constants::VALUE_1)
+    {
+        logging::logMessage(
+            "Bad size for clear NVRAM in VPD. Skip writing to BIOS.");
+        return;
+    }
+
+    // 3rd bit is used to store clear NVRAM value.
+    std::string l_valtoUpdate =
+        (i_clearNvramVal.at(0) & constants::VALUE_4) ? "Enabled" : "Disabled";
+
+    types::PendingBIOSAttrs l_pendingBiosAttribute;
+    l_pendingBiosAttribute.push_back(std::make_pair(
+        "pvm_clear_nvram",
+        std::make_tuple(
+            "xyz.openbmc_project.BIOSConfig.Manager.AttributeType.Enumeration",
+            l_valtoUpdate)));
+
+    try
+    {
+        dbusUtility::writeDbusProperty(
+            constants::biosConfigMgrService, constants::biosConfigMgrObjPath,
+            constants::biosConfigMgrInterface, "PendingAttributes",
+            l_pendingBiosAttribute);
+    }
+    catch (const std::exception& l_ex)
+    {
+        logging::logMessage(
+            "DBus call to update NVRAM value in pending attribute failed. " +
+            std::string(l_ex.what()));
+    }
+}
+
+void IbmBiosHandler::processClearNvram()
+{
+    // Read required keyword from VPD.
+    auto l_kwdValueVariant = dbusUtility::readDbusProperty(
+        constants::pimServiceName, constants::systemVpdInvPath,
+        constants::utilInf, constants::kwdClearNVRAM_CreateLPAR);
+
+    if (auto l_pVal = std::get_if<types::BinaryVector>(&l_kwdValueVariant))
+    {
+        saveClearNvramToBios(std::to_string(l_pVal->at(0)));
+        return;
+    }
+    logging::logMessage("Invalid type recieved for clear NVRAM from VPD.");
+}
+
+void IbmBiosHandler::saveKeepAndClearToVpd(const std::string& i_KeepAndClearVal)
+{
+    if (i_KeepAndClearVal.empty())
+    {
+        logging::logMessage(
+            "Empty value received for keep and clear from BIOS. Skip updating to VPD.");
+        return;
+    }
+
+    // Read required keyword from DBus as we need to set only a Bit.
+    auto l_kwdValueVariant = dbusUtility::readDbusProperty(
+        constants::pimServiceName, constants::systemVpdInvPath,
+        constants::utilInf, constants::kwdKeepAndClear);
+
+    if (auto l_pVal = std::get_if<types::BinaryVector>(&l_kwdValueVariant))
+    {
+        commonUtility::toLower(const_cast<std::string&>(i_KeepAndClearVal));
+
+        // Check for first bit. Bit set for enabled else disabled.
+        if (((((*l_pVal).at(0) & 0x01) == 0x01) &&
+             (i_KeepAndClearVal.compare("enabled") ==
+              constants::STR_CMP_SUCCESS)) ||
+            ((((*l_pVal).at(0) & 0x01) == 0x00) &&
+             (i_KeepAndClearVal.compare("disabled") ==
+              constants::STR_CMP_SUCCESS)))
+        {
+            // Don't update, values are same.
+            return;
+        }
+
+        types::BinaryVector l_valToUpdateInVpd;
+        if (i_KeepAndClearVal.compare("enabled") == constants::STR_CMP_SUCCESS)
+        {
+            // 1st bit is used to store the value.
+            l_valToUpdateInVpd.emplace_back(
+                (*l_pVal).at(0) | constants::VALUE_1);
+        }
+        else
+        {
+            // 1st bit is used to store the value.
+            l_valToUpdateInVpd.emplace_back(
+                (*l_pVal).at(0) & ~(constants::VALUE_1));
+        }
+
+        if (-1 == m_manager->updateKeyword(
+                      SYSTEM_VPD_FILE_PATH,
+                      types::IpzData("UTIL", constants::kwdKeepAndClear,
+                                     l_valToUpdateInVpd)))
+        {
+            logging::logMessage(
+                "Failed to update " + std::string(constants::kwdKeepAndClear) +
+                " keyword to VPD");
+        }
+
+        return;
+    }
+    logging::logMessage("Invalid type recieved for keep and clear from VPD.");
+}
+
+void IbmBiosHandler::saveKeepAndClearToBios(
+    const std::string& i_KeepAndClearVal)
+{
+    // checking for exact length as it is a string and can have garbage value.
+    if (i_KeepAndClearVal.size() != constants::VALUE_1)
+    {
+        logging::logMessage(
+            "Bad size for keep and clear in VPD. Skip writing to BIOS.");
+        return;
+    }
+
+    // 1st bit is used to store keep and clear value.
+    std::string l_valtoUpdate =
+        (i_KeepAndClearVal.at(0) & constants::VALUE_1) ? "Enabled" : "Disabled";
+
+    types::PendingBIOSAttrs l_pendingBiosAttribute;
+    l_pendingBiosAttribute.push_back(std::make_pair(
+        "pvm_keep_and_clear",
+        std::make_tuple(
+            "xyz.openbmc_project.BIOSConfig.Manager.AttributeType.Enumeration",
+            l_valtoUpdate)));
+
+    try
+    {
+        dbusUtility::writeDbusProperty(
+            constants::biosConfigMgrService, constants::biosConfigMgrObjPath,
+            constants::biosConfigMgrInterface, "PendingAttributes",
+            l_pendingBiosAttribute);
+    }
+    catch (const std::exception& l_ex)
+    {
+        logging::logMessage(
+            "DBus call to update keep and clear value in pending attribute failed. " +
+            std::string(l_ex.what()));
+    }
+}
+
+void IbmBiosHandler::processKeepAndClear()
+{
+    // Read required keyword from VPD.
+    auto l_kwdValueVariant = dbusUtility::readDbusProperty(
+        constants::pimServiceName, constants::systemVpdInvPath,
+        constants::utilInf, constants::kwdKeepAndClear);
+
+    if (auto l_pVal = std::get_if<types::BinaryVector>(&l_kwdValueVariant))
+    {
+        saveKeepAndClearToBios(std::to_string(l_pVal->at(0)));
+        return;
+    }
+    logging::logMessage("Invalid type recieved for keep and clear from VPD.");
+}
+} // namespace vpd
diff --git a/vpd-manager/src/ddimm_parser.cpp b/vpd-manager/src/ddimm_parser.cpp
new file mode 100644
index 0000000..0da4ddc
--- /dev/null
+++ b/vpd-manager/src/ddimm_parser.cpp
@@ -0,0 +1,393 @@
+#include "ddimm_parser.hpp"
+
+#include "constants.hpp"
+#include "exceptions.hpp"
+
+#include <cmath>
+#include <cstdint>
+#include <iostream>
+#include <numeric>
+#include <string>
+
+namespace vpd
+{
+
+static constexpr auto SDRAM_DENSITY_PER_DIE_24GB = 24;
+static constexpr auto SDRAM_DENSITY_PER_DIE_32GB = 32;
+static constexpr auto SDRAM_DENSITY_PER_DIE_48GB = 48;
+static constexpr auto SDRAM_DENSITY_PER_DIE_64GB = 64;
+static constexpr auto SDRAM_DENSITY_PER_DIE_UNDEFINED = 0;
+
+static constexpr auto PRIMARY_BUS_WIDTH_32_BITS = 32;
+static constexpr auto PRIMARY_BUS_WIDTH_UNUSED = 0;
+
+bool DdimmVpdParser::checkValidValue(uint8_t i_ByteValue, uint8_t i_shift,
+                                     uint8_t i_minValue, uint8_t i_maxValue)
+{
+    bool l_isValid = true;
+    uint8_t l_ByteValue = i_ByteValue >> i_shift;
+    if ((l_ByteValue > i_maxValue) || (l_ByteValue < i_minValue))
+    {
+        logging::logMessage(
+            "Non valid Value encountered value[" + std::to_string(l_ByteValue) +
+            "] range [" + std::to_string(i_minValue) + ".." +
+            std::to_string(i_maxValue) + "] found ");
+        return false;
+    }
+    return l_isValid;
+}
+
+uint8_t DdimmVpdParser::getDdr5DensityPerDie(uint8_t i_ByteValue)
+{
+    uint8_t l_densityPerDie = SDRAM_DENSITY_PER_DIE_UNDEFINED;
+    if (i_ByteValue < constants::VALUE_5)
+    {
+        l_densityPerDie = i_ByteValue * constants::VALUE_4;
+    }
+    else
+    {
+        switch (i_ByteValue)
+        {
+            case constants::VALUE_5:
+                l_densityPerDie = SDRAM_DENSITY_PER_DIE_24GB;
+                break;
+
+            case constants::VALUE_6:
+                l_densityPerDie = SDRAM_DENSITY_PER_DIE_32GB;
+                break;
+
+            case constants::VALUE_7:
+                l_densityPerDie = SDRAM_DENSITY_PER_DIE_48GB;
+                break;
+
+            case constants::VALUE_8:
+                l_densityPerDie = SDRAM_DENSITY_PER_DIE_64GB;
+                break;
+
+            default:
+                logging::logMessage(
+                    "default value encountered for density per die");
+                l_densityPerDie = SDRAM_DENSITY_PER_DIE_UNDEFINED;
+                break;
+        }
+    }
+    return l_densityPerDie;
+}
+
+uint8_t DdimmVpdParser::getDdr5DiePerPackage(uint8_t i_ByteValue)
+{
+    uint8_t l_DiePerPackage = constants::VALUE_0;
+    if (i_ByteValue < constants::VALUE_2)
+    {
+        l_DiePerPackage = i_ByteValue + constants::VALUE_1;
+    }
+    else
+    {
+        l_DiePerPackage =
+            pow(constants::VALUE_2, (i_ByteValue - constants::VALUE_1));
+    }
+    return l_DiePerPackage;
+}
+
+size_t DdimmVpdParser::getDdr5BasedDdimmSize(
+    types::BinaryVector::const_iterator i_iterator)
+{
+    size_t l_dimmSize = 0;
+
+    do
+    {
+        if (!checkValidValue(i_iterator[constants::SPD_BYTE_235] &
+                                 constants::MASK_BYTE_BITS_01,
+                             constants::SHIFT_BITS_0, constants::VALUE_1,
+                             constants::VALUE_3) ||
+            !checkValidValue(i_iterator[constants::SPD_BYTE_235] &
+                                 constants::MASK_BYTE_BITS_345,
+                             constants::SHIFT_BITS_3, constants::VALUE_1,
+                             constants::VALUE_3))
+        {
+            logging::logMessage(
+                "Capacity calculation failed for channels per DIMM. DDIMM Byte "
+                "235 value [" +
+                std::to_string(i_iterator[constants::SPD_BYTE_235]) + "]");
+            break;
+        }
+        uint8_t l_channelsPerPhy =
+            (((i_iterator[constants::SPD_BYTE_235] &
+               constants::MASK_BYTE_BITS_01)
+                  ? constants::VALUE_1
+                  : constants::VALUE_0) +
+             ((i_iterator[constants::SPD_BYTE_235] &
+               constants::MASK_BYTE_BITS_345)
+                  ? constants::VALUE_1
+                  : constants::VALUE_0));
+
+        uint8_t l_channelsPerDdimm =
+            (((i_iterator[constants::SPD_BYTE_235] &
+               constants::MASK_BYTE_BIT_6) >>
+              constants::VALUE_6) +
+             ((i_iterator[constants::SPD_BYTE_235] &
+               constants::MASK_BYTE_BIT_7) >>
+              constants::VALUE_7)) *
+            l_channelsPerPhy;
+
+        if (!checkValidValue(i_iterator[constants::SPD_BYTE_235] &
+                                 constants::MASK_BYTE_BITS_012,
+                             constants::SHIFT_BITS_0, constants::VALUE_1,
+                             constants::VALUE_3))
+        {
+            logging::logMessage(
+                "Capacity calculation failed for bus width per channel. DDIMM "
+                "Byte 235 value [" +
+                std::to_string(i_iterator[constants::SPD_BYTE_235]) + "]");
+            break;
+        }
+        uint8_t l_busWidthPerChannel =
+            (i_iterator[constants::SPD_BYTE_235] &
+             constants::MASK_BYTE_BITS_012)
+                ? PRIMARY_BUS_WIDTH_32_BITS
+                : PRIMARY_BUS_WIDTH_UNUSED;
+
+        if (!checkValidValue(i_iterator[constants::SPD_BYTE_4] &
+                                 constants::MASK_BYTE_BITS_567,
+                             constants::SHIFT_BITS_5, constants::VALUE_0,
+                             constants::VALUE_5))
+        {
+            logging::logMessage(
+                "Capacity calculation failed for die per package. DDIMM Byte 4 "
+                "value [" +
+                std::to_string(i_iterator[constants::SPD_BYTE_4]) + "]");
+            break;
+        }
+        uint8_t l_diePerPackage = getDdr5DiePerPackage(
+            (i_iterator[constants::SPD_BYTE_4] &
+             constants::MASK_BYTE_BITS_567) >>
+            constants::VALUE_5);
+
+        if (!checkValidValue(i_iterator[constants::SPD_BYTE_4] &
+                                 constants::MASK_BYTE_BITS_01234,
+                             constants::SHIFT_BITS_0, constants::VALUE_1,
+                             constants::VALUE_8))
+        {
+            logging::logMessage(
+                "Capacity calculation failed for SDRAM Density per Die. DDIMM "
+                "Byte 4 value [" +
+                std::to_string(i_iterator[constants::SPD_BYTE_4]) + "]");
+            break;
+        }
+        uint8_t l_densityPerDie = getDdr5DensityPerDie(
+            i_iterator[constants::SPD_BYTE_4] &
+            constants::MASK_BYTE_BITS_01234);
+
+        uint8_t l_ranksPerChannel = 0;
+
+        if (((i_iterator[constants::SPD_BYTE_234] &
+              constants::MASK_BYTE_BIT_7) >>
+             constants::VALUE_7))
+        {
+            l_ranksPerChannel = ((i_iterator[constants::SPD_BYTE_234] &
+                                  constants::MASK_BYTE_BITS_345) >>
+                                 constants::VALUE_3) +
+                                constants::VALUE_1;
+        }
+        else if (((i_iterator[constants::SPD_BYTE_235] &
+                   constants::MASK_BYTE_BIT_6) >>
+                  constants::VALUE_6))
+        {
+            l_ranksPerChannel = (i_iterator[constants::SPD_BYTE_234] &
+                                 constants::MASK_BYTE_BITS_012) +
+                                constants::VALUE_1;
+        }
+
+        if (!checkValidValue(i_iterator[constants::SPD_BYTE_6] &
+                                 constants::MASK_BYTE_BITS_567,
+                             constants::SHIFT_BITS_5, constants::VALUE_0,
+                             constants::VALUE_3))
+        {
+            logging::logMessage(
+                "Capacity calculation failed for dram width DDIMM Byte 6 value "
+                "[" +
+                std::to_string(i_iterator[constants::SPD_BYTE_6]) + "]");
+            break;
+        }
+        uint8_t l_dramWidth =
+            constants::VALUE_4 *
+            (constants::VALUE_1 << ((i_iterator[constants::SPD_BYTE_6] &
+                                     constants::MASK_BYTE_BITS_567) >>
+                                    constants::VALUE_5));
+
+        // DDIMM size is calculated in GB
+        l_dimmSize = (l_channelsPerDdimm * l_busWidthPerChannel *
+                      l_diePerPackage * l_densityPerDie * l_ranksPerChannel) /
+                     (8 * l_dramWidth);
+
+    } while (false);
+
+    return constants::CONVERT_GB_TO_KB * l_dimmSize;
+}
+
+size_t DdimmVpdParser::getDdr4BasedDdimmSize(
+    types::BinaryVector::const_iterator i_iterator)
+{
+    size_t l_dimmSize = 0;
+    try
+    {
+        uint8_t l_tmpValue = 0;
+
+        // Calculate SDRAM capacity
+        l_tmpValue = i_iterator[constants::SPD_BYTE_4] &
+                     constants::JEDEC_SDRAM_CAP_MASK;
+
+        /* Make sure the bits are not Reserved */
+        if (l_tmpValue > constants::JEDEC_SDRAMCAP_RESERVED)
+        {
+            throw std::runtime_error(
+                "Bad data in VPD byte 4. Can't calculate SDRAM capacity and so "
+                "dimm size.\n ");
+        }
+
+        uint16_t l_sdramCapacity = 1;
+        l_sdramCapacity = (l_sdramCapacity << l_tmpValue) *
+                          constants::JEDEC_SDRAMCAP_MULTIPLIER;
+
+        /* Calculate Primary bus width */
+        l_tmpValue = i_iterator[constants::SPD_BYTE_13] &
+                     constants::JEDEC_PRI_BUS_WIDTH_MASK;
+
+        if (l_tmpValue > constants::JEDEC_RESERVED_BITS)
+        {
+            throw std::runtime_error(
+                "Bad data in VPD byte 13. Can't calculate primary bus width "
+                "and so dimm size.");
+        }
+
+        uint8_t l_primaryBusWid = 1;
+        l_primaryBusWid = (l_primaryBusWid << l_tmpValue) *
+                          constants::JEDEC_PRI_BUS_WIDTH_MULTIPLIER;
+
+        /* Calculate SDRAM width */
+        l_tmpValue = i_iterator[constants::SPD_BYTE_12] &
+                     constants::JEDEC_SDRAM_WIDTH_MASK;
+
+        if (l_tmpValue > constants::JEDEC_RESERVED_BITS)
+        {
+            throw std::runtime_error(
+                "Bad data in VPD byte 12. Can't calculate SDRAM width and so "
+                "dimm size.");
+        }
+
+        uint8_t l_sdramWidth = 1;
+        l_sdramWidth = (l_sdramWidth << l_tmpValue) *
+                       constants::JEDEC_SDRAM_WIDTH_MULTIPLIER;
+
+        /* Calculate Number of ranks */
+        l_tmpValue = i_iterator[constants::SPD_BYTE_12] &
+                     constants::JEDEC_NUM_RANKS_MASK;
+        l_tmpValue >>= constants::JEDEC_RESERVED_BITS;
+
+        if (l_tmpValue > constants::JEDEC_RESERVED_BITS)
+        {
+            throw std::runtime_error(
+                "Bad data in VPD byte 12, can't calculate number of ranks. Invalid data found.");
+        }
+
+        uint8_t l_logicalRanksPerDimm = l_tmpValue + 1;
+
+        // Determine is single load stack (3DS) or not
+        l_tmpValue = i_iterator[constants::SPD_BYTE_6] &
+                     constants::JEDEC_SIGNAL_LOADING_MASK;
+
+        if (l_tmpValue == constants::JEDEC_SINGLE_LOAD_STACK)
+        {
+            // Fetch die count
+            l_tmpValue = i_iterator[constants::SPD_BYTE_6] &
+                         constants::JEDEC_DIE_COUNT_MASK;
+            l_tmpValue >>= constants::JEDEC_DIE_COUNT_RIGHT_SHIFT;
+
+            uint8_t l_dieCount = l_tmpValue + 1;
+            l_logicalRanksPerDimm *= l_dieCount;
+        }
+
+        l_dimmSize =
+            (l_sdramCapacity / constants::JEDEC_PRI_BUS_WIDTH_MULTIPLIER) *
+            (l_primaryBusWid / l_sdramWidth) * l_logicalRanksPerDimm;
+
+        // Converting dimm size from MB to KB
+        l_dimmSize *= constants::CONVERT_MB_TO_KB;
+    }
+    catch (const std::exception& l_ex)
+    {
+        // TODO:: Need an error log here
+        logging::logMessage("DDR4 DDIMM calculation is failed, reason: " +
+                            std::string(l_ex.what()));
+    }
+    return l_dimmSize;
+}
+
+size_t
+    DdimmVpdParser::getDdimmSize(types::BinaryVector::const_iterator i_iterator)
+{
+    size_t l_dimmSize = 0;
+    if (i_iterator[constants::SPD_BYTE_2] == constants::SPD_DRAM_TYPE_DDR5)
+    {
+        l_dimmSize = getDdr5BasedDdimmSize(i_iterator);
+    }
+    else if (i_iterator[constants::SPD_BYTE_2] == constants::SPD_DRAM_TYPE_DDR4)
+    {
+        l_dimmSize = getDdr4BasedDdimmSize(i_iterator);
+    }
+    else
+    {
+        logging::logMessage(
+            "Error: DDIMM is neither DDR4 nor DDR5. DDIMM Byte 2 value [" +
+            std::to_string(i_iterator[constants::SPD_BYTE_2]) + "]");
+    }
+    return l_dimmSize;
+}
+
+void DdimmVpdParser::readKeywords(
+    types::BinaryVector::const_iterator i_iterator)
+{
+    // collect DDIMM size value
+    auto l_dimmSize = getDdimmSize(i_iterator);
+    if (!l_dimmSize)
+    {
+        throw(DataException("Error: Calculated dimm size is 0."));
+    }
+
+    m_parsedVpdMap.emplace("MemorySizeInKB", l_dimmSize);
+    // point the i_iterator to DIMM data and skip "11S"
+    advance(i_iterator, constants::DDIMM_11S_BARCODE_START +
+                            constants::DDIMM_11S_FORMAT_LEN);
+    types::BinaryVector l_partNumber(i_iterator,
+                                     i_iterator + constants::PART_NUM_LEN);
+
+    advance(i_iterator, constants::PART_NUM_LEN);
+    types::BinaryVector l_serialNumber(i_iterator,
+                                       i_iterator + constants::SERIAL_NUM_LEN);
+
+    advance(i_iterator, constants::SERIAL_NUM_LEN);
+    types::BinaryVector l_ccin(i_iterator, i_iterator + constants::CCIN_LEN);
+
+    m_parsedVpdMap.emplace("FN", l_partNumber);
+    m_parsedVpdMap.emplace("PN", move(l_partNumber));
+    m_parsedVpdMap.emplace("SN", move(l_serialNumber));
+    m_parsedVpdMap.emplace("CC", move(l_ccin));
+}
+
+types::VPDMapVariant DdimmVpdParser::parse()
+{
+    try
+    {
+        // Read the data and return the map
+        auto l_iterator = m_vpdVector.cbegin();
+        readKeywords(l_iterator);
+        return m_parsedVpdMap;
+    }
+    catch (const std::exception& exp)
+    {
+        logging::logMessage(exp.what());
+        throw exp;
+    }
+}
+
+} // namespace vpd
diff --git a/vpd-manager/src/event_logger.cpp b/vpd-manager/src/event_logger.cpp
new file mode 100644
index 0000000..11861d1
--- /dev/null
+++ b/vpd-manager/src/event_logger.cpp
@@ -0,0 +1,294 @@
+#include "event_logger.hpp"
+
+#include "logger.hpp"
+
+#include <systemd/sd-bus.h>
+
+namespace vpd
+{
+const std::unordered_map<types::SeverityType, std::string>
+    EventLogger::m_severityMap = {
+        {types::SeverityType::Notice,
+         "xyz.openbmc_project.Logging.Entry.Level.Notice"},
+        {types::SeverityType::Informational,
+         "xyz.openbmc_project.Logging.Entry.Level.Informational"},
+        {types::SeverityType::Debug,
+         "xyz.openbmc_project.Logging.Entry.Level.Debug"},
+        {types::SeverityType::Warning,
+         "xyz.openbmc_project.Logging.Entry.Level.Warning"},
+        {types::SeverityType::Critical,
+         "xyz.openbmc_project.Logging.Entry.Level.Critical"},
+        {types::SeverityType::Emergency,
+         "xyz.openbmc_project.Logging.Entry.Level.Emergency"},
+        {types::SeverityType::Alert,
+         "xyz.openbmc_project.Logging.Entry.Level.Alert"},
+        {types::SeverityType::Error,
+         "xyz.openbmc_project.Logging.Entry.Level.Error"}};
+
+const std::unordered_map<types::ErrorType, std::string>
+    EventLogger::m_errorMsgMap = {
+        {types::ErrorType::DefaultValue, "com.ibm.VPD.Error.DefaultValue"},
+        {types::ErrorType::InvalidVpdMessage, "com.ibm.VPD.Error.InvalidVPD"},
+        {types::ErrorType::VpdMismatch, "com.ibm.VPD.Error.Mismatch"},
+        {types::ErrorType::InvalidEeprom,
+         "com.ibm.VPD.Error.InvalidEepromPath"},
+        {types::ErrorType::EccCheckFailed, "com.ibm.VPD.Error.EccCheckFailed"},
+        {types::ErrorType::JsonFailure, "com.ibm.VPD.Error.InvalidJson"},
+        {types::ErrorType::DbusFailure, "com.ibm.VPD.Error.DbusFailure"},
+        {types::ErrorType::InvalidSystem,
+         "com.ibm.VPD.Error.UnknownSystemType"},
+        {types::ErrorType::EssentialFru,
+         "com.ibm.VPD.Error.RequiredFRUMissing"},
+        {types::ErrorType::GpioError, "com.ibm.VPD.Error.GPIOError"}};
+
+const std::unordered_map<types::CalloutPriority, std::string>
+    EventLogger::m_priorityMap = {
+        {types::CalloutPriority::High, "H"},
+        {types::CalloutPriority::Medium, "M"},
+        {types::CalloutPriority::MediumGroupA, "A"},
+        {types::CalloutPriority::MediumGroupB, "B"},
+        {types::CalloutPriority::MediumGroupC, "C"},
+        {types::CalloutPriority::Low, "L"}};
+
+void EventLogger::createAsyncPelWithInventoryCallout(
+    const types::ErrorType& i_errorType, const types::SeverityType& i_severity,
+    const std::vector<types::InventoryCalloutData>& i_callouts,
+    const std::string& i_fileName, const std::string& i_funcName,
+    const uint8_t i_internalRc, const std::string& i_description,
+    const std::optional<std::string> i_userData1,
+    const std::optional<std::string> i_userData2,
+    const std::optional<std::string> i_symFru,
+    const std::optional<std::string> i_procedure)
+{
+    (void)i_symFru;
+    (void)i_procedure;
+
+    try
+    {
+        if (i_callouts.empty())
+        {
+            logging::logMessage("Callout information is missing to create PEL");
+            // TODO: Revisit this instead of simpley returning.
+            return;
+        }
+
+        if (m_errorMsgMap.find(i_errorType) == m_errorMsgMap.end())
+        {
+            throw std::runtime_error(
+                "Error type not found in the error message map to create PEL");
+            // TODO: Need to handle, instead of throwing exception. Create
+            // default message in message_registry.json.
+        }
+
+        const std::string& l_message = m_errorMsgMap.at(i_errorType);
+
+        const std::string& l_severity =
+            (m_severityMap.find(i_severity) != m_severityMap.end()
+                 ? m_severityMap.at(i_severity)
+                 : m_severityMap.at(types::SeverityType::Informational));
+
+        std::string l_description =
+            (!i_description.empty() ? i_description : "VPD generic error");
+
+        std::string l_userData1 = (i_userData1) ? (*i_userData1) : "";
+
+        std::string l_userData2 = (i_userData2) ? (*i_userData2) : "";
+
+        const types::InventoryCalloutData& l_invCallout = i_callouts[0];
+        // TODO: Need to handle multiple inventory path callout's, when multiple
+        // callout's is supported by "Logging" service.
+
+        const types::CalloutPriority& l_priorityEnum = get<1>(l_invCallout);
+
+        const std::string& l_priority =
+            (m_priorityMap.find(l_priorityEnum) != m_priorityMap.end()
+                 ? m_priorityMap.at(l_priorityEnum)
+                 : m_priorityMap.at(types::CalloutPriority::Low));
+
+        sd_bus* l_sdBus = nullptr;
+        sd_bus_default(&l_sdBus);
+
+        const uint8_t l_additionalDataCount = 8;
+        auto l_rc = sd_bus_call_method_async(
+            l_sdBus, NULL, constants::eventLoggingServiceName,
+            constants::eventLoggingObjectPath, constants::eventLoggingInterface,
+            "Create", NULL, NULL, "ssa{ss}", l_message.c_str(),
+            l_severity.c_str(), l_additionalDataCount, "FileName",
+            i_fileName.c_str(), "FunctionName", i_funcName.c_str(),
+            "InternalRc", std::to_string(i_internalRc).c_str(), "DESCRIPTION",
+            l_description.c_str(), "UserData1", l_userData1.c_str(),
+            "UserData2", l_userData2.c_str(), "CALLOUT_INVENTORY_PATH",
+            get<0>(l_invCallout).c_str(), "CALLOUT_PRIORITY",
+            l_priority.c_str());
+
+        if (l_rc < 0)
+        {
+            logging::logMessage(
+                "Error calling sd_bus_call_method_async, Message = " +
+                std::string(strerror(-l_rc)));
+        }
+    }
+    catch (const std::exception& l_ex)
+    {
+        logging::logMessage(
+            "Create PEL failed with error: " + std::string(l_ex.what()));
+    }
+}
+
+void EventLogger::createAsyncPelWithI2cDeviceCallout(
+    const types::ErrorType i_errorType, const types::SeverityType i_severity,
+    const std::vector<types::DeviceCalloutData>& i_callouts,
+    const std::string& i_fileName, const std::string& i_funcName,
+    const uint8_t i_internalRc,
+    const std::optional<std::pair<std::string, std::string>> i_userData1,
+    const std::optional<std::pair<std::string, std::string>> i_userData2)
+{
+    // TODO, implementation needs to be added.
+    (void)i_errorType;
+    (void)i_severity;
+    (void)i_callouts;
+    (void)i_fileName;
+    (void)i_funcName;
+    (void)i_internalRc;
+    (void)i_userData1;
+    (void)i_userData2;
+}
+
+void EventLogger::createAsyncPelWithI2cBusCallout(
+    const types::ErrorType i_errorType, const types::SeverityType i_severity,
+    const std::vector<types::I2cBusCalloutData>& i_callouts,
+    const std::string& i_fileName, const std::string& i_funcName,
+    const uint8_t i_internalRc,
+    const std::optional<std::pair<std::string, std::string>> i_userData1,
+    const std::optional<std::pair<std::string, std::string>> i_userData2)
+{
+    // TODO, implementation needs to be added.
+    (void)i_errorType;
+    (void)i_severity;
+    (void)i_callouts;
+    (void)i_fileName;
+    (void)i_funcName;
+    (void)i_internalRc;
+    (void)i_userData1;
+    (void)i_userData2;
+}
+
+void EventLogger::createAsyncPel(
+    const types::ErrorType& i_errorType, const types::SeverityType& i_severity,
+    const std::string& i_fileName, const std::string& i_funcName,
+    const uint8_t i_internalRc, const std::string& i_description,
+    const std::optional<std::string> i_userData1,
+    const std::optional<std::string> i_userData2,
+    const std::optional<std::string> i_symFru,
+    const std::optional<std::string> i_procedure)
+{
+    (void)i_symFru;
+    (void)i_procedure;
+    try
+    {
+        if (m_errorMsgMap.find(i_errorType) == m_errorMsgMap.end())
+        {
+            throw std::runtime_error("Unsupported error type received");
+            // TODO: Need to handle, instead of throwing an exception.
+        }
+
+        const std::string& l_message = m_errorMsgMap.at(i_errorType);
+
+        const std::string& l_severity =
+            (m_severityMap.find(i_severity) != m_severityMap.end()
+                 ? m_severityMap.at(i_severity)
+                 : m_severityMap.at(types::SeverityType::Informational));
+
+        const std::string l_description =
+            ((!i_description.empty() ? i_description : "VPD generic error"));
+
+        const std::string l_userData1 = ((i_userData1) ? (*i_userData1) : "");
+
+        const std::string l_userData2 = ((i_userData2) ? (*i_userData2) : "");
+
+        sd_bus* l_sdBus = nullptr;
+        sd_bus_default(&l_sdBus);
+
+        // VALUE_6 represents the additional data pair count passing to create
+        // PEL. If there any change in additional data, we need to pass the
+        // correct number.
+        auto l_rc = sd_bus_call_method_async(
+            l_sdBus, NULL, constants::eventLoggingServiceName,
+            constants::eventLoggingObjectPath, constants::eventLoggingInterface,
+            "Create", NULL, NULL, "ssa{ss}", l_message.c_str(),
+            l_severity.c_str(), constants::VALUE_6, "FileName",
+            i_fileName.c_str(), "FunctionName", i_funcName.c_str(),
+            "InternalRc", std::to_string(i_internalRc).c_str(), "DESCRIPTION",
+            l_description.c_str(), "UserData1", l_userData1.c_str(),
+            "UserData2", l_userData2.c_str());
+
+        if (l_rc < 0)
+        {
+            logging::logMessage(
+                "Error calling sd_bus_call_method_async, Message = " +
+                std::string(strerror(-l_rc)));
+        }
+    }
+    catch (const sdbusplus::exception::SdBusError& l_ex)
+    {
+        logging::logMessage("Async PEL creation failed with an error: " +
+                            std::string(l_ex.what()));
+    }
+}
+
+void EventLogger::createSyncPel(
+    const types::ErrorType& i_errorType, const types::SeverityType& i_severity,
+    const std::string& i_fileName, const std::string& i_funcName,
+    const uint8_t i_internalRc, const std::string& i_description,
+    const std::optional<std::string> i_userData1,
+    const std::optional<std::string> i_userData2,
+    const std::optional<std::string> i_symFru,
+    const std::optional<std::string> i_procedure)
+{
+    (void)i_symFru;
+    (void)i_procedure;
+    try
+    {
+        if (m_errorMsgMap.find(i_errorType) == m_errorMsgMap.end())
+        {
+            throw std::runtime_error("Unsupported error type received");
+            // TODO: Need to handle, instead of throwing an exception.
+        }
+
+        const std::string& l_message = m_errorMsgMap.at(i_errorType);
+
+        const std::string& l_severity =
+            (m_severityMap.find(i_severity) != m_severityMap.end()
+                 ? m_severityMap.at(i_severity)
+                 : m_severityMap.at(types::SeverityType::Informational));
+
+        const std::string l_description =
+            ((!i_description.empty() ? i_description : "VPD generic error"));
+
+        const std::string l_userData1 = ((i_userData1) ? (*i_userData1) : "");
+
+        const std::string l_userData2 = ((i_userData2) ? (*i_userData2) : "");
+
+        std::map<std::string, std::string> l_additionalData{
+            {"FileName", i_fileName},
+            {"FunctionName", i_funcName},
+            {"DESCRIPTION", l_description},
+            {"InteranlRc", std::to_string(i_internalRc)},
+            {"UserData1", l_userData1.c_str()},
+            {"UserData2", l_userData2.c_str()}};
+
+        auto l_bus = sdbusplus::bus::new_default();
+        auto l_method =
+            l_bus.new_method_call(constants::eventLoggingServiceName,
+                                  constants::eventLoggingObjectPath,
+                                  constants::eventLoggingInterface, "Create");
+        l_method.append(l_message, l_severity, l_additionalData);
+        l_bus.call(l_method);
+    }
+    catch (const sdbusplus::exception::SdBusError& l_ex)
+    {
+        logging::logMessage("Sync PEL creation failed with an error: " +
+                            std::string(l_ex.what()));
+    }
+}
+} // namespace vpd
diff --git a/vpd-manager/src/gpio_monitor.cpp b/vpd-manager/src/gpio_monitor.cpp
new file mode 100644
index 0000000..521037c
--- /dev/null
+++ b/vpd-manager/src/gpio_monitor.cpp
@@ -0,0 +1,131 @@
+#include "gpio_monitor.hpp"
+
+#include "constants.hpp"
+#include "logger.hpp"
+#include "types.hpp"
+#include "utility/dbus_utility.hpp"
+#include "utility/json_utility.hpp"
+
+#include <boost/asio.hpp>
+#include <boost/bind/bind.hpp>
+#include <gpiod.hpp>
+
+namespace vpd
+{
+void GpioEventHandler::handleChangeInGpioPin(const bool& i_isFruPresent)
+{
+    try
+    {
+        if (i_isFruPresent)
+        {
+            types::VPDMapVariant l_parsedVpd =
+                m_worker->parseVpdFile(m_fruPath);
+
+            if (std::holds_alternative<std::monostate>(l_parsedVpd))
+            {
+                throw std::runtime_error(
+                    "VPD parsing failed for " + std::string(m_fruPath));
+            }
+
+            types::ObjectMap l_dbusObjectMap;
+            m_worker->populateDbus(l_parsedVpd, l_dbusObjectMap, m_fruPath);
+
+            if (l_dbusObjectMap.empty())
+            {
+                throw std::runtime_error("Failed to create D-bus object map.");
+            }
+
+            if (!dbusUtility::callPIM(move(l_dbusObjectMap)))
+            {
+                throw std::runtime_error("call PIM failed");
+            }
+        }
+        else
+        {
+            // TODO -- Add implementation to Delete FRU if FRU is not present.
+        }
+    }
+    catch (std::exception& l_ex)
+    {
+        logging::logMessage(std::string(l_ex.what()));
+    }
+}
+
+void GpioEventHandler::handleTimerExpiry(
+    const boost::system::error_code& i_errorCode,
+    const std::shared_ptr<boost::asio::steady_timer>& i_timerObj)
+{
+    if (i_errorCode == boost::asio::error::operation_aborted)
+    {
+        logging::logMessage("Timer aborted for GPIO pin");
+        return;
+    }
+
+    if (i_errorCode)
+    {
+        logging::logMessage("Timer wait failed for gpio pin" +
+                            std::string(i_errorCode.message()));
+        return;
+    }
+
+    bool l_currentPresencePinValue = jsonUtility::processGpioPresenceTag(
+        m_worker->getSysCfgJsonObj(), m_fruPath, "pollingRequired",
+        "hotPlugging");
+
+    if (m_prevPresencePinValue != l_currentPresencePinValue)
+    {
+        m_prevPresencePinValue = l_currentPresencePinValue;
+        handleChangeInGpioPin(l_currentPresencePinValue);
+    }
+
+    i_timerObj->expires_at(std::chrono::steady_clock::now() +
+                           std::chrono::seconds(constants::VALUE_5));
+    i_timerObj->async_wait(
+        boost::bind(&GpioEventHandler::handleTimerExpiry, this,
+                    boost::asio::placeholders::error, i_timerObj));
+}
+
+void GpioEventHandler::setEventHandlerForGpioPresence(
+    const std::shared_ptr<boost::asio::io_context>& i_ioContext)
+{
+    m_prevPresencePinValue = jsonUtility::processGpioPresenceTag(
+        m_worker->getSysCfgJsonObj(), m_fruPath, "pollingRequired",
+        "hotPlugging");
+
+    static std::vector<std::shared_ptr<boost::asio::steady_timer>> l_timers;
+
+    auto l_timerObj = make_shared<boost::asio::steady_timer>(
+        *i_ioContext, std::chrono::seconds(constants::VALUE_5));
+
+    l_timerObj->async_wait(
+        boost::bind(&GpioEventHandler::handleTimerExpiry, this,
+                    boost::asio::placeholders::error, l_timerObj));
+
+    l_timers.push_back(l_timerObj);
+}
+
+void GpioMonitor::initHandlerForGpio(
+    const std::shared_ptr<boost::asio::io_context>& i_ioContext,
+    const std::shared_ptr<Worker>& i_worker)
+{
+    try
+    {
+        std::vector<std::string> l_gpioPollingRequiredFrusList =
+            jsonUtility::getListOfGpioPollingFrus(m_sysCfgJsonObj);
+
+        for (const auto& l_fruPath : l_gpioPollingRequiredFrusList)
+        {
+            std::shared_ptr<GpioEventHandler> l_gpioEventHandlerObj =
+                std::make_shared<GpioEventHandler>(l_fruPath, i_worker,
+                                                   i_ioContext);
+
+            m_gpioEventHandlerObjects.push_back(l_gpioEventHandlerObj);
+        }
+    }
+    catch (std::exception& l_ex)
+    {
+        // TODO log PEL for exception.
+        logging::logMessage(l_ex.what());
+    }
+}
+} // namespace vpd
diff --git a/vpd-manager/src/ipz_parser.cpp b/vpd-manager/src/ipz_parser.cpp
new file mode 100644
index 0000000..4300e12
--- /dev/null
+++ b/vpd-manager/src/ipz_parser.cpp
@@ -0,0 +1,842 @@
+#include "config.h"
+
+#include "ipz_parser.hpp"
+
+#include "vpdecc/vpdecc.h"
+
+#include "constants.hpp"
+#include "exceptions.hpp"
+
+#include <nlohmann/json.hpp>
+
+#include <typeindex>
+
+namespace vpd
+{
+
+// Offset of different entries in VPD data.
+enum Offset
+{
+    VHDR = 17,
+    VHDR_TOC_ENTRY = 29,
+    VTOC_PTR = 35,
+    VTOC_REC_LEN = 37,
+    VTOC_ECC_OFF = 39,
+    VTOC_ECC_LEN = 41,
+    VTOC_DATA = 13,
+    VHDR_ECC = 0,
+    VHDR_RECORD = 11
+};
+
+// Length of some specific entries w.r.t VPD data.
+enum Length
+{
+    RECORD_NAME = 4,
+    KW_NAME = 2,
+    RECORD_OFFSET = 2,
+    RECORD_MIN = 44,
+    RECORD_LENGTH = 2,
+    RECORD_ECC_OFFSET = 2,
+    VHDR_ECC_LENGTH = 11,
+    VHDR_RECORD_LENGTH = 44,
+    RECORD_TYPE = 2,
+    SKIP_A_RECORD_IN_PT = 14,
+    JUMP_TO_RECORD_NAME = 6
+}; // enum Length
+
+/**
+ * @brief API to read 2 bytes LE data.
+ *
+ * @param[in] iterator - iterator to VPD vector.
+ * @return read bytes.
+ */
+static uint16_t readUInt16LE(types::BinaryVector::const_iterator iterator)
+{
+    uint16_t lowByte = *iterator;
+    uint16_t highByte = *(iterator + 1);
+    lowByte |= (highByte << 8);
+    return lowByte;
+}
+
+bool IpzVpdParser::vhdrEccCheck()
+{
+    auto vpdPtr = m_vpdVector.cbegin();
+
+    auto l_status = vpdecc_check_data(
+        const_cast<uint8_t*>(&vpdPtr[Offset::VHDR_RECORD]),
+        Length::VHDR_RECORD_LENGTH,
+        const_cast<uint8_t*>(&vpdPtr[Offset::VHDR_ECC]),
+        Length::VHDR_ECC_LENGTH);
+    if (l_status == VPD_ECC_CORRECTABLE_DATA)
+    {
+        try
+        {
+            if (m_vpdFileStream.is_open())
+            {
+                m_vpdFileStream.seekp(m_vpdStartOffset + Offset::VHDR_RECORD,
+                                      std::ios::beg);
+                m_vpdFileStream.write(reinterpret_cast<const char*>(
+                                          &m_vpdVector[Offset::VHDR_RECORD]),
+                                      Length::VHDR_RECORD_LENGTH);
+            }
+            else
+            {
+                logging::logMessage("File not open");
+                return false;
+            }
+        }
+        catch (const std::fstream::failure& e)
+        {
+            logging::logMessage(
+                "Error while operating on file with exception: " +
+                std::string(e.what()));
+            return false;
+        }
+    }
+    else if (l_status != VPD_ECC_OK)
+    {
+        return false;
+    }
+
+    return true;
+}
+
+bool IpzVpdParser::vtocEccCheck()
+{
+    auto vpdPtr = m_vpdVector.cbegin();
+
+    std::advance(vpdPtr, Offset::VTOC_PTR);
+
+    // The offset to VTOC could be 1 or 2 bytes long
+    auto vtocOffset = readUInt16LE(vpdPtr);
+
+    // Get the VTOC Length
+    std::advance(vpdPtr, sizeof(types::RecordOffset));
+    auto vtocLength = readUInt16LE(vpdPtr);
+
+    // Get the ECC Offset
+    std::advance(vpdPtr, sizeof(types::RecordLength));
+    auto vtocECCOffset = readUInt16LE(vpdPtr);
+
+    // Get the ECC length
+    std::advance(vpdPtr, sizeof(types::ECCOffset));
+    auto vtocECCLength = readUInt16LE(vpdPtr);
+
+    // Reset pointer to start of the vpd,
+    // so that Offset will point to correct address
+    vpdPtr = m_vpdVector.cbegin();
+    auto l_status = vpdecc_check_data(
+        const_cast<uint8_t*>(&m_vpdVector[vtocOffset]), vtocLength,
+        const_cast<uint8_t*>(&m_vpdVector[vtocECCOffset]), vtocECCLength);
+    if (l_status == VPD_ECC_CORRECTABLE_DATA)
+    {
+        try
+        {
+            if (m_vpdFileStream.is_open())
+            {
+                m_vpdFileStream.seekp(m_vpdStartOffset + vtocOffset,
+                                      std::ios::beg);
+                m_vpdFileStream.write(
+                    reinterpret_cast<const char*>(&m_vpdVector[vtocOffset]),
+                    vtocLength);
+            }
+            else
+            {
+                logging::logMessage("File not open");
+                return false;
+            }
+        }
+        catch (const std::fstream::failure& e)
+        {
+            logging::logMessage(
+                "Error while operating on file with exception " +
+                std::string(e.what()));
+            return false;
+        }
+    }
+    else if (l_status != VPD_ECC_OK)
+    {
+        return false;
+    }
+
+    return true;
+}
+
+bool IpzVpdParser::recordEccCheck(types::BinaryVector::const_iterator iterator)
+{
+    auto recordOffset = readUInt16LE(iterator);
+
+    std::advance(iterator, sizeof(types::RecordOffset));
+    auto recordLength = readUInt16LE(iterator);
+
+    if (recordOffset == 0 || recordLength == 0)
+    {
+        throw(DataException("Invalid record offset or length"));
+    }
+
+    std::advance(iterator, sizeof(types::RecordLength));
+    auto eccOffset = readUInt16LE(iterator);
+
+    std::advance(iterator, sizeof(types::ECCOffset));
+    auto eccLength = readUInt16LE(iterator);
+
+    if (eccLength == 0 || eccOffset == 0)
+    {
+        throw(EccException("Invalid ECC length or offset."));
+    }
+
+    auto vpdPtr = m_vpdVector.cbegin();
+
+    if (vpdecc_check_data(
+            const_cast<uint8_t*>(&vpdPtr[recordOffset]), recordLength,
+            const_cast<uint8_t*>(&vpdPtr[eccOffset]), eccLength) == VPD_ECC_OK)
+    {
+        return true;
+    }
+
+    return false;
+}
+
+void IpzVpdParser::checkHeader(types::BinaryVector::const_iterator itrToVPD)
+{
+    if (m_vpdVector.empty() || (Length::RECORD_MIN > m_vpdVector.size()))
+    {
+        throw(DataException("Malformed VPD"));
+    }
+
+    std::advance(itrToVPD, Offset::VHDR);
+    auto stop = std::next(itrToVPD, Length::RECORD_NAME);
+
+    std::string record(itrToVPD, stop);
+    if ("VHDR" != record)
+    {
+        throw(DataException("VHDR record not found"));
+    }
+
+    if (!vhdrEccCheck())
+    {
+        throw(EccException("ERROR: VHDR ECC check Failed"));
+    }
+}
+
+auto IpzVpdParser::readTOC(types::BinaryVector::const_iterator& itrToVPD)
+{
+    // The offset to VTOC could be 1 or 2 bytes long
+    uint16_t vtocOffset =
+        readUInt16LE((itrToVPD + Offset::VTOC_PTR)); // itrToVPD);
+
+    // Got the offset to VTOC, skip past record header and keyword header
+    // to get to the record name.
+    std::advance(itrToVPD, vtocOffset + sizeof(types::RecordId) +
+                               sizeof(types::RecordSize) +
+                               // Skip past the RT keyword, which contains
+                               // the record name.
+                               Length::KW_NAME + sizeof(types::KwSize));
+
+    std::string record(itrToVPD, std::next(itrToVPD, Length::RECORD_NAME));
+    if ("VTOC" != record)
+    {
+        throw(DataException("VTOC record not found"));
+    }
+
+    if (!vtocEccCheck())
+    {
+        throw(EccException("ERROR: VTOC ECC check Failed"));
+    }
+
+    // VTOC record name is good, now read through the TOC, stored in the PT
+    // PT keyword; vpdBuffer is now pointing at the first character of the
+    // name 'VTOC', jump to PT data.
+    // Skip past record name and KW name, 'PT'
+    std::advance(itrToVPD, Length::RECORD_NAME + Length::KW_NAME);
+
+    // Note size of PT
+    auto ptLen = *itrToVPD;
+
+    // Skip past PT size
+    std::advance(itrToVPD, sizeof(types::KwSize));
+
+    // length of PT keyword
+    return ptLen;
+}
+
+types::RecordOffsetList IpzVpdParser::readPT(
+    types::BinaryVector::const_iterator& itrToPT, auto ptLength)
+{
+    types::RecordOffsetList recordOffsets;
+
+    auto end = itrToPT;
+    std::advance(end, ptLength);
+
+    // Look at each entry in the PT keyword. In the entry,
+    // we care only about the record offset information.
+    while (itrToPT < end)
+    {
+        std::string recordName(itrToPT, itrToPT + Length::RECORD_NAME);
+        // Skip record name and record type
+        std::advance(itrToPT, Length::RECORD_NAME + sizeof(types::RecordType));
+
+        // Get record offset
+        recordOffsets.push_back(readUInt16LE(itrToPT));
+        try
+        {
+            // Verify the ECC for this Record
+            if (!recordEccCheck(itrToPT))
+            {
+                throw(EccException("ERROR: ECC check failed"));
+            }
+        }
+        catch (const EccException& ex)
+        {
+            logging::logMessage(ex.what());
+
+            /*TODO: uncomment when PEL code goes in */
+
+            /*std::string errMsg =
+                std::string{ex.what()} + " Record: " + recordName;
+
+            inventory::PelAdditionalData additionalData{};
+            additionalData.emplace("DESCRIPTION", errMsg);
+            additionalData.emplace("CALLOUT_INVENTORY_PATH", inventoryPath);
+            createPEL(additionalData, PelSeverity::WARNING,
+                      errIntfForEccCheckFail, nullptr);*/
+        }
+        catch (const DataException& ex)
+        {
+            logging::logMessage(ex.what());
+
+            /*TODO: uncomment when PEL code goes in */
+
+            /*std::string errMsg =
+                std::string{ex.what()} + " Record: " + recordName;
+
+            inventory::PelAdditionalData additionalData{};
+            additionalData.emplace("DESCRIPTION", errMsg);
+            additionalData.emplace("CALLOUT_INVENTORY_PATH", inventoryPath);
+            createPEL(additionalData, PelSeverity::WARNING,
+                      errIntfForInvalidVPD, nullptr);*/
+        }
+
+        // Jump record size, record length, ECC offset and ECC length
+        std::advance(itrToPT,
+                     sizeof(types::RecordOffset) + sizeof(types::RecordLength) +
+                         sizeof(types::ECCOffset) + sizeof(types::ECCLength));
+    }
+
+    return recordOffsets;
+}
+
+types::IPZVpdMap::mapped_type
+    IpzVpdParser::readKeywords(types::BinaryVector::const_iterator& itrToKwds)
+{
+    types::IPZVpdMap::mapped_type kwdValueMap{};
+    while (true)
+    {
+        // Note keyword name
+        std::string kwdName(itrToKwds, itrToKwds + Length::KW_NAME);
+        if (constants::LAST_KW == kwdName)
+        {
+            // We're done
+            break;
+        }
+        // Check if the Keyword is '#kw'
+        char kwNameStart = *itrToKwds;
+
+        // Jump past keyword name
+        std::advance(itrToKwds, Length::KW_NAME);
+
+        std::size_t kwdDataLength;
+        std::size_t lengthHighByte;
+
+        if (constants::POUND_KW == kwNameStart)
+        {
+            // Note keyword data length
+            kwdDataLength = *itrToKwds;
+            lengthHighByte = *(itrToKwds + 1);
+            kwdDataLength |= (lengthHighByte << 8);
+
+            // Jump past 2Byte keyword length
+            std::advance(itrToKwds, sizeof(types::PoundKwSize));
+        }
+        else
+        {
+            // Note keyword data length
+            kwdDataLength = *itrToKwds;
+
+            // Jump past keyword length
+            std::advance(itrToKwds, sizeof(types::KwSize));
+        }
+
+        // support all the Keywords
+        auto stop = std::next(itrToKwds, kwdDataLength);
+        std::string kwdata(itrToKwds, stop);
+        kwdValueMap.emplace(std::move(kwdName), std::move(kwdata));
+
+        // Jump past keyword data length
+        std::advance(itrToKwds, kwdDataLength);
+    }
+
+    return kwdValueMap;
+}
+
+void IpzVpdParser::processRecord(auto recordOffset)
+{
+    // Jump to record name
+    auto recordNameOffset =
+        recordOffset + sizeof(types::RecordId) + sizeof(types::RecordSize) +
+        // Skip past the RT keyword, which contains
+        // the record name.
+        Length::KW_NAME + sizeof(types::KwSize);
+
+    // Get record name
+    auto itrToVPDStart = m_vpdVector.cbegin();
+    std::advance(itrToVPDStart, recordNameOffset);
+
+    std::string recordName(itrToVPDStart, itrToVPDStart + Length::RECORD_NAME);
+
+    // proceed to find contained keywords and their values.
+    std::advance(itrToVPDStart, Length::RECORD_NAME);
+
+    // Reverse back to RT Kw, in ipz vpd, to Read RT KW & value
+    std::advance(itrToVPDStart, -(Length::KW_NAME + sizeof(types::KwSize) +
+                                  Length::RECORD_NAME));
+
+    // Add entry for this record (and contained keyword:value pairs)
+    // to the parsed vpd output.
+    m_parsedVPDMap.emplace(std::move(recordName),
+                           std::move(readKeywords(itrToVPDStart)));
+}
+
+types::VPDMapVariant IpzVpdParser::parse()
+{
+    try
+    {
+        auto itrToVPD = m_vpdVector.cbegin();
+
+        // Check vaidity of VHDR record
+        checkHeader(itrToVPD);
+
+        // Read the table of contents
+        auto ptLen = readTOC(itrToVPD);
+
+        // Read the table of contents record, to get offsets
+        // to other records.
+        auto recordOffsets = readPT(itrToVPD, ptLen);
+        for (const auto& offset : recordOffsets)
+        {
+            processRecord(offset);
+        }
+
+        return m_parsedVPDMap;
+    }
+    catch (const std::exception& e)
+    {
+        logging::logMessage(e.what());
+        throw e;
+    }
+}
+
+types::BinaryVector IpzVpdParser::getKeywordValueFromRecord(
+    const types::Record& i_recordName, const types::Keyword& i_keywordName,
+    const types::RecordOffset& i_recordDataOffset)
+{
+    auto l_iterator = m_vpdVector.cbegin();
+
+    // Go to the record name in the given record's offset
+    std::ranges::advance(l_iterator,
+                         i_recordDataOffset + Length::JUMP_TO_RECORD_NAME,
+                         m_vpdVector.cend());
+
+    // Check if the record is present in the given record's offset
+    if (i_recordName !=
+        std::string(l_iterator,
+                    std::ranges::next(l_iterator, Length::RECORD_NAME,
+                                      m_vpdVector.cend())))
+    {
+        throw std::runtime_error(
+            "Given record is not present in the offset provided");
+    }
+
+    std::ranges::advance(l_iterator, Length::RECORD_NAME, m_vpdVector.cend());
+
+    std::string l_kwName = std::string(
+        l_iterator,
+        std::ranges::next(l_iterator, Length::KW_NAME, m_vpdVector.cend()));
+
+    // Iterate through the keywords until the last keyword PF is found.
+    while (l_kwName != constants::LAST_KW)
+    {
+        // First character required for #D keyword check
+        char l_kwNameStart = *l_iterator;
+
+        std::ranges::advance(l_iterator, Length::KW_NAME, m_vpdVector.cend());
+
+        // Get the keyword's data length
+        auto l_kwdDataLength = 0;
+
+        if (constants::POUND_KW == l_kwNameStart)
+        {
+            l_kwdDataLength = readUInt16LE(l_iterator);
+            std::ranges::advance(l_iterator, sizeof(types::PoundKwSize),
+                                 m_vpdVector.cend());
+        }
+        else
+        {
+            l_kwdDataLength = *l_iterator;
+            std::ranges::advance(l_iterator, sizeof(types::KwSize),
+                                 m_vpdVector.cend());
+        }
+
+        if (l_kwName == i_keywordName)
+        {
+            // Return keyword's value to the caller
+            return types::BinaryVector(
+                l_iterator, std::ranges::next(l_iterator, l_kwdDataLength,
+                                              m_vpdVector.cend()));
+        }
+
+        // next keyword search
+        std::ranges::advance(l_iterator, l_kwdDataLength, m_vpdVector.cend());
+
+        // next keyword name
+        l_kwName = std::string(
+            l_iterator,
+            std::ranges::next(l_iterator, Length::KW_NAME, m_vpdVector.cend()));
+    }
+
+    // Keyword not found
+    throw std::runtime_error("Given keyword not found.");
+}
+
+types::RecordData IpzVpdParser::getRecordDetailsFromVTOC(
+    const types::Record& i_recordName, const types::RecordOffset& i_vtocOffset)
+{
+    // Get VTOC's PT keyword value.
+    const auto l_vtocPTKwValue =
+        getKeywordValueFromRecord("VTOC", "PT", i_vtocOffset);
+
+    // Parse through VTOC PT keyword value to find the record which we are
+    // interested in.
+    auto l_vtocPTItr = l_vtocPTKwValue.cbegin();
+
+    types::RecordData l_recordData;
+
+    while (l_vtocPTItr < l_vtocPTKwValue.cend())
+    {
+        if (i_recordName ==
+            std::string(l_vtocPTItr, l_vtocPTItr + Length::RECORD_NAME))
+        {
+            // Record found in VTOC PT keyword. Get offset
+            std::ranges::advance(l_vtocPTItr,
+                                 Length::RECORD_NAME + Length::RECORD_TYPE,
+                                 l_vtocPTKwValue.cend());
+            const auto l_recordOffset = readUInt16LE(l_vtocPTItr);
+
+            std::ranges::advance(l_vtocPTItr, Length::RECORD_OFFSET,
+                                 l_vtocPTKwValue.cend());
+            const auto l_recordLength = readUInt16LE(l_vtocPTItr);
+
+            std::ranges::advance(l_vtocPTItr, Length::RECORD_LENGTH,
+                                 l_vtocPTKwValue.cend());
+            const auto l_eccOffset = readUInt16LE(l_vtocPTItr);
+
+            std::ranges::advance(l_vtocPTItr, Length::RECORD_ECC_OFFSET,
+                                 l_vtocPTKwValue.cend());
+            const auto l_eccLength = readUInt16LE(l_vtocPTItr);
+
+            l_recordData = std::make_tuple(l_recordOffset, l_recordLength,
+                                           l_eccOffset, l_eccLength);
+            break;
+        }
+
+        std::ranges::advance(l_vtocPTItr, Length::SKIP_A_RECORD_IN_PT,
+                             l_vtocPTKwValue.cend());
+    }
+
+    return l_recordData;
+}
+
+types::DbusVariantType IpzVpdParser::readKeywordFromHardware(
+    const types::ReadVpdParams i_paramsToReadData)
+{
+    // Extract record and keyword from i_paramsToReadData
+    types::Record l_record;
+    types::Keyword l_keyword;
+
+    if (const types::IpzType* l_ipzData =
+            std::get_if<types::IpzType>(&i_paramsToReadData))
+    {
+        l_record = std::get<0>(*l_ipzData);
+        l_keyword = std::get<1>(*l_ipzData);
+    }
+    else
+    {
+        logging::logMessage(
+            "Input parameter type provided isn't compatible with the given VPD type.");
+        throw types::DbusInvalidArgument();
+    }
+
+    // Read keyword's value from vector
+    auto l_itrToVPD = m_vpdVector.cbegin();
+
+    if (l_record == "VHDR")
+    {
+// Disable providing a way to read keywords from VHDR for the time being.
+#if 0
+        std::ranges::advance(l_itrToVPD, Offset::VHDR_RECORD,
+                             m_vpdVector.cend());
+
+        return types::DbusVariantType{getKeywordValueFromRecord(
+            l_record, l_keyword, Offset::VHDR_RECORD)};
+#endif
+
+        logging::logMessage("Read cannot be performed on VHDR record.");
+        throw types::DbusInvalidArgument();
+    }
+
+    // Get VTOC offset
+    std::ranges::advance(l_itrToVPD, Offset::VTOC_PTR, m_vpdVector.cend());
+    auto l_vtocOffset = readUInt16LE(l_itrToVPD);
+
+    if (l_record == "VTOC")
+    {
+        // Disable providing a way to read keywords from VTOC for the time
+        // being.
+#if 0
+        return types::DbusVariantType{
+            getKeywordValueFromRecord(l_record, l_keyword, l_vtocOffset)};
+#endif
+
+        logging::logMessage("Read cannot be performed on VTOC record.");
+        throw types::DbusInvalidArgument();
+    }
+
+    // Get record offset from VTOC's PT keyword value.
+    auto l_recordData = getRecordDetailsFromVTOC(l_record, l_vtocOffset);
+    const auto l_recordOffset = std::get<0>(l_recordData);
+
+    if (l_recordOffset == 0)
+    {
+        throw std::runtime_error("Record not found in VTOC PT keyword.");
+    }
+
+    // Get the given keyword's value
+    return types::DbusVariantType{
+        getKeywordValueFromRecord(l_record, l_keyword, l_recordOffset)};
+}
+
+void IpzVpdParser::updateRecordECC(
+    const auto& i_recordDataOffset, const auto& i_recordDataLength,
+    const auto& i_recordECCOffset, size_t i_recordECCLength,
+    types::BinaryVector& io_vpdVector)
+{
+    auto l_recordDataBegin =
+        std::next(io_vpdVector.begin(), i_recordDataOffset);
+
+    auto l_recordECCBegin = std::next(io_vpdVector.begin(), i_recordECCOffset);
+
+    auto l_eccStatus = vpdecc_create_ecc(
+        const_cast<uint8_t*>(&l_recordDataBegin[0]), i_recordDataLength,
+        const_cast<uint8_t*>(&l_recordECCBegin[0]), &i_recordECCLength);
+
+    if (l_eccStatus != VPD_ECC_OK)
+    {
+        throw(EccException("ECC update failed with error " + l_eccStatus));
+    }
+
+    auto l_recordECCEnd = std::next(l_recordECCBegin, i_recordECCLength);
+
+    m_vpdFileStream.seekp(m_vpdStartOffset + i_recordECCOffset, std::ios::beg);
+
+    std::copy(l_recordECCBegin, l_recordECCEnd,
+              std::ostreambuf_iterator<char>(m_vpdFileStream));
+}
+
+int IpzVpdParser::setKeywordValueInRecord(
+    const types::Record& i_recordName, const types::Keyword& i_keywordName,
+    const types::BinaryVector& i_keywordData,
+    const types::RecordOffset& i_recordDataOffset,
+    types::BinaryVector& io_vpdVector)
+{
+    auto l_iterator = io_vpdVector.begin();
+
+    // Go to the record name in the given record's offset
+    std::ranges::advance(l_iterator,
+                         i_recordDataOffset + Length::JUMP_TO_RECORD_NAME,
+                         io_vpdVector.end());
+
+    const std::string l_recordFound(
+        l_iterator,
+        std::ranges::next(l_iterator, Length::RECORD_NAME, io_vpdVector.end()));
+
+    // Check if the record is present in the given record's offset
+    if (i_recordName != l_recordFound)
+    {
+        throw(DataException("Given record found at the offset " +
+                            std::to_string(i_recordDataOffset) + " is : " +
+                            l_recordFound + " and not " + i_recordName));
+    }
+
+    std::ranges::advance(l_iterator, Length::RECORD_NAME, io_vpdVector.end());
+
+    std::string l_kwName = std::string(
+        l_iterator,
+        std::ranges::next(l_iterator, Length::KW_NAME, io_vpdVector.end()));
+
+    // Iterate through the keywords until the last keyword PF is found.
+    while (l_kwName != constants::LAST_KW)
+    {
+        // First character required for #D keyword check
+        char l_kwNameStart = *l_iterator;
+
+        std::ranges::advance(l_iterator, Length::KW_NAME, io_vpdVector.end());
+
+        // Find the keyword's data length
+        size_t l_kwdDataLength = 0;
+
+        if (constants::POUND_KW == l_kwNameStart)
+        {
+            l_kwdDataLength = readUInt16LE(l_iterator);
+            std::ranges::advance(l_iterator, sizeof(types::PoundKwSize),
+                                 io_vpdVector.end());
+        }
+        else
+        {
+            l_kwdDataLength = *l_iterator;
+            std::ranges::advance(l_iterator, sizeof(types::KwSize),
+                                 io_vpdVector.end());
+        }
+
+        if (l_kwName == i_keywordName)
+        {
+            // Before writing the keyword's value, get the maximum size that can
+            // be updated.
+            const auto l_lengthToUpdate =
+                i_keywordData.size() <= l_kwdDataLength
+                    ? i_keywordData.size()
+                    : l_kwdDataLength;
+
+            // Set the keyword's value on vector. This is required to update the
+            // record's ECC based on the new value set.
+            const auto i_keywordDataEnd = std::ranges::next(
+                i_keywordData.cbegin(), l_lengthToUpdate, i_keywordData.cend());
+
+            std::copy(i_keywordData.cbegin(), i_keywordDataEnd, l_iterator);
+
+            // Set the keyword's value on hardware
+            const auto l_kwdDataOffset =
+                std::distance(io_vpdVector.begin(), l_iterator);
+            m_vpdFileStream.seekp(m_vpdStartOffset + l_kwdDataOffset,
+                                  std::ios::beg);
+
+            std::copy(i_keywordData.cbegin(), i_keywordDataEnd,
+                      std::ostreambuf_iterator<char>(m_vpdFileStream));
+
+            // return no of bytes set
+            return l_lengthToUpdate;
+        }
+
+        // next keyword search
+        std::ranges::advance(l_iterator, l_kwdDataLength, io_vpdVector.end());
+
+        // next keyword name
+        l_kwName = std::string(
+            l_iterator,
+            std::ranges::next(l_iterator, Length::KW_NAME, io_vpdVector.end()));
+    }
+
+    // Keyword not found
+    throw(DataException(
+        "Keyword " + i_keywordName + " not found in record " + i_recordName));
+}
+
+int IpzVpdParser::writeKeywordOnHardware(
+    const types::WriteVpdParams i_paramsToWriteData)
+{
+    int l_sizeWritten = -1;
+
+    try
+    {
+        types::Record l_recordName;
+        types::Keyword l_keywordName;
+        types::BinaryVector l_keywordData;
+
+        // Extract record, keyword and value from i_paramsToWriteData
+        if (const types::IpzData* l_ipzData =
+                std::get_if<types::IpzData>(&i_paramsToWriteData))
+        {
+            l_recordName = std::get<0>(*l_ipzData);
+            l_keywordName = std::get<1>(*l_ipzData);
+            l_keywordData = std::get<2>(*l_ipzData);
+        }
+        else
+        {
+            logging::logMessage(
+                "Input parameter type provided isn't compatible with the given FRU's VPD type.");
+            throw types::DbusInvalidArgument();
+        }
+
+        if (l_recordName == "VHDR" || l_recordName == "VTOC")
+        {
+            logging::logMessage(
+                "Write operation not allowed on the given record : " +
+                l_recordName);
+            throw types::DbusNotAllowed();
+        }
+
+        if (l_keywordData.size() == 0)
+        {
+            logging::logMessage(
+                "Write operation not allowed as the given keyword's data length is 0.");
+            throw types::DbusInvalidArgument();
+        }
+
+        auto l_vpdBegin = m_vpdVector.begin();
+
+        // Get VTOC offset
+        std::ranges::advance(l_vpdBegin, Offset::VTOC_PTR, m_vpdVector.end());
+        auto l_vtocOffset = readUInt16LE(l_vpdBegin);
+
+        // Get the details of user given record from VTOC
+        const types::RecordData& l_inputRecordDetails =
+            getRecordDetailsFromVTOC(l_recordName, l_vtocOffset);
+
+        const auto& l_inputRecordOffset = std::get<0>(l_inputRecordDetails);
+
+        if (l_inputRecordOffset == 0)
+        {
+            throw(DataException("Record not found in VTOC PT keyword."));
+        }
+
+        // Create a local copy of m_vpdVector to perform keyword update and ecc
+        // update on filestream.
+        types::BinaryVector l_vpdVector = m_vpdVector;
+
+        // write keyword's value on hardware
+        l_sizeWritten =
+            setKeywordValueInRecord(l_recordName, l_keywordName, l_keywordData,
+                                    l_inputRecordOffset, l_vpdVector);
+
+        if (l_sizeWritten <= 0)
+        {
+            throw(DataException("Unable to set value on " + l_recordName + ":" +
+                                l_keywordName));
+        }
+
+        // Update the record's ECC
+        updateRecordECC(l_inputRecordOffset, std::get<1>(l_inputRecordDetails),
+                        std::get<2>(l_inputRecordDetails),
+                        std::get<3>(l_inputRecordDetails), l_vpdVector);
+
+        logging::logMessage(std::to_string(l_sizeWritten) +
+                            " bytes updated successfully on hardware for " +
+                            l_recordName + ":" + l_keywordName);
+    }
+    catch (const std::exception& l_exception)
+    {
+        throw;
+    }
+
+    return l_sizeWritten;
+}
+} // namespace vpd
diff --git a/vpd-manager/src/isdimm_parser.cpp b/vpd-manager/src/isdimm_parser.cpp
new file mode 100644
index 0000000..76e1dea
--- /dev/null
+++ b/vpd-manager/src/isdimm_parser.cpp
@@ -0,0 +1,313 @@
+#include "isdimm_parser.hpp"
+
+#include "constants.hpp"
+#include "logger.hpp"
+
+#include <algorithm>
+#include <iostream>
+#include <numeric>
+#include <optional>
+#include <string>
+#include <unordered_map>
+
+namespace vpd
+{
+
+// Constants
+constexpr auto SPD_JEDEC_DDR4_SDRAM_CAP_MASK = 0x0F;
+constexpr auto SPD_JEDEC_DDR4_PRI_BUS_WIDTH_MASK = 0x07;
+constexpr auto SPD_JEDEC_DDR4_SDRAM_WIDTH_MASK = 0x07;
+constexpr auto SPD_JEDEC_DDR4_NUM_RANKS_MASK = 0x38;
+constexpr auto SPD_JEDEC_DDR4_DIE_COUNT_MASK = 0x70;
+constexpr auto SPD_JEDEC_DDR4_SINGLE_LOAD_STACK = 0x02;
+constexpr auto SPD_JEDEC_DDR4_SIGNAL_LOADING_MASK = 0x03;
+
+constexpr auto SPD_JEDEC_DDR4_SDRAMCAP_MULTIPLIER = 256;
+constexpr auto SPD_JEDEC_DDR4_PRI_BUS_WIDTH_MULTIPLIER = 8;
+constexpr auto SPD_JEDEC_DDR4_SDRAM_WIDTH_MULTIPLIER = 4;
+constexpr auto SPD_JEDEC_DDR4_SDRAMCAP_RESERVED = 8;
+constexpr auto SPD_JEDEC_DDR4_4_RESERVED_BITS = 4;
+constexpr auto SPD_JEDEC_DDR4_3_RESERVED_BITS = 3;
+constexpr auto SPD_JEDEC_DDR4_DIE_COUNT_RIGHT_SHIFT = 4;
+
+constexpr auto SPD_JEDEC_DDR4_MFG_ID_MSB_OFFSET = 321;
+constexpr auto SPD_JEDEC_DDR4_MFG_ID_LSB_OFFSET = 320;
+constexpr auto SPD_JEDEC_DDR4_SN_BYTE0_OFFSET = 325;
+constexpr auto SPD_JEDEC_DDR4_SN_BYTE1_OFFSET = 326;
+constexpr auto SPD_JEDEC_DDR4_SN_BYTE2_OFFSET = 327;
+constexpr auto SPD_JEDEC_DDR4_SN_BYTE3_OFFSET = 328;
+constexpr auto SPD_JEDEC_DDR4_SDRAM_DENSITY_BANK_OFFSET = 4;
+constexpr auto SPD_JEDEC_DDR4_SDRAM_ADDR_OFFSET = 5;
+constexpr auto SPD_JEDEC_DDR4_DRAM_PRI_PACKAGE_OFFSET = 6;
+constexpr auto SPD_JEDEC_DDR4_DRAM_MODULE_ORG_OFFSET = 12;
+
+// Lookup tables
+const std::map<std::tuple<std::string, uint8_t>, std::string> pnFreqFnMap = {
+    {std::make_tuple("8421000", 6), "78P4191"},
+    {std::make_tuple("8421008", 6), "78P4192"},
+    {std::make_tuple("8529000", 6), "78P4197"},
+    {std::make_tuple("8529008", 6), "78P4198"},
+    {std::make_tuple("8529928", 6), "78P4199"},
+    {std::make_tuple("8529B28", 6), "78P4200"},
+    {std::make_tuple("8631928", 6), "78P6925"},
+    {std::make_tuple("8529000", 5), "78P7317"},
+    {std::make_tuple("8529008", 5), "78P7318"},
+    {std::make_tuple("8631008", 5), "78P6815"}};
+
+const std::unordered_map<std::string, std::string> pnCCINMap = {
+    {"78P4191", "324D"}, {"78P4192", "324E"}, {"78P4197", "324E"},
+    {"78P4198", "324F"}, {"78P4199", "325A"}, {"78P4200", "324C"},
+    {"78P6925", "32BC"}, {"78P7317", "331A"}, {"78P7318", "331F"},
+    {"78P6815", "32BB"}};
+
+auto JedecSpdParser::getDDR4DimmCapacity(
+    types::BinaryVector::const_iterator& i_iterator)
+{
+    size_t l_tmp = 0, l_dimmSize = 0;
+
+    size_t l_sdramCap = 1, l_priBusWid = 1, l_sdramWid = 1,
+           l_logicalRanksPerDimm = 1;
+    size_t l_dieCount = 1;
+
+    // NOTE: This calculation is Only for DDR4
+
+    // Calculate SDRAM  capacity
+    l_tmp = i_iterator[constants::SPD_BYTE_4] & SPD_JEDEC_DDR4_SDRAM_CAP_MASK;
+
+    /* Make sure the bits are not Reserved */
+    if (l_tmp >= SPD_JEDEC_DDR4_SDRAMCAP_RESERVED)
+    {
+        logging::logMessage(
+            "Bad data in spd byte 4. Can't calculate SDRAM capacity "
+            "and so dimm size.\n ");
+        return l_dimmSize;
+    }
+    l_sdramCap = (l_sdramCap << l_tmp) * SPD_JEDEC_DDR4_SDRAMCAP_MULTIPLIER;
+
+    /* Calculate Primary bus width */
+    l_tmp = i_iterator[constants::SPD_BYTE_13] &
+            SPD_JEDEC_DDR4_PRI_BUS_WIDTH_MASK;
+    if (l_tmp >= SPD_JEDEC_DDR4_4_RESERVED_BITS)
+    {
+        logging::logMessage(
+            "Bad data in spd byte 13. Can't calculate primary bus "
+            "width and so dimm size.\n ");
+        return l_dimmSize;
+    }
+    l_priBusWid = (l_priBusWid << l_tmp) *
+                  SPD_JEDEC_DDR4_PRI_BUS_WIDTH_MULTIPLIER;
+
+    /* Calculate SDRAM width */
+    l_tmp = i_iterator[constants::SPD_BYTE_12] &
+            SPD_JEDEC_DDR4_SDRAM_WIDTH_MASK;
+    if (l_tmp >= SPD_JEDEC_DDR4_4_RESERVED_BITS)
+    {
+        logging::logMessage(
+            "Bad data in spd byte 12. Can't calculate SDRAM width and "
+            "so dimm size.\n ");
+        return l_dimmSize;
+    }
+    l_sdramWid = (l_sdramWid << l_tmp) * SPD_JEDEC_DDR4_SDRAM_WIDTH_MULTIPLIER;
+
+    l_tmp = i_iterator[constants::SPD_BYTE_6] &
+            SPD_JEDEC_DDR4_SIGNAL_LOADING_MASK;
+    if (l_tmp == SPD_JEDEC_DDR4_SINGLE_LOAD_STACK)
+    {
+        // Fetch die count
+        l_tmp = i_iterator[constants::SPD_BYTE_6] &
+                SPD_JEDEC_DDR4_DIE_COUNT_MASK;
+        l_tmp >>= SPD_JEDEC_DDR4_DIE_COUNT_RIGHT_SHIFT;
+        l_dieCount = l_tmp + 1;
+    }
+
+    /* Calculate Number of ranks */
+    l_tmp = i_iterator[constants::SPD_BYTE_12] & SPD_JEDEC_DDR4_NUM_RANKS_MASK;
+    l_tmp >>= SPD_JEDEC_DDR4_3_RESERVED_BITS;
+
+    if (l_tmp >= SPD_JEDEC_DDR4_4_RESERVED_BITS)
+    {
+        logging::logMessage(
+            "Can't calculate number of ranks. Invalid data found.\n ");
+        return l_dimmSize;
+    }
+    l_logicalRanksPerDimm = (l_tmp + 1) * l_dieCount;
+
+    l_dimmSize = (l_sdramCap / SPD_JEDEC_DDR4_PRI_BUS_WIDTH_MULTIPLIER) *
+                 (l_priBusWid / l_sdramWid) * l_logicalRanksPerDimm;
+
+    return l_dimmSize;
+}
+
+std::string_view JedecSpdParser::getDDR4PartNumber(
+    types::BinaryVector::const_iterator& i_iterator)
+{
+    char l_tmpPN[constants::PART_NUM_LEN + 1] = {'\0'};
+    sprintf(l_tmpPN, "%02X%02X%02X%X",
+            i_iterator[SPD_JEDEC_DDR4_SDRAM_DENSITY_BANK_OFFSET],
+            i_iterator[SPD_JEDEC_DDR4_SDRAM_ADDR_OFFSET],
+            i_iterator[SPD_JEDEC_DDR4_DRAM_PRI_PACKAGE_OFFSET],
+            i_iterator[SPD_JEDEC_DDR4_DRAM_MODULE_ORG_OFFSET] & 0x0F);
+    std::string l_partNumber(l_tmpPN, sizeof(l_tmpPN) - 1);
+    return l_partNumber;
+}
+
+std::string JedecSpdParser::getDDR4SerialNumber(
+    types::BinaryVector::const_iterator& i_iterator)
+{
+    char l_tmpSN[constants::SERIAL_NUM_LEN + 1] = {'\0'};
+    sprintf(l_tmpSN, "%02X%02X%02X%02X%02X%02X",
+            i_iterator[SPD_JEDEC_DDR4_MFG_ID_MSB_OFFSET],
+            i_iterator[SPD_JEDEC_DDR4_MFG_ID_LSB_OFFSET],
+            i_iterator[SPD_JEDEC_DDR4_SN_BYTE0_OFFSET],
+            i_iterator[SPD_JEDEC_DDR4_SN_BYTE1_OFFSET],
+            i_iterator[SPD_JEDEC_DDR4_SN_BYTE2_OFFSET],
+            i_iterator[SPD_JEDEC_DDR4_SN_BYTE3_OFFSET]);
+    std::string l_serialNumber(l_tmpSN, sizeof(l_tmpSN) - 1);
+    return l_serialNumber;
+}
+
+std::string_view JedecSpdParser::getDDR4FruNumber(
+    const std::string& i_partNumber,
+    types::BinaryVector::const_iterator& i_iterator)
+{
+    // check for 128GB ISRDIMM not implemented
+    //(128GB 2RX4(8GX72) IS RDIMM 36*(16GBIT, 2H),1.2V 288PIN,1.2" ROHS) - NA
+
+    // MTB Units is used in deciding the frequency of the DIMM
+    // This is applicable only for DDR4 specification
+    // 10 - DDR4-1600
+    // 9  - DDR4-1866
+    // 8  - DDR4-2133
+    // 7  - DDR4-2400
+    // 6  - DDR4-2666
+    // 5  - DDR4-3200
+    // pnFreqFnMap < tuple <partNumber, MTBUnits>, fruNumber>
+    uint8_t l_mtbUnits = i_iterator[constants::SPD_BYTE_18] &
+                         constants::SPD_BYTE_MASK;
+    std::string l_fruNumber = "FFFFFFF";
+    auto it = pnFreqFnMap.find({i_partNumber, l_mtbUnits});
+    if (it != pnFreqFnMap.end())
+    {
+        l_fruNumber = it->second;
+    }
+
+    return l_fruNumber;
+}
+
+std::string_view JedecSpdParser::getDDR4CCIN(const std::string& i_fruNumber)
+{
+    auto it = pnCCINMap.find(i_fruNumber);
+    if (it != pnCCINMap.end())
+    {
+        return it->second;
+    }
+    return "XXXX"; // Return default value as XXXX
+}
+
+auto JedecSpdParser::getDDR5DimmCapacity(
+    types::BinaryVector::const_iterator& i_iterator)
+{
+    // dummy implementation to be updated when required
+    size_t dimmSize = 0;
+    (void)i_iterator;
+    return dimmSize;
+}
+
+auto JedecSpdParser::getDDR5PartNumber(
+    types::BinaryVector::const_iterator& i_iterator)
+{
+    // dummy implementation to be updated when required
+    std::string l_partNumber;
+    (void)i_iterator;
+    l_partNumber = "0123456";
+    return l_partNumber;
+}
+
+auto JedecSpdParser::getDDR5SerialNumber(
+    types::BinaryVector::const_iterator& i_iterator)
+{
+    // dummy implementation to be updated when required
+    std::string l_serialNumber;
+    (void)i_iterator;
+    l_serialNumber = "444444444444";
+    return l_serialNumber;
+}
+
+auto JedecSpdParser::getDDR5FruNumber(const std::string& i_partNumber)
+{
+    // dummy implementation to be updated when required
+    static std::unordered_map<std::string, std::string> pnFruMap = {
+        {"1234567", "XXXXXXX"}};
+
+    std::string l_fruNumber;
+    auto itr = pnFruMap.find(i_partNumber);
+    if (itr != pnFruMap.end())
+    {
+        l_fruNumber = itr->second;
+    }
+    else
+    {
+        l_fruNumber = "FFFFFFF";
+    }
+    return l_fruNumber;
+}
+
+auto JedecSpdParser::getDDR5CCIN(const std::string& i_partNumber)
+{
+    // dummy implementation to be updated when required
+    static std::unordered_map<std::string, std::string> pnCCINMap = {
+        {"1234567", "XXXX"}};
+
+    std::string ccin = "XXXX";
+    auto itr = pnCCINMap.find(i_partNumber);
+    if (itr != pnCCINMap.end())
+    {
+        ccin = itr->second;
+    }
+    return ccin;
+}
+
+types::JedecSpdMap JedecSpdParser::readKeywords(
+    types::BinaryVector::const_iterator& i_iterator)
+{
+    types::JedecSpdMap l_keywordValueMap{};
+    size_t dimmSize = getDDR4DimmCapacity(i_iterator);
+    if (!dimmSize)
+    {
+        logging::logMessage("Error: Calculated dimm size is 0.");
+    }
+    else
+    {
+        l_keywordValueMap.emplace("MemorySizeInKB",
+                                  dimmSize * constants::CONVERT_MB_TO_KB);
+    }
+
+    auto l_partNumber = getDDR4PartNumber(i_iterator);
+    auto l_fruNumber = getDDR4FruNumber(
+        std::string(l_partNumber.begin(), l_partNumber.end()), i_iterator);
+    auto l_serialNumber = getDDR4SerialNumber(i_iterator);
+    auto ccin =
+        getDDR4CCIN(std::string(l_fruNumber.begin(), l_fruNumber.end()));
+    // PN value is made same as FN value
+    auto l_displayPartNumber = l_fruNumber;
+    l_keywordValueMap.emplace("PN",
+                              move(std::string(l_displayPartNumber.begin(),
+                                               l_displayPartNumber.end())));
+    l_keywordValueMap.emplace(
+        "FN", move(std::string(l_fruNumber.begin(), l_fruNumber.end())));
+    l_keywordValueMap.emplace("SN", move(l_serialNumber));
+    l_keywordValueMap.emplace("CC",
+                              move(std::string(ccin.begin(), ccin.end())));
+
+    return l_keywordValueMap;
+}
+
+types::VPDMapVariant JedecSpdParser::parse()
+{
+    // Read the data and return the map
+    auto l_iterator = m_memSpd.cbegin();
+    auto l_spdDataMap = readKeywords(l_iterator);
+    return l_spdDataMap;
+}
+
+} // namespace vpd
diff --git a/vpd-manager/src/keyword_vpd_parser.cpp b/vpd-manager/src/keyword_vpd_parser.cpp
new file mode 100644
index 0000000..9997f94
--- /dev/null
+++ b/vpd-manager/src/keyword_vpd_parser.cpp
@@ -0,0 +1,136 @@
+#include "keyword_vpd_parser.hpp"
+
+#include "constants.hpp"
+#include "exceptions.hpp"
+#include "logger.hpp"
+
+#include <iostream>
+#include <numeric>
+#include <string>
+
+namespace vpd
+{
+
+types::VPDMapVariant KeywordVpdParser::parse()
+{
+    if (m_keywordVpdVector.empty())
+    {
+        throw(DataException("Vector for Keyword format VPD is empty"));
+    }
+    m_vpdIterator = m_keywordVpdVector.begin();
+
+    if (*m_vpdIterator != constants::KW_VPD_START_TAG)
+    {
+        throw(DataException("Invalid Large resource type Identifier String"));
+    }
+
+    checkNextBytesValidity(sizeof(constants::KW_VPD_START_TAG));
+    std::advance(m_vpdIterator, sizeof(constants::KW_VPD_START_TAG));
+
+    uint16_t l_dataSize = getKwDataSize();
+
+    checkNextBytesValidity(constants::TWO_BYTES + l_dataSize);
+    std::advance(m_vpdIterator, constants::TWO_BYTES + l_dataSize);
+
+    // Check for invalid vendor defined large resource type
+    if (*m_vpdIterator != constants::KW_VPD_PAIR_START_TAG)
+    {
+        if (*m_vpdIterator != constants::ALT_KW_VPD_PAIR_START_TAG)
+        {
+            throw(DataException("Invalid Keyword Vpd Start Tag"));
+        }
+    }
+    types::BinaryVector::const_iterator l_checkSumStart = m_vpdIterator;
+    auto l_kwValMap = populateVpdMap();
+
+    // Do these validations before returning parsed data.
+    // Check for small resource type end tag
+    if (*m_vpdIterator != constants::KW_VAL_PAIR_END_TAG)
+    {
+        throw(DataException("Invalid Small resource type End"));
+    }
+
+    types::BinaryVector::const_iterator l_checkSumEnd = m_vpdIterator;
+    validateChecksum(l_checkSumStart, l_checkSumEnd);
+
+    checkNextBytesValidity(constants::TWO_BYTES);
+    std::advance(m_vpdIterator, constants::TWO_BYTES);
+
+    // Check VPD end Tag.
+    if (*m_vpdIterator != constants::KW_VPD_END_TAG)
+    {
+        throw(DataException("Invalid Small resource type."));
+    }
+
+    return l_kwValMap;
+}
+
+types::KeywordVpdMap KeywordVpdParser::populateVpdMap()
+{
+    checkNextBytesValidity(constants::ONE_BYTE);
+    std::advance(m_vpdIterator, constants::ONE_BYTE);
+
+    auto l_totalSize = getKwDataSize();
+    if (l_totalSize == 0)
+    {
+        throw(DataException("Data size is 0, badly formed keyword VPD"));
+    }
+
+    checkNextBytesValidity(constants::TWO_BYTES);
+    std::advance(m_vpdIterator, constants::TWO_BYTES);
+
+    types::KeywordVpdMap l_kwValMap;
+
+    // Parse the keyword-value and store the pairs in map
+    while (l_totalSize > 0)
+    {
+        checkNextBytesValidity(constants::TWO_BYTES);
+        std::string l_keywordName(m_vpdIterator,
+                                  m_vpdIterator + constants::TWO_BYTES);
+        std::advance(m_vpdIterator, constants::TWO_BYTES);
+
+        size_t l_kwSize = *m_vpdIterator;
+        checkNextBytesValidity(constants::ONE_BYTE + l_kwSize);
+        m_vpdIterator++;
+        std::vector<uint8_t> l_valueBytes(m_vpdIterator,
+                                          m_vpdIterator + l_kwSize);
+        std::advance(m_vpdIterator, l_kwSize);
+
+        l_kwValMap.emplace(
+            std::make_pair(std::move(l_keywordName), std::move(l_valueBytes)));
+
+        l_totalSize -= constants::TWO_BYTES + constants::ONE_BYTE + l_kwSize;
+    }
+
+    return l_kwValMap;
+}
+
+void KeywordVpdParser::validateChecksum(
+    types::BinaryVector::const_iterator i_checkSumStart,
+    types::BinaryVector::const_iterator i_checkSumEnd)
+{
+    uint8_t l_checkSumCalculated = 0;
+
+    // Checksum calculation
+    l_checkSumCalculated =
+        std::accumulate(i_checkSumStart, i_checkSumEnd, l_checkSumCalculated);
+    l_checkSumCalculated = ~l_checkSumCalculated + 1;
+    uint8_t l_checksumVpdValue = *(m_vpdIterator + constants::ONE_BYTE);
+
+    if (l_checkSumCalculated != l_checksumVpdValue)
+    {
+        throw(DataException("Invalid Checksum"));
+    }
+}
+
+void KeywordVpdParser::checkNextBytesValidity(uint8_t i_numberOfBytes)
+{
+    if ((std::distance(m_keywordVpdVector.begin(),
+                       m_vpdIterator + i_numberOfBytes)) >
+        std::distance(m_keywordVpdVector.begin(), m_keywordVpdVector.end()))
+    {
+        throw(DataException("Truncated VPD data"));
+    }
+}
+
+} // namespace vpd
diff --git a/vpd-manager/src/logger.cpp b/vpd-manager/src/logger.cpp
new file mode 100644
index 0000000..19959a1
--- /dev/null
+++ b/vpd-manager/src/logger.cpp
@@ -0,0 +1,23 @@
+#include "logger.hpp"
+
+#include <sstream>
+
+namespace vpd
+{
+namespace logging
+{
+void logMessage(std::string_view message, const std::source_location& location)
+{
+    std::ostringstream log;
+    log << "FileName: " << location.file_name() << ","
+        << " Line: " << location.line() << " " << message;
+
+    /* TODO: Check on this later.
+    log << "FileName: " << location.file_name() << ","
+        << " Line: " << location.line() << ","
+        << " Func: " << location.function_name() << ", " << message;*/
+
+    std::cout << log.str() << std::endl;
+}
+} // namespace logging
+} // namespace vpd
diff --git a/vpd-manager/src/manager.cpp b/vpd-manager/src/manager.cpp
new file mode 100644
index 0000000..51eb4af
--- /dev/null
+++ b/vpd-manager/src/manager.cpp
@@ -0,0 +1,915 @@
+#include "config.h"
+
+#include "manager.hpp"
+
+#include "backup_restore.hpp"
+#include "constants.hpp"
+#include "exceptions.hpp"
+#include "logger.hpp"
+#include "parser.hpp"
+#include "parser_factory.hpp"
+#include "parser_interface.hpp"
+#include "types.hpp"
+#include "utility/dbus_utility.hpp"
+#include "utility/json_utility.hpp"
+#include "utility/vpd_specific_utility.hpp"
+
+#include <boost/asio/steady_timer.hpp>
+#include <sdbusplus/bus/match.hpp>
+#include <sdbusplus/message.hpp>
+
+namespace vpd
+{
+Manager::Manager(
+    const std::shared_ptr<boost::asio::io_context>& ioCon,
+    const std::shared_ptr<sdbusplus::asio::dbus_interface>& iFace,
+    const std::shared_ptr<sdbusplus::asio::connection>& asioConnection) :
+    m_ioContext(ioCon), m_interface(iFace), m_asioConnection(asioConnection)
+{
+    try
+    {
+#ifdef IBM_SYSTEM
+        m_worker = std::make_shared<Worker>(INVENTORY_JSON_DEFAULT);
+
+        // Set up minimal things that is needed before bus name is claimed.
+        m_worker->performInitialSetup();
+
+        // set callback to detect any asset tag change
+        registerAssetTagChangeCallback();
+
+        // set async timer to detect if system VPD is published on D-Bus.
+        SetTimerToDetectSVPDOnDbus();
+
+        // set async timer to detect if VPD collection is done.
+        SetTimerToDetectVpdCollectionStatus();
+
+        // Instantiate GpioMonitor class
+        m_gpioMonitor = std::make_shared<GpioMonitor>(
+            m_worker->getSysCfgJsonObj(), m_worker, m_ioContext);
+
+#endif
+        // set callback to detect host state change.
+        registerHostStateChangeCallback();
+
+        // For backward compatibility. Should be depricated.
+        iFace->register_method(
+            "WriteKeyword",
+            [this](const sdbusplus::message::object_path i_path,
+                   const std::string i_recordName, const std::string i_keyword,
+                   const types::BinaryVector i_value) -> int {
+                return this->updateKeyword(
+                    i_path, std::make_tuple(i_recordName, i_keyword, i_value));
+            });
+
+        // Register methods under com.ibm.VPD.Manager interface
+        iFace->register_method(
+            "UpdateKeyword",
+            [this](const types::Path i_vpdPath,
+                   const types::WriteVpdParams i_paramsToWriteData) -> int {
+                return this->updateKeyword(i_vpdPath, i_paramsToWriteData);
+            });
+
+        iFace->register_method(
+            "WriteKeywordOnHardware",
+            [this](const types::Path i_fruPath,
+                   const types::WriteVpdParams i_paramsToWriteData) -> int {
+                return this->updateKeywordOnHardware(i_fruPath,
+                                                     i_paramsToWriteData);
+            });
+
+        iFace->register_method(
+            "ReadKeyword",
+            [this](const types::Path i_fruPath,
+                   const types::ReadVpdParams i_paramsToReadData)
+                -> types::DbusVariantType {
+                return this->readKeyword(i_fruPath, i_paramsToReadData);
+            });
+
+        iFace->register_method(
+            "CollectFRUVPD",
+            [this](const sdbusplus::message::object_path& i_dbusObjPath) {
+                this->collectSingleFruVpd(i_dbusObjPath);
+            });
+
+        iFace->register_method(
+            "deleteFRUVPD",
+            [this](const sdbusplus::message::object_path& i_dbusObjPath) {
+                this->deleteSingleFruVpd(i_dbusObjPath);
+            });
+
+        iFace->register_method(
+            "GetExpandedLocationCode",
+            [this](const std::string& i_unexpandedLocationCode,
+                   uint16_t& i_nodeNumber) -> std::string {
+                return this->getExpandedLocationCode(i_unexpandedLocationCode,
+                                                     i_nodeNumber);
+            });
+
+        iFace->register_method("GetFRUsByExpandedLocationCode",
+                               [this](const std::string& i_expandedLocationCode)
+                                   -> types::ListOfPaths {
+                                   return this->getFrusByExpandedLocationCode(
+                                       i_expandedLocationCode);
+                               });
+
+        iFace->register_method(
+            "GetFRUsByUnexpandedLocationCode",
+            [this](const std::string& i_unexpandedLocationCode,
+                   uint16_t& i_nodeNumber) -> types::ListOfPaths {
+                return this->getFrusByUnexpandedLocationCode(
+                    i_unexpandedLocationCode, i_nodeNumber);
+            });
+
+        iFace->register_method(
+            "GetHardwarePath",
+            [this](const sdbusplus::message::object_path& i_dbusObjPath)
+                -> std::string { return this->getHwPath(i_dbusObjPath); });
+
+        iFace->register_method("PerformVPDRecollection", [this]() {
+            this->performVpdRecollection();
+        });
+
+        // Indicates FRU VPD collection for the system has not started.
+        iFace->register_property_rw<std::string>(
+            "CollectionStatus", sdbusplus::vtable::property_::emits_change,
+            [this](const std::string l_currStatus, const auto&) {
+                m_vpdCollectionStatus = l_currStatus;
+                return 0;
+            },
+            [this](const auto&) { return m_vpdCollectionStatus; });
+    }
+    catch (const std::exception& e)
+    {
+        logging::logMessage(
+            "VPD-Manager service failed. " + std::string(e.what()));
+        throw;
+    }
+}
+
+#ifdef IBM_SYSTEM
+void Manager::registerAssetTagChangeCallback()
+{
+    static std::shared_ptr<sdbusplus::bus::match_t> l_assetMatch =
+        std::make_shared<sdbusplus::bus::match_t>(
+            *m_asioConnection,
+            sdbusplus::bus::match::rules::propertiesChanged(
+                constants::systemInvPath, constants::assetTagInf),
+            [this](sdbusplus::message_t& l_msg) {
+                processAssetTagChangeCallback(l_msg);
+            });
+}
+
+void Manager::processAssetTagChangeCallback(sdbusplus::message_t& i_msg)
+{
+    try
+    {
+        if (i_msg.is_method_error())
+        {
+            throw std::runtime_error(
+                "Error reading callback msg for asset tag.");
+        }
+
+        std::string l_objectPath;
+        types::PropertyMap l_propMap;
+        i_msg.read(l_objectPath, l_propMap);
+
+        const auto& l_itrToAssetTag = l_propMap.find("AssetTag");
+        if (l_itrToAssetTag != l_propMap.end())
+        {
+            if (auto l_assetTag =
+                    std::get_if<std::string>(&(l_itrToAssetTag->second)))
+            {
+                // Call Notify to persist the AssetTag
+                types::ObjectMap l_objectMap = {
+                    {sdbusplus::message::object_path(constants::systemInvPath),
+                     {{constants::assetTagInf, {{"AssetTag", *l_assetTag}}}}}};
+
+                // Notify PIM
+                if (!dbusUtility::callPIM(move(l_objectMap)))
+                {
+                    throw std::runtime_error(
+                        "Call to PIM failed for asset tag update.");
+                }
+            }
+        }
+        else
+        {
+            throw std::runtime_error(
+                "Could not find asset tag in callback message.");
+        }
+    }
+    catch (const std::exception& l_ex)
+    {
+        // TODO: Log PEL with below description.
+        logging::logMessage("Asset tag callback update failed with error: " +
+                            std::string(l_ex.what()));
+    }
+}
+
+void Manager::SetTimerToDetectSVPDOnDbus()
+{
+    static boost::asio::steady_timer timer(*m_ioContext);
+
+    // timer for 2 seconds
+    auto asyncCancelled = timer.expires_after(std::chrono::seconds(2));
+
+    (asyncCancelled == 0) ? logging::logMessage("Timer started")
+                          : logging::logMessage("Timer re-started");
+
+    timer.async_wait([this](const boost::system::error_code& ec) {
+        if (ec == boost::asio::error::operation_aborted)
+        {
+            throw std::runtime_error(
+                "Timer to detect system VPD collection status was aborted");
+        }
+
+        if (ec)
+        {
+            throw std::runtime_error(
+                "Timer to detect System VPD collection failed");
+        }
+
+        if (m_worker->isSystemVPDOnDBus())
+        {
+            // cancel the timer
+            timer.cancel();
+
+            // Triggering FRU VPD collection. Setting status to "In
+            // Progress".
+            m_interface->set_property("CollectionStatus",
+                                      std::string("InProgress"));
+            m_worker->collectFrusFromJson();
+        }
+    });
+}
+
+void Manager::SetTimerToDetectVpdCollectionStatus()
+{
+    // Keeping max retry for 2 minutes. TODO: Make it cinfigurable based on
+    // system type.
+    static constexpr auto MAX_RETRY = 40;
+
+    static boost::asio::steady_timer l_timer(*m_ioContext);
+    static uint8_t l_timerRetry = 0;
+
+    auto l_asyncCancelled = l_timer.expires_after(std::chrono::seconds(3));
+
+    (l_asyncCancelled == 0)
+        ? logging::logMessage("Collection Timer started")
+        : logging::logMessage("Collection Timer re-started");
+
+    l_timer.async_wait([this](const boost::system::error_code& ec) {
+        if (ec == boost::asio::error::operation_aborted)
+        {
+            throw std::runtime_error(
+                "Timer to detect thread collection status was aborted");
+        }
+
+        if (ec)
+        {
+            throw std::runtime_error(
+                "Timer to detect thread collection failed");
+        }
+
+        if (m_worker->isAllFruCollectionDone())
+        {
+            // cancel the timer
+            l_timer.cancel();
+            m_interface->set_property("CollectionStatus",
+                                      std::string("Completed"));
+
+            const nlohmann::json& l_sysCfgJsonObj =
+                m_worker->getSysCfgJsonObj();
+            if (jsonUtility::isBackupAndRestoreRequired(l_sysCfgJsonObj))
+            {
+                BackupAndRestore l_backupAndRestoreObj(l_sysCfgJsonObj);
+                l_backupAndRestoreObj.backupAndRestore();
+            }
+        }
+        else
+        {
+            auto l_threadCount = m_worker->getActiveThreadCount();
+            if (l_timerRetry == MAX_RETRY)
+            {
+                l_timer.cancel();
+                logging::logMessage("Taking too long. Active thread = " +
+                                    std::to_string(l_threadCount));
+            }
+            else
+            {
+                l_timerRetry++;
+                logging::logMessage("Waiting... active thread = " +
+                                    std::to_string(l_threadCount) + "After " +
+                                    std::to_string(l_timerRetry) + " re-tries");
+
+                SetTimerToDetectVpdCollectionStatus();
+            }
+        }
+    });
+}
+#endif
+
+int Manager::updateKeyword(const types::Path i_vpdPath,
+                           const types::WriteVpdParams i_paramsToWriteData)
+{
+    if (i_vpdPath.empty())
+    {
+        logging::logMessage("Given VPD path is empty.");
+        return -1;
+    }
+
+    types::Path l_fruPath;
+    nlohmann::json l_sysCfgJsonObj{};
+
+    if (m_worker.get() != nullptr)
+    {
+        l_sysCfgJsonObj = m_worker->getSysCfgJsonObj();
+
+        // Get the EEPROM path
+        if (!l_sysCfgJsonObj.empty())
+        {
+            try
+            {
+                l_fruPath =
+                    jsonUtility::getFruPathFromJson(l_sysCfgJsonObj, i_vpdPath);
+            }
+            catch (const std::exception& l_exception)
+            {
+                logging::logMessage(
+                    "Error while getting FRU path, Path: " + i_vpdPath +
+                    ", error: " + std::string(l_exception.what()));
+                return -1;
+            }
+        }
+    }
+
+    if (l_fruPath.empty())
+    {
+        l_fruPath = i_vpdPath;
+    }
+
+    try
+    {
+        std::shared_ptr<Parser> l_parserObj =
+            std::make_shared<Parser>(l_fruPath, l_sysCfgJsonObj);
+        return l_parserObj->updateVpdKeyword(i_paramsToWriteData);
+    }
+    catch (const std::exception& l_exception)
+    {
+        // TODO:: error log needed
+        logging::logMessage("Update keyword failed for file[" + i_vpdPath +
+                            "], reason: " + std::string(l_exception.what()));
+        return -1;
+    }
+}
+
+int Manager::updateKeywordOnHardware(
+    const types::Path i_fruPath,
+    const types::WriteVpdParams i_paramsToWriteData) noexcept
+{
+    try
+    {
+        if (i_fruPath.empty())
+        {
+            throw std::runtime_error("Given FRU path is empty");
+        }
+
+        nlohmann::json l_sysCfgJsonObj{};
+
+        if (m_worker.get() != nullptr)
+        {
+            l_sysCfgJsonObj = m_worker->getSysCfgJsonObj();
+        }
+
+        std::shared_ptr<Parser> l_parserObj =
+            std::make_shared<Parser>(i_fruPath, l_sysCfgJsonObj);
+        return l_parserObj->updateVpdKeywordOnHardware(i_paramsToWriteData);
+    }
+    catch (const std::exception& l_exception)
+    {
+        EventLogger::createAsyncPel(
+            types::ErrorType::InvalidEeprom, types::SeverityType::Informational,
+            __FILE__, __FUNCTION__, 0,
+            "Update keyword on hardware failed for file[" + i_fruPath +
+                "], reason: " + std::string(l_exception.what()),
+            std::nullopt, std::nullopt, std::nullopt, std::nullopt);
+
+        return constants::FAILURE;
+    }
+}
+
+types::DbusVariantType Manager::readKeyword(
+    const types::Path i_fruPath, const types::ReadVpdParams i_paramsToReadData)
+{
+    try
+    {
+        nlohmann::json l_jsonObj{};
+
+        if (m_worker.get() != nullptr)
+        {
+            l_jsonObj = m_worker->getSysCfgJsonObj();
+        }
+
+        std::error_code ec;
+
+        // Check if given path is filesystem path
+        if (!std::filesystem::exists(i_fruPath, ec) && (ec))
+        {
+            throw std::runtime_error(
+                "Given file path " + i_fruPath + " not found.");
+        }
+
+        logging::logMessage("Performing VPD read on " + i_fruPath);
+
+        std::shared_ptr<vpd::Parser> l_parserObj =
+            std::make_shared<vpd::Parser>(i_fruPath, l_jsonObj);
+
+        std::shared_ptr<vpd::ParserInterface> l_vpdParserInstance =
+            l_parserObj->getVpdParserInstance();
+
+        return (
+            l_vpdParserInstance->readKeywordFromHardware(i_paramsToReadData));
+    }
+    catch (const std::exception& e)
+    {
+        logging::logMessage(
+            e.what() + std::string(". VPD manager read operation failed for ") +
+            i_fruPath);
+        throw types::DeviceError::ReadFailure();
+    }
+}
+
+void Manager::collectSingleFruVpd(
+    const sdbusplus::message::object_path& i_dbusObjPath)
+{
+    try
+    {
+        if (m_vpdCollectionStatus != "Completed")
+        {
+            throw std::runtime_error(
+                "Currently VPD CollectionStatus is not completed. Cannot perform single FRU VPD collection for " +
+                std::string(i_dbusObjPath));
+        }
+
+        // Get system config JSON object from worker class
+        nlohmann::json l_sysCfgJsonObj{};
+
+        if (m_worker.get() != nullptr)
+        {
+            l_sysCfgJsonObj = m_worker->getSysCfgJsonObj();
+        }
+
+        // Check if system config JSON is present
+        if (l_sysCfgJsonObj.empty())
+        {
+            throw std::runtime_error(
+                "System config JSON object not present. Single FRU VPD collection failed for " +
+                std::string(i_dbusObjPath));
+        }
+
+        // Get FRU path for the given D-bus object path from JSON
+        const std::string& l_fruPath =
+            jsonUtility::getFruPathFromJson(l_sysCfgJsonObj, i_dbusObjPath);
+
+        if (l_fruPath.empty())
+        {
+            throw std::runtime_error(
+                "D-bus object path not present in JSON. Single FRU VPD collection failed for " +
+                std::string(i_dbusObjPath));
+        }
+
+        // Check if host is up and running
+        if (dbusUtility::isHostRunning())
+        {
+            if (!jsonUtility::isFruReplaceableAtRuntime(l_sysCfgJsonObj,
+                                                        l_fruPath))
+            {
+                throw std::runtime_error(
+                    "Given FRU is not replaceable at host runtime. Single FRU VPD collection failed for " +
+                    std::string(i_dbusObjPath));
+            }
+        }
+        else if (dbusUtility::isBMCReady())
+        {
+            if (!jsonUtility::isFruReplaceableAtStandby(l_sysCfgJsonObj,
+                                                        l_fruPath) &&
+                (!jsonUtility::isFruReplaceableAtRuntime(l_sysCfgJsonObj,
+                                                         l_fruPath)))
+            {
+                throw std::runtime_error(
+                    "Given FRU is neither replaceable at standby nor replaceable at runtime. Single FRU VPD collection failed for " +
+                    std::string(i_dbusObjPath));
+            }
+        }
+
+        // Parse VPD
+        types::VPDMapVariant l_parsedVpd = m_worker->parseVpdFile(l_fruPath);
+
+        // If l_parsedVpd is pointing to std::monostate
+        if (l_parsedVpd.index() == 0)
+        {
+            throw std::runtime_error(
+                "VPD parsing failed for " + std::string(i_dbusObjPath));
+        }
+
+        // Get D-bus object map from worker class
+        types::ObjectMap l_dbusObjectMap;
+        m_worker->populateDbus(l_parsedVpd, l_dbusObjectMap, l_fruPath);
+
+        if (l_dbusObjectMap.empty())
+        {
+            throw std::runtime_error(
+                "Failed to create D-bus object map. Single FRU VPD collection failed for " +
+                std::string(i_dbusObjPath));
+        }
+
+        // Call PIM's Notify method
+        if (!dbusUtility::callPIM(move(l_dbusObjectMap)))
+        {
+            throw std::runtime_error(
+                "Notify PIM failed. Single FRU VPD collection failed for " +
+                std::string(i_dbusObjPath));
+        }
+    }
+    catch (const std::exception& l_error)
+    {
+        // TODO: Log PEL
+        logging::logMessage(std::string(l_error.what()));
+    }
+}
+
+void Manager::deleteSingleFruVpd(
+    const sdbusplus::message::object_path& i_dbusObjPath)
+{
+    try
+    {
+        if (std::string(i_dbusObjPath).empty())
+        {
+            throw std::runtime_error(
+                "Given DBus object path is empty. Aborting FRU VPD deletion.");
+        }
+
+        if (m_worker.get() == nullptr)
+        {
+            throw std::runtime_error(
+                "Worker object not found, can't perform FRU VPD deletion for: " +
+                std::string(i_dbusObjPath));
+        }
+
+        m_worker->deleteFruVpd(std::string(i_dbusObjPath));
+    }
+    catch (const std::exception& l_ex)
+    {
+        // TODO: Log PEL
+        logging::logMessage(l_ex.what());
+    }
+}
+
+bool Manager::isValidUnexpandedLocationCode(
+    const std::string& i_unexpandedLocationCode)
+{
+    if ((i_unexpandedLocationCode.length() <
+         constants::UNEXP_LOCATION_CODE_MIN_LENGTH) ||
+        ((i_unexpandedLocationCode.compare(0, 4, "Ufcs") !=
+          constants::STR_CMP_SUCCESS) &&
+         (i_unexpandedLocationCode.compare(0, 4, "Umts") !=
+          constants::STR_CMP_SUCCESS)) ||
+        ((i_unexpandedLocationCode.length() >
+          constants::UNEXP_LOCATION_CODE_MIN_LENGTH) &&
+         (i_unexpandedLocationCode.find("-") != 4)))
+    {
+        return false;
+    }
+
+    return true;
+}
+
+std::string Manager::getExpandedLocationCode(
+    const std::string& i_unexpandedLocationCode,
+    [[maybe_unused]] const uint16_t i_nodeNumber)
+{
+    if (!isValidUnexpandedLocationCode(i_unexpandedLocationCode))
+    {
+        phosphor::logging::elog<types::DbusInvalidArgument>(
+            types::InvalidArgument::ARGUMENT_NAME("LOCATIONCODE"),
+            types::InvalidArgument::ARGUMENT_VALUE(
+                i_unexpandedLocationCode.c_str()));
+    }
+
+    const nlohmann::json& l_sysCfgJsonObj = m_worker->getSysCfgJsonObj();
+    if (!l_sysCfgJsonObj.contains("frus"))
+    {
+        logging::logMessage("Missing frus tag in system config JSON");
+    }
+
+    const nlohmann::json& l_listOfFrus =
+        l_sysCfgJsonObj["frus"].get_ref<const nlohmann::json::object_t&>();
+
+    for (const auto& l_frus : l_listOfFrus.items())
+    {
+        for (const auto& l_aFru : l_frus.value())
+        {
+            if (l_aFru["extraInterfaces"].contains(
+                    constants::locationCodeInf) &&
+                l_aFru["extraInterfaces"][constants::locationCodeInf].value(
+                    "LocationCode", "") == i_unexpandedLocationCode)
+            {
+                return std::get<std::string>(dbusUtility::readDbusProperty(
+                    l_aFru["serviceName"], l_aFru["inventoryPath"],
+                    constants::locationCodeInf, "LocationCode"));
+            }
+        }
+    }
+    phosphor::logging::elog<types::DbusInvalidArgument>(
+        types::InvalidArgument::ARGUMENT_NAME("LOCATIONCODE"),
+        types::InvalidArgument::ARGUMENT_VALUE(
+            i_unexpandedLocationCode.c_str()));
+}
+
+types::ListOfPaths Manager::getFrusByUnexpandedLocationCode(
+    const std::string& i_unexpandedLocationCode,
+    [[maybe_unused]] const uint16_t i_nodeNumber)
+{
+    types::ListOfPaths l_inventoryPaths;
+
+    if (!isValidUnexpandedLocationCode(i_unexpandedLocationCode))
+    {
+        phosphor::logging::elog<types::DbusInvalidArgument>(
+            types::InvalidArgument::ARGUMENT_NAME("LOCATIONCODE"),
+            types::InvalidArgument::ARGUMENT_VALUE(
+                i_unexpandedLocationCode.c_str()));
+    }
+
+    const nlohmann::json& l_sysCfgJsonObj = m_worker->getSysCfgJsonObj();
+    if (!l_sysCfgJsonObj.contains("frus"))
+    {
+        logging::logMessage("Missing frus tag in system config JSON");
+    }
+
+    const nlohmann::json& l_listOfFrus =
+        l_sysCfgJsonObj["frus"].get_ref<const nlohmann::json::object_t&>();
+
+    for (const auto& l_frus : l_listOfFrus.items())
+    {
+        for (const auto& l_aFru : l_frus.value())
+        {
+            if (l_aFru["extraInterfaces"].contains(
+                    constants::locationCodeInf) &&
+                l_aFru["extraInterfaces"][constants::locationCodeInf].value(
+                    "LocationCode", "") == i_unexpandedLocationCode)
+            {
+                l_inventoryPaths.push_back(
+                    l_aFru.at("inventoryPath")
+                        .get_ref<const nlohmann::json::string_t&>());
+            }
+        }
+    }
+
+    if (l_inventoryPaths.empty())
+    {
+        phosphor::logging::elog<types::DbusInvalidArgument>(
+            types::InvalidArgument::ARGUMENT_NAME("LOCATIONCODE"),
+            types::InvalidArgument::ARGUMENT_VALUE(
+                i_unexpandedLocationCode.c_str()));
+    }
+
+    return l_inventoryPaths;
+}
+
+std::string
+    Manager::getHwPath(const sdbusplus::message::object_path& i_dbusObjPath)
+{
+    // Dummy code to supress unused variable warning. To be removed.
+    logging::logMessage(std::string(i_dbusObjPath));
+
+    return std::string{};
+}
+
+std::tuple<std::string, uint16_t> Manager::getUnexpandedLocationCode(
+    const std::string& i_expandedLocationCode)
+{
+    /**
+     * Location code should always start with U and fulfil minimum length
+     * criteria.
+     */
+    if (i_expandedLocationCode[0] != 'U' ||
+        i_expandedLocationCode.length() <
+            constants::EXP_LOCATION_CODE_MIN_LENGTH)
+    {
+        phosphor::logging::elog<types::DbusInvalidArgument>(
+            types::InvalidArgument::ARGUMENT_NAME("LOCATIONCODE"),
+            types::InvalidArgument::ARGUMENT_VALUE(
+                i_expandedLocationCode.c_str()));
+    }
+
+    std::string l_fcKwd;
+
+    auto l_fcKwdValue = dbusUtility::readDbusProperty(
+        "xyz.openbmc_project.Inventory.Manager",
+        "/xyz/openbmc_project/inventory/system/chassis/motherboard",
+        "com.ibm.ipzvpd.VCEN", "FC");
+
+    if (auto l_kwdValue = std::get_if<types::BinaryVector>(&l_fcKwdValue))
+    {
+        l_fcKwd.assign(l_kwdValue->begin(), l_kwdValue->end());
+    }
+
+    // Get the first part of expanded location code to check for FC or TM.
+    std::string l_firstKwd = i_expandedLocationCode.substr(1, 4);
+
+    std::string l_unexpandedLocationCode{};
+    uint16_t l_nodeNummber = constants::INVALID_NODE_NUMBER;
+
+    // Check if this value matches the value of FC keyword.
+    if (l_fcKwd.substr(0, 4) == l_firstKwd)
+    {
+        /**
+         * Period(.) should be there in expanded location code to seggregate
+         * FC, node number and SE values.
+         */
+        size_t l_nodeStartPos = i_expandedLocationCode.find('.');
+        if (l_nodeStartPos == std::string::npos)
+        {
+            phosphor::logging::elog<types::DbusInvalidArgument>(
+                types::InvalidArgument::ARGUMENT_NAME("LOCATIONCODE"),
+                types::InvalidArgument::ARGUMENT_VALUE(
+                    i_expandedLocationCode.c_str()));
+        }
+
+        size_t l_nodeEndPos =
+            i_expandedLocationCode.find('.', l_nodeStartPos + 1);
+        if (l_nodeEndPos == std::string::npos)
+        {
+            phosphor::logging::elog<types::DbusInvalidArgument>(
+                types::InvalidArgument::ARGUMENT_NAME("LOCATIONCODE"),
+                types::InvalidArgument::ARGUMENT_VALUE(
+                    i_expandedLocationCode.c_str()));
+        }
+
+        // Skip 3 bytes for '.ND'
+        l_nodeNummber = std::stoi(i_expandedLocationCode.substr(
+            l_nodeStartPos + 3, (l_nodeEndPos - l_nodeStartPos - 3)));
+
+        /**
+         * Confirm if there are other details apart FC, node number and SE
+         * in location code
+         */
+        if (i_expandedLocationCode.length() >
+            constants::EXP_LOCATION_CODE_MIN_LENGTH)
+        {
+            l_unexpandedLocationCode =
+                i_expandedLocationCode[0] + std::string("fcs") +
+                i_expandedLocationCode.substr(
+                    l_nodeEndPos + 1 + constants::SE_KWD_LENGTH,
+                    std::string::npos);
+        }
+        else
+        {
+            l_unexpandedLocationCode = "Ufcs";
+        }
+    }
+    else
+    {
+        std::string l_tmKwd;
+        // Read TM keyword value.
+        auto l_tmKwdValue = dbusUtility::readDbusProperty(
+            "xyz.openbmc_project.Inventory.Manager",
+            "/xyz/openbmc_project/inventory/system/chassis/motherboard",
+            "com.ibm.ipzvpd.VSYS", "TM");
+
+        if (auto l_kwdValue = std::get_if<types::BinaryVector>(&l_tmKwdValue))
+        {
+            l_tmKwd.assign(l_kwdValue->begin(), l_kwdValue->end());
+        }
+
+        // Check if the substr matches to TM keyword value.
+        if (l_tmKwd.substr(0, 4) == l_firstKwd)
+        {
+            /**
+             * System location code will not have node number and any other
+             * details.
+             */
+            l_unexpandedLocationCode = "Umts";
+        }
+        // The given location code is neither "fcs" or "mts".
+        else
+        {
+            phosphor::logging::elog<types::DbusInvalidArgument>(
+                types::InvalidArgument::ARGUMENT_NAME("LOCATIONCODE"),
+                types::InvalidArgument::ARGUMENT_VALUE(
+                    i_expandedLocationCode.c_str()));
+        }
+    }
+
+    return std::make_tuple(l_unexpandedLocationCode, l_nodeNummber);
+}
+
+types::ListOfPaths Manager::getFrusByExpandedLocationCode(
+    const std::string& i_expandedLocationCode)
+{
+    std::tuple<std::string, uint16_t> l_locationAndNodePair =
+        getUnexpandedLocationCode(i_expandedLocationCode);
+
+    return getFrusByUnexpandedLocationCode(std::get<0>(l_locationAndNodePair),
+                                           std::get<1>(l_locationAndNodePair));
+}
+
+void Manager::registerHostStateChangeCallback()
+{
+    static std::shared_ptr<sdbusplus::bus::match_t> l_hostState =
+        std::make_shared<sdbusplus::bus::match_t>(
+            *m_asioConnection,
+            sdbusplus::bus::match::rules::propertiesChanged(
+                constants::hostObjectPath, constants::hostInterface),
+            [this](sdbusplus::message_t& i_msg) {
+                hostStateChangeCallBack(i_msg);
+            });
+}
+
+void Manager::hostStateChangeCallBack(sdbusplus::message_t& i_msg)
+{
+    try
+    {
+        if (i_msg.is_method_error())
+        {
+            throw std::runtime_error(
+                "Error reading callback message for host state");
+        }
+
+        std::string l_objectPath;
+        types::PropertyMap l_propMap;
+        i_msg.read(l_objectPath, l_propMap);
+
+        const auto l_itr = l_propMap.find("CurrentHostState");
+
+        if (l_itr == l_propMap.end())
+        {
+            throw std::runtime_error(
+                "CurrentHostState field is missing in callback message");
+        }
+
+        if (auto l_hostState = std::get_if<std::string>(&(l_itr->second)))
+        {
+            // implies system is moving from standby to power on state
+            if (*l_hostState == "xyz.openbmc_project.State.Host.HostState."
+                                "TransitioningToRunning")
+            {
+                // TODO: check for all the essential FRUs in the system.
+
+                // Perform recollection.
+                performVpdRecollection();
+                return;
+            }
+        }
+        else
+        {
+            throw std::runtime_error(
+                "Invalid type recieved in variant for host state.");
+        }
+    }
+    catch (const std::exception& l_ex)
+    {
+        // TODO: Log PEL.
+        logging::logMessage(l_ex.what());
+    }
+}
+
+void Manager::performVpdRecollection()
+{
+    try
+    {
+        if (m_worker.get() != nullptr)
+        {
+            nlohmann::json l_sysCfgJsonObj = m_worker->getSysCfgJsonObj();
+
+            // Check if system config JSON is present
+            if (l_sysCfgJsonObj.empty())
+            {
+                throw std::runtime_error(
+                    "System config json object is empty, can't process recollection.");
+            }
+
+            const auto& l_frusReplaceableAtStandby =
+                jsonUtility::getListOfFrusReplaceableAtStandby(l_sysCfgJsonObj);
+
+            for (const auto& l_fruInventoryPath : l_frusReplaceableAtStandby)
+            {
+                // ToDo: Add some logic/trace to know the flow to
+                // collectSingleFruVpd has been directed via
+                // performVpdRecollection.
+                collectSingleFruVpd(l_fruInventoryPath);
+            }
+            return;
+        }
+
+        throw std::runtime_error(
+            "Worker object not found can't process recollection");
+    }
+    catch (const std::exception& l_ex)
+    {
+        // TODO Log PEL
+        logging::logMessage(
+            "VPD recollection failed with error: " + std::string(l_ex.what()));
+    }
+}
+} // namespace vpd
diff --git a/vpd-manager/src/manager_main.cpp b/vpd-manager/src/manager_main.cpp
new file mode 100644
index 0000000..a1d61e4
--- /dev/null
+++ b/vpd-manager/src/manager_main.cpp
@@ -0,0 +1,94 @@
+#include "config.h"
+
+#include "bios_handler.hpp"
+#include "event_logger.hpp"
+#include "exceptions.hpp"
+#include "logger.hpp"
+#include "manager.hpp"
+#include "types.hpp"
+
+#include <sdbusplus/asio/connection.hpp>
+#include <sdbusplus/asio/object_server.hpp>
+
+#include <iostream>
+
+/**
+ * @brief Main function for VPD parser application.
+ */
+int main(int, char**)
+{
+    try
+    {
+        auto io_con = std::make_shared<boost::asio::io_context>();
+        auto connection =
+            std::make_shared<sdbusplus::asio::connection>(*io_con);
+        auto server = sdbusplus::asio::object_server(connection);
+
+        std::shared_ptr<sdbusplus::asio::dbus_interface> interface =
+            server.add_interface(OBJPATH, IFACE);
+
+        auto vpdManager =
+            std::make_shared<vpd::Manager>(io_con, interface, connection);
+
+        // TODO: Take this under conditional compilation for IBM
+        auto biosHandler =
+            std::make_shared<vpd::BiosHandler<vpd::IbmBiosHandler>>(
+                connection, vpdManager);
+
+        interface->initialize();
+
+        vpd::logging::logMessage("Start VPD-Manager event loop");
+
+        // Grab the bus name
+        connection->request_name(BUSNAME);
+
+        // Start event loop.
+        io_con->run();
+
+        exit(EXIT_SUCCESS);
+    }
+    catch (const std::exception& l_ex)
+    {
+        if (typeid(l_ex) == typeid(vpd::JsonException))
+        {
+            // ToDo: Severity needs to be revisited.
+            vpd::EventLogger::createAsyncPel(
+                vpd::types::ErrorType::JsonFailure,
+                vpd::types::SeverityType::Informational, __FILE__, __FUNCTION__,
+                0,
+                std::string("VPD Manager service failed with : ") + l_ex.what(),
+                std::nullopt, std::nullopt, std::nullopt, std::nullopt);
+        }
+        else if (typeid(l_ex) == typeid(vpd::GpioException))
+        {
+            // ToDo: Severity needs to be revisited.
+            vpd::EventLogger::createAsyncPel(
+                vpd::types::ErrorType::GpioError,
+                vpd::types::SeverityType::Informational, __FILE__, __FUNCTION__,
+                0,
+                std::string("VPD Manager service failed with : ") + l_ex.what(),
+                std::nullopt, std::nullopt, std::nullopt, std::nullopt);
+        }
+        else if (typeid(l_ex) == typeid(sdbusplus::exception::SdBusError))
+        {
+            // ToDo: Severity needs to be revisited.
+            vpd::EventLogger::createAsyncPel(
+                vpd::types::ErrorType::DbusFailure,
+                vpd::types::SeverityType::Informational, __FILE__, __FUNCTION__,
+                0,
+                std::string("VPD Manager service failed with : ") + l_ex.what(),
+                std::nullopt, std::nullopt, std::nullopt, std::nullopt);
+        }
+        else
+        {
+            // ToDo: Severity needs to be revisited.
+            vpd::EventLogger::createAsyncPel(
+                vpd::types::ErrorType::InvalidVpdMessage,
+                vpd::types::SeverityType::Informational, __FILE__, __FUNCTION__,
+                0,
+                std::string("VPD Manager service failed with : ") + l_ex.what(),
+                "BMC0001", std::nullopt, std::nullopt, std::nullopt);
+        }
+    }
+    exit(EXIT_FAILURE);
+}
diff --git a/vpd-manager/src/parser.cpp b/vpd-manager/src/parser.cpp
new file mode 100644
index 0000000..d6266cb
--- /dev/null
+++ b/vpd-manager/src/parser.cpp
@@ -0,0 +1,342 @@
+#include "parser.hpp"
+
+#include "constants.hpp"
+#include "event_logger.hpp"
+
+#include <utility/dbus_utility.hpp>
+#include <utility/json_utility.hpp>
+#include <utility/vpd_specific_utility.hpp>
+
+#include <fstream>
+
+namespace vpd
+{
+Parser::Parser(const std::string& vpdFilePath, nlohmann::json parsedJson) :
+    m_vpdFilePath(vpdFilePath), m_parsedJson(parsedJson)
+{
+    std::error_code l_errCode;
+
+    // ToDo: Add minimum file size check in all the concert praser classes,
+    // depends on their VPD type.
+    if (!std::filesystem::exists(m_vpdFilePath, l_errCode))
+    {
+        std::string l_message{"Parser object creation failed, file [" +
+                              m_vpdFilePath + "] doesn't exists."};
+
+        if (l_errCode)
+        {
+            l_message += " Error message: " + l_errCode.message();
+        }
+
+        throw std::runtime_error(l_message);
+    }
+
+    // Read VPD offset if applicable.
+    if (!m_parsedJson.empty())
+    {
+        m_vpdStartOffset = jsonUtility::getVPDOffset(m_parsedJson, vpdFilePath);
+    }
+}
+
+std::shared_ptr<vpd::ParserInterface> Parser::getVpdParserInstance()
+{
+    // Read the VPD data into a vector.
+    vpdSpecificUtility::getVpdDataInVector(m_vpdFilePath, m_vpdVector,
+                                           m_vpdStartOffset);
+
+    // This will detect the type of parser required.
+    std::shared_ptr<vpd::ParserInterface> l_parser =
+        ParserFactory::getParser(m_vpdVector, m_vpdFilePath, m_vpdStartOffset);
+
+    return l_parser;
+}
+
+types::VPDMapVariant Parser::parse()
+{
+    std::shared_ptr<vpd::ParserInterface> l_parser = getVpdParserInstance();
+    return l_parser->parse();
+}
+
+int Parser::updateVpdKeyword(const types::WriteVpdParams& i_paramsToWriteData)
+{
+    int l_bytesUpdatedOnHardware = constants::FAILURE;
+
+    // A lambda to extract Record : Keyword string from i_paramsToWriteData
+    auto l_keyWordIdentifier =
+        [](const types::WriteVpdParams& i_paramsToWriteData) -> std::string {
+        std::string l_keywordString{};
+        if (const types::IpzData* l_ipzData =
+                std::get_if<types::IpzData>(&i_paramsToWriteData))
+        {
+            l_keywordString =
+                std::get<0>(*l_ipzData) + ":" + std::get<1>(*l_ipzData);
+        }
+        else if (const types::KwData* l_kwData =
+                     std::get_if<types::KwData>(&i_paramsToWriteData))
+        {
+            l_keywordString = std::get<0>(*l_kwData);
+        }
+        return l_keywordString;
+    };
+
+    try
+    {
+        // Enable Reboot Guard
+        if (constants::FAILURE == dbusUtility::EnableRebootGuard())
+        {
+            EventLogger::createAsyncPel(
+                types::ErrorType::DbusFailure,
+                types::SeverityType::Informational, __FILE__, __FUNCTION__, 0,
+                std::string(
+                    "Failed to enable BMC Reboot Guard while updating " +
+                    l_keyWordIdentifier(i_paramsToWriteData)),
+                std::nullopt, std::nullopt, std::nullopt, std::nullopt);
+
+            return constants::FAILURE;
+        }
+
+        // Update keyword's value on hardware
+        try
+        {
+            std::shared_ptr<ParserInterface> l_vpdParserInstance =
+                getVpdParserInstance();
+            l_bytesUpdatedOnHardware =
+                l_vpdParserInstance->writeKeywordOnHardware(
+                    i_paramsToWriteData);
+        }
+        catch (const std::exception& l_exception)
+        {
+            std::string l_errMsg(
+                "Error while updating keyword's value on hardware path " +
+                m_vpdFilePath + ", error: " + std::string(l_exception.what()));
+
+            // TODO : Log PEL
+
+            throw std::runtime_error(l_errMsg);
+        }
+
+        auto [l_fruPath, l_inventoryObjPath, l_redundantFruPath] =
+            jsonUtility::getAllPathsToUpdateKeyword(m_parsedJson,
+                                                    m_vpdFilePath);
+
+        // If inventory D-bus object path is present, update keyword's value on
+        // DBus
+        if (!l_inventoryObjPath.empty())
+        {
+            types::Record l_recordName;
+            std::string l_interfaceName;
+            std::string l_propertyName;
+            types::DbusVariantType l_keywordValue;
+
+            if (const types::IpzData* l_ipzData =
+                    std::get_if<types::IpzData>(&i_paramsToWriteData))
+            {
+                l_recordName = std::get<0>(*l_ipzData);
+                l_interfaceName = constants::ipzVpdInf + l_recordName;
+                l_propertyName = std::get<1>(*l_ipzData);
+
+                try
+                {
+                    // Read keyword's value from hardware to write the same on
+                    // D-bus.
+                    std::shared_ptr<ParserInterface> l_vpdParserInstance =
+                        getVpdParserInstance();
+
+                    logging::logMessage(
+                        "Performing VPD read on " + m_vpdFilePath);
+
+                    l_keywordValue =
+                        l_vpdParserInstance->readKeywordFromHardware(
+                            types::ReadVpdParams(
+                                std::make_tuple(l_recordName, l_propertyName)));
+                }
+                catch (const std::exception& l_exception)
+                {
+                    // Unable to read keyword's value from hardware.
+                    std::string l_errMsg(
+                        "Error while reading keyword's value from hadware path " +
+                        m_vpdFilePath +
+                        ", error: " + std::string(l_exception.what()));
+
+                    // TODO: Log PEL
+
+                    throw std::runtime_error(l_errMsg);
+                }
+            }
+            else
+            {
+                // Input parameter type provided isn't compatible to perform
+                // update.
+                std::string l_errMsg(
+                    "Input parameter type isn't compatible to update keyword's value on DBus for object path: " +
+                    l_inventoryObjPath);
+                throw std::runtime_error(l_errMsg);
+            }
+
+            // Get D-bus name for the given keyword
+            l_propertyName =
+                vpdSpecificUtility::getDbusPropNameForGivenKw(l_propertyName);
+
+            // Create D-bus object map
+            types::ObjectMap l_dbusObjMap = {std::make_pair(
+                l_inventoryObjPath,
+                types::InterfaceMap{std::make_pair(
+                    l_interfaceName, types::PropertyMap{std::make_pair(
+                                         l_propertyName, l_keywordValue)})})};
+
+            // Call PIM's Notify method to perform update
+            if (!dbusUtility::callPIM(std::move(l_dbusObjMap)))
+            {
+                // Call to PIM's Notify method failed.
+                std::string l_errMsg("Notify PIM is failed for object path: " +
+                                     l_inventoryObjPath);
+                throw std::runtime_error(l_errMsg);
+            }
+        }
+
+        // Update keyword's value on redundant hardware if present
+        if (!l_redundantFruPath.empty())
+        {
+            if (updateVpdKeywordOnRedundantPath(l_redundantFruPath,
+                                                i_paramsToWriteData) < 0)
+            {
+                std::string l_errMsg(
+                    "Error while updating keyword's value on redundant path " +
+                    l_redundantFruPath);
+                throw std::runtime_error(l_errMsg);
+            }
+        }
+
+        // TODO: Check if revert is required when any of the writes fails.
+        // TODO: Handle error logging
+    }
+    catch (const std::exception& l_ex)
+    {
+        logging::logMessage("Update VPD Keyword failed for : " +
+                            l_keyWordIdentifier(i_paramsToWriteData) +
+                            " failed due to error: " + l_ex.what());
+
+        // update failed, set return value to failure
+        l_bytesUpdatedOnHardware = constants::FAILURE;
+    }
+
+    // Disable Reboot Guard
+    if (constants::FAILURE == dbusUtility::DisableRebootGuard())
+    {
+        EventLogger::createAsyncPel(
+            types::ErrorType::DbusFailure, types::SeverityType::Critical,
+            __FILE__, __FUNCTION__, 0,
+            std::string("Failed to disable BMC Reboot Guard while updating " +
+                        l_keyWordIdentifier(i_paramsToWriteData)),
+            std::nullopt, std::nullopt, std::nullopt, std::nullopt);
+    }
+
+    return l_bytesUpdatedOnHardware;
+}
+
+int Parser::updateVpdKeywordOnRedundantPath(
+    const std::string& i_fruPath,
+    const types::WriteVpdParams& i_paramsToWriteData)
+{
+    try
+    {
+        std::shared_ptr<Parser> l_parserObj =
+            std::make_shared<Parser>(i_fruPath, m_parsedJson);
+
+        std::shared_ptr<ParserInterface> l_vpdParserInstance =
+            l_parserObj->getVpdParserInstance();
+
+        return l_vpdParserInstance->writeKeywordOnHardware(i_paramsToWriteData);
+    }
+    catch (const std::exception& l_exception)
+    {
+        EventLogger::createSyncPel(
+            types::ErrorType::InvalidVpdMessage,
+            types::SeverityType::Informational, __FILE__, __FUNCTION__, 0,
+            "Error while updating keyword's value on redundant path " +
+                i_fruPath + ", error: " + std::string(l_exception.what()),
+            std::nullopt, std::nullopt, std::nullopt, std::nullopt);
+        return -1;
+    }
+}
+
+int Parser::updateVpdKeywordOnHardware(
+    const types::WriteVpdParams& i_paramsToWriteData)
+{
+    int l_bytesUpdatedOnHardware = constants::FAILURE;
+
+    // A lambda to extract Record : Keyword string from i_paramsToWriteData
+    auto l_keyWordIdentifier =
+        [](const types::WriteVpdParams& i_paramsToWriteData) -> std::string {
+        std::string l_keywordString{};
+        if (const types::IpzData* l_ipzData =
+                std::get_if<types::IpzData>(&i_paramsToWriteData))
+        {
+            l_keywordString =
+                std::get<0>(*l_ipzData) + ":" + std::get<1>(*l_ipzData);
+        }
+        else if (const types::KwData* l_kwData =
+                     std::get_if<types::KwData>(&i_paramsToWriteData))
+        {
+            l_keywordString = std::get<0>(*l_kwData);
+        }
+        return l_keywordString;
+    };
+
+    try
+    {
+        // Enable Reboot Guard
+        if (constants::FAILURE == dbusUtility::EnableRebootGuard())
+        {
+            EventLogger::createAsyncPel(
+                types::ErrorType::DbusFailure,
+                types::SeverityType::Informational, __FILE__, __FUNCTION__, 0,
+                std::string(
+                    "Failed to enable BMC Reboot Guard while updating " +
+                    l_keyWordIdentifier(i_paramsToWriteData)),
+                std::nullopt, std::nullopt, std::nullopt, std::nullopt);
+
+            return constants::FAILURE;
+        }
+
+        std::shared_ptr<ParserInterface> l_vpdParserInstance =
+            getVpdParserInstance();
+        l_bytesUpdatedOnHardware =
+            l_vpdParserInstance->writeKeywordOnHardware(i_paramsToWriteData);
+    }
+    catch (const std::exception& l_exception)
+    {
+        types::ErrorType l_errorType;
+
+        if (typeid(l_exception) == typeid(EccException))
+        {
+            l_errorType = types::ErrorType::EccCheckFailed;
+        }
+        else
+        {
+            l_errorType = types::ErrorType::InvalidVpdMessage;
+        }
+
+        EventLogger::createAsyncPel(
+            l_errorType, types::SeverityType::Informational, __FILE__,
+            __FUNCTION__, 0,
+            "Error while updating keyword's value on hardware path [" +
+                m_vpdFilePath + "], error: " + std::string(l_exception.what()),
+            std::nullopt, std::nullopt, std::nullopt, std::nullopt);
+    }
+
+    // Disable Reboot Guard
+    if (constants::FAILURE == dbusUtility::DisableRebootGuard())
+    {
+        EventLogger::createAsyncPel(
+            types::ErrorType::DbusFailure, types::SeverityType::Critical,
+            __FILE__, __FUNCTION__, 0,
+            std::string("Failed to disable BMC Reboot Guard while updating " +
+                        l_keyWordIdentifier(i_paramsToWriteData)),
+            std::nullopt, std::nullopt, std::nullopt, std::nullopt);
+    }
+
+    return l_bytesUpdatedOnHardware;
+}
+
+} // namespace vpd
diff --git a/vpd-manager/src/parser_factory.cpp b/vpd-manager/src/parser_factory.cpp
new file mode 100644
index 0000000..546e67b
--- /dev/null
+++ b/vpd-manager/src/parser_factory.cpp
@@ -0,0 +1,140 @@
+#include "parser_factory.hpp"
+
+#include "constants.hpp"
+#include "ddimm_parser.hpp"
+#include "exceptions.hpp"
+#include "ipz_parser.hpp"
+#include "isdimm_parser.hpp"
+#include "keyword_vpd_parser.hpp"
+
+namespace vpd
+{
+
+/**
+ * @brief Type of VPD formats.
+ */
+enum vpdType
+{
+    IPZ_VPD,                /**< IPZ VPD type */
+    KEYWORD_VPD,            /**< Keyword VPD type */
+    DDR4_DDIMM_MEMORY_VPD,  /**< DDR4 DDIMM Memory VPD type */
+    DDR5_DDIMM_MEMORY_VPD,  /**< DDR5 DDIMM Memory VPD type */
+    DDR4_ISDIMM_MEMORY_VPD, /**< DDR4 ISDIMM Memory VPD type */
+    DDR5_ISDIMM_MEMORY_VPD, /**< DDR5 ISDIMM Memory VPD type */
+    INVALID_VPD_FORMAT      /**< Invalid VPD type */
+};
+
+/**
+ * @brief API to get the type of VPD.
+ *
+ * @param[in] i_vpdVector - VPD file content
+ *
+ * @return Type of VPD data, "INVALID_VPD_FORMAT" in case of unknown type.
+ */
+static vpdType vpdTypeCheck(const types::BinaryVector& i_vpdVector)
+{
+    if (i_vpdVector[constants::IPZ_DATA_START] == constants::IPZ_DATA_START_TAG)
+    {
+        return vpdType::IPZ_VPD;
+    }
+    else if (i_vpdVector[constants::KW_VPD_DATA_START] ==
+             constants::KW_VPD_START_TAG)
+    {
+        return vpdType::KEYWORD_VPD;
+    }
+    else if (((i_vpdVector[constants::SPD_BYTE_3] &
+               constants::SPD_BYTE_BIT_0_3_MASK) ==
+              constants::SPD_MODULE_TYPE_DDIMM))
+    {
+        std::string l_is11SFormat;
+        if (i_vpdVector.size() > (constants::DDIMM_11S_BARCODE_START +
+                                  constants::DDIMM_11S_BARCODE_LEN))
+        {
+            // Read first 3 Bytes to check the 11S bar code format
+            for (uint8_t l_index = 0; l_index < constants::DDIMM_11S_FORMAT_LEN;
+                 l_index++)
+            {
+                l_is11SFormat +=
+                    i_vpdVector[constants::DDIMM_11S_BARCODE_START + l_index];
+            }
+        }
+
+        if (l_is11SFormat.compare(constants::DDIMM_11S_BARCODE_START_TAG) == 0)
+        {
+            // DDIMM memory VPD format
+            if ((i_vpdVector[constants::SPD_BYTE_2] &
+                 constants::SPD_BYTE_MASK) == constants::SPD_DRAM_TYPE_DDR5)
+            {
+                return vpdType::DDR5_DDIMM_MEMORY_VPD;
+            }
+
+            if ((i_vpdVector[constants::SPD_BYTE_2] &
+                 constants::SPD_BYTE_MASK) == constants::SPD_DRAM_TYPE_DDR4)
+            {
+                return vpdType::DDR4_DDIMM_MEMORY_VPD;
+            }
+        }
+
+        logging::logMessage("11S format is not found in the DDIMM VPD.");
+        return vpdType::INVALID_VPD_FORMAT;
+    }
+    else if ((i_vpdVector[constants::SPD_BYTE_2] & constants::SPD_BYTE_MASK) ==
+             constants::SPD_DRAM_TYPE_DDR5)
+    {
+        // ISDIMM memory VPD format
+        return vpdType::DDR5_ISDIMM_MEMORY_VPD;
+    }
+    else if ((i_vpdVector[constants::SPD_BYTE_2] & constants::SPD_BYTE_MASK) ==
+             constants::SPD_DRAM_TYPE_DDR4)
+    {
+        // ISDIMM memory VPD format
+        return vpdType::DDR4_ISDIMM_MEMORY_VPD;
+    }
+
+    return vpdType::INVALID_VPD_FORMAT;
+}
+
+std::shared_ptr<ParserInterface> ParserFactory::getParser(
+    const types::BinaryVector& i_vpdVector, const std::string& i_vpdFilePath,
+    size_t i_vpdStartOffset)
+{
+    if (i_vpdVector.empty())
+    {
+        throw std::runtime_error("Empty VPD vector passed to parser factory");
+    }
+
+    vpdType l_type = vpdTypeCheck(i_vpdVector);
+
+    switch (l_type)
+    {
+        case vpdType::IPZ_VPD:
+        {
+            return std::make_shared<IpzVpdParser>(i_vpdVector, i_vpdFilePath,
+                                                  i_vpdStartOffset);
+        }
+
+        case vpdType::KEYWORD_VPD:
+        {
+            return std::make_shared<KeywordVpdParser>(i_vpdVector);
+        }
+
+        case vpdType::DDR5_DDIMM_MEMORY_VPD:
+        case vpdType::DDR4_DDIMM_MEMORY_VPD:
+        {
+            return std::make_shared<DdimmVpdParser>(i_vpdVector);
+        }
+
+        case vpdType::DDR4_ISDIMM_MEMORY_VPD:
+        case vpdType::DDR5_ISDIMM_MEMORY_VPD:
+        {
+            // return shared pointer to class object.
+            logging::logMessage(
+                "ISDIMM parser selected for VPD path: " + i_vpdFilePath);
+            return std::make_shared<JedecSpdParser>(i_vpdVector);
+        }
+
+        default:
+            throw DataException("Unable to determine VPD format");
+    }
+}
+} // namespace vpd
diff --git a/vpd-manager/src/vpd_parser_main.cpp b/vpd-manager/src/vpd_parser_main.cpp
new file mode 100644
index 0000000..0c434d8
--- /dev/null
+++ b/vpd-manager/src/vpd_parser_main.cpp
@@ -0,0 +1,101 @@
+#include "logger.hpp"
+#include "parser.hpp"
+#include "parser_interface.hpp"
+#include "types.hpp"
+#include "worker.hpp"
+
+#include <CLI/CLI.hpp>
+#include <nlohmann/json.hpp>
+#include <parser_factory.hpp>
+
+#include <filesystem>
+#include <iostream>
+
+/**
+ * @brief This file implements a generic parser APP.
+ *
+ * It recieves path of the VPD file(mandatory) and path to a config
+ * file(optional) as arguments. It will parse the data and return parsed data in
+ * a required format.
+ *
+ * Steps to get parsed VPD.
+ * - Pass VPD file path and config file (if applicable).
+ * - Read VPD file to vector.
+ * - Pass that to parser_factory to get the parser and call parse API on that
+ * parser object to get the Parsed VPD map.
+ * - If VPD format is other than the existing formats. Follow the steps
+ * - a) Add logic in parser_factory.cpp, vpdTypeCheck API to detect the format.
+ * - b) Implement a custom parser class.
+ * - c) Override parse API in the newly added parser class.
+ * - d) Add type of parsed data returned by parse API into types.hpp,
+ * "VPDMapVariant".
+ *
+ */
+
+int main(int argc, char** argv)
+{
+    try
+    {
+        std::string vpdFilePath{};
+        CLI::App app{"VPD-parser-app - APP to parse VPD. "};
+
+        app.add_option("-f, --file", vpdFilePath, "VPD file path")->required();
+
+        std::string configFilePath{};
+
+        app.add_option("-c,--config", configFilePath, "Path to JSON config");
+
+        CLI11_PARSE(app, argc, argv);
+
+        vpd::logging::logMessage("VPD file path recieved" + vpdFilePath);
+
+        // VPD file path is a mandatory parameter to execute any parser.
+        if (vpdFilePath.empty())
+        {
+            throw std::runtime_error("Empty VPD file path");
+        }
+
+        nlohmann::json json;
+        vpd::types::VPDMapVariant parsedVpdDataMap;
+
+        // Below are two different ways of parsing the VPD.
+        if (!configFilePath.empty())
+        {
+            vpd::logging::logMessage(
+                "Processing with config file - " + configFilePath);
+
+            std::shared_ptr<vpd::Worker> objWorker =
+                std::make_shared<vpd::Worker>(configFilePath);
+            parsedVpdDataMap = objWorker->parseVpdFile(vpdFilePath);
+
+            // Based on requirement, call appropriate public API of worker class
+            /*If required to publish the FRU data on Dbus*/
+            // objWorker->publishFruDataOnDbus(parsedVpdDataMap);
+        }
+        else
+        {
+            // Will work with empty JSON
+            std::shared_ptr<vpd::Parser> vpdParser =
+                std::make_shared<vpd::Parser>(vpdFilePath, json);
+            parsedVpdDataMap = vpdParser->parse();
+        }
+
+        // If custom handling is required then custom logic to be implemented
+        // based on the type of variant,
+        //  eg: for IPZ VPD format
+        if (auto ipzVpdMap =
+                std::get_if<vpd::types::IPZVpdMap>(&parsedVpdDataMap))
+        {
+            // get rid of unused variable warning/error
+            (void)ipzVpdMap;
+            // implement code that needs to handle parsed IPZ VPD.
+        }
+    }
+    catch (const std::exception& ex)
+    {
+        vpd::logging::logMessage(ex.what());
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/vpd-manager/src/worker.cpp b/vpd-manager/src/worker.cpp
new file mode 100644
index 0000000..2cf8cb5
--- /dev/null
+++ b/vpd-manager/src/worker.cpp
@@ -0,0 +1,1677 @@
+#include "config.h"
+
+#include "worker.hpp"
+
+#include "backup_restore.hpp"
+#include "configuration.hpp"
+#include "constants.hpp"
+#include "event_logger.hpp"
+#include "exceptions.hpp"
+#include "logger.hpp"
+#include "parser.hpp"
+#include "parser_factory.hpp"
+#include "parser_interface.hpp"
+
+#include <utility/dbus_utility.hpp>
+#include <utility/json_utility.hpp>
+#include <utility/vpd_specific_utility.hpp>
+
+#include <filesystem>
+#include <fstream>
+#include <future>
+#include <typeindex>
+#include <unordered_set>
+
+namespace vpd
+{
+
+Worker::Worker(std::string pathToConfigJson) :
+    m_configJsonPath(pathToConfigJson)
+{
+    // Implies the processing is based on some config JSON
+    if (!m_configJsonPath.empty())
+    {
+        // Check if symlink is already there to confirm fresh boot/factory
+        // reset.
+        if (std::filesystem::exists(INVENTORY_JSON_SYM_LINK))
+        {
+            logging::logMessage("Sym Link already present");
+            m_configJsonPath = INVENTORY_JSON_SYM_LINK;
+            m_isSymlinkPresent = true;
+        }
+
+        try
+        {
+            m_parsedJson = jsonUtility::getParsedJson(m_configJsonPath);
+
+            // check for mandatory fields at this point itself.
+            if (!m_parsedJson.contains("frus"))
+            {
+                throw std::runtime_error("Mandatory tag(s) missing from JSON");
+            }
+        }
+        catch (const std::exception& ex)
+        {
+            throw(JsonException(ex.what(), m_configJsonPath));
+        }
+    }
+    else
+    {
+        logging::logMessage("Processing in not based on any config JSON");
+    }
+}
+
+void Worker::enableMuxChips()
+{
+    if (m_parsedJson.empty())
+    {
+        // config JSON should not be empty at this point of execution.
+        throw std::runtime_error("Config JSON is empty. Can't enable muxes");
+        return;
+    }
+
+    if (!m_parsedJson.contains("muxes"))
+    {
+        logging::logMessage("No mux defined for the system in config JSON");
+        return;
+    }
+
+    // iterate over each MUX detail and enable them.
+    for (const auto& item : m_parsedJson["muxes"])
+    {
+        if (item.contains("holdidlepath"))
+        {
+            std::string cmd = "echo 0 > ";
+            cmd += item["holdidlepath"];
+
+            logging::logMessage("Enabling mux with command = " + cmd);
+
+            commonUtility::executeCmd(cmd);
+            continue;
+        }
+
+        logging::logMessage(
+            "Mux Entry does not have hold idle path. Can't enable the mux");
+    }
+}
+
+#ifdef IBM_SYSTEM
+void Worker::primeSystemBlueprint()
+{
+    if (m_parsedJson.empty())
+    {
+        return;
+    }
+
+    const nlohmann::json& l_listOfFrus =
+        m_parsedJson["frus"].get_ref<const nlohmann::json::object_t&>();
+
+    for (const auto& l_itemFRUS : l_listOfFrus.items())
+    {
+        const std::string& l_vpdFilePath = l_itemFRUS.key();
+
+        if (l_vpdFilePath == SYSTEM_VPD_FILE_PATH)
+        {
+            continue;
+        }
+
+        // Prime the inventry for FRUs which
+        // are not present/processing had some error.
+        if (!primeInventory(l_vpdFilePath))
+        {
+            logging::logMessage(
+                "Priming of inventory failed for FRU " + l_vpdFilePath);
+        }
+    }
+}
+
+void Worker::performInitialSetup()
+{
+    try
+    {
+        if (!dbusUtility::isChassisPowerOn())
+        {
+            logging::logMessage("Chassis is in Off state.");
+            setDeviceTreeAndJson();
+            primeSystemBlueprint();
+        }
+
+        // Enable all mux which are used for connecting to the i2c on the
+        // pcie slots for pcie cards. These are not enabled by kernel due to
+        // an issue seen with Castello cards, where the i2c line hangs on a
+        // probe.
+        enableMuxChips();
+
+        // Nothing needs to be done. Service restarted or BMC re-booted for
+        // some reason at system power on.
+        return;
+    }
+    catch (const std::exception& ex)
+    {
+        if (typeid(ex) == std::type_index(typeid(DataException)))
+        {
+            // TODO:Catch logic to be implemented once PEL code goes in.
+        }
+        else if (typeid(ex) == std::type_index(typeid(EccException)))
+        {
+            // TODO:Catch logic to be implemented once PEL code goes in.
+        }
+        else if (typeid(ex) == std::type_index(typeid(JsonException)))
+        {
+            // TODO:Catch logic to be implemented once PEL code goes in.
+        }
+
+        logging::logMessage(ex.what());
+        throw;
+    }
+}
+#endif
+
+static std::string readFitConfigValue()
+{
+    std::vector<std::string> output =
+        commonUtility::executeCmd("/sbin/fw_printenv");
+    std::string fitConfigValue;
+
+    for (const auto& entry : output)
+    {
+        auto pos = entry.find("=");
+        auto key = entry.substr(0, pos);
+        if (key != "fitconfig")
+        {
+            continue;
+        }
+
+        if (pos + 1 < entry.size())
+        {
+            fitConfigValue = entry.substr(pos + 1);
+        }
+    }
+
+    return fitConfigValue;
+}
+
+bool Worker::isSystemVPDOnDBus() const
+{
+    const std::string& mboardPath =
+        m_parsedJson["frus"][SYSTEM_VPD_FILE_PATH].at(0).value(
+            "inventoryPath", "");
+
+    if (mboardPath.empty())
+    {
+        throw JsonException("System vpd file path missing in JSON",
+                            INVENTORY_JSON_SYM_LINK);
+    }
+
+    std::array<const char*, 1> interfaces = {
+        "xyz.openbmc_project.Inventory.Item.Board.Motherboard"};
+
+    const types::MapperGetObject& objectMap =
+        dbusUtility::getObjectMap(mboardPath, interfaces);
+
+    if (objectMap.empty())
+    {
+        return false;
+    }
+    return true;
+}
+
+std::string Worker::getIMValue(const types::IPZVpdMap& parsedVpd) const
+{
+    if (parsedVpd.empty())
+    {
+        throw std::runtime_error("Empty VPD map. Can't Extract IM value");
+    }
+
+    const auto& itrToVSBP = parsedVpd.find("VSBP");
+    if (itrToVSBP == parsedVpd.end())
+    {
+        throw DataException("VSBP record missing.");
+    }
+
+    const auto& itrToIM = (itrToVSBP->second).find("IM");
+    if (itrToIM == (itrToVSBP->second).end())
+    {
+        throw DataException("IM keyword missing.");
+    }
+
+    types::BinaryVector imVal;
+    std::copy(itrToIM->second.begin(), itrToIM->second.end(),
+              back_inserter(imVal));
+
+    std::ostringstream imData;
+    for (auto& aByte : imVal)
+    {
+        imData << std::setw(2) << std::setfill('0') << std::hex
+               << static_cast<int>(aByte);
+    }
+
+    return imData.str();
+}
+
+std::string Worker::getHWVersion(const types::IPZVpdMap& parsedVpd) const
+{
+    if (parsedVpd.empty())
+    {
+        throw std::runtime_error("Empty VPD map. Can't Extract HW value");
+    }
+
+    const auto& itrToVINI = parsedVpd.find("VINI");
+    if (itrToVINI == parsedVpd.end())
+    {
+        throw DataException("VINI record missing.");
+    }
+
+    const auto& itrToHW = (itrToVINI->second).find("HW");
+    if (itrToHW == (itrToVINI->second).end())
+    {
+        throw DataException("HW keyword missing.");
+    }
+
+    types::BinaryVector hwVal;
+    std::copy(itrToHW->second.begin(), itrToHW->second.end(),
+              back_inserter(hwVal));
+
+    // The planar pass only comes from the LSB of the HW keyword,
+    // where as the MSB is used for other purposes such as signifying clock
+    // termination.
+    hwVal[0] = 0x00;
+
+    std::ostringstream hwString;
+    for (auto& aByte : hwVal)
+    {
+        hwString << std::setw(2) << std::setfill('0') << std::hex
+                 << static_cast<int>(aByte);
+    }
+
+    return hwString.str();
+}
+
+void Worker::fillVPDMap(const std::string& vpdFilePath,
+                        types::VPDMapVariant& vpdMap)
+{
+    logging::logMessage(std::string("Parsing file = ") + vpdFilePath);
+
+    if (vpdFilePath.empty())
+    {
+        throw std::runtime_error("Invalid file path passed to fillVPDMap API.");
+    }
+
+    if (!std::filesystem::exists(vpdFilePath))
+    {
+        throw std::runtime_error("Can't Find physical file");
+    }
+
+    try
+    {
+        std::shared_ptr<Parser> vpdParser =
+            std::make_shared<Parser>(vpdFilePath, m_parsedJson);
+        vpdMap = vpdParser->parse();
+    }
+    catch (const std::exception& ex)
+    {
+        if (typeid(ex) == std::type_index(typeid(DataException)))
+        {
+            // TODO: Do what needs to be done in case of Data exception.
+            // Uncomment when PEL implementation goes in.
+            /* string errorMsg =
+                 "VPD file is either empty or invalid. Parser failed for [";
+             errorMsg += m_vpdFilePath;
+             errorMsg += "], with error = " + std::string(ex.what());
+
+             additionalData.emplace("DESCRIPTION", errorMsg);
+             additionalData.emplace("CALLOUT_INVENTORY_PATH",
+                                    INVENTORY_PATH + baseFruInventoryPath);
+             createPEL(additionalData, pelSeverity, errIntfForInvalidVPD,
+             nullptr);*/
+
+            // throw generic error from here to inform main caller about
+            // failure.
+            logging::logMessage(ex.what());
+            throw std::runtime_error(
+                "Data Exception occurred for file path = " + vpdFilePath);
+        }
+
+        if (typeid(ex) == std::type_index(typeid(EccException)))
+        {
+            // TODO: Do what needs to be done in case of ECC exception.
+            // Uncomment when PEL implementation goes in.
+            /* additionalData.emplace("DESCRIPTION", "ECC check failed");
+             additionalData.emplace("CALLOUT_INVENTORY_PATH",
+                                    INVENTORY_PATH + baseFruInventoryPath);
+             createPEL(additionalData, pelSeverity, errIntfForEccCheckFail,
+                       nullptr);
+             */
+
+            logging::logMessage(ex.what());
+            // Need to decide once all error handling is implemented.
+            // vpdSpecificUtility::dumpBadVpd(vpdFilePath,vpdVector);
+
+            // throw generic error from here to inform main caller about
+            // failure.
+            throw std::runtime_error(
+                "Ecc Exception occurred for file path = " + vpdFilePath);
+        }
+    }
+}
+
+void Worker::getSystemJson(std::string& systemJson,
+                           const types::VPDMapVariant& parsedVpdMap)
+{
+    if (auto pVal = std::get_if<types::IPZVpdMap>(&parsedVpdMap))
+    {
+        std::string hwKWdValue = getHWVersion(*pVal);
+        if (hwKWdValue.empty())
+        {
+            throw DataException("HW value fetched is empty.");
+        }
+
+        const std::string& imKwdValue = getIMValue(*pVal);
+        if (imKwdValue.empty())
+        {
+            throw DataException("IM value fetched is empty.");
+        }
+
+        auto itrToIM = config::systemType.find(imKwdValue);
+        if (itrToIM == config::systemType.end())
+        {
+            throw DataException("IM keyword does not map to any system type");
+        }
+
+        const types::HWVerList hwVersionList = itrToIM->second.second;
+        if (!hwVersionList.empty())
+        {
+            transform(hwKWdValue.begin(), hwKWdValue.end(), hwKWdValue.begin(),
+                      ::toupper);
+
+            auto itrToHW =
+                std::find_if(hwVersionList.begin(), hwVersionList.end(),
+                             [&hwKWdValue](const auto& aPair) {
+                                 return aPair.first == hwKWdValue;
+                             });
+
+            if (itrToHW != hwVersionList.end())
+            {
+                if (!(*itrToHW).second.empty())
+                {
+                    systemJson += (*itrToIM).first + "_" + (*itrToHW).second +
+                                  ".json";
+                }
+                else
+                {
+                    systemJson += (*itrToIM).first + ".json";
+                }
+                return;
+            }
+        }
+        systemJson += itrToIM->second.first + ".json";
+        return;
+    }
+
+    throw DataException("Invalid VPD type returned from Parser");
+}
+
+static void setEnvAndReboot(const std::string& key, const std::string& value)
+{
+    // set env and reboot and break.
+    commonUtility::executeCmd("/sbin/fw_setenv", key, value);
+    logging::logMessage("Rebooting BMC to pick up new device tree");
+
+    // make dbus call to reboot
+    auto bus = sdbusplus::bus::new_default_system();
+    auto method = bus.new_method_call(
+        "org.freedesktop.systemd1", "/org/freedesktop/systemd1",
+        "org.freedesktop.systemd1.Manager", "Reboot");
+    bus.call_noreply(method);
+}
+
+void Worker::setJsonSymbolicLink(const std::string& i_systemJson)
+{
+    std::error_code l_ec;
+    l_ec.clear();
+    if (!std::filesystem::exists(VPD_SYMLIMK_PATH, l_ec))
+    {
+        if (l_ec)
+        {
+            throw std::runtime_error(
+                "File system call to exist failed with error = " +
+                l_ec.message());
+        }
+
+        // implies it is a fresh boot/factory reset.
+        // Create the directory for hosting the symlink
+        if (!std::filesystem::create_directories(VPD_SYMLIMK_PATH, l_ec))
+        {
+            if (l_ec)
+            {
+                throw std::runtime_error(
+                    "File system call to create directory failed with error = " +
+                    l_ec.message());
+            }
+        }
+    }
+
+    // create a new symlink based on the system
+    std::filesystem::create_symlink(i_systemJson, INVENTORY_JSON_SYM_LINK,
+                                    l_ec);
+
+    if (l_ec)
+    {
+        throw std::runtime_error(
+            "create_symlink system call failed with error: " + l_ec.message());
+    }
+
+    // If the flow is at this point implies the symlink was not present there.
+    // Considering this as factory reset.
+    m_isFactoryResetDone = true;
+}
+
+void Worker::setDeviceTreeAndJson()
+{
+    // JSON is madatory for processing of this API.
+    if (m_parsedJson.empty())
+    {
+        throw std::runtime_error("JSON is empty");
+    }
+
+    types::VPDMapVariant parsedVpdMap;
+    fillVPDMap(SYSTEM_VPD_FILE_PATH, parsedVpdMap);
+
+    // Implies it is default JSON.
+    std::string systemJson{JSON_ABSOLUTE_PATH_PREFIX};
+
+    // ToDo: Need to check if INVENTORY_JSON_SYM_LINK pointing to correct system
+    // This is required to support movement from rainier to Blue Ridge on the
+    // fly.
+
+    // Do we have the entry for device tree in parsed JSON?
+    if (m_parsedJson.find("devTree") == m_parsedJson.end())
+    {
+        getSystemJson(systemJson, parsedVpdMap);
+
+        if (!systemJson.compare(JSON_ABSOLUTE_PATH_PREFIX))
+        {
+            // TODO: Log a PEL saying that "System type not supported"
+            throw DataException("Error in getting system JSON.");
+        }
+
+        // re-parse the JSON once appropriate JSON has been selected.
+        try
+        {
+            m_parsedJson = jsonUtility::getParsedJson(systemJson);
+        }
+        catch (const nlohmann::json::parse_error& ex)
+        {
+            throw(JsonException("Json parsing failed", systemJson));
+        }
+    }
+
+    std::string devTreeFromJson;
+    if (m_parsedJson.contains("devTree"))
+    {
+        devTreeFromJson = m_parsedJson["devTree"];
+
+        if (devTreeFromJson.empty())
+        {
+            // TODO:: Log a predictive PEL
+            logging::logMessage(
+                "Mandatory value for device tree missing from JSON[" +
+                std::string(INVENTORY_JSON_SYM_LINK) + "]");
+        }
+    }
+
+    auto fitConfigVal = readFitConfigValue();
+
+    if (devTreeFromJson.empty() ||
+        fitConfigVal.find(devTreeFromJson) != std::string::npos)
+    { // Skipping setting device tree as either devtree info is missing from
+      // Json or it is rightly set.
+
+        // avoid setting symlink on every reboot.
+        if (!m_isSymlinkPresent)
+        {
+            setJsonSymbolicLink(systemJson);
+        }
+
+        if (isSystemVPDOnDBus() &&
+            jsonUtility::isBackupAndRestoreRequired(m_parsedJson))
+        {
+            performBackupAndRestore(parsedVpdMap);
+        }
+
+        // proceed to publish system VPD.
+        publishSystemVPD(parsedVpdMap);
+        return;
+    }
+
+    setEnvAndReboot("fitconfig", devTreeFromJson);
+    exit(EXIT_SUCCESS);
+}
+
+void Worker::populateIPZVPDpropertyMap(
+    types::InterfaceMap& interfacePropMap,
+    const types::IPZKwdValueMap& keyordValueMap,
+    const std::string& interfaceName)
+{
+    types::PropertyMap propertyValueMap;
+    for (const auto& kwdVal : keyordValueMap)
+    {
+        auto kwd = kwdVal.first;
+
+        if (kwd[0] == '#')
+        {
+            kwd = std::string("PD_") + kwd[1];
+        }
+        else if (isdigit(kwd[0]))
+        {
+            kwd = std::string("N_") + kwd;
+        }
+
+        types::BinaryVector value(kwdVal.second.begin(), kwdVal.second.end());
+        propertyValueMap.emplace(move(kwd), move(value));
+    }
+
+    if (!propertyValueMap.empty())
+    {
+        interfacePropMap.emplace(interfaceName, propertyValueMap);
+    }
+}
+
+void Worker::populateKwdVPDpropertyMap(const types::KeywordVpdMap& keyordVPDMap,
+                                       types::InterfaceMap& interfaceMap)
+{
+    for (const auto& kwdValMap : keyordVPDMap)
+    {
+        types::PropertyMap propertyValueMap;
+        auto kwd = kwdValMap.first;
+
+        if (kwd[0] == '#')
+        {
+            kwd = std::string("PD_") + kwd[1];
+        }
+        else if (isdigit(kwd[0]))
+        {
+            kwd = std::string("N_") + kwd;
+        }
+
+        if (auto keywordValue = get_if<types::BinaryVector>(&kwdValMap.second))
+        {
+            types::BinaryVector value((*keywordValue).begin(),
+                                      (*keywordValue).end());
+            propertyValueMap.emplace(move(kwd), move(value));
+        }
+        else if (auto keywordValue = get_if<std::string>(&kwdValMap.second))
+        {
+            types::BinaryVector value((*keywordValue).begin(),
+                                      (*keywordValue).end());
+            propertyValueMap.emplace(move(kwd), move(value));
+        }
+        else if (auto keywordValue = get_if<size_t>(&kwdValMap.second))
+        {
+            if (kwd == "MemorySizeInKB")
+            {
+                types::PropertyMap memProp;
+                memProp.emplace(move(kwd), ((*keywordValue)));
+                interfaceMap.emplace("xyz.openbmc_project.Inventory.Item.Dimm",
+                                     move(memProp));
+                continue;
+            }
+            else
+            {
+                logging::logMessage(
+                    "Unknown Keyword =" + kwd + " found in keyword VPD map");
+                continue;
+            }
+        }
+        else
+        {
+            logging::logMessage(
+                "Unknown variant type found in keyword VPD map.");
+            continue;
+        }
+
+        if (!propertyValueMap.empty())
+        {
+            vpdSpecificUtility::insertOrMerge(
+                interfaceMap, constants::kwdVpdInf, move(propertyValueMap));
+        }
+    }
+}
+
+void Worker::populateInterfaces(const nlohmann::json& interfaceJson,
+                                types::InterfaceMap& interfaceMap,
+                                const types::VPDMapVariant& parsedVpdMap)
+{
+    for (const auto& interfacesPropPair : interfaceJson.items())
+    {
+        const std::string& interface = interfacesPropPair.key();
+        types::PropertyMap propertyMap;
+
+        for (const auto& propValuePair : interfacesPropPair.value().items())
+        {
+            const std::string property = propValuePair.key();
+
+            if (propValuePair.value().is_boolean())
+            {
+                propertyMap.emplace(property,
+                                    propValuePair.value().get<bool>());
+            }
+            else if (propValuePair.value().is_string())
+            {
+                if (property.compare("LocationCode") == 0 &&
+                    interface.compare("com.ibm.ipzvpd.Location") == 0)
+                {
+                    std::string value =
+                        vpdSpecificUtility::getExpandedLocationCode(
+                            propValuePair.value().get<std::string>(),
+                            parsedVpdMap);
+                    propertyMap.emplace(property, value);
+
+                    auto l_locCodeProperty = propertyMap;
+                    vpdSpecificUtility::insertOrMerge(
+                        interfaceMap,
+                        std::string(constants::xyzLocationCodeInf),
+                        move(l_locCodeProperty));
+                }
+                else
+                {
+                    propertyMap.emplace(
+                        property, propValuePair.value().get<std::string>());
+                }
+            }
+            else if (propValuePair.value().is_array())
+            {
+                try
+                {
+                    propertyMap.emplace(
+                        property,
+                        propValuePair.value().get<types::BinaryVector>());
+                }
+                catch (const nlohmann::detail::type_error& e)
+                {
+                    std::cerr << "Type exception: " << e.what() << "\n";
+                }
+            }
+            else if (propValuePair.value().is_number())
+            {
+                // For now assume the value is a size_t.  In the future it would
+                // be nice to come up with a way to get the type from the JSON.
+                propertyMap.emplace(property,
+                                    propValuePair.value().get<size_t>());
+            }
+            else if (propValuePair.value().is_object())
+            {
+                const std::string& record =
+                    propValuePair.value().value("recordName", "");
+                const std::string& keyword =
+                    propValuePair.value().value("keywordName", "");
+                const std::string& encoding =
+                    propValuePair.value().value("encoding", "");
+
+                if (auto ipzVpdMap =
+                        std::get_if<types::IPZVpdMap>(&parsedVpdMap))
+                {
+                    if (!record.empty() && !keyword.empty() &&
+                        (*ipzVpdMap).count(record) &&
+                        (*ipzVpdMap).at(record).count(keyword))
+                    {
+                        auto encoded = vpdSpecificUtility::encodeKeyword(
+                            ((*ipzVpdMap).at(record).at(keyword)), encoding);
+                        propertyMap.emplace(property, encoded);
+                    }
+                }
+                else if (auto kwdVpdMap =
+                             std::get_if<types::KeywordVpdMap>(&parsedVpdMap))
+                {
+                    if (!keyword.empty() && (*kwdVpdMap).count(keyword))
+                    {
+                        if (auto kwValue = std::get_if<types::BinaryVector>(
+                                &(*kwdVpdMap).at(keyword)))
+                        {
+                            auto encodedValue =
+                                vpdSpecificUtility::encodeKeyword(
+                                    std::string((*kwValue).begin(),
+                                                (*kwValue).end()),
+                                    encoding);
+
+                            propertyMap.emplace(property, encodedValue);
+                        }
+                        else if (auto kwValue = std::get_if<std::string>(
+                                     &(*kwdVpdMap).at(keyword)))
+                        {
+                            auto encodedValue =
+                                vpdSpecificUtility::encodeKeyword(
+                                    std::string((*kwValue).begin(),
+                                                (*kwValue).end()),
+                                    encoding);
+
+                            propertyMap.emplace(property, encodedValue);
+                        }
+                        else if (auto uintValue = std::get_if<size_t>(
+                                     &(*kwdVpdMap).at(keyword)))
+                        {
+                            propertyMap.emplace(property, *uintValue);
+                        }
+                        else
+                        {
+                            logging::logMessage(
+                                "Unknown keyword found, Keywrod = " + keyword);
+                        }
+                    }
+                }
+            }
+        }
+        vpdSpecificUtility::insertOrMerge(interfaceMap, interface,
+                                          move(propertyMap));
+    }
+}
+
+bool Worker::isCPUIOGoodOnly(const std::string& i_pgKeyword)
+{
+    const unsigned char l_io[] = {
+        0xE7, 0xF9, 0xFF, 0xE7, 0xF9, 0xFF, 0xE7, 0xF9, 0xFF, 0xE7, 0xF9, 0xFF,
+        0xE7, 0xF9, 0xFF, 0xE7, 0xF9, 0xFF, 0xE7, 0xF9, 0xFF, 0xE7, 0xF9, 0xFF};
+
+    // EQ0 index (in PG keyword) starts at 97 (with offset starting from 0).
+    // Each EQ carries 3 bytes of data. Totally there are 8 EQs. If all EQs'
+    // value equals 0xE7F9FF, then the cpu has no good cores and its treated as
+    // IO.
+    if (memcmp(l_io, i_pgKeyword.data() + constants::INDEX_OF_EQ0_IN_PG,
+               constants::SIZE_OF_8EQ_IN_PG) == 0)
+    {
+        return true;
+    }
+
+    // The CPU is not an IO
+    return false;
+}
+
+bool Worker::primeInventory(const std::string& i_vpdFilePath)
+{
+    if (i_vpdFilePath.empty())
+    {
+        logging::logMessage("Empty VPD file path given");
+        return false;
+    }
+
+    if (m_parsedJson.empty())
+    {
+        logging::logMessage("Empty JSON detected for " + i_vpdFilePath);
+        return false;
+    }
+    else if (!m_parsedJson["frus"].contains(i_vpdFilePath))
+    {
+        logging::logMessage("File " + i_vpdFilePath +
+                            ", is not found in the system config JSON file.");
+        return false;
+    }
+
+    types::ObjectMap l_objectInterfaceMap;
+    for (const auto& l_Fru : m_parsedJson["frus"][i_vpdFilePath])
+    {
+        types::InterfaceMap l_interfaces;
+        sdbusplus::message::object_path l_fruObjectPath(l_Fru["inventoryPath"]);
+
+        if (l_Fru.contains("ccin"))
+        {
+            continue;
+        }
+
+        if (l_Fru.contains("noprime") && l_Fru.value("noprime", false))
+        {
+            continue;
+        }
+
+        // Clear data under PIM if already exists.
+        vpdSpecificUtility::resetDataUnderPIM(
+            std::string(l_Fru["inventoryPath"]), l_interfaces);
+
+        // Add extra interfaces mentioned in the Json config file
+        if (l_Fru.contains("extraInterfaces"))
+        {
+            populateInterfaces(l_Fru["extraInterfaces"], l_interfaces,
+                               std::monostate{});
+        }
+
+        types::PropertyMap l_propertyValueMap;
+        l_propertyValueMap.emplace("Present", false);
+        if (std::filesystem::exists(i_vpdFilePath))
+        {
+            l_propertyValueMap["Present"] = true;
+        }
+
+        vpdSpecificUtility::insertOrMerge(l_interfaces,
+                                          "xyz.openbmc_project.Inventory.Item",
+                                          move(l_propertyValueMap));
+
+        if (l_Fru.value("inherit", true) &&
+            m_parsedJson.contains("commonInterfaces"))
+        {
+            populateInterfaces(m_parsedJson["commonInterfaces"], l_interfaces,
+                               std::monostate{});
+        }
+
+        processFunctionalProperty(l_Fru["inventoryPath"], l_interfaces);
+        processEnabledProperty(l_Fru["inventoryPath"], l_interfaces);
+
+        l_objectInterfaceMap.emplace(std::move(l_fruObjectPath),
+                                     std::move(l_interfaces));
+    }
+
+    // Notify PIM
+    if (!dbusUtility::callPIM(move(l_objectInterfaceMap)))
+    {
+        logging::logMessage("Call to PIM failed for VPD file " + i_vpdFilePath);
+        return false;
+    }
+
+    return true;
+}
+
+void Worker::processEmbeddedAndSynthesizedFrus(const nlohmann::json& singleFru,
+                                               types::InterfaceMap& interfaces)
+{
+    // embedded property(true or false) says whether the subfru is embedded
+    // into the parent fru (or) not. VPD sets Present property only for
+    // embedded frus. If the subfru is not an embedded FRU, the subfru may
+    // or may not be physically present. Those non embedded frus will always
+    // have Present=false irrespective of its physical presence or absence.
+    // Eg: nvme drive in nvme slot is not an embedded FRU. So don't set
+    // Present to true for such sub frus.
+    // Eg: ethernet port is embedded into bmc card. So set Present to true
+    // for such sub frus. Also donot populate present property for embedded
+    // subfru which is synthesized. Currently there is no subfru which are
+    // both embedded and synthesized. But still the case is handled here.
+
+    // Check if its required to handle presence for this FRU.
+    if (singleFru.value("handlePresence", true))
+    {
+        types::PropertyMap presProp;
+        presProp.emplace("Present", true);
+        vpdSpecificUtility::insertOrMerge(
+            interfaces, "xyz.openbmc_project.Inventory.Item", move(presProp));
+    }
+}
+
+void Worker::processExtraInterfaces(const nlohmann::json& singleFru,
+                                    types::InterfaceMap& interfaces,
+                                    const types::VPDMapVariant& parsedVpdMap)
+{
+    populateInterfaces(singleFru["extraInterfaces"], interfaces, parsedVpdMap);
+    if (auto ipzVpdMap = std::get_if<types::IPZVpdMap>(&parsedVpdMap))
+    {
+        if (singleFru["extraInterfaces"].contains(
+                "xyz.openbmc_project.Inventory.Item.Cpu"))
+        {
+            auto itrToRec = (*ipzVpdMap).find("CP00");
+            if (itrToRec == (*ipzVpdMap).end())
+            {
+                return;
+            }
+
+            std::string pgKeywordValue;
+            vpdSpecificUtility::getKwVal(itrToRec->second, "PG",
+                                         pgKeywordValue);
+            if (!pgKeywordValue.empty())
+            {
+                if (isCPUIOGoodOnly(pgKeywordValue))
+                {
+                    interfaces["xyz.openbmc_project.Inventory.Item"]
+                              ["PrettyName"] = "IO Module";
+                }
+            }
+        }
+    }
+}
+
+void Worker::processCopyRecordFlag(const nlohmann::json& singleFru,
+                                   const types::VPDMapVariant& parsedVpdMap,
+                                   types::InterfaceMap& interfaces)
+{
+    if (auto ipzVpdMap = std::get_if<types::IPZVpdMap>(&parsedVpdMap))
+    {
+        for (const auto& record : singleFru["copyRecords"])
+        {
+            const std::string& recordName = record;
+            if ((*ipzVpdMap).find(recordName) != (*ipzVpdMap).end())
+            {
+                populateIPZVPDpropertyMap(interfaces,
+                                          (*ipzVpdMap).at(recordName),
+                                          constants::ipzVpdInf + recordName);
+            }
+        }
+    }
+}
+
+void Worker::processInheritFlag(const types::VPDMapVariant& parsedVpdMap,
+                                types::InterfaceMap& interfaces)
+{
+    if (auto ipzVpdMap = std::get_if<types::IPZVpdMap>(&parsedVpdMap))
+    {
+        for (const auto& [recordName, kwdValueMap] : *ipzVpdMap)
+        {
+            populateIPZVPDpropertyMap(interfaces, kwdValueMap,
+                                      constants::ipzVpdInf + recordName);
+        }
+    }
+    else if (auto kwdVpdMap = std::get_if<types::KeywordVpdMap>(&parsedVpdMap))
+    {
+        populateKwdVPDpropertyMap(*kwdVpdMap, interfaces);
+    }
+
+    if (m_parsedJson.contains("commonInterfaces"))
+    {
+        populateInterfaces(m_parsedJson["commonInterfaces"], interfaces,
+                           parsedVpdMap);
+    }
+}
+
+bool Worker::processFruWithCCIN(const nlohmann::json& singleFru,
+                                const types::VPDMapVariant& parsedVpdMap)
+{
+    if (auto ipzVPDMap = std::get_if<types::IPZVpdMap>(&parsedVpdMap))
+    {
+        auto itrToRec = (*ipzVPDMap).find("VINI");
+        if (itrToRec == (*ipzVPDMap).end())
+        {
+            return false;
+        }
+
+        std::string ccinFromVpd;
+        vpdSpecificUtility::getKwVal(itrToRec->second, "CC", ccinFromVpd);
+        if (ccinFromVpd.empty())
+        {
+            return false;
+        }
+
+        transform(ccinFromVpd.begin(), ccinFromVpd.end(), ccinFromVpd.begin(),
+                  ::toupper);
+
+        std::vector<std::string> ccinList;
+        for (std::string ccin : singleFru["ccin"])
+        {
+            transform(ccin.begin(), ccin.end(), ccin.begin(), ::toupper);
+            ccinList.push_back(ccin);
+        }
+
+        if (ccinList.empty())
+        {
+            return false;
+        }
+
+        if (find(ccinList.begin(), ccinList.end(), ccinFromVpd) ==
+            ccinList.end())
+        {
+            return false;
+        }
+    }
+    return true;
+}
+
+void Worker::processFunctionalProperty(const std::string& i_inventoryObjPath,
+                                       types::InterfaceMap& io_interfaces)
+{
+    if (!dbusUtility::isChassisPowerOn())
+    {
+        std::array<const char*, 1> l_operationalStatusInf = {
+            constants::operationalStatusInf};
+
+        auto mapperObjectMap = dbusUtility::getObjectMap(
+            i_inventoryObjPath, l_operationalStatusInf);
+
+        // If the object has been found. Check if it is under PIM.
+        if (mapperObjectMap.size() != 0)
+        {
+            for (const auto& [l_serviceName, l_interfaceLsit] : mapperObjectMap)
+            {
+                if (l_serviceName == constants::pimServiceName)
+                {
+                    // The object is already under PIM. No need to process
+                    // again. Retain the old value.
+                    return;
+                }
+            }
+        }
+
+        // Implies value is not there in D-Bus. Populate it with default
+        // value "true".
+        types::PropertyMap l_functionalProp;
+        l_functionalProp.emplace("Functional", true);
+        vpdSpecificUtility::insertOrMerge(io_interfaces,
+                                          constants::operationalStatusInf,
+                                          move(l_functionalProp));
+    }
+
+    // if chassis is power on. Functional property should be there on D-Bus.
+    // Don't process.
+    return;
+}
+
+void Worker::processEnabledProperty(const std::string& i_inventoryObjPath,
+                                    types::InterfaceMap& io_interfaces)
+{
+    if (!dbusUtility::isChassisPowerOn())
+    {
+        std::array<const char*, 1> l_enableInf = {constants::enableInf};
+
+        auto mapperObjectMap =
+            dbusUtility::getObjectMap(i_inventoryObjPath, l_enableInf);
+
+        // If the object has been found. Check if it is under PIM.
+        if (mapperObjectMap.size() != 0)
+        {
+            for (const auto& [l_serviceName, l_interfaceLsit] : mapperObjectMap)
+            {
+                if (l_serviceName == constants::pimServiceName)
+                {
+                    // The object is already under PIM. No need to process
+                    // again. Retain the old value.
+                    return;
+                }
+            }
+        }
+
+        // Implies value is not there in D-Bus. Populate it with default
+        // value "true".
+        types::PropertyMap l_enabledProp;
+        l_enabledProp.emplace("Enabled", true);
+        vpdSpecificUtility::insertOrMerge(io_interfaces, constants::enableInf,
+                                          move(l_enabledProp));
+    }
+
+    // if chassis is power on. Enabled property should be there on D-Bus.
+    // Don't process.
+    return;
+}
+
+void Worker::populateDbus(const types::VPDMapVariant& parsedVpdMap,
+                          types::ObjectMap& objectInterfaceMap,
+                          const std::string& vpdFilePath)
+{
+    if (vpdFilePath.empty())
+    {
+        throw std::runtime_error(
+            "Invalid parameter passed to populateDbus API.");
+    }
+
+    // JSON config is mandatory for processing of "if". Add "else" for any
+    // processing without config JSON.
+    if (!m_parsedJson.empty())
+    {
+        types::InterfaceMap interfaces;
+
+        for (const auto& aFru : m_parsedJson["frus"][vpdFilePath])
+        {
+            const auto& inventoryPath = aFru["inventoryPath"];
+            sdbusplus::message::object_path fruObjectPath(inventoryPath);
+            if (aFru.contains("ccin"))
+            {
+                if (!processFruWithCCIN(aFru, parsedVpdMap))
+                {
+                    continue;
+                }
+            }
+
+            if (aFru.value("inherit", true))
+            {
+                processInheritFlag(parsedVpdMap, interfaces);
+            }
+
+            // If specific record needs to be copied.
+            if (aFru.contains("copyRecords"))
+            {
+                processCopyRecordFlag(aFru, parsedVpdMap, interfaces);
+            }
+
+            if (aFru.contains("extraInterfaces"))
+            {
+                // Process extra interfaces w.r.t a FRU.
+                processExtraInterfaces(aFru, interfaces, parsedVpdMap);
+            }
+
+            // Process FRUS which are embedded in the parent FRU and whose VPD
+            // will be synthesized.
+            if ((aFru.value("embedded", true)) &&
+                (!aFru.value("synthesized", false)))
+            {
+                processEmbeddedAndSynthesizedFrus(aFru, interfaces);
+            }
+
+            processFunctionalProperty(inventoryPath, interfaces);
+            processEnabledProperty(inventoryPath, interfaces);
+
+            objectInterfaceMap.emplace(std::move(fruObjectPath),
+                                       std::move(interfaces));
+        }
+    }
+}
+
+std::string
+    Worker::createAssetTagString(const types::VPDMapVariant& i_parsedVpdMap)
+{
+    std::string l_assetTag;
+
+    // system VPD will be in IPZ format.
+    if (auto l_parsedVpdMap = std::get_if<types::IPZVpdMap>(&i_parsedVpdMap))
+    {
+        auto l_itrToVsys = (*l_parsedVpdMap).find(constants::recVSYS);
+        if (l_itrToVsys != (*l_parsedVpdMap).end())
+        {
+            std::string l_tmKwdValue;
+            vpdSpecificUtility::getKwVal(l_itrToVsys->second, constants::kwdTM,
+                                         l_tmKwdValue);
+
+            std::string l_seKwdValue;
+            vpdSpecificUtility::getKwVal(l_itrToVsys->second, constants::kwdSE,
+                                         l_seKwdValue);
+
+            l_assetTag = std::string{"Server-"} + l_tmKwdValue +
+                         std::string{"-"} + l_seKwdValue;
+        }
+        else
+        {
+            throw std::runtime_error(
+                "VSYS record not found in parsed VPD map to create Asset tag.");
+        }
+    }
+    else
+    {
+        throw std::runtime_error(
+            "Invalid VPD type recieved to create Asset tag.");
+    }
+
+    return l_assetTag;
+}
+
+void Worker::publishSystemVPD(const types::VPDMapVariant& parsedVpdMap)
+{
+    types::ObjectMap objectInterfaceMap;
+
+    if (std::get_if<types::IPZVpdMap>(&parsedVpdMap))
+    {
+        populateDbus(parsedVpdMap, objectInterfaceMap, SYSTEM_VPD_FILE_PATH);
+
+        try
+        {
+            if (m_isFactoryResetDone)
+            {
+                const auto& l_assetTag = createAssetTagString(parsedVpdMap);
+
+                auto l_itrToSystemPath = objectInterfaceMap.find(
+                    sdbusplus::message::object_path(constants::systemInvPath));
+                if (l_itrToSystemPath == objectInterfaceMap.end())
+                {
+                    throw std::runtime_error(
+                        "System Path not found in object map.");
+                }
+
+                types::PropertyMap l_assetTagProperty;
+                l_assetTagProperty.emplace("AssetTag", l_assetTag);
+
+                (l_itrToSystemPath->second)
+                    .emplace(constants::assetTagInf,
+                             std::move(l_assetTagProperty));
+            }
+        }
+        catch (const std::exception& l_ex)
+        {
+            EventLogger::createSyncPel(
+                types::ErrorType::InvalidVpdMessage,
+                types::SeverityType::Informational, __FILE__, __FUNCTION__, 0,
+                "Asset tag update failed with following error: " +
+                    std::string(l_ex.what()),
+                std::nullopt, std::nullopt, std::nullopt, std::nullopt);
+        }
+
+        // Notify PIM
+        if (!dbusUtility::callPIM(move(objectInterfaceMap)))
+        {
+            throw std::runtime_error("Call to PIM failed for system VPD");
+        }
+    }
+    else
+    {
+        throw DataException("Invalid format of parsed VPD map.");
+    }
+}
+
+bool Worker::processPreAction(const std::string& i_vpdFilePath,
+                              const std::string& i_flagToProcess)
+{
+    if (i_vpdFilePath.empty() || i_flagToProcess.empty())
+    {
+        logging::logMessage(
+            "Invalid input parameter. Abort processing pre action");
+        return false;
+    }
+
+    if ((!jsonUtility::executeBaseAction(m_parsedJson, "preAction",
+                                         i_vpdFilePath, i_flagToProcess)) &&
+        (i_flagToProcess.compare("collection") == constants::STR_CMP_SUCCESS))
+    {
+        // TODO: Need a way to delete inventory object from Dbus and persisted
+        // data section in case any FRU is not present or there is any
+        // problem in collecting it. Once it has been deleted, it can be
+        // re-created in the flow of priming the inventory. This needs to be
+        // done either here or in the exception section of "parseAndPublishVPD"
+        // API. Any failure in the process of collecting FRU will land up in the
+        // excpetion of "parseAndPublishVPD".
+
+        // If the FRU is not there, clear the VINI/CCIN data.
+        // Enity manager probes for this keyword to look for this
+        // FRU, now if the data is persistent on BMC and FRU is
+        // removed this can lead to ambiguity. Hence clearing this
+        // Keyword if FRU is absent.
+        const auto& inventoryPath =
+            m_parsedJson["frus"][i_vpdFilePath].at(0).value("inventoryPath",
+                                                            "");
+
+        if (!inventoryPath.empty())
+        {
+            types::ObjectMap l_pimObjMap{
+                {inventoryPath,
+                 {{constants::kwdVpdInf,
+                   {{constants::kwdCCIN, types::BinaryVector{}}}}}}};
+
+            if (!dbusUtility::callPIM(std::move(l_pimObjMap)))
+            {
+                logging::logMessage(
+                    "Call to PIM failed for file " + i_vpdFilePath);
+            }
+        }
+        else
+        {
+            logging::logMessage(
+                "Inventory path is empty in Json for file " + i_vpdFilePath);
+        }
+
+        return false;
+    }
+    return true;
+}
+
+bool Worker::processPostAction(
+    const std::string& i_vpdFruPath, const std::string& i_flagToProcess,
+    const std::optional<types::VPDMapVariant> i_parsedVpd)
+{
+    if (i_vpdFruPath.empty() || i_flagToProcess.empty())
+    {
+        logging::logMessage(
+            "Invalid input parameter. Abort processing post action");
+        return false;
+    }
+
+    // Check if post action tag is to be triggered in the flow of collection
+    // based on some CCIN value?
+    if (m_parsedJson["frus"][i_vpdFruPath]
+            .at(0)["postAction"][i_flagToProcess]
+            .contains("ccin"))
+    {
+        if (!i_parsedVpd.has_value())
+        {
+            logging::logMessage("Empty VPD Map");
+            return false;
+        }
+
+        // CCIN match is required to process post action for this FRU as it
+        // contains the flag.
+        if (!vpdSpecificUtility::findCcinInVpd(
+                m_parsedJson["frus"][i_vpdFruPath].at(
+                    0)["postAction"]["collection"],
+                i_parsedVpd.value()))
+        {
+            // If CCIN is not found, implies post action processing is not
+            // required for this FRU. Let the flow continue.
+            return true;
+        }
+    }
+
+    if (!jsonUtility::executeBaseAction(m_parsedJson, "postAction",
+                                        i_vpdFruPath, i_flagToProcess))
+    {
+        logging::logMessage(
+            "Execution of post action failed for path: " + i_vpdFruPath);
+
+        // If post action was required and failed only in that case return
+        // false. In all other case post action is considered passed.
+        return false;
+    }
+
+    return true;
+}
+
+types::VPDMapVariant Worker::parseVpdFile(const std::string& i_vpdFilePath)
+{
+    if (i_vpdFilePath.empty())
+    {
+        throw std::runtime_error(
+            "Empty VPD file path passed to Worker::parseVpdFile. Abort processing");
+    }
+
+    try
+    {
+        if (jsonUtility::isActionRequired(m_parsedJson, i_vpdFilePath,
+                                          "preAction", "collection"))
+        {
+            if (!processPreAction(i_vpdFilePath, "collection"))
+            {
+                throw std::runtime_error("Pre-Action failed");
+            }
+        }
+
+        if (!std::filesystem::exists(i_vpdFilePath))
+        {
+            throw std::runtime_error(
+                "Could not find file path " + i_vpdFilePath +
+                "Skipping parser trigger for the EEPROM");
+        }
+
+        std::shared_ptr<Parser> vpdParser =
+            std::make_shared<Parser>(i_vpdFilePath, m_parsedJson);
+
+        types::VPDMapVariant l_parsedVpd = vpdParser->parse();
+
+        // Before returning, as collection is over, check if FRU qualifies for
+        // any post action in the flow of collection.
+        // Note: Don't change the order, post action needs to be processed only
+        // after collection for FRU is successfully done.
+        if (jsonUtility::isActionRequired(m_parsedJson, i_vpdFilePath,
+                                          "postAction", "collection"))
+        {
+            if (!processPostAction(i_vpdFilePath, "collection", l_parsedVpd))
+            {
+                // TODO: Log PEL
+                logging::logMessage("Required post action failed for path [" +
+                                    i_vpdFilePath + "]");
+            }
+        }
+
+        return l_parsedVpd;
+    }
+    catch (std::exception& l_ex)
+    {
+        // If post fail action is required, execute it.
+        if (jsonUtility::isActionRequired(m_parsedJson, i_vpdFilePath,
+                                          "PostFailAction", "collection"))
+        {
+            if (!jsonUtility::executePostFailAction(m_parsedJson, i_vpdFilePath,
+                                                    "collection"))
+            {
+                // TODO: Log PEL
+                throw std::runtime_error(
+                    "VPD parsing failed for " + i_vpdFilePath +
+                    " due to error: " + l_ex.what() +
+                    ". Post Fail Action also failed, aborting collection for this FRU");
+            }
+        }
+
+        // TODO: Log PEL
+        throw std::runtime_error("VPD parsing failed for " + i_vpdFilePath +
+                                 " due to error: " + l_ex.what());
+    }
+}
+
+std::tuple<bool, std::string>
+    Worker::parseAndPublishVPD(const std::string& i_vpdFilePath)
+{
+    try
+    {
+        m_semaphore.acquire();
+
+        // Thread launched.
+        m_mutex.lock();
+        m_activeCollectionThreadCount++;
+        m_mutex.unlock();
+
+        const types::VPDMapVariant& parsedVpdMap = parseVpdFile(i_vpdFilePath);
+
+        types::ObjectMap objectInterfaceMap;
+        populateDbus(parsedVpdMap, objectInterfaceMap, i_vpdFilePath);
+
+        // logging::logMessage("Dbus sucessfully populated for FRU " +
+        //                     i_vpdFilePath);
+
+        // Notify PIM
+        if (!dbusUtility::callPIM(move(objectInterfaceMap)))
+        {
+            throw std::runtime_error(
+                "Call to PIM failed while publishing VPD.");
+        }
+    }
+    catch (const std::exception& ex)
+    {
+        // handle all the exceptions internally. Return only true/false
+        // based on status of execution.
+        if (typeid(ex) == std::type_index(typeid(DataException)))
+        {
+            // TODO: Add custom handling
+            logging::logMessage(ex.what());
+        }
+        else if (typeid(ex) == std::type_index(typeid(EccException)))
+        {
+            // TODO: Add custom handling
+            logging::logMessage(ex.what());
+        }
+        else if (typeid(ex) == std::type_index(typeid(JsonException)))
+        {
+            // TODO: Add custom handling
+            logging::logMessage(ex.what());
+        }
+        else
+        {
+            logging::logMessage(ex.what());
+        }
+
+        // TODO: Figure out a way to clear data in case of any failure at
+        // runtime.
+        //  Prime the inventry for FRUs which
+        //  are not present/processing had some error.
+        /* if (!primeInventory(i_vpdFilePath))
+         {
+             logging::logMessage("Priming of inventory failed for FRU " +
+                                 i_vpdFilePath);
+         }*/
+        m_semaphore.release();
+        return std::make_tuple(false, i_vpdFilePath);
+    }
+    m_semaphore.release();
+    return std::make_tuple(true, i_vpdFilePath);
+}
+
+void Worker::collectFrusFromJson()
+{
+    // A parsed JSON file should be present to pick FRUs EEPROM paths
+    if (m_parsedJson.empty())
+    {
+        throw std::runtime_error(
+            "A config JSON is required for processing of FRUs");
+    }
+
+    const nlohmann::json& listOfFrus =
+        m_parsedJson["frus"].get_ref<const nlohmann::json::object_t&>();
+
+    for (const auto& itemFRUS : listOfFrus.items())
+    {
+        const std::string& vpdFilePath = itemFRUS.key();
+
+        // skip processing of system VPD again as it has been already collected.
+        // Also, if chassis is powered on, skip collecting FRUs which are
+        // powerOffOnly.
+        // TODO: Need to revisit for P-Future to reduce code update time.
+        if (vpdFilePath == SYSTEM_VPD_FILE_PATH ||
+            (jsonUtility::isFruPowerOffOnly(m_parsedJson, vpdFilePath) &&
+             dbusUtility::isChassisPowerOn()))
+        {
+            continue;
+        }
+
+        std::thread{[vpdFilePath, this]() {
+            auto l_futureObject =
+                std::async(&Worker::parseAndPublishVPD, this, vpdFilePath);
+
+            std::tuple<bool, std::string> l_threadInfo = l_futureObject.get();
+
+            // thread returned.
+            m_mutex.lock();
+            m_activeCollectionThreadCount--;
+            m_mutex.unlock();
+
+            if (!m_activeCollectionThreadCount)
+            {
+                m_isAllFruCollected = true;
+            }
+        }}.detach();
+    }
+}
+
+// ToDo: Move the API under IBM_SYSTEM
+void Worker::performBackupAndRestore(types::VPDMapVariant& io_srcVpdMap)
+{
+    try
+    {
+        std::string l_backupAndRestoreCfgFilePath =
+            m_parsedJson.value("backupRestoreConfigPath", "");
+
+        nlohmann::json l_backupAndRestoreCfgJsonObj =
+            jsonUtility::getParsedJson(l_backupAndRestoreCfgFilePath);
+
+        // check if either of "source" or "destination" has inventory path.
+        // this indicates that this sytem has System VPD on hardware
+        // and other copy on D-Bus (BMC cache).
+        if (!l_backupAndRestoreCfgJsonObj.empty() &&
+            ((l_backupAndRestoreCfgJsonObj.contains("source") &&
+              l_backupAndRestoreCfgJsonObj["source"].contains(
+                  "inventoryPath")) ||
+             (l_backupAndRestoreCfgJsonObj.contains("destination") &&
+              l_backupAndRestoreCfgJsonObj["destination"].contains(
+                  "inventoryPath"))))
+        {
+            BackupAndRestore l_backupAndRestoreObj(m_parsedJson);
+            auto [l_srcVpdVariant,
+                  l_dstVpdVariant] = l_backupAndRestoreObj.backupAndRestore();
+
+            // ToDo: Revisit is this check is required or not.
+            if (auto l_srcVpdMap =
+                    std::get_if<types::IPZVpdMap>(&l_srcVpdVariant);
+                l_srcVpdMap && !(*l_srcVpdMap).empty())
+            {
+                io_srcVpdMap = std::move(l_srcVpdVariant);
+            }
+        }
+    }
+    catch (const std::exception& l_ex)
+    {
+        EventLogger::createSyncPel(
+            types::ErrorType::InvalidVpdMessage,
+            types::SeverityType::Informational, __FILE__, __FUNCTION__, 0,
+            std::string(
+                "Exception caught while backup and restore VPD keyword's.") +
+                l_ex.what(),
+            std::nullopt, std::nullopt, std::nullopt, std::nullopt);
+    }
+}
+
+void Worker::deleteFruVpd(const std::string& i_dbusObjPath)
+{
+    if (i_dbusObjPath.empty())
+    {
+        throw std::runtime_error("Given DBus object path is empty.");
+    }
+
+    const std::string& l_fruPath =
+        jsonUtility::getFruPathFromJson(m_parsedJson, i_dbusObjPath);
+
+    try
+    {
+        auto l_presentPropValue = dbusUtility::readDbusProperty(
+            constants::pimServiceName, i_dbusObjPath,
+            constants::inventoryItemInf, "Present");
+
+        if (auto l_value = std::get_if<bool>(&l_presentPropValue))
+        {
+            if (!(*l_value))
+            {
+                throw std::runtime_error("Given FRU is not present");
+            }
+            else
+            {
+                if (jsonUtility::isActionRequired(m_parsedJson, l_fruPath,
+                                                  "preAction", "deletion"))
+                {
+                    if (!processPreAction(l_fruPath, "deletion"))
+                    {
+                        throw std::runtime_error("Pre action failed");
+                    }
+                }
+
+                std::vector<std::string> l_interfaceList{
+                    constants::operationalStatusInf};
+
+                types::MapperGetSubTree l_subTreeMap =
+                    dbusUtility::getObjectSubTree(i_dbusObjPath, 0,
+                                                  l_interfaceList);
+
+                types::ObjectMap l_objectMap;
+
+                // Updates VPD specific interfaces property value under PIM for
+                // sub FRUs.
+                for (const auto& [l_objectPath, l_serviceInterfaceMap] :
+                     l_subTreeMap)
+                {
+                    types::InterfaceMap l_interfaceMap;
+                    vpdSpecificUtility::resetDataUnderPIM(l_objectPath,
+                                                          l_interfaceMap);
+                    l_objectMap.emplace(l_objectPath,
+                                        std::move(l_interfaceMap));
+                }
+
+                types::InterfaceMap l_interfaceMap;
+                vpdSpecificUtility::resetDataUnderPIM(i_dbusObjPath,
+                                                      l_interfaceMap);
+
+                l_objectMap.emplace(i_dbusObjPath, std::move(l_interfaceMap));
+
+                if (!dbusUtility::callPIM(std::move(l_objectMap)))
+                {
+                    throw std::runtime_error("Call to PIM failed.");
+                }
+
+                if (jsonUtility::isActionRequired(m_parsedJson, l_fruPath,
+                                                  "postAction", "deletion"))
+                {
+                    if (!processPostAction(l_fruPath, "deletion"))
+                    {
+                        throw std::runtime_error("Post action failed");
+                    }
+                }
+            }
+        }
+        else
+        {
+            logging::logMessage(
+                "Can't process delete VPD for FRU [" + i_dbusObjPath +
+                "] as unable to read present property");
+            return;
+        }
+
+        logging::logMessage(
+            "Successfully completed deletion of FRU VPD for " + i_dbusObjPath);
+    }
+    catch (const std::exception& l_ex)
+    {
+        if (jsonUtility::isActionRequired(m_parsedJson, l_fruPath,
+                                          "postFailAction", "deletion"))
+        {
+            if (!jsonUtility::executePostFailAction(m_parsedJson, l_fruPath,
+                                                    "deletion"))
+            {
+                logging::logMessage(
+                    "Post fail action failed for: " + i_dbusObjPath);
+            }
+        }
+
+        logging::logMessage("Failed to delete VPD for FRU : " + i_dbusObjPath +
+                            " error: " + std::string(l_ex.what()));
+    }
+}
+} // namespace vpd
diff --git a/vpd-parser/ipz_parser.cpp b/vpd-parser/ipz_parser.cpp
deleted file mode 100644
index bb4ee2f..0000000
--- a/vpd-parser/ipz_parser.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-#include "ipz_parser.hpp"
-
-#include "impl.hpp"
-
-namespace openpower
-{
-namespace vpd
-{
-namespace ipz
-{
-namespace parser
-{
-using namespace openpower::vpd::parser;
-using namespace openpower::vpd::constants;
-
-std::variant<kwdVpdMap, Store> IpzVpdParser::parse()
-{
-    Impl p(vpd, inventoryPath, vpdFilePath, vpdStartOffset);
-    Store s = p.run();
-    return s;
-}
-
-void IpzVpdParser::processHeader()
-{
-    Impl p(vpd, inventoryPath, vpdFilePath, vpdStartOffset);
-    p.checkVPDHeader();
-}
-
-std::string IpzVpdParser::getInterfaceName() const
-{
-    return ipzVpdInf;
-}
-
-} // namespace parser
-} // namespace ipz
-} // namespace vpd
-} // namespace openpower
diff --git a/vpd-parser/ipz_parser.hpp b/vpd-parser/ipz_parser.hpp
deleted file mode 100644
index c4a3e26..0000000
--- a/vpd-parser/ipz_parser.hpp
+++ /dev/null
@@ -1,83 +0,0 @@
-#pragma once
-
-#include "const.hpp"
-#include "parser_interface.hpp"
-#include "store.hpp"
-#include "types.hpp"
-
-#include <vector>
-
-namespace openpower
-{
-namespace vpd
-{
-namespace ipz
-{
-namespace parser
-{
-
-using ParserInterface = openpower::vpd::parser::interface::ParserInterface;
-using kwdVpdMap = openpower::vpd::inventory::KeywordVpdMap;
-
-class IpzVpdParser : public ParserInterface
-{
-  public:
-    IpzVpdParser() = delete;
-    IpzVpdParser(const IpzVpdParser&) = delete;
-    IpzVpdParser& operator=(const IpzVpdParser&) = delete;
-    IpzVpdParser(IpzVpdParser&&) = delete;
-    IpzVpdParser& operator=(IpzVpdParser&&) = delete;
-    ~IpzVpdParser() = default;
-
-    /**
-     * @brief Constructor
-     * @param[in] - VpdVector - vpd buffer
-     * @param[in] - path - Inventory Path
-     * @param[in] - vpdFilePath - VPD H/w path
-     * @param[in] - vpdStartOffset - VPD starting offset
-     */
-    IpzVpdParser(const Binary& VpdVector, const std::string& path,
-                 const std::string& vpdFilePath, uint32_t vpdStartOffset) :
-        vpd(VpdVector), inventoryPath(path), vpdFilePath(vpdFilePath),
-        vpdStartOffset(vpdStartOffset)
-    {}
-
-    /**
-     * @brief Parse the memory VPD binary data.
-     * Collects and emplace the keyword-value pairs in map.
-     *
-     * @return map of keyword:value
-     */
-    std::variant<kwdVpdMap, Store> parse();
-
-    /**
-     * @brief An api to return interface name with respect to
-     * the parser selected.
-     *
-     * @return - Interface name for that vpd type.
-     */
-    std::string getInterfaceName() const;
-
-    /** @brief API to check vpd header
-     *  @param [in] vpd - VPDheader in binary format
-     */
-    void processHeader();
-
-  private:
-    const Binary& vpd;
-
-    /*Inventory path of the FRU */
-    const std::string inventoryPath;
-
-    /* VPD Path */
-    const std::string vpdFilePath;
-
-    /* Offset */
-    uint32_t vpdStartOffset;
-
-}; // class IpzVpdParser
-
-} // namespace parser
-} // namespace ipz
-} // namespace vpd
-} // namespace openpower
diff --git a/vpd-parser/isdimm_vpd_parser.cpp b/vpd-parser/isdimm_vpd_parser.cpp
deleted file mode 100644
index 589dd68..0000000
--- a/vpd-parser/isdimm_vpd_parser.cpp
+++ /dev/null
@@ -1,397 +0,0 @@
-#include "isdimm_vpd_parser.hpp"
-
-#include <iostream>
-#include <numeric>
-#include <string>
-
-namespace openpower
-{
-namespace vpd
-{
-namespace isdimm
-{
-namespace parser
-{
-static constexpr auto SPD_JEDEC_DDR4_SDRAM_CAP_MASK = 0x0F;
-static constexpr auto SPD_JEDEC_DDR4_PRI_BUS_WIDTH_MASK = 0x07;
-static constexpr auto SPD_JEDEC_DDR4_SDRAM_WIDTH_MASK = 0x07;
-static constexpr auto SPD_JEDEC_DDR4_NUM_RANKS_MASK = 0x38;
-static constexpr auto SPD_JEDEC_DDR4_DIE_COUNT_MASK = 0x70;
-static constexpr auto SPD_JEDEC_DDR4_SINGLE_LOAD_STACK = 0x02;
-static constexpr auto SPD_JEDEC_DDR4_SIGNAL_LOADING_MASK = 0x03;
-
-static constexpr auto SPD_JEDEC_DDR4_SDRAMCAP_MULTIPLIER = 256;
-static constexpr auto SPD_JEDEC_DDR4_PRI_BUS_WIDTH_MULTIPLIER = 8;
-static constexpr auto SPD_JEDEC_DDR4_SDRAM_WIDTH_MULTIPLIER = 4;
-static constexpr auto SPD_JEDEC_DDR4_SDRAMCAP_RESERVED = 8;
-static constexpr auto SPD_JEDEC_DDR4_4_RESERVED_BITS = 4;
-static constexpr auto SPD_JEDEC_DDR4_3_RESERVED_BITS = 3;
-static constexpr auto SPD_JEDEC_DDR4_DIE_COUNT_RIGHT_SHIFT = 4;
-
-static constexpr auto SPD_JEDEC_DDR4_MFG_ID_MSB_OFFSET = 321;
-static constexpr auto SPD_JEDEC_DDR4_MFG_ID_LSB_OFFSET = 320;
-static constexpr auto SPD_JEDEC_DDR4_SN_BYTE0_OFFSET = 325;
-static constexpr auto SPD_JEDEC_DDR4_SN_BYTE1_OFFSET = 326;
-static constexpr auto SPD_JEDEC_DDR4_SN_BYTE2_OFFSET = 327;
-static constexpr auto SPD_JEDEC_DDR4_SN_BYTE3_OFFSET = 328;
-static constexpr auto SPD_JEDEC_DDR4_SDRAM_DENSITY_BANK_OFFSET = 4;
-static constexpr auto SPD_JEDEC_DDR4_SDRAM_ADDR_OFFSET = 5;
-static constexpr auto SPD_JEDEC_DDR4_DRAM_PRI_PACKAGE_OFFSET = 6;
-static constexpr auto SPD_JEDEC_DDR4_DRAM_MODULE_ORG_OFFSET = 12;
-static constexpr auto SPD_JEDEC_DDR4_DRAM_MANUFACTURER_ID_OFFSET = 320;
-static constexpr auto SPD_JEDEC_DRAM_MANUFACTURER_ID_LENGTH = 2;
-
-// DDR5 JEDEC specification constants
-static constexpr auto SPD_JEDEC_DDR5_SUB_CHANNELS_PER_DIMM = 235;
-static constexpr auto SPD_JEDEC_DDR5_SUB_CHANNELS_PER_DIMM_MASK = 0x60;
-static constexpr auto SPD_JEDEC_DDR5_PRI_BUS_WIDTH_PER_CHANNEL = 235;
-static constexpr auto SPD_JEDEC_DDR5_PRI_BUS_WIDTH_PER_CHANNEL_MASK = 0x07;
-static constexpr auto SPD_JEDEC_DDR5_SDRAM_IO_WIDTH_SYM_ALL = 6;
-static constexpr auto SPD_JEDEC_DDR5_SDRAM_IO_WIDTH_ASYM_EVEN = 6;
-static constexpr auto SPD_JEDEC_DDR5_SDRAM_IO_WIDTH_ASYM_ODD = 10;
-static constexpr auto SPD_JEDEC_DDR5_SDRAM_IO_WIDTH_MASK = 0xE0;
-static constexpr auto SPD_JEDEC_DDR5_DIE_PER_PKG_SYM_ALL = 4;
-static constexpr auto SPD_JEDEC_DDR5_DIE_PER_PKG_ASYM_EVEN = 4;
-static constexpr auto SPD_JEDEC_DDR5_DIE_PER_PKG_ASYM_ODD = 8;
-static constexpr auto SPD_JEDEC_DDR5_DIE_PER_PKG_MASK = 0xE0;
-static constexpr auto SPD_JEDEC_DDR5_SDRAM_DENSITY_PER_DIE_SYM_ALL = 4;
-static constexpr auto SPD_JEDEC_DDR5_SDRAM_DENSITY_PER_DIE_ASYM_EVEN = 4;
-static constexpr auto SPD_JEDEC_DDR5_SDRAM_DENSITY_PER_DIE_ASYM_ODD = 8;
-static constexpr auto SPD_JEDEC_DDR5_SDRAM_DENSITY_PER_DIE_MASK = 0x1F;
-static constexpr auto SPD_JEDEC_DDR5_RANK_MIX = 234;
-static constexpr auto SPD_JEDEC_DDR5_RANK_MIX_SYMMETRICAL_MASK = 0x40;
-static constexpr auto SPD_JEDEC_DDR5_DRAM_MANUFACTURER_ID_OFFSET = 552;
-
-auto isdimmVpdParser::getDDR4DimmCapacity(Binary::const_iterator& iterator)
-{
-    size_t tmp = 0, dimmSize = 0;
-
-    size_t sdramCap = 1, priBusWid = 1, sdramWid = 1, logicalRanksPerDimm = 1;
-    Byte dieCount = 1;
-
-    // NOTE: This calculation is Only for DDR4
-
-    // Calculate SDRAM  capacity
-    tmp = iterator[constants::SPD_BYTE_4] & SPD_JEDEC_DDR4_SDRAM_CAP_MASK;
-    /* Make sure the bits are not Reserved */
-    if (tmp >= SPD_JEDEC_DDR4_SDRAMCAP_RESERVED)
-    {
-        std::cerr
-            << "Bad data in spd byte 4. Can't calculate SDRAM capacity and so "
-               "dimm size.\n ";
-        return dimmSize;
-    }
-
-    sdramCap = (sdramCap << tmp) * SPD_JEDEC_DDR4_SDRAMCAP_MULTIPLIER;
-
-    /* Calculate Primary bus width */
-    tmp = iterator[constants::SPD_BYTE_13] & SPD_JEDEC_DDR4_PRI_BUS_WIDTH_MASK;
-    if (tmp >= SPD_JEDEC_DDR4_4_RESERVED_BITS)
-    {
-        std::cerr
-            << "Bad data in spd byte 13. Can't calculate primary bus width "
-               "and so dimm size.\n ";
-        return dimmSize;
-    }
-    priBusWid = (priBusWid << tmp) * SPD_JEDEC_DDR4_PRI_BUS_WIDTH_MULTIPLIER;
-
-    /* Calculate SDRAM width */
-    tmp = iterator[constants::SPD_BYTE_12] & SPD_JEDEC_DDR4_SDRAM_WIDTH_MASK;
-    if (tmp >= SPD_JEDEC_DDR4_4_RESERVED_BITS)
-    {
-        std::cerr
-            << "Bad data in vpd byte 12. Can't calculate SDRAM width and so "
-               "dimm size.\n ";
-        return dimmSize;
-    }
-    sdramWid = (sdramWid << tmp) * SPD_JEDEC_DDR4_SDRAM_WIDTH_MULTIPLIER;
-
-    tmp = iterator[constants::SPD_BYTE_6] & SPD_JEDEC_DDR4_SIGNAL_LOADING_MASK;
-
-    if (tmp == SPD_JEDEC_DDR4_SINGLE_LOAD_STACK)
-    {
-        // Fetch die count
-        tmp = iterator[constants::SPD_BYTE_6] & SPD_JEDEC_DDR4_DIE_COUNT_MASK;
-        tmp >>= SPD_JEDEC_DDR4_DIE_COUNT_RIGHT_SHIFT;
-        dieCount = tmp + 1;
-    }
-
-    /* Calculate Number of ranks */
-    tmp = iterator[constants::SPD_BYTE_12] & SPD_JEDEC_DDR4_NUM_RANKS_MASK;
-    tmp >>= SPD_JEDEC_DDR4_3_RESERVED_BITS;
-
-    if (tmp >= SPD_JEDEC_DDR4_4_RESERVED_BITS)
-    {
-        std::cerr << "Can't calculate number of ranks. Invalid data found.\n ";
-        return dimmSize;
-    }
-    logicalRanksPerDimm = (tmp + 1) * dieCount;
-
-    dimmSize = (sdramCap / SPD_JEDEC_DDR4_PRI_BUS_WIDTH_MULTIPLIER) *
-               (priBusWid / sdramWid) * logicalRanksPerDimm;
-
-    return dimmSize;
-}
-
-auto isdimmVpdParser::getDDR4PartNumber(Binary::const_iterator& iterator)
-{
-    char tmpPN[constants::PART_NUM_LEN + 1] = {'\0'};
-    sprintf(tmpPN, "%02X%02X%02X%X",
-            iterator[SPD_JEDEC_DDR4_SDRAM_DENSITY_BANK_OFFSET],
-            iterator[SPD_JEDEC_DDR4_SDRAM_ADDR_OFFSET],
-            iterator[SPD_JEDEC_DDR4_DRAM_PRI_PACKAGE_OFFSET],
-            iterator[SPD_JEDEC_DDR4_DRAM_MODULE_ORG_OFFSET] & 0x0F);
-    std::string partNumber(tmpPN, sizeof(tmpPN) - 1);
-    return partNumber;
-}
-
-auto isdimmVpdParser::getDDR4SerialNumber(Binary::const_iterator& iterator)
-{
-    char tmpSN[constants::SERIAL_NUM_LEN + 1] = {'\0'};
-    sprintf(tmpSN, "%02X%02X%02X%02X%02X%02X",
-            iterator[SPD_JEDEC_DDR4_MFG_ID_MSB_OFFSET],
-            iterator[SPD_JEDEC_DDR4_MFG_ID_LSB_OFFSET],
-            iterator[SPD_JEDEC_DDR4_SN_BYTE0_OFFSET],
-            iterator[SPD_JEDEC_DDR4_SN_BYTE1_OFFSET],
-            iterator[SPD_JEDEC_DDR4_SN_BYTE2_OFFSET],
-            iterator[SPD_JEDEC_DDR4_SN_BYTE3_OFFSET]);
-    std::string serialNumber(tmpSN, sizeof(tmpSN) - 1);
-    return serialNumber;
-}
-
-auto isdimmVpdParser::getDDR4FruNumber(const std::string& partNumber,
-                                       Binary::const_iterator& iterator)
-{
-    // check for 128GB ISRDIMM not implemented
-    //(128GB 2RX4(8GX72) IS RDIMM 36*(16GBIT, 2H),1.2V 288PIN,1.2" ROHS) - NA
-
-    // MTB Units is used in deciding the frequency of the DIMM
-    // This is applicable only for DDR4 specification
-    // 10 - DDR4-1600
-    // 9  - DDR4-1866
-    // 8  - DDR4-2133
-    // 7  - DDR4-2400
-    // 6  - DDR4-2666
-    // 5  - DDR4-3200
-    // pnFreqFnMap < tuple <partNumber, MTBUnits>, fruNumber>
-    static std::map<std::tuple<std::string, uint8_t>, std::string> pnFreqFnMap =
-        {{std::make_tuple("8421000", 6), "78P4191"},
-         {std::make_tuple("8421008", 6), "78P4192"},
-         {std::make_tuple("8529000", 6), "78P4197"},
-         {std::make_tuple("8529008", 6), "78P4198"},
-         {std::make_tuple("8529928", 6), "78P4199"},
-         {std::make_tuple("8529B28", 6), "78P4200"},
-         {std::make_tuple("8631928", 6), "78P6925"},
-         {std::make_tuple("8529000", 5), "78P7317"},
-         {std::make_tuple("8529008", 5), "78P7318"},
-         {std::make_tuple("8631008", 5), "78P6815"}};
-
-    std::string fruNumber;
-    uint8_t mtbUnits = iterator[openpower::vpd::constants::SPD_BYTE_18] &
-                       openpower::vpd::constants::SPD_BYTE_MASK;
-    std::tuple<std::string, uint8_t> tup_key = {partNumber, mtbUnits};
-    auto itr = pnFreqFnMap.find(tup_key);
-    if (itr != pnFreqFnMap.end())
-    {
-        fruNumber = itr->second;
-    }
-    else
-    {
-        fruNumber = "FFFFFFF";
-    }
-    return fruNumber;
-}
-
-auto isdimmVpdParser::getDDR4CCIN(const std::string& fruNumber)
-{
-    static std::unordered_map<std::string, std::string> pnCCINMap = {
-        {"78P4191", "324D"}, {"78P4192", "324E"}, {"78P4197", "324E"},
-        {"78P4198", "324F"}, {"78P4199", "325A"}, {"78P4200", "324C"},
-        {"78P6925", "32BC"}, {"78P7317", "331A"}, {"78P7318", "331F"},
-        {"78P6815", "32BB"}};
-
-    std::string ccin;
-    auto itr = pnCCINMap.find(fruNumber);
-    if (itr != pnCCINMap.end())
-    {
-        ccin = itr->second;
-    }
-    else
-    {
-        ccin = "XXXX";
-    }
-    return ccin;
-}
-
-auto isdimmVpdParser::getDDR4ManufacturerId()
-{
-    Binary mfgId(SPD_JEDEC_DRAM_MANUFACTURER_ID_LENGTH);
-
-    if (memVpd.size() < (SPD_JEDEC_DDR4_DRAM_MANUFACTURER_ID_OFFSET +
-                         SPD_JEDEC_DRAM_MANUFACTURER_ID_LENGTH))
-    {
-        std::cout
-            << "VPD length is less than the offset of Manufacturer ID. Can't fetch it"
-            << std::endl;
-        return mfgId;
-    }
-
-    std::copy_n((memVpd.cbegin() + SPD_JEDEC_DDR4_DRAM_MANUFACTURER_ID_OFFSET),
-                SPD_JEDEC_DRAM_MANUFACTURER_ID_LENGTH, mfgId.begin());
-
-    return mfgId;
-}
-
-auto isdimmVpdParser::getDDR5DimmCapacity(Binary::const_iterator& iterator)
-{
-    // dummy implementation to be updated when required
-    size_t dimmSize = 0;
-    (void)iterator;
-    return dimmSize;
-}
-
-auto isdimmVpdParser::getDDR5PartNumber(Binary::const_iterator& iterator)
-{
-    // dummy implementation to be updated when required
-    std::string partNumber;
-    (void)iterator;
-    partNumber = "0123456";
-    return partNumber;
-}
-
-auto isdimmVpdParser::getDDR5SerialNumber(Binary::const_iterator& iterator)
-{
-    // dummy implementation to be updated when required
-    std::string serialNumber;
-    (void)iterator;
-    serialNumber = "444444444444";
-    return serialNumber;
-}
-
-auto isdimmVpdParser::getDDR5FruNumber(const std::string& partNumber)
-{
-    // dummy implementation to be updated when required
-    static std::unordered_map<std::string, std::string> pnFruMap = {
-        {"1234567", "XXXXXXX"}};
-
-    std::string fruNumber;
-    auto itr = pnFruMap.find(partNumber);
-    if (itr != pnFruMap.end())
-    {
-        fruNumber = itr->second;
-    }
-    else
-    {
-        fruNumber = "FFFFFFF";
-    }
-    return fruNumber;
-}
-
-auto isdimmVpdParser::getDDR5CCIN(const std::string& partNumber)
-{
-    // dummy implementation to be updated when required
-    static std::unordered_map<std::string, std::string> pnCCINMap = {
-        {"1234567", "XXXX"}};
-
-    std::string ccin;
-    auto itr = pnCCINMap.find(partNumber);
-    if (itr != pnCCINMap.end())
-    {
-        ccin = itr->second;
-    }
-    else
-    {
-        ccin = "XXXX";
-    }
-    return ccin;
-}
-
-auto isdimmVpdParser::getDDR5ManufacturerId()
-{
-    Binary mfgId(SPD_JEDEC_DRAM_MANUFACTURER_ID_LENGTH);
-
-    if (memVpd.size() < (SPD_JEDEC_DDR5_DRAM_MANUFACTURER_ID_OFFSET +
-                         SPD_JEDEC_DRAM_MANUFACTURER_ID_LENGTH))
-    {
-        std::cout
-            << "VPD length is less than the offset of Manufacturer ID. Can't fetch it"
-            << std::endl;
-        return mfgId;
-    }
-
-    std::copy_n((memVpd.cbegin() + SPD_JEDEC_DDR5_DRAM_MANUFACTURER_ID_OFFSET),
-                SPD_JEDEC_DRAM_MANUFACTURER_ID_LENGTH, mfgId.begin());
-
-    return mfgId;
-}
-
-kwdVpdMap isdimmVpdParser::readKeywords(Binary::const_iterator& iterator)
-{
-    inventory::KeywordVpdMap keywordValueMap{};
-    if ((iterator[constants::SPD_BYTE_2] & constants::SPD_BYTE_MASK) ==
-        constants::SPD_DRAM_TYPE_DDR5)
-    {
-        size_t dimmSize = getDDR5DimmCapacity(iterator);
-        if (!dimmSize)
-        {
-            std::cerr << "Error: Calculated dimm size is 0.";
-        }
-        else
-        {
-            keywordValueMap.emplace("MemorySizeInKB", dimmSize);
-        }
-        auto partNumber = getDDR5PartNumber(iterator);
-        auto fruNumber = getDDR5FruNumber(partNumber);
-        keywordValueMap.emplace("FN", move(fruNumber));
-        auto serialNumber = getDDR5SerialNumber(iterator);
-        keywordValueMap.emplace("SN", move(serialNumber));
-        auto ccin = getDDR5CCIN(partNumber);
-        keywordValueMap.emplace("CC", move(ccin));
-        keywordValueMap.emplace("PN", move(partNumber));
-        auto mfgID = getDDR5ManufacturerId();
-        keywordValueMap.emplace("DI", move(mfgID));
-    }
-    else if ((iterator[constants::SPD_BYTE_2] & constants::SPD_BYTE_MASK) ==
-             constants::SPD_DRAM_TYPE_DDR4)
-    {
-        size_t dimmSize = getDDR4DimmCapacity(iterator);
-        if (!dimmSize)
-        {
-            std::cerr << "Error: Calculated dimm size is 0.";
-        }
-        else
-        {
-            keywordValueMap.emplace("MemorySizeInKB",
-                                    (dimmSize * constants::CONVERT_MB_TO_KB));
-        }
-
-        auto partNumber = getDDR4PartNumber(iterator);
-        auto fruNumber = getDDR4FruNumber(partNumber, iterator);
-        auto serialNumber = getDDR4SerialNumber(iterator);
-        auto ccin = getDDR4CCIN(fruNumber);
-        auto mfgID = getDDR4ManufacturerId();
-
-        // PN value is made same as FN value
-        auto displayPartNumber = fruNumber;
-        keywordValueMap.emplace("PN", move(displayPartNumber));
-        keywordValueMap.emplace("FN", move(fruNumber));
-        keywordValueMap.emplace("SN", move(serialNumber));
-        keywordValueMap.emplace("CC", move(ccin));
-        keywordValueMap.emplace("DI", move(mfgID));
-    }
-    return keywordValueMap;
-}
-
-std::variant<kwdVpdMap, Store> isdimmVpdParser::parse()
-{
-    // Read the data and return the map
-    auto iterator = memVpd.cbegin();
-    auto vpdDataMap = readKeywords(iterator);
-
-    return vpdDataMap;
-}
-
-} // namespace parser
-} // namespace isdimm
-} // namespace vpd
-} // namespace openpower
diff --git a/vpd-parser/isdimm_vpd_parser.hpp b/vpd-parser/isdimm_vpd_parser.hpp
deleted file mode 100644
index 8270884..0000000
--- a/vpd-parser/isdimm_vpd_parser.hpp
+++ /dev/null
@@ -1,167 +0,0 @@
-#pragma once
-
-#include "impl.hpp"
-#include "parser_interface.hpp"
-#include "types.hpp"
-
-namespace openpower
-{
-namespace vpd
-{
-namespace isdimm
-{
-namespace parser
-{
-using ParserInterface = openpower::vpd::parser::interface::ParserInterface;
-using kwdVpdMap = inventory::KeywordVpdMap;
-
-class isdimmVpdParser : public ParserInterface
-{
-  public:
-    isdimmVpdParser() = delete;
-    isdimmVpdParser(const isdimmVpdParser&) = delete;
-    isdimmVpdParser& operator=(const isdimmVpdParser&) = delete;
-    isdimmVpdParser(isdimmVpdParser&&) = delete;
-    isdimmVpdParser& operator=(isdimmVpdParser&&) = delete;
-    ~isdimmVpdParser() = default;
-
-    /**
-     * @brief Constructor
-     *
-     * Move memVpdVector to parser object's memVpdVector
-     */
-    isdimmVpdParser(const Binary& VpdVector) : memVpd(VpdVector) {}
-
-    /**
-     * @brief Parse the memory SPD binary data.
-     * Collects and emplace the keyword-value pairs in map.
-     *
-     * @return map of keyword:value
-     */
-    std::variant<kwdVpdMap, Store> parse();
-
-    /**
-     * @brief An api to return interface name with respect to
-     * published data on cache
-     *
-     * @return - Interface name for that vpd type.
-     */
-    std::string getInterfaceName() const;
-
-  private:
-    /**
-     * @brief An api to read keywords.
-     *
-     * @return- map of kwd:value
-     */
-    kwdVpdMap readKeywords(Binary::const_iterator& iterator);
-
-    /**
-     * @brief This function calculates DIMM size from SPD
-     *
-     * @param[in] iterator - iterator to buffer containing SPD
-     * @return calculated data or 0 in case of any error.
-     */
-    auto getDDR4DimmCapacity(Binary::const_iterator& iterator);
-
-    /**
-     * @brief This function calculates part number from SPD
-     *
-     * @param[in] iterator - iterator to buffer containing SPD
-     * @return calculated part number.
-     */
-    auto getDDR4PartNumber(Binary::const_iterator& iterator);
-
-    /**
-     * @brief This function calculates serial number from SPD
-     *
-     * @param[in] iterator - iterator to buffer containing SPD
-     * @return calculated serial number.
-     */
-    auto getDDR4SerialNumber(Binary::const_iterator& iterator);
-
-    /**
-     * @brief This function allocates FRU number based on part number
-     *
-     * @param[in] partNumber - part number of the DIMM
-     * @param[in] iterator - iterator to buffer containing SPD
-     * @return allocated FRU number.
-     */
-    auto getDDR4FruNumber(const std::string& partNumber,
-                          Binary::const_iterator& iterator);
-
-    /**
-     * @brief This function allocates CCIN based on part number
-     *
-     * @param[in] partNumber - part number of the DIMM
-     * @return allocated CCIN.
-     */
-    auto getDDR4CCIN(const std::string& partNumber);
-
-    /**
-     * @brief The function fetches manufacturer's ID of DIMM.
-     *
-     * @return manufacturer ID.
-     */
-    auto getDDR4ManufacturerId();
-
-    /**
-     * @brief This function calculates DIMM size from SPD
-     *
-     * @param[in] iterator - iterator to buffer containing SPD
-     * @return calculated data or 0 in case of any error.
-     */
-    auto getDDR5DimmCapacity(Binary::const_iterator& iterator);
-
-    /**
-     * @brief This function calculates part number from SPD
-     *
-     * @param[in] iterator - iterator to buffer containing SPD
-     * @return calculated part number.
-     */
-    auto getDDR5PartNumber(Binary::const_iterator& iterator);
-
-    /**
-     * @brief This function calculates serial number from SPD
-     *
-     * @param[in] iterator - iterator to buffer containing SPD
-     * @return calculated serial number.
-     */
-    auto getDDR5SerialNumber(Binary::const_iterator& iterator);
-
-    /**
-     * @brief This function allocates FRU number based on part number
-     *
-     * @param[in] partNumber - part number of the DIMM
-     * @return allocated FRU number.
-     */
-    auto getDDR5FruNumber(const std::string& partNumber);
-
-    /**
-     * @brief This function allocates CCIN based on part number
-     *
-     * @param[in] partNumber - part number of the DIMM
-     * @return allocated CCIN.
-     */
-    auto getDDR5CCIN(const std::string& partNumber);
-
-    /**
-     * @brief The function fetches manufacturer's ID of DIMM.
-     *
-     * @return manufacturer ID.
-     */
-    auto getDDR5ManufacturerId();
-
-    // vdp file to be parsed
-    const Binary& memVpd;
-};
-
-inline std::string isdimmVpdParser::getInterfaceName() const
-{
-    return constants::memVpdInf;
-}
-
-} // namespace parser
-} // namespace isdimm
-} // namespace vpd
-} // namespace openpower
diff --git a/vpd-parser/keyword_vpd_parser.cpp b/vpd-parser/keyword_vpd_parser.cpp
deleted file mode 100644
index b335c07..0000000
--- a/vpd-parser/keyword_vpd_parser.cpp
+++ /dev/null
@@ -1,216 +0,0 @@
-#include "keyword_vpd_parser.hpp"
-
-#include "const.hpp"
-
-#include <iostream>
-#include <numeric>
-#include <string>
-
-using namespace openpower::vpd::constants;
-using namespace openpower::vpd::inventory;
-using namespace std;
-using namespace openpower::vpd;
-
-namespace vpd
-{
-namespace keyword
-{
-namespace parser
-{
-
-variant<KeywordVpdMap, store> KeywordVpdParser::parse()
-{
-    int kwVpdType;
-
-    validateLargeResourceIdentifierString();
-
-    kwVpdType = validateTheTypeOfKwVpd();
-
-    auto kwValMap = kwValParser();
-
-    // Do not process these two functions for bono type VPD
-    if (!kwVpdType)
-    {
-        validateSmallResourceTypeEnd();
-
-        validateChecksum();
-    }
-
-    validateSmallResourceTypeLastEnd();
-
-#ifdef DEBUG_KW_VPD
-    cerr << '\n' << " KW " << '\t' << "  VALUE " << '\n';
-    for (const auto& it : kwValMap)
-    {
-        cerr << '\n' << " " << it->first << '\t';
-        copy((it->second).begin(), (it->second).end(),
-             ostream_iterator<int>(cout << hex, " "));
-    }
-#endif
-
-    return kwValMap;
-}
-
-void KeywordVpdParser::validateLargeResourceIdentifierString()
-{
-    kwVpdIterator = keywordVpdVector.begin();
-
-    // Check for large resource type identifier string
-    if (*kwVpdIterator != KW_VPD_START_TAG)
-    {
-        throw std::runtime_error(
-            "Invalid Large resource type Identifier String");
-    }
-
-    itrOutOfBoundCheck(1);
-    advance(kwVpdIterator, sizeof(KW_VPD_START_TAG));
-}
-
-int KeywordVpdParser::validateTheTypeOfKwVpd()
-{
-    size_t dataSize = getKwDataSize();
-
-    itrOutOfBoundCheck(TWO_BYTES + dataSize);
-
-#ifdef DEBUG_KW_VPD
-    auto dsDeb = dataSize;
-    auto itDeb = kwVpdIterator + TWO_BYTES;
-    std::cout << '\n' << '\t';
-    while (dsDeb != 0)
-    {
-        std::cout << *itDeb;
-        itDeb++;
-        dsDeb--;
-    }
-    std::cout << '\n';
-#endif
-
-    // +TWO_BYTES is the description's size byte
-    std::advance(kwVpdIterator, TWO_BYTES + dataSize);
-
-    int kwVpdType = 0;
-    // Check for invalid vendor defined large resource type
-    if (*kwVpdIterator != KW_VAL_PAIR_START_TAG)
-    {
-        if (*kwVpdIterator != ALT_KW_VAL_PAIR_START_TAG)
-        {
-            throw std::runtime_error("Invalid Keyword Value Pair Start Tag");
-        }
-        // Bono vpd referred as 1
-        kwVpdType = 1;
-    }
-    return kwVpdType;
-}
-
-KeywordVpdMap KeywordVpdParser::kwValParser()
-{
-    int totalSize = 0;
-    KeywordVpdMap kwValMap;
-
-    checkSumStart = kwVpdIterator;
-
-    itrOutOfBoundCheck(1);
-    kwVpdIterator++;
-
-    // Get the total length of all keyword value pairs
-    totalSize = getKwDataSize();
-
-    if (totalSize == 0)
-    {
-        throw std::runtime_error("Badly formed keyword VPD data");
-    }
-
-    itrOutOfBoundCheck(TWO_BYTES);
-    std::advance(kwVpdIterator, TWO_BYTES);
-
-    // Parse the keyword-value and store the pairs in map
-    while (totalSize > 0)
-    {
-        std::string kwStr(kwVpdIterator, kwVpdIterator + TWO_BYTES);
-
-        totalSize -= TWO_BYTES;
-        itrOutOfBoundCheck(TWO_BYTES);
-        std::advance(kwVpdIterator, TWO_BYTES);
-
-        size_t kwSize = *kwVpdIterator;
-
-        itrOutOfBoundCheck(1);
-        kwVpdIterator++;
-
-        std::vector<uint8_t> valVec(kwVpdIterator, kwVpdIterator + kwSize);
-
-        itrOutOfBoundCheck(kwSize);
-        std::advance(kwVpdIterator, kwSize);
-
-        totalSize -= kwSize + 1;
-
-        kwValMap.emplace(std::make_pair(std::move(kwStr), std::move(valVec)));
-    }
-
-    checkSumEnd = kwVpdIterator - 1;
-
-    return kwValMap;
-}
-
-void KeywordVpdParser::validateSmallResourceTypeEnd()
-{
-    // Check for small resource type end tag
-    if (*kwVpdIterator != KW_VAL_PAIR_END_TAG)
-    {
-        throw std::runtime_error("Invalid Small resource type End");
-    }
-}
-
-void KeywordVpdParser::validateChecksum()
-{
-    uint8_t checkSum = 0;
-
-    // Checksum calculation
-    checkSum = std::accumulate(checkSumStart, checkSumEnd + 1, checkSum);
-    checkSum = ~checkSum + 1;
-
-    if (checkSum != *(kwVpdIterator + 1))
-    {
-        throw std::runtime_error("Invalid Check sum");
-    }
-#ifdef DEBUG_KW_VPD
-    std::cout << "\nCHECKSUM : " << std::hex << static_cast<int>(checkSum)
-              << std::endl;
-#endif
-
-    itrOutOfBoundCheck(TWO_BYTES);
-    std::advance(kwVpdIterator, TWO_BYTES);
-}
-
-void KeywordVpdParser::validateSmallResourceTypeLastEnd()
-{
-    // Check for small resource type last end of data
-    if (*kwVpdIterator != KW_VPD_END_TAG)
-    {
-        throw std::runtime_error(
-            "Invalid Small resource type Last End Of Data");
-    }
-}
-
-size_t KeywordVpdParser::getKwDataSize()
-{
-    return (*(kwVpdIterator + 1) << 8 | *kwVpdIterator);
-}
-
-void KeywordVpdParser::itrOutOfBoundCheck(uint8_t incVar)
-{
-    if ((std::distance(keywordVpdVector.begin(), kwVpdIterator + incVar)) >
-        std::distance(keywordVpdVector.begin(), keywordVpdVector.end()))
-    {
-        throw std::runtime_error("Badly formed VPD data");
-    }
-}
-
-std::string KeywordVpdParser::getInterfaceName() const
-{
-    return kwdVpdInf;
-}
-
-} // namespace parser
-} // namespace keyword
-} // namespace vpd
diff --git a/vpd-parser/keyword_vpd_parser.hpp b/vpd-parser/keyword_vpd_parser.hpp
deleted file mode 100644
index 6b02961..0000000
--- a/vpd-parser/keyword_vpd_parser.hpp
+++ /dev/null
@@ -1,143 +0,0 @@
-#pragma once
-
-#include "parser_interface.hpp"
-#include "types.hpp"
-
-namespace vpd
-{
-namespace keyword
-{
-namespace parser
-{
-
-using ParserInterface = openpower::vpd::parser::interface::ParserInterface;
-using kwdVpdMap = openpower::vpd::inventory::KeywordVpdMap;
-using store = openpower::vpd::Store;
-
-/**
- * @class KeywordVpdParser
- * @brief Implements parser for Keyword VPD
- *
- * KeywordVpdParser object must be constructed by passing in
- * Keyword VPD in binary format. To parse the VPD, call the
- * kwVpdParser() method. The kwVpdParser() method returns
- * a map of keyword-value pairs.
- *
- * Following is the algorithm used to parse Keyword VPD data:
- * 1) Validate if the first byte is 'largeResourceIdentifierString'.
- * 2) Validate the byte after the description is 'vendor defined large resource
- * type tag'.
- * 3) For each keyword-value pairs :
- * 	3.1) Parse the 2 byte length keyword and emplace it in the map as 'key'.
- * 	3.2) Parse over the value bytes corresponding to the keyword and
- * 	     emplace it in the map as 'value' for the key inserted in 3.1.
- * 4) Validate the byte before checksum byte is 'small resource type end tag'.
- * 5) Validate the checksum.
- * 6) Validate the 'small resource type last end tag'.
- * 7) Return the keyword-value map.
- */
-class KeywordVpdParser : public ParserInterface
-{
-  public:
-    KeywordVpdParser() = delete;
-    KeywordVpdParser(const KeywordVpdParser&) = delete;
-    KeywordVpdParser(KeywordVpdParser&&) = delete;
-    ~KeywordVpdParser() = default;
-
-    /**
-     * @brief Constructor
-     *
-     * Move kwVpdVector to parser object's kwVpdVector
-     */
-    KeywordVpdParser(const openpower::vpd::Binary& kwVpdVector) :
-        keywordVpdVector(kwVpdVector)
-    {}
-
-    /**
-     * @brief Parse the keyword VPD binary data.
-     * Calls the sub functions to emplace the
-     * keyword-value pairs in map and to validate
-     * certain tags and checksum data.
-     *
-     * @return map of keyword:value
-     */
-    std::variant<kwdVpdMap, store> parse();
-
-    /**
-     * @brief An api to return interface name with respect to
-     * the parser selected.
-     *
-     * @return - Interface name for that vpd type.
-     */
-    std::string getInterfaceName() const;
-
-  private:
-    openpower::vpd::Binary::const_iterator
-        checkSumStart;    //!< Pointer to the start byte from where
-                          //!< the checksum need to be calculated
-    openpower::vpd::Binary::const_iterator
-        checkSumEnd;      //!< Pointer to the end byte until which the
-                          //!< checksum need to be calculated
-    openpower::vpd::Binary::const_iterator
-        kwVpdIterator;    //!< Iterator to parse the vector
-    const openpower::vpd::Binary&
-        keywordVpdVector; //!< Vector which stores keyword VPD data
-
-    /**
-     * @brief Validate the large resource identifier string
-     */
-    void validateLargeResourceIdentifierString();
-
-    /**
-     * @brief Validate the type of keyword VPD
-     *
-     * @return integer representing the type of kw VPD.
-     */
-    int validateTheTypeOfKwVpd();
-
-    /**
-     * @brief Parsing keyword-value pairs and emplace into Map.
-     *
-     * @return map of keyword:value
-     */
-    openpower::vpd::inventory::KeywordVpdMap kwValParser();
-
-    /**
-     * @brief Validate small resource type end tag
-     */
-    void validateSmallResourceTypeEnd();
-
-    /**
-     * @brief Validate checksum.
-     *
-     * Finding the 2's complement of sum of all the
-     * keywords,values and large resource identifier string.
-     */
-    void validateChecksum();
-
-    /**
-     * @brief Validate small resource type last end tag
-     */
-    void validateSmallResourceTypeLastEnd();
-
-    /**
-     * @brief Get the size of the keyword
-     *
-     * @return one byte length size data
-     */
-    size_t getKwDataSize();
-
-    /**
-     * @brief Check for iterator Out of Bound exception
-     *
-     * Check if no.of elements from (beginning of the vector) to (iterator +
-     * incVar) is lesser than or equal to the total no.of elements in the
-     * vector. This check is performed before the advancement of the iterator.
-     *
-     * @param[incVar] - no.of positions the iterator is going to be iterated
-     */
-    void itrOutOfBoundCheck(uint8_t incVar);
-};
-} // namespace parser
-} // namespace keyword
-} // namespace vpd
diff --git a/vpd-parser/memory_vpd_parser.cpp b/vpd-parser/memory_vpd_parser.cpp
deleted file mode 100644
index 4a0ac7c..0000000
--- a/vpd-parser/memory_vpd_parser.cpp
+++ /dev/null
@@ -1,400 +0,0 @@
-#include "memory_vpd_parser.hpp"
-
-#include <cmath>
-#include <cstdint>
-#include <iostream>
-#include <numeric>
-#include <string>
-
-namespace openpower
-{
-namespace vpd
-{
-namespace memory
-{
-namespace parser
-{
-using namespace inventory;
-using namespace constants;
-using namespace std;
-using namespace openpower::vpd::parser;
-
-static constexpr auto JEDEC_SDRAM_CAP_MASK = 0x0F;
-static constexpr auto JEDEC_PRI_BUS_WIDTH_MASK = 0x07;
-static constexpr auto JEDEC_SDRAM_WIDTH_MASK = 0x07;
-static constexpr auto JEDEC_NUM_RANKS_MASK = 0x38;
-static constexpr auto JEDEC_DIE_COUNT_MASK = 0x70;
-static constexpr auto JEDEC_SINGLE_LOAD_STACK = 0x02;
-static constexpr auto JEDEC_SIGNAL_LOADING_MASK = 0x03;
-
-static constexpr auto JEDEC_SDRAMCAP_MULTIPLIER = 256;
-static constexpr auto JEDEC_PRI_BUS_WIDTH_MULTIPLIER = 8;
-static constexpr auto JEDEC_SDRAM_WIDTH_MULTIPLIER = 4;
-static constexpr auto JEDEC_SDRAMCAP_RESERVED = 6;
-static constexpr auto JEDEC_RESERVED_BITS = 3;
-static constexpr auto JEDEC_DIE_COUNT_RIGHT_SHIFT = 4;
-
-static constexpr auto SDRAM_DENSITY_PER_DIE_24GB = 24;
-static constexpr auto SDRAM_DENSITY_PER_DIE_32GB = 32;
-static constexpr auto SDRAM_DENSITY_PER_DIE_48GB = 48;
-static constexpr auto SDRAM_DENSITY_PER_DIE_64GB = 64;
-static constexpr auto SDRAM_DENSITY_PER_DIE_UNDEFINED = 0;
-
-static constexpr auto PRIMARY_BUS_WIDTH_32_BITS = 32;
-static constexpr auto PRIMARY_BUS_WIDTH_UNUSED = 0;
-static constexpr auto DRAM_MANUFACTURER_ID_OFFSET = 0x228;
-static constexpr auto DRAM_MANUFACTURER_ID_LENGTH = 0x02;
-
-bool memoryVpdParser::checkValidValue(uint8_t l_ByteValue, uint8_t shift,
-                                      uint8_t minValue, uint8_t maxValue)
-{
-    l_ByteValue = l_ByteValue >> shift;
-    if ((l_ByteValue > maxValue) || (l_ByteValue < minValue))
-    {
-        cout << "Non valid Value encountered value[" << l_ByteValue
-             << "] range [" << minValue << ".." << maxValue << "] found "
-             << " " << endl;
-        return false;
-    }
-    else
-    {
-        return true;
-    }
-}
-
-uint8_t memoryVpdParser::getDDR5DensityPerDie(uint8_t l_ByteValue)
-{
-    uint8_t l_densityPerDie = SDRAM_DENSITY_PER_DIE_UNDEFINED;
-    if (l_ByteValue < constants::VALUE_5)
-    {
-        l_densityPerDie = l_ByteValue * constants::VALUE_4;
-    }
-    else
-    {
-        switch (l_ByteValue)
-        {
-            case VALUE_5:
-                l_densityPerDie = SDRAM_DENSITY_PER_DIE_24GB;
-                break;
-
-            case VALUE_6:
-                l_densityPerDie = SDRAM_DENSITY_PER_DIE_32GB;
-                break;
-
-            case VALUE_7:
-                l_densityPerDie = SDRAM_DENSITY_PER_DIE_48GB;
-                break;
-
-            case VALUE_8:
-                l_densityPerDie = SDRAM_DENSITY_PER_DIE_64GB;
-                break;
-
-            default:
-                cout << "default value encountered for density per die" << endl;
-                l_densityPerDie = SDRAM_DENSITY_PER_DIE_UNDEFINED;
-                break;
-        }
-    }
-    return l_densityPerDie;
-}
-
-uint8_t memoryVpdParser::getDDR5DiePerPackage(uint8_t l_ByteValue)
-{
-    uint8_t l_DiePerPackage = constants::VALUE_0;
-    if (l_ByteValue < constants::VALUE_2)
-    {
-        l_DiePerPackage = l_ByteValue + constants::VALUE_1;
-    }
-    else
-    {
-        l_DiePerPackage =
-            pow(constants::VALUE_2, (l_ByteValue - constants::VALUE_1));
-    }
-    return l_DiePerPackage;
-}
-
-auto memoryVpdParser::getDdr5BasedDDimmSize(Binary::const_iterator iterator)
-{
-    size_t dimmSize = 0;
-
-    do
-    {
-        if (!checkValidValue(iterator[constants::SPD_BYTE_235] &
-                                 constants::MASK_BYTE_BITS_01,
-                             constants::SHIFT_BITS_0, constants::VALUE_1,
-                             constants::VALUE_3) ||
-            !checkValidValue(iterator[constants::SPD_BYTE_235] &
-                                 constants::MASK_BYTE_BITS_345,
-                             constants::SHIFT_BITS_3, constants::VALUE_1,
-                             constants::VALUE_3))
-        {
-            std::cerr
-                << "Capacity calculation failed for channels per DIMM. DDIMM "
-                   "Byte 235 value ["
-                << iterator[constants::SPD_BYTE_235] << "]";
-            break;
-        }
-        uint8_t l_channelsPerPhy =
-            (((iterator[constants::SPD_BYTE_235] & constants::MASK_BYTE_BITS_01)
-                  ? constants::VALUE_1
-                  : constants::VALUE_0) +
-             ((iterator[constants::SPD_BYTE_235] &
-               constants::MASK_BYTE_BITS_345)
-                  ? constants::VALUE_1
-                  : constants::VALUE_0));
-
-        uint8_t l_channelsPerDdimm =
-            (((iterator[constants::SPD_BYTE_235] &
-               constants::MASK_BYTE_BITS_6) >>
-              constants::VALUE_6) +
-             ((iterator[constants::SPD_BYTE_235] &
-               constants::MASK_BYTE_BITS_7) >>
-              constants::VALUE_7)) *
-            l_channelsPerPhy;
-
-        if (!checkValidValue(iterator[constants::SPD_BYTE_235] &
-                                 constants::MASK_BYTE_BITS_012,
-                             constants::SHIFT_BITS_0, constants::VALUE_1,
-                             constants::VALUE_3))
-        {
-            std::cerr
-                << "Capacity calculation failed for bus width per channel. "
-                   "DDIMM Byte 235 value ["
-                << iterator[constants::SPD_BYTE_235] << "]";
-            break;
-        }
-        uint8_t l_busWidthPerChannel =
-            (iterator[constants::SPD_BYTE_235] & constants::MASK_BYTE_BITS_012)
-                ? PRIMARY_BUS_WIDTH_32_BITS
-                : PRIMARY_BUS_WIDTH_UNUSED;
-
-        if (!checkValidValue(
-                iterator[constants::SPD_BYTE_4] & constants::MASK_BYTE_BITS_567,
-                constants::SHIFT_BITS_5, constants::VALUE_0,
-                constants::VALUE_5))
-        {
-            std::cerr
-                << "Capacity calculation failed for die per package. DDIMM "
-                   "Byte 4 value ["
-                << iterator[constants::SPD_BYTE_4] << "]";
-            break;
-        }
-        uint8_t l_diePerPackage = getDDR5DiePerPackage(
-            (iterator[constants::SPD_BYTE_4] & constants::MASK_BYTE_BITS_567) >>
-            constants::VALUE_5);
-
-        if (!checkValidValue(iterator[constants::SPD_BYTE_4] &
-                                 constants::MASK_BYTE_BITS_01234,
-                             constants::SHIFT_BITS_0, constants::VALUE_1,
-                             constants::VALUE_8))
-        {
-            std::cerr
-                << "Capacity calculation failed for SDRAM Density per Die. "
-                   "DDIMM Byte 4 value ["
-                << iterator[constants::SPD_BYTE_4] << "]";
-            break;
-        }
-        uint8_t l_densityPerDie = getDDR5DensityPerDie(
-            iterator[constants::SPD_BYTE_4] & constants::MASK_BYTE_BITS_01234);
-
-        uint8_t l_ranksPerChannel = 0;
-        if (((iterator[constants::SPD_BYTE_235] &
-              constants::MASK_BYTE_BITS_7) >>
-             constants::VALUE_7))
-        {
-            l_ranksPerChannel = ((iterator[constants::SPD_BYTE_234] &
-                                  constants::MASK_BYTE_BITS_345) >>
-                                 constants::VALUE_3) +
-                                constants::VALUE_1;
-        }
-        else if (((iterator[constants::SPD_BYTE_235] &
-                   constants::MASK_BYTE_BITS_6) >>
-                  constants::VALUE_6))
-        {
-            l_ranksPerChannel = (iterator[constants::SPD_BYTE_234] &
-                                 constants::MASK_BYTE_BITS_012) +
-                                constants::VALUE_1;
-        }
-#if 0
-        // Old Style capacity calculation kept for reference
-        // will be removed later
-        uint8_t l_ranksPerChannel =
-            (((iterator[constants::SPD_BYTE_234] &
-               constants::MASK_BYTE_BITS_345) >>
-              constants::VALUE_3) *
-             ((iterator[constants::SPD_BYTE_235] &
-               constants::MASK_BYTE_BITS_7) >>
-              constants::VALUE_7)) +
-            ((iterator[constants::SPD_BYTE_234] &
-              constants::MASK_BYTE_BITS_012) +
-             constants::VALUE_2 * ((iterator[constants::SPD_BYTE_235] &
-                                    constants::MASK_BYTE_BITS_6) >>
-                                   constants::VALUE_6));
-#endif
-
-        if (!checkValidValue(
-                iterator[constants::SPD_BYTE_6] & constants::MASK_BYTE_BITS_567,
-                constants::SHIFT_BITS_5, constants::VALUE_0,
-                constants::VALUE_3))
-        {
-            std::cout
-                << "Capacity calculation failed for dram width DDIMM Byte 6 value ["
-                << iterator[constants::SPD_BYTE_6] << "]";
-            break;
-        }
-        uint8_t l_dramWidth =
-            VALUE_4 * (VALUE_1 << ((iterator[constants::SPD_BYTE_6] &
-                                    constants::MASK_BYTE_BITS_567) >>
-                                   constants::VALUE_5));
-
-        dimmSize = (l_channelsPerDdimm * l_busWidthPerChannel *
-                    l_diePerPackage * l_densityPerDie * l_ranksPerChannel) /
-                   (8 * l_dramWidth);
-
-    } while (false);
-
-    return constants::CONVERT_GB_TO_KB * dimmSize;
-}
-
-auto memoryVpdParser::getDdr4BasedDDimmSize(Binary::const_iterator iterator)
-{
-    size_t tmp = 0, dimmSize = 0;
-
-    size_t sdramCap = 1, priBusWid = 1, sdramWid = 1, logicalRanksPerDimm = 1;
-    Byte dieCount = 1;
-
-    // NOTE: This calculation is Only for DDR4
-
-    // Calculate SDRAM  capacity
-    tmp = iterator[SPD_BYTE_4] & JEDEC_SDRAM_CAP_MASK;
-    /* Make sure the bits are not Reserved */
-    if (tmp > JEDEC_SDRAMCAP_RESERVED)
-    {
-        cerr << "Bad data in vpd byte 4. Can't calculate SDRAM capacity and so "
-                "dimm size.\n ";
-        return dimmSize;
-    }
-
-    sdramCap = (sdramCap << tmp) * JEDEC_SDRAMCAP_MULTIPLIER;
-
-    /* Calculate Primary bus width */
-    tmp = iterator[SPD_BYTE_13] & JEDEC_PRI_BUS_WIDTH_MASK;
-    if (tmp > JEDEC_RESERVED_BITS)
-    {
-        cerr << "Bad data in vpd byte 13. Can't calculate primary bus width "
-                "and so dimm size.\n ";
-        return dimmSize;
-    }
-    priBusWid = (priBusWid << tmp) * JEDEC_PRI_BUS_WIDTH_MULTIPLIER;
-
-    /* Calculate SDRAM width */
-    tmp = iterator[SPD_BYTE_12] & JEDEC_SDRAM_WIDTH_MASK;
-    if (tmp > JEDEC_RESERVED_BITS)
-    {
-        cerr << "Bad data in vpd byte 12. Can't calculate SDRAM width and so "
-                "dimm size.\n ";
-        return dimmSize;
-    }
-    sdramWid = (sdramWid << tmp) * JEDEC_SDRAM_WIDTH_MULTIPLIER;
-
-    tmp = iterator[SPD_BYTE_6] & JEDEC_SIGNAL_LOADING_MASK;
-
-    if (tmp == JEDEC_SINGLE_LOAD_STACK)
-    {
-        // Fetch die count
-        tmp = iterator[SPD_BYTE_6] & JEDEC_DIE_COUNT_MASK;
-        tmp >>= JEDEC_DIE_COUNT_RIGHT_SHIFT;
-        dieCount = tmp + 1;
-    }
-
-    /* Calculate Number of ranks */
-    tmp = iterator[SPD_BYTE_12] & JEDEC_NUM_RANKS_MASK;
-    tmp >>= JEDEC_RESERVED_BITS;
-
-    if (tmp > JEDEC_RESERVED_BITS)
-    {
-        cerr << "Can't calculate number of ranks. Invalid data found.\n ";
-        return dimmSize;
-    }
-    logicalRanksPerDimm = (tmp + 1) * dieCount;
-
-    dimmSize = (sdramCap / JEDEC_PRI_BUS_WIDTH_MULTIPLIER) *
-               (priBusWid / sdramWid) * logicalRanksPerDimm;
-
-    return constants::CONVERT_MB_TO_KB * dimmSize;
-}
-
-size_t memoryVpdParser::getDDimmSize(Binary::const_iterator iterator)
-{
-    size_t dimmSize = 0;
-    if ((iterator[constants::SPD_BYTE_2] & constants::SPD_BYTE_MASK) ==
-        constants::SPD_DRAM_TYPE_DDR4)
-    {
-        dimmSize = getDdr4BasedDDimmSize(iterator);
-    }
-    else if ((iterator[constants::SPD_BYTE_2] & constants::SPD_BYTE_MASK) ==
-             constants::SPD_DRAM_TYPE_DDR5)
-    {
-        dimmSize = getDdr5BasedDDimmSize(iterator);
-    }
-    else
-    {
-        cerr << "Error: DDIMM is neither DDR4 nor DDR5. DDIMM Byte 2 value ["
-             << iterator[constants::SPD_BYTE_2] << "]";
-    }
-    return dimmSize;
-}
-
-kwdVpdMap memoryVpdParser::readKeywords(Binary::const_iterator iterator)
-{
-    KeywordVpdMap map{};
-
-    // collect Dimm size value
-    auto dimmSize = getDDimmSize(iterator);
-    if (!dimmSize)
-    {
-        cerr << "Error: Calculated dimm size is 0.";
-    }
-
-    map.emplace("MemorySizeInKB", dimmSize);
-    // point the iterator to DIMM data and skip "11S"
-    advance(iterator, MEMORY_VPD_DATA_START + 3);
-    Binary partNumber(iterator, iterator + PART_NUM_LEN);
-
-    advance(iterator, PART_NUM_LEN);
-    Binary serialNumber(iterator, iterator + SERIAL_NUM_LEN);
-
-    advance(iterator, SERIAL_NUM_LEN);
-    Binary ccin(iterator, iterator + CCIN_LEN);
-
-    Binary mfgId(DRAM_MANUFACTURER_ID_LENGTH);
-    std::copy_n((memVpd.cbegin() + DRAM_MANUFACTURER_ID_OFFSET),
-                DRAM_MANUFACTURER_ID_LENGTH, mfgId.begin());
-
-    map.emplace("FN", partNumber);
-    map.emplace("PN", move(partNumber));
-    map.emplace("SN", move(serialNumber));
-    map.emplace("CC", move(ccin));
-    map.emplace("DI", move(mfgId));
-
-    return map;
-}
-
-variant<kwdVpdMap, Store> memoryVpdParser::parse()
-{
-    // Read the data and return the map
-    auto iterator = memVpd.cbegin();
-    auto vpdDataMap = readKeywords(iterator);
-
-    return vpdDataMap;
-}
-
-std::string memoryVpdParser::getInterfaceName() const
-{
-    return memVpdInf;
-}
-
-} // namespace parser
-} // namespace memory
-} // namespace vpd
-} // namespace openpower
diff --git a/vpd-parser/memory_vpd_parser.hpp b/vpd-parser/memory_vpd_parser.hpp
deleted file mode 100644
index 36e84e2..0000000
--- a/vpd-parser/memory_vpd_parser.hpp
+++ /dev/null
@@ -1,117 +0,0 @@
-#pragma once
-
-#include "impl.hpp"
-#include "parser_interface.hpp"
-#include "types.hpp"
-
-namespace openpower
-{
-namespace vpd
-{
-namespace memory
-{
-namespace parser
-{
-using ParserInterface = openpower::vpd::parser::interface::ParserInterface;
-using kwdVpdMap = openpower::vpd::inventory::KeywordVpdMap;
-
-class memoryVpdParser : public ParserInterface
-{
-  public:
-    memoryVpdParser() = delete;
-    memoryVpdParser(const memoryVpdParser&) = delete;
-    memoryVpdParser& operator=(const memoryVpdParser&) = delete;
-    memoryVpdParser(memoryVpdParser&&) = delete;
-    memoryVpdParser& operator=(memoryVpdParser&&) = delete;
-    ~memoryVpdParser() = default;
-
-    /**
-     * @brief Constructor
-     *
-     * Move memVpdVector to parser object's memVpdVector
-     */
-    memoryVpdParser(const Binary& VpdVector) : memVpd(VpdVector) {}
-
-    /**
-     * @brief Parse the memory VPD binary data.
-     * Collects and emplace the keyword-value pairs in map.
-     *
-     * @return map of keyword:value
-     */
-    std::variant<kwdVpdMap, Store> parse();
-
-    /**
-     * @brief An api to return interface name with respect to
-     * publish data on cache
-     *
-     * @return - Interface name for that vpd type.
-     */
-    std::string getInterfaceName() const;
-
-  private:
-    /**
-     * @brief An api to read keywords.
-     *
-     * @return- map of kwd:value
-     */
-    kwdVpdMap readKeywords(Binary::const_iterator iterator);
-
-    /**
-     * @brief This function calculates dimm size from DDIMM VPD
-     *
-     * @param[in] iterator - iterator to buffer containing VPD
-     * @return calculated data or 0 in case of any error.
-     */
-    size_t getDDimmSize(Binary::const_iterator iterator);
-
-    /**
-     * @brief This function calculates DDR4 based DDIMM's capacity
-     *
-     * @param[in] iterator - iterator to buffer containing VPD
-     * @return calculated data or 0 in case of any error.
-     */
-    auto getDdr4BasedDDimmSize(Binary::const_iterator iterator);
-
-    /**
-     * @brief This function calculates DDR5 based DDIMM's capacity
-     *
-     * @param[in] iterator - iterator to buffer containing VPD
-     * @return calculated data or 0 in case of any error.
-     */
-    auto getDdr5BasedDDimmSize(Binary::const_iterator iterator);
-
-    /**
-     * @brief This function calculates DDR5 based die per package
-     *
-     * @param[in] l_ByteValue - the bit value for calculation
-     * @return die per package value.
-     */
-    uint8_t getDDR5DiePerPackage(uint8_t l_ByteValue);
-
-    /**
-     * @brief This function calculates DDR5 based density per die
-     *
-     * @param[in] l_ByteValue - the bit value for calculation
-     * @return density per die.
-     */
-    uint8_t getDDR5DensityPerDie(uint8_t l_ByteValue);
-
-    /**
-     * @brief This function checks the validity of the bits
-     *
-     * @param[in] l_ByteValue - the byte value with relevant bits
-     * @param[in] shift - shifter value to selects needed bits
-     * @param[in] minValue - minimum value it can contain
-     * @param[in] maxValue - maximum value it can contain
-     * @return true if valid else false.
-     */
-    bool checkValidValue(uint8_t l_ByteValue, uint8_t shift, uint8_t minValue,
-                         uint8_t maxValue);
-
-    // vdp file to be parsed
-    const Binary& memVpd;
-};
-} // namespace parser
-} // namespace memory
-} // namespace vpd
-} // namespace openpower
diff --git a/vpd-parser/parser_factory.cpp b/vpd-parser/parser_factory.cpp
deleted file mode 100644
index 04d4960..0000000
--- a/vpd-parser/parser_factory.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-#include "parser_factory.hpp"
-
-#include "const.hpp"
-#include "ibm_vpd_utils.hpp"
-#include "ipz_parser.hpp"
-#include "isdimm_vpd_parser.hpp"
-#include "keyword_vpd_parser.hpp"
-#include "memory_vpd_parser.hpp"
-#include "vpd_exceptions.hpp"
-
-using namespace vpd::keyword::parser;
-using namespace openpower::vpd::memory::parser;
-using namespace openpower::vpd::isdimm::parser;
-using namespace openpower::vpd::parser::interface;
-using namespace openpower::vpd::ipz::parser;
-using namespace openpower::vpd::exceptions;
-using namespace openpower::vpd::constants;
-
-namespace openpower
-{
-namespace vpd
-{
-namespace parser
-{
-namespace factory
-{
-interface::ParserInterface* ParserFactory::getParser(
-    const Binary& vpdVector, const std::string& inventoryPath,
-    const std::string& vpdFilePath, uint32_t vpdStartOffset)
-{
-    vpdType type = vpdTypeCheck(vpdVector);
-
-    switch (type)
-    {
-        case IPZ_VPD:
-        {
-            return new IpzVpdParser(vpdVector, inventoryPath, vpdFilePath,
-                                    vpdStartOffset);
-        }
-
-        case KEYWORD_VPD:
-        {
-            return new KeywordVpdParser(vpdVector);
-        }
-
-        case DDR4_DDIMM_MEMORY_VPD:
-        case DDR5_DDIMM_MEMORY_VPD:
-        {
-            return new memoryVpdParser(vpdVector);
-        }
-
-        case DDR4_ISDIMM_MEMORY_VPD:
-        case DDR5_ISDIMM_MEMORY_VPD:
-        {
-            return new isdimmVpdParser(vpdVector);
-        }
-
-        default:
-            throw VpdDataException("Unable to determine VPD format");
-    }
-}
-
-void ParserFactory::freeParser(interface::ParserInterface* parser)
-{
-    if (parser)
-    {
-        delete parser;
-        parser = nullptr;
-    }
-}
-
-} // namespace factory
-} // namespace parser
-} // namespace vpd
-} // namespace openpower
diff --git a/vpd-parser/parser_factory.hpp b/vpd-parser/parser_factory.hpp
deleted file mode 100644
index f6f54c3..0000000
--- a/vpd-parser/parser_factory.hpp
+++ /dev/null
@@ -1,52 +0,0 @@
-#pragma once
-#include "parser_interface.hpp"
-#include "types.hpp"
-
-namespace openpower
-{
-namespace vpd
-{
-namespace parser
-{
-namespace factory
-{
-/** @class ParserFactory
- *  @brief Factory class to instantiate concrete parser class.
- *
- *  This class should be used to instantiate an instance of parser class based
- *  on the typeof vpd file.
- */
-
-class ParserFactory
-{
-  public:
-    ParserFactory() = delete;
-    ~ParserFactory() = delete;
-    ParserFactory(const ParserFactory&) = delete;
-    ParserFactory& operator=(const ParserFactory&) = delete;
-    ParserFactory(ParserFactory&&) = delete;
-    ParserFactory& operator=(ParserFactory&&) = delete;
-
-    /**
-     * @brief A method to get object of concrete parser class.
-     * @param[in] - vpd file to check for the type.
-     * @param[in] - InventoryPath to call out FRU in case PEL is logged.
-     * @param[in] - vpdFilePath for VPD HW path.
-     * @param[in] - vpdStartOffset for starting offset of VPD.
-     * @return - Pointer to concrete parser class object.
-     */
-    static interface::ParserInterface*
-        getParser(const Binary& vpdVector, const std::string& inventoryPath,
-                  const std::string& vpdFilePath, uint32_t vpdStartOffset);
-
-    /**
-     * @brief A method to delete the parser object.
-     * @param[in] - Pointer to the parser object.
-     */
-    static void freeParser(interface::ParserInterface* parser);
-}; // ParserFactory
-
-} // namespace factory
-} // namespace parser
-} // namespace vpd
-} // namespace openpower
diff --git a/vpd-parser/parser_interface.hpp b/vpd-parser/parser_interface.hpp
deleted file mode 100644
index 259ef86..0000000
--- a/vpd-parser/parser_interface.hpp
+++ /dev/null
@@ -1,58 +0,0 @@
-#pragma once
-
-#include "store.hpp"
-#include "types.hpp"
-
-#include <variant>
-
-namespace openpower
-{
-namespace vpd
-{
-namespace parser
-{
-namespace interface
-{
-using kwdVpdMap = openpower::vpd::inventory::KeywordVpdMap;
-
-/** @class ParserInterface
- *  @brief Interface class for vpd parsers.
- *
- *  Any concrete parser class, implementing the parser logic needs to
- *  derive from this interface class and override the methods declared
- *  in this class.
- */
-class ParserInterface
-{
-  public:
-    /**
-     * @brief An api to implement parsing logic for VPD file.
-     * Needs to be implemented by all the class deriving from
-     * parser interface.
-     *
-     * @return parsed format for vpd data, depending upon the
-     * parsing logic.
-     */
-    virtual std::variant<kwdVpdMap, Store> parse() = 0;
-
-    /**
-     * @brief An api to return interface name which will hold the
-     * data on cache.
-     * Needs to be implemented by all the class deriving fronm
-     * parser interface
-     *
-     * @return - Interface name for that vpd type.
-     */
-    virtual std::string getInterfaceName() const = 0;
-    // virtual void test() = 0;
-
-    /**
-     * @brief Virtual destructor for the interface.
-     */
-    virtual ~ParserInterface() {}
-
-}; // class Parserinterface
-} // namespace interface
-} // namespace parser
-} // namespace vpd
-} // namespace openpower
diff --git a/vpd-tool/README.md b/vpd-tool/README.md
new file mode 100644
index 0000000..4d02336
--- /dev/null
+++ b/vpd-tool/README.md
@@ -0,0 +1,6 @@
+# VPD Tool Overview
+
+VPD Tool is designed for managing BMC system FRU's Vital Product Data(VPD). It
+provides command line interface to read and write FRU's VPD. More information
+can be found
+[here](https://github.ibm.com/openbmc/openbmc/wiki/VPD-TOOL-HELPER).
diff --git a/vpd-tool/include/tool_constants.hpp b/vpd-tool/include/tool_constants.hpp
new file mode 100644
index 0000000..6e89957
--- /dev/null
+++ b/vpd-tool/include/tool_constants.hpp
@@ -0,0 +1,34 @@
+#pragma once
+
+#include <cstdint>
+
+namespace vpd
+{
+namespace constants
+{
+static constexpr auto KEYWORD_SIZE = 2;
+static constexpr auto RECORD_SIZE = 4;
+static constexpr auto INDENTATION = 4;
+static constexpr auto SUCCESS = 0;
+static constexpr auto FAILURE = -1;
+
+// To be explicitly used for string comparison.
+static constexpr auto STR_CMP_SUCCESS = 0;
+
+constexpr auto inventoryManagerService =
+    "xyz.openbmc_project.Inventory.Manager";
+constexpr auto baseInventoryPath = "/xyz/openbmc_project/inventory";
+constexpr auto ipzVpdInfPrefix = "com.ibm.ipzvpd.";
+
+constexpr auto vpdManagerService = "com.ibm.VPD.Manager";
+constexpr auto vpdManagerObjectPath = "/com/ibm/VPD/Manager";
+constexpr auto vpdManagerInfName = "com.ibm.VPD.Manager";
+constexpr auto inventoryItemInf = "xyz.openbmc_project.Inventory.Item";
+constexpr auto kwdVpdInf = "com.ibm.ipzvpd.VINI";
+constexpr auto locationCodeInf = "com.ibm.ipzvpd.Location";
+constexpr auto assetInf = "xyz.openbmc_project.Inventory.Decorator.Asset";
+constexpr auto objectMapperService = "xyz.openbmc_project.ObjectMapper";
+constexpr auto objectMapperObjectPath = "/xyz/openbmc_project/object_mapper";
+constexpr auto objectMapperInfName = "xyz.openbmc_project.ObjectMapper";
+} // namespace constants
+} // namespace vpd
diff --git a/vpd-tool/include/tool_types.hpp b/vpd-tool/include/tool_types.hpp
new file mode 100644
index 0000000..1e9ff7d
--- /dev/null
+++ b/vpd-tool/include/tool_types.hpp
@@ -0,0 +1,83 @@
+#pragma once
+
+#include <sdbusplus/message/types.hpp>
+
+#include <cstdint>
+#include <tuple>
+#include <variant>
+#include <vector>
+
+namespace vpd
+{
+namespace types
+{
+using BinaryVector = std::vector<uint8_t>;
+
+// This covers mostly all the data type supported over DBus for a property.
+// clang-format off
+using DbusVariantType = std::variant<
+    std::vector<std::tuple<std::string, std::string, std::string>>,
+    std::vector<std::string>,
+    std::vector<double>,
+    std::string,
+    int64_t,
+    uint64_t,
+    double,
+    int32_t,
+    uint32_t,
+    int16_t,
+    uint16_t,
+    uint8_t,
+    bool,
+    BinaryVector,
+    std::vector<uint32_t>,
+    std::vector<uint16_t>,
+    sdbusplus::message::object_path,
+    std::tuple<uint64_t, std::vector<std::tuple<std::string, std::string, double, uint64_t>>>,
+    std::vector<std::tuple<std::string, std::string>>,
+    std::vector<std::tuple<uint32_t, std::vector<uint32_t>>>,
+    std::vector<std::tuple<uint32_t, size_t>>,
+    std::vector<std::tuple<sdbusplus::message::object_path, std::string,
+                           std::string, std::string>>
+ >;
+
+//IpzType contains tuple of <Record, Keyword>
+using IpzType = std::tuple<std::string, std::string>;
+
+//ReadVpdParams either of IPZ or keyword format
+using ReadVpdParams = std::variant<IpzType, std::string>;
+
+//KwData contains tuple of <keywordName, KeywordValue>
+using KwData = std::tuple<std::string, BinaryVector>;
+
+//IpzData contains tuple of <RecordName, KeywordName, KeywordValue>
+using IpzData = std::tuple<std::string, std::string, BinaryVector>;
+
+//WriteVpdParams either of IPZ or keyword format
+using WriteVpdParams = std::variant<IpzData, KwData>;
+// Return type of ObjectMapper GetObject API
+using MapperGetObject = std::map<std::string,std::vector<std::string>>;
+
+// Table row data
+using TableRowData = std::vector<std::string>;
+
+// Type used to populate table data
+using TableInputData = std::vector<TableRowData>;
+
+// A table column name-size pair
+using TableColumnNameSizePair = std::pair<std::string, std::size_t>;
+
+enum UserOption
+{
+    Exit,
+    UseBackupDataForAll,
+    UseSystemBackplaneDataForAll,
+    MoreOptions,
+    UseBackupDataForCurrent,
+    UseSystemBackplaneDataForCurrent,
+    NewValueOnBoth,
+    SkipCurrent
+};
+
+} // namespace types
+} // namespace vpd
diff --git a/vpd-tool/include/tool_utils.hpp b/vpd-tool/include/tool_utils.hpp
new file mode 100644
index 0000000..4d650c1
--- /dev/null
+++ b/vpd-tool/include/tool_utils.hpp
@@ -0,0 +1,726 @@
+#pragma once
+
+#include "tool_constants.hpp"
+#include "tool_types.hpp"
+
+#include <nlohmann/json.hpp>
+#include <sdbusplus/bus.hpp>
+#include <sdbusplus/exception.hpp>
+
+#include <fstream>
+#include <iostream>
+
+namespace vpd
+{
+namespace utils
+{
+/**
+ * @brief An API to read property from Dbus.
+ *
+ * API reads the property value for the specified interface and object path from
+ * the given Dbus service.
+ *
+ * The caller of the API needs to validate the validity and correctness of the
+ * type and value of data returned. The API will just fetch and return the data
+ * without any data validation.
+ *
+ * Note: It will be caller's responsibility to check for empty value returned
+ * and generate appropriate error if required.
+ *
+ * @param[in] i_serviceName - Name of the Dbus service.
+ * @param[in] i_objectPath - Object path under the service.
+ * @param[in] i_interface - Interface under which property exist.
+ * @param[in] i_property - Property whose value is to be read.
+ *
+ * @return - Value read from Dbus.
+ *
+ * @throw std::runtime_error
+ */
+inline types::DbusVariantType readDbusProperty(
+    const std::string& i_serviceName, const std::string& i_objectPath,
+    const std::string& i_interface, const std::string& i_property)
+{
+    types::DbusVariantType l_propertyValue;
+
+    // Mandatory fields to make a dbus call.
+    if (i_serviceName.empty() || i_objectPath.empty() || i_interface.empty() ||
+        i_property.empty())
+    {
+        // TODO: Enable logging when verbose is enabled.
+        /*std::cout << "One of the parameter to make Dbus read call is empty."
+                  << std::endl;*/
+        throw std::runtime_error("Empty Parameter");
+    }
+
+    try
+    {
+        auto l_bus = sdbusplus::bus::new_default();
+        auto l_method =
+            l_bus.new_method_call(i_serviceName.c_str(), i_objectPath.c_str(),
+                                  "org.freedesktop.DBus.Properties", "Get");
+        l_method.append(i_interface, i_property);
+
+        auto result = l_bus.call(l_method);
+        result.read(l_propertyValue);
+    }
+    catch (const sdbusplus::exception::SdBusError& l_ex)
+    {
+        // TODO: Enable logging when verbose is enabled.
+        // std::cout << std::string(l_ex.what()) << std::endl;
+        throw std::runtime_error(std::string(l_ex.what()));
+    }
+    return l_propertyValue;
+}
+
+/**
+ * @brief An API to print json data on stdout.
+ *
+ * @param[in] i_jsonData - JSON object.
+ */
+inline void printJson(const nlohmann::json& i_jsonData)
+{
+    try
+    {
+        std::cout << i_jsonData.dump(constants::INDENTATION) << std::endl;
+    }
+    catch (const nlohmann::json::type_error& l_ex)
+    {
+        throw std::runtime_error(
+            "Failed to dump JSON data, error: " + std::string(l_ex.what()));
+    }
+}
+
+/**
+ * @brief An API to convert binary value into ascii/hex representation.
+ *
+ * If given data contains printable characters, ASCII formated string value of
+ * the input data will be returned. Otherwise if the data has any non-printable
+ * value, returns the hex represented value of the given data in string format.
+ *
+ * @param[in] i_keywordValue - Data in binary format.
+ *
+ * @throw - Throws std::bad_alloc or std::terminate in case of error.
+ *
+ * @return - Returns the converted string value.
+ */
+inline std::string getPrintableValue(const types::BinaryVector& i_keywordValue)
+{
+    bool l_allPrintable =
+        std::all_of(i_keywordValue.begin(), i_keywordValue.end(),
+                    [](const auto& l_byte) { return std::isprint(l_byte); });
+
+    std::ostringstream l_oss;
+    if (l_allPrintable)
+    {
+        l_oss << std::string(i_keywordValue.begin(), i_keywordValue.end());
+    }
+    else
+    {
+        l_oss << "0x";
+        for (const auto& l_byte : i_keywordValue)
+        {
+            l_oss << std::setfill('0') << std::setw(2) << std::hex
+                  << static_cast<int>(l_byte);
+        }
+    }
+
+    return l_oss.str();
+}
+
+/**
+ * @brief API to read keyword's value from hardware.
+ *
+ * This API reads keyword's value by requesting DBus service(vpd-manager) who
+ * hosts the 'ReadKeyword' method to read keyword's value.
+ *
+ * @param[in] i_eepromPath - EEPROM file path.
+ * @param[in] i_paramsToReadData - Property whose value has to be read.
+ *
+ * @return - Value read from hardware
+ *
+ * @throw std::runtime_error, sdbusplus::exception::SdBusError
+ */
+inline types::DbusVariantType
+    readKeywordFromHardware(const std::string& i_eepromPath,
+                            const types::ReadVpdParams i_paramsToReadData)
+{
+    if (i_eepromPath.empty())
+    {
+        throw std::runtime_error("Empty EEPROM path");
+    }
+
+    try
+    {
+        types::DbusVariantType l_propertyValue;
+
+        auto l_bus = sdbusplus::bus::new_default();
+
+        auto l_method = l_bus.new_method_call(
+            constants::vpdManagerService, constants::vpdManagerObjectPath,
+            constants::vpdManagerInfName, "ReadKeyword");
+
+        l_method.append(i_eepromPath, i_paramsToReadData);
+        auto l_result = l_bus.call(l_method);
+
+        l_result.read(l_propertyValue);
+
+        return l_propertyValue;
+    }
+    catch (const sdbusplus::exception::SdBusError& l_error)
+    {
+        throw;
+    }
+}
+
+/**
+ * @brief API to save keyword's value on file.
+ *
+ * API writes keyword's value on the given file path. If the data is in hex
+ * format, API strips '0x' and saves the value on the given file.
+ *
+ * @param[in] i_filePath - File path.
+ * @param[in] i_keywordValue - Keyword's value.
+ *
+ * @return - true on successfully writing to file, false otherwise.
+ */
+inline bool saveToFile(const std::string& i_filePath,
+                       const std::string& i_keywordValue)
+{
+    bool l_returnStatus = false;
+
+    if (i_keywordValue.empty())
+    {
+        // ToDo: log only when verbose is enabled
+        std::cerr << "Save to file[ " << i_filePath
+                  << "] failed, reason: Empty keyword's value received"
+                  << std::endl;
+        return l_returnStatus;
+    }
+
+    std::string l_keywordValue{i_keywordValue};
+    if (i_keywordValue.substr(0, 2).compare("0x") == constants::STR_CMP_SUCCESS)
+    {
+        l_keywordValue = i_keywordValue.substr(2);
+    }
+
+    std::ofstream l_outPutFileStream;
+    l_outPutFileStream.exceptions(
+        std::ifstream::badbit | std::ifstream::failbit);
+    try
+    {
+        l_outPutFileStream.open(i_filePath);
+
+        if (l_outPutFileStream.is_open())
+        {
+            l_outPutFileStream.write(l_keywordValue.c_str(),
+                                     l_keywordValue.size());
+            l_returnStatus = true;
+        }
+        else
+        {
+            // ToDo: log only when verbose is enabled
+            std::cerr << "Error opening output file " << i_filePath
+                      << std::endl;
+        }
+    }
+    catch (const std::ios_base::failure& l_ex)
+    {
+        // ToDo: log only when verbose is enabled
+        std::cerr
+            << "Failed to write to file: " << i_filePath
+            << ", either base folder path doesn't exist or internal error occured, error: "
+            << l_ex.what() << '\n';
+    }
+
+    return l_returnStatus;
+}
+
+/**
+ * @brief API to print data in JSON format on console
+ *
+ * @param[in] i_fruPath - FRU path.
+ * @param[in] i_keywordName - Keyword name.
+ * @param[in] i_keywordStrValue - Keyword's value.
+ */
+inline void displayOnConsole(const std::string& i_fruPath,
+                             const std::string& i_keywordName,
+                             const std::string& i_keywordStrValue)
+{
+    nlohmann::json l_resultInJson = nlohmann::json::object({});
+    nlohmann::json l_keywordValInJson = nlohmann::json::object({});
+
+    l_keywordValInJson.emplace(i_keywordName, i_keywordStrValue);
+    l_resultInJson.emplace(i_fruPath, l_keywordValInJson);
+
+    printJson(l_resultInJson);
+}
+
+/**
+ * @brief API to write keyword's value.
+ *
+ * This API writes keyword's value by requesting DBus service(vpd-manager) who
+ * hosts the 'UpdateKeyword' method to update keyword's value.
+ *
+ * @param[in] i_vpdPath - EEPROM or object path, where keyword is present.
+ * @param[in] i_paramsToWriteData - Data required to update keyword's value.
+ *
+ * @return - Number of bytes written on success, -1 on failure.
+ *
+ * @throw - std::runtime_error, sdbusplus::exception::SdBusError
+ */
+inline int writeKeyword(const std::string& i_vpdPath,
+                        const types::WriteVpdParams& i_paramsToWriteData)
+{
+    if (i_vpdPath.empty())
+    {
+        throw std::runtime_error("Empty path");
+    }
+
+    int l_rc = constants::FAILURE;
+    auto l_bus = sdbusplus::bus::new_default();
+
+    auto l_method = l_bus.new_method_call(
+        constants::vpdManagerService, constants::vpdManagerObjectPath,
+        constants::vpdManagerInfName, "UpdateKeyword");
+
+    l_method.append(i_vpdPath, i_paramsToWriteData);
+    auto l_result = l_bus.call(l_method);
+
+    l_result.read(l_rc);
+    return l_rc;
+}
+
+/**
+ * @brief API to write keyword's value on hardware.
+ *
+ * This API writes keyword's value by requesting DBus service(vpd-manager) who
+ * hosts the 'WriteKeywordOnHardware' method to update keyword's value.
+ *
+ * Note: This API updates keyword's value only on the given hardware path, any
+ * backup or redundant EEPROM (if exists) paths won't get updated.
+ *
+ * @param[in] i_eepromPath - EEPROM where keyword is present.
+ * @param[in] i_paramsToWriteData - Data required to update keyword's value.
+ *
+ * @return - Number of bytes written on success, -1 on failure.
+ *
+ * @throw - std::runtime_error, sdbusplus::exception::SdBusError
+ */
+inline int
+    writeKeywordOnHardware(const std::string& i_eepromPath,
+                           const types::WriteVpdParams& i_paramsToWriteData)
+{
+    if (i_eepromPath.empty())
+    {
+        throw std::runtime_error("Empty path");
+    }
+
+    int l_rc = constants::FAILURE;
+    auto l_bus = sdbusplus::bus::new_default();
+
+    auto l_method = l_bus.new_method_call(
+        constants::vpdManagerService, constants::vpdManagerObjectPath,
+        constants::vpdManagerInfName, "WriteKeywordOnHardware");
+
+    l_method.append(i_eepromPath, i_paramsToWriteData);
+    auto l_result = l_bus.call(l_method);
+
+    l_result.read(l_rc);
+
+    if (l_rc > 0)
+    {
+        std::cout << "Data updated successfully " << std::endl;
+    }
+    return l_rc;
+}
+
+/**
+ * @brief API to get data in binary format.
+ *
+ * This API converts given string value into array of binary data.
+ *
+ * @param[in] i_value - Input data.
+ *
+ * @return - Array of binary data on success, throws as exception in case
+ * of any error.
+ *
+ * @throw std::runtime_error, std::out_of_range, std::bad_alloc,
+ * std::invalid_argument
+ */
+inline types::BinaryVector convertToBinary(const std::string& i_value)
+{
+    if (i_value.empty())
+    {
+        throw std::runtime_error(
+            "Provide a valid hexadecimal input. (Ex. 0x30313233)");
+    }
+
+    std::vector<uint8_t> l_binaryValue{};
+
+    if (i_value.substr(0, 2).compare("0x") == constants::STR_CMP_SUCCESS)
+    {
+        if (i_value.length() % 2 != 0)
+        {
+            throw std::runtime_error(
+                "Write option accepts 2 digit hex numbers. (Ex. 0x1 "
+                "should be given as 0x01).");
+        }
+
+        auto l_value = i_value.substr(2);
+
+        if (l_value.empty())
+        {
+            throw std::runtime_error(
+                "Provide a valid hexadecimal input. (Ex. 0x30313233)");
+        }
+
+        if (l_value.find_first_not_of("0123456789abcdefABCDEF") !=
+            std::string::npos)
+        {
+            throw std::runtime_error("Provide a valid hexadecimal input.");
+        }
+
+        for (size_t l_pos = 0; l_pos < l_value.length(); l_pos += 2)
+        {
+            uint8_t l_byte = static_cast<uint8_t>(
+                std::stoi(l_value.substr(l_pos, 2), nullptr, 16));
+            l_binaryValue.push_back(l_byte);
+        }
+    }
+    else
+    {
+        l_binaryValue.assign(i_value.begin(), i_value.end());
+    }
+    return l_binaryValue;
+}
+
+/**
+ * @brief API to parse respective JSON.
+ *
+ * @param[in] i_pathToJson - Path to JSON.
+ *
+ * @return Parsed JSON, throws exception in case of error.
+ *
+ * @throw std::runtime_error
+ */
+inline nlohmann::json getParsedJson(const std::string& i_pathToJson)
+{
+    if (i_pathToJson.empty())
+    {
+        throw std::runtime_error("Path to JSON is missing");
+    }
+
+    std::error_code l_ec;
+    if (!std::filesystem::exists(i_pathToJson, l_ec))
+    {
+        std::string l_message{
+            "file system call failed for file: " + i_pathToJson};
+
+        if (l_ec)
+        {
+            l_message += ", error: " + l_ec.message();
+        }
+        throw std::runtime_error(l_message);
+    }
+
+    if (std::filesystem::is_empty(i_pathToJson, l_ec))
+    {
+        throw std::runtime_error("Empty file: " + i_pathToJson);
+    }
+    else if (l_ec)
+    {
+        throw std::runtime_error("is_empty file system call failed for file: " +
+                                 i_pathToJson + ", error: " + l_ec.message());
+    }
+
+    std::ifstream l_jsonFile(i_pathToJson);
+    if (!l_jsonFile)
+    {
+        throw std::runtime_error("Failed to access Json path: " + i_pathToJson);
+    }
+
+    try
+    {
+        return nlohmann::json::parse(l_jsonFile);
+    }
+    catch (const nlohmann::json::parse_error& l_ex)
+    {
+        throw std::runtime_error("Failed to parse JSON file: " + i_pathToJson);
+    }
+}
+
+/**
+ * @brief API to get list of interfaces under a given object path.
+ *
+ * Given a DBus object path, this API returns a map of service -> implemented
+ * interface(s) under that object path. This API calls DBus method GetObject
+ * hosted by ObjectMapper DBus service.
+ *
+ * @param[in] i_objectPath - DBus object path.
+ * @param[in] i_constrainingInterfaces - An array of result set constraining
+ * interfaces.
+ *
+ * @return On success, returns a map of service -> implemented interface(s),
+ * else returns an empty map. The caller of this
+ * API should check for empty map.
+ */
+inline types::MapperGetObject GetServiceInterfacesForObject(
+    const std::string& i_objectPath,
+    const std::vector<std::string>& i_constrainingInterfaces) noexcept
+{
+    types::MapperGetObject l_serviceInfMap;
+    if (i_objectPath.empty())
+    {
+        // TODO: log only when verbose is enabled
+        std::cerr << "Object path is empty." << std::endl;
+        return l_serviceInfMap;
+    }
+
+    try
+    {
+        auto l_bus = sdbusplus::bus::new_default();
+        auto l_method = l_bus.new_method_call(
+            constants::objectMapperService, constants::objectMapperObjectPath,
+            constants::objectMapperInfName, "GetObject");
+
+        l_method.append(i_objectPath, i_constrainingInterfaces);
+
+        auto l_result = l_bus.call(l_method);
+        l_result.read(l_serviceInfMap);
+    }
+    catch (const sdbusplus::exception::SdBusError& l_ex)
+    {
+        // TODO: log only when verbose is enabled
+        // std::cerr << std::string(l_ex.what()) << std::endl;
+    }
+    return l_serviceInfMap;
+}
+
+/** @brief API to get list of sub tree paths for a given object path
+ *
+ * Given a DBus object path, this API returns a list of object paths under that
+ * object path in the DBus tree. This API calls DBus method GetSubTreePaths
+ * hosted by ObjectMapper DBus service.
+ *
+ * @param[in] i_objectPath - DBus object path.
+ * @param[in] i_constrainingInterfaces - An array of result set constraining
+ * interfaces.
+ * @param[in] i_depth - The maximum subtree depth for which results should be
+ * fetched. For unconstrained fetches use a depth of zero.
+ *
+ * @return On success, returns a std::vector<std::string> of object paths in
+ * Phosphor Inventory Manager DBus service's tree, else returns an empty vector.
+ * The caller of this API should check for empty vector.
+ */
+inline std::vector<std::string> GetSubTreePaths(
+    const std::string i_objectPath, const int i_depth = 0,
+    const std::vector<std::string>& i_constrainingInterfaces = {}) noexcept
+{
+    std::vector<std::string> l_objectPaths;
+
+    try
+    {
+        auto l_bus = sdbusplus::bus::new_default();
+        auto l_method = l_bus.new_method_call(
+            constants::objectMapperService, constants::objectMapperObjectPath,
+            constants::objectMapperInfName, "GetSubTreePaths");
+
+        l_method.append(i_objectPath, i_depth, i_constrainingInterfaces);
+
+        auto l_result = l_bus.call(l_method);
+        l_result.read(l_objectPaths);
+    }
+    catch (const sdbusplus::exception::SdBusError& l_ex)
+    {
+        // TODO: log only when verbose is enabled
+        std::cerr << std::string(l_ex.what()) << std::endl;
+    }
+    return l_objectPaths;
+}
+
+/**
+ * @brief A class to print data in tabular format
+ *
+ * This class implements methods to print data in a two dimensional tabular
+ * format. All entries in the table must be in string format.
+ *
+ */
+class Table
+{
+    class Column : public types::TableColumnNameSizePair
+    {
+      public:
+        /**
+         * @brief API to get the name of the Column
+         *
+         * @return Name of the Column.
+         */
+        const std::string& Name() const
+        {
+            return this->first;
+        }
+
+        /**
+         * @brief API to get the width of the Column
+         *
+         * @return Width of the Column.
+         */
+        std::size_t Width() const
+        {
+            return this->second;
+        }
+    };
+
+    // Current width of the table
+    std::size_t m_currentWidth;
+
+    // Character to be used as fill character between entries
+    char m_fillCharacter;
+
+    // Separator character to be used between columns
+    char m_separator;
+
+    // Array of columns
+    std::vector<Column> m_columns;
+
+    /**
+     * @brief API to Print Header
+     *
+     * Header line prints the names of the Column headers separated by the
+     * specified separator character and spaced accordingly.
+     *
+     * @throw std::out_of_range, std::length_error, std::bad_alloc
+     */
+    void PrintHeader() const
+    {
+        for (const auto& l_column : m_columns)
+        {
+            PrintEntry(l_column.Name(), l_column.Width());
+        }
+        std::cout << m_separator << std::endl;
+    }
+
+    /**
+     * @brief API to Print Horizontal Line
+     *
+     * A horizontal line is a sequence of '*'s.
+     *
+     * @throw std::out_of_range, std::length_error, std::bad_alloc
+     */
+    void PrintHorizontalLine() const
+    {
+        std::cout << std::string(m_currentWidth, '*') << std::endl;
+    }
+
+    /**
+     * @brief API to print an entry in the table
+     *
+     * An entry is a separator character followed by the text to print.
+     * The text is centre-aligned.
+     *
+     * @param[in] i_text - text to print
+     * @param[in] i_columnWidth - width of the column
+     *
+     * @throw std::out_of_range, std::length_error, std::bad_alloc
+     */
+    void PrintEntry(const std::string& i_text, std::size_t i_columnWidth) const
+    {
+        const std::size_t l_textLength{i_text.length()};
+
+        constexpr std::size_t l_minFillChars{3};
+        const std::size_t l_numFillChars =
+            ((l_textLength >= i_columnWidth ? l_minFillChars
+                                            : i_columnWidth - l_textLength)) -
+            1; // -1 for the separator character
+
+        const unsigned l_oddFill = l_numFillChars % 2;
+
+        std::cout << m_separator
+                  << std::string((l_numFillChars / 2) + l_oddFill,
+                                 m_fillCharacter)
+                  << i_text << std::string(l_numFillChars / 2, m_fillCharacter);
+    }
+
+  public:
+    /**
+     * @brief Table Constructor
+     *
+     * Parameterized constructor for a Table object
+     *
+     */
+    constexpr explicit Table(const char i_fillCharacter = ' ',
+                             const char i_separator = '|') noexcept :
+        m_currentWidth{0}, m_fillCharacter{i_fillCharacter},
+        m_separator{i_separator}
+    {}
+
+    // deleted methods
+    Table(const Table&) = delete;
+    Table operator=(const Table&) = delete;
+    Table(const Table&&) = delete;
+    Table operator=(const Table&&) = delete;
+
+    ~Table() = default;
+
+    /**
+     * @brief API to add column to Table
+     *
+     * @param[in] i_name - Name of the column.
+     *
+     * @param[in] i_width - Width to allocate for the column.
+     *
+     * @return On success returns 0, otherwise returns -1.
+     */
+    int AddColumn(const std::string& i_name, std::size_t i_width)
+    {
+        if (i_width < i_name.length())
+            return constants::FAILURE;
+        m_columns.emplace_back(types::TableColumnNameSizePair(i_name, i_width));
+        m_currentWidth += i_width;
+        return constants::SUCCESS;
+    }
+
+    /**
+     * @brief API to print the Table to console.
+     *
+     * This API prints the table data to console.
+     *
+     * @param[in] i_tableData - The data to be printed.
+     *
+     * @return On success returns 0, otherwise returns -1.
+     *
+     * @throw std::out_of_range, std::length_error, std::bad_alloc
+     */
+    int Print(const types::TableInputData& i_tableData) const
+    {
+        PrintHorizontalLine();
+        PrintHeader();
+        PrintHorizontalLine();
+
+        // print the table data
+        for (const auto& l_row : i_tableData)
+        {
+            unsigned l_columnNumber{0};
+
+            // number of columns in input data is greater than the number of
+            // columns specified in Table
+            if (l_row.size() > m_columns.size())
+            {
+                return constants::FAILURE;
+            }
+
+            for (const auto& l_entry : l_row)
+            {
+                PrintEntry(l_entry, m_columns[l_columnNumber].Width());
+
+                ++l_columnNumber;
+            }
+            std::cout << m_separator << std::endl;
+        }
+        PrintHorizontalLine();
+        return constants::SUCCESS;
+    }
+};
+
+} // namespace utils
+} // namespace vpd
diff --git a/vpd-tool/include/vpd_tool.hpp b/vpd-tool/include/vpd_tool.hpp
new file mode 100644
index 0000000..80be8e5
--- /dev/null
+++ b/vpd-tool/include/vpd_tool.hpp
@@ -0,0 +1,287 @@
+#pragma once
+
+#include "tool_utils.hpp"
+
+#include <nlohmann/json.hpp>
+
+#include <optional>
+#include <string>
+
+namespace vpd
+{
+/**
+ * @brief Class to support operations on VPD.
+ *
+ * The class provides API's to,
+ * Read keyword value from DBus/hardware.
+ * Update keyword value to DBus/hardware.
+ * Dump DBus object's critical information.
+ * Fix system VPD if any mismatch between DBus and hardware data.
+ * Reset specific system VPD keywords to its default value.
+ * Force VPD collection for hardware.
+ */
+class VpdTool
+{
+  private:
+    /**
+     * @brief Get specific properties of a FRU in JSON format.
+     *
+     * For a given object path of a FRU, this API returns the following
+     * properties of the FRU in JSON format:
+     * - Pretty Name, Location Code, Sub Model
+     * - SN, PN, CC, FN, DR keywords under VINI record.
+     *
+     * @param[in] i_objectPath - DBus object path
+     *
+     * @return On success, returns the properties of the FRU in JSON format,
+     * otherwise returns an empty JSON.
+     * If FRU's "Present" property is false, this API returns an empty JSON.
+     * Note: The caller of this API should handle empty JSON.
+     *
+     * @throw json::exception
+     */
+    nlohmann::json getFruProperties(const std::string& i_objectPath) const;
+
+    /**
+     * @brief Get any inventory property in JSON.
+     *
+     * API to get any property of a FRU in JSON format. Given an object path,
+     * interface and property name, this API does a D-Bus read property on PIM
+     * to get the value of that property and returns it in JSON format. This API
+     * returns empty JSON in case of failure. The caller of the API must check
+     * for empty JSON.
+     *
+     * @param[in] i_objectPath - DBus object path
+     * @param[in] i_interface - Interface name
+     * @param[in] i_propertyName - Property name
+     *
+     * @return On success, returns the property and its value in JSON format,
+     * otherwise return empty JSON.
+     * {"SN" : "ABCD"}
+     */
+    template <typename PropertyType>
+    nlohmann::json getInventoryPropertyJson(
+        const std::string& i_objectPath, const std::string& i_interface,
+        const std::string& i_propertyName) const noexcept;
+
+    /**
+     * @brief Get the "type" property for a FRU.
+     *
+     * Given a FRU path, and parsed System Config JSON, this API returns the
+     * "type" property for the FRU in JSON format. This API gets
+     * these properties from Phosphor Inventory Manager.
+     *
+     * @param[in] i_objectPath - DBus object path.
+     *
+     * @return On success, returns the "type" property in JSON
+     * format, otherwise returns empty JSON. The caller of this API should
+     * handle empty JSON.
+     */
+    nlohmann::json
+        getFruTypeProperty(const std::string& i_objectPath) const noexcept;
+
+    /**
+     * @brief Check if a FRU is present in the system.
+     *
+     * Given a FRU's object path, this API checks if the FRU is present in the
+     * system by reading the "Present" property of the FRU.
+     *
+     * @param[in] i_objectPath - DBus object path.
+     *
+     * @return true if FRU's "Present" property is true, false otherwise.
+     */
+    bool isFruPresent(const std::string& i_objectPath) const noexcept;
+
+    /**
+     * @brief An API to get backup-restore config JSON of the system.
+     *
+     * API gets this file by prasing system config JSON file and reading
+     * backupRestoreConfigPath tag.
+     *
+     * @return On success returns valid JSON object, otherwise returns empty
+     * JSON object.
+     *
+     * Note: The caller of this API should verify, is received JSON object is
+     * empty or not.
+     */
+    nlohmann::json getBackupRestoreCfgJsonObj() const noexcept;
+
+    /**
+     * @brief Prints the user options for fix system VPD command.
+     *
+     * @param[in] i_option - Option to use.
+     */
+    void printFixSystemVpdOption(
+        const types::UserOption& i_option) const noexcept;
+
+    /**
+     * @brief API to update source and destination keyword's value.
+     *
+     * API fetches source and destination keyword's value,
+     * for each keyword entries found in the input JSON object and updates the
+     * JSON object. If the path(source / destination) in JSON object is
+     * inventory object path, API sends the request to Inventory.Manager DBus
+     * service. Otherwise if its a hardware path, API sends the request to
+     * vpd-manager DBus service to get the keyword's value.
+     *
+     * @param[in,out] io_parsedJsonObj - Parsed JSON object.
+     *
+     * @return true on success, false in case of any error.
+     */
+    bool fetchKeywordInfo(nlohmann::json& io_parsedJsonObj) const noexcept;
+
+    /**
+     * @brief API to print system VPD keyword's information.
+     *
+     * The API prints source and destination keyword's information in the table
+     * format, found in the JSON object.
+     *
+     * @param[in] i_parsedJsonObj - Parsed JSON object.
+     */
+    void printSystemVpd(const nlohmann::json& i_parsedJsonObj) const noexcept;
+
+    /**
+     * @brief API to update keyword's value.
+     *
+     * API iterates the given JSON object for all record-keyword pairs, if there
+     * is any mismatch between source and destination keyword's value, API calls
+     * the utils::writeKeyword API to update keyword's value.
+     *
+     * Note: writeKeyword API, internally updates primary, backup, redundant
+     * EEPROM paths(if exists) with the given keyword's value.
+     *
+     * @param i_parsedJsonObj - Parsed JSON object.
+     * @param i_useBackupData - Specifies whether to use source or destination
+     * keyword's value to update the keyword's value.
+     *
+     * @return On success return 0, otherwise return -1.
+     */
+    int updateAllKeywords(const nlohmann::json& i_parsedJsonObj,
+                          bool i_useBackupData) const noexcept;
+
+    /**
+     * @brief API to handle more option for fix system VPD command.
+     *
+     * @param i_parsedJsonObj - Parsed JSON object.
+     *
+     * @return On success return 0, otherwise return -1.
+     */
+    int handleMoreOption(const nlohmann::json& i_parsedJsonObj) const noexcept;
+
+  public:
+    /**
+     * @brief Read keyword value.
+     *
+     * API to read VPD keyword's value from the given input path.
+     * If the provided i_onHardware option is true, read keyword's value from
+     * the hardware. Otherwise read keyword's value from DBus.
+     *
+     * @param[in] i_vpdPath - DBus object path or EEPROM path.
+     * @param[in] i_recordName - Record name.
+     * @param[in] i_keywordName - Keyword name.
+     * @param[in] i_onHardware - True if i_vpdPath is EEPROM path, false
+     * otherwise.
+     * @param[in] i_fileToSave - File path to save keyword's value, if not given
+     * result will redirect to a console.
+     *
+     * @return On success return 0, otherwise return -1.
+     */
+    int readKeyword(const std::string& i_vpdPath,
+                    const std::string& i_recordName,
+                    const std::string& i_keywordName, const bool i_onHardware,
+                    const std::string& i_fileToSave = {});
+
+    /**
+     * @brief Dump the given inventory object in JSON format to console.
+     *
+     * For a given object path of a FRU, this API dumps the following properties
+     * of the FRU in JSON format to console:
+     * - Pretty Name, Location Code, Sub Model
+     * - SN, PN, CC, FN, DR keywords under VINI record.
+     * If the FRU's "Present" property is not true, the above properties are not
+     * dumped to console.
+     *
+     * @param[in] i_fruPath - DBus object path.
+     *
+     * @return On success returns 0, otherwise returns -1.
+     */
+    int dumpObject(std::string i_fruPath) const noexcept;
+
+    /**
+     * @brief API to fix system VPD keywords.
+     *
+     * The API to fix the system VPD keywords. Mainly used when there
+     * is a mismatch between the primary and backup(secondary) VPD. User can
+     * choose option to update all primary keywords value with corresponding
+     * backup keywords value or can choose primary keyword value to sync
+     * secondary VPD. Otherwise, user can also interactively choose different
+     * action for individual keyword.
+     *
+     * @return On success returns 0, otherwise returns -1.
+     */
+    int fixSystemVpd() const noexcept;
+
+    /**
+     * @brief Write keyword's value.
+     *
+     * API to update VPD keyword's value to the given input path.
+     * If i_onHardware value in true, i_vpdPath is considered has hardware path
+     * otherwise it will be considered as DBus object path.
+     *
+     * For provided DBus object path both primary path or secondary path will
+     * get updated, also redundant EEPROM(if any) path with new keyword's value.
+     *
+     * In case of hardware path, only given hardware path gets updated with new
+     * keyword’s value, any backup or redundant EEPROM (if exists) paths won't
+     * get updated.
+     *
+     * @param[in] i_vpdPath - DBus object path or EEPROM path.
+     * @param[in] i_recordName - Record name.
+     * @param[in] i_keywordName - Keyword name.
+     * @param[in] i_keywordValue - Keyword value.
+     * @param[in] i_onHardware - True if i_vpdPath is EEPROM path, false
+     * otherwise.
+     *
+     * @return On success returns 0, otherwise returns -1.
+     */
+    int writeKeyword(std::string i_vpdPath, const std::string& i_recordName,
+                     const std::string& i_keywordName,
+                     const std::string& i_keywordValue,
+                     const bool i_onHardware) noexcept;
+
+    /**
+     * @brief Reset specific keywords on System VPD to default value.
+     *
+     * This API resets specific System VPD keywords to default value. The
+     * keyword values are reset on:
+     * 1. Primary EEPROM path.
+     * 2. Secondary EEPROM path.
+     * 3. D-Bus cache.
+     * 4. Backup path.
+     *
+     * @return On success returns 0, otherwise returns -1.
+     */
+    int cleanSystemVpd() const noexcept;
+
+    /**
+     * @brief Dump all the inventory objects in JSON or table format to console.
+     *
+     * This API dumps specific properties of all the inventory objects to
+     * console in JSON or table format to console. The inventory object paths
+     * are extracted from PIM. For each object, the following properties are
+     * dumped to console:
+     * - Present property, Pretty Name, Location Code, Sub Model
+     * - SN, PN, CC, FN, DR keywords under VINI record.
+     * If the "Present" property of a FRU is false, the FRU is not dumped to
+     * console.
+     * FRUs whose object path end in "unit([0-9][0-9]?)" are also not dumped to
+     * console.
+     *
+     * @param[in] i_dumpTable - Flag which specifies if the inventory should be
+     * dumped in table format or not.
+     *
+     * @return On success returns 0, otherwise returns -1.
+     */
+    int dumpInventory(bool i_dumpTable = false) const noexcept;
+};
+} // namespace vpd
diff --git a/vpd-tool/meson.build b/vpd-tool/meson.build
new file mode 100644
index 0000000..a2c1ea1
--- /dev/null
+++ b/vpd-tool/meson.build
@@ -0,0 +1,19 @@
+compiler = meson.get_compiler('cpp')
+if compiler.has_header('CLI/CLI.hpp')
+    CLI11_dep = declare_dependency()
+else
+    CLI11_dep = dependency('CLI11')
+endif
+
+sdbusplus = dependency('sdbusplus', fallback: [ 'sdbusplus', 'sdbusplus_dep' ])
+dependency_list = [CLI11_dep, sdbusplus]
+
+sources = ['src/vpd_tool_main.cpp',
+            'src/vpd_tool.cpp']
+
+vpd_tool_exe = executable('vpd-tool',
+                          sources,
+                          include_directories : ['../', 'include/'],
+                          dependencies: dependency_list,
+                          install: true
+                        )
\ No newline at end of file
diff --git a/vpd-tool/src/vpd_tool.cpp b/vpd-tool/src/vpd_tool.cpp
new file mode 100644
index 0000000..f6e4cd9
--- /dev/null
+++ b/vpd-tool/src/vpd_tool.cpp
@@ -0,0 +1,1195 @@
+#include "config.h"
+
+#include "vpd_tool.hpp"
+
+#include "tool_constants.hpp"
+#include "tool_types.hpp"
+#include "tool_utils.hpp"
+
+#include <iostream>
+#include <regex>
+#include <tuple>
+namespace vpd
+{
+int VpdTool::readKeyword(
+    const std::string& i_vpdPath, const std::string& i_recordName,
+    const std::string& i_keywordName, const bool i_onHardware,
+    const std::string& i_fileToSave)
+{
+    int l_rc = constants::FAILURE;
+    try
+    {
+        types::DbusVariantType l_keywordValue;
+        if (i_onHardware)
+        {
+            l_keywordValue = utils::readKeywordFromHardware(
+                i_vpdPath, std::make_tuple(i_recordName, i_keywordName));
+        }
+        else
+        {
+            std::string l_inventoryObjectPath(
+                constants::baseInventoryPath + i_vpdPath);
+
+            l_keywordValue = utils::readDbusProperty(
+                constants::inventoryManagerService, l_inventoryObjectPath,
+                constants::ipzVpdInfPrefix + i_recordName, i_keywordName);
+        }
+
+        if (const auto l_value =
+                std::get_if<types::BinaryVector>(&l_keywordValue);
+            l_value && !l_value->empty())
+        {
+            // ToDo: Print value in both ASCII and hex formats
+            const std::string& l_keywordStrValue =
+                utils::getPrintableValue(*l_value);
+
+            if (i_fileToSave.empty())
+            {
+                utils::displayOnConsole(i_vpdPath, i_keywordName,
+                                        l_keywordStrValue);
+                l_rc = constants::SUCCESS;
+            }
+            else
+            {
+                if (utils::saveToFile(i_fileToSave, l_keywordStrValue))
+                {
+                    std::cout
+                        << "Value read is saved on the file: " << i_fileToSave
+                        << std::endl;
+                    l_rc = constants::SUCCESS;
+                }
+                else
+                {
+                    std::cerr
+                        << "Error while saving the read value on the file: "
+                        << i_fileToSave
+                        << "\nDisplaying the read value on console"
+                        << std::endl;
+                    utils::displayOnConsole(i_vpdPath, i_keywordName,
+                                            l_keywordStrValue);
+                }
+            }
+        }
+        else
+        {
+            // TODO: Enable logging when verbose is enabled.
+            // std::cout << "Invalid data type or empty data received." <<
+            // std::endl;
+        }
+    }
+    catch (const std::exception& l_ex)
+    {
+        // TODO: Enable logging when verbose is enabled.
+        /*std::cerr << "Read keyword's value for path: " << i_vpdPath
+                  << ", Record: " << i_recordName
+                  << ", Keyword: " << i_keywordName
+                  << " is failed, exception: " << l_ex.what() << std::endl;*/
+    }
+    return l_rc;
+}
+
+int VpdTool::dumpObject(std::string i_fruPath) const noexcept
+{
+    int l_rc{constants::FAILURE};
+    try
+    {
+        // ToDo: For PFuture system take only full path from the user.
+        i_fruPath = constants::baseInventoryPath + i_fruPath;
+
+        nlohmann::json l_resultJsonArray = nlohmann::json::array({});
+        const nlohmann::json l_fruJson = getFruProperties(i_fruPath);
+        if (!l_fruJson.empty())
+        {
+            l_resultJsonArray += l_fruJson;
+
+            utils::printJson(l_resultJsonArray);
+        }
+        else
+        {
+            std::cout << "FRU [" << i_fruPath
+                      << "] is not present in the system" << std::endl;
+        }
+        l_rc = constants::SUCCESS;
+    }
+    catch (std::exception& l_ex)
+    {
+        // TODO: Enable logging when verbose is enabled.
+        // std::cerr << "Dump Object failed for FRU [" << i_fruPath
+        //           << "], Error: " << l_ex.what() << std::endl;
+    }
+    return l_rc;
+}
+
+nlohmann::json VpdTool::getFruProperties(const std::string& i_objectPath) const
+{
+    // check if FRU is present in the system
+    if (!isFruPresent(i_objectPath))
+    {
+        return nlohmann::json::object_t();
+    }
+
+    nlohmann::json l_fruJson = nlohmann::json::object_t({});
+
+    l_fruJson.emplace(i_objectPath, nlohmann::json::object_t({}));
+
+    auto& l_fruObject = l_fruJson[i_objectPath];
+
+    const auto l_prettyNameInJson = getInventoryPropertyJson<std::string>(
+        i_objectPath, constants::inventoryItemInf, "PrettyName");
+    if (!l_prettyNameInJson.empty())
+    {
+        l_fruObject.insert(l_prettyNameInJson.cbegin(),
+                           l_prettyNameInJson.cend());
+    }
+
+    const auto l_locationCodeInJson = getInventoryPropertyJson<std::string>(
+        i_objectPath, constants::locationCodeInf, "LocationCode");
+    if (!l_locationCodeInJson.empty())
+    {
+        l_fruObject.insert(l_locationCodeInJson.cbegin(),
+                           l_locationCodeInJson.cend());
+    }
+
+    const auto l_subModelInJson = getInventoryPropertyJson<std::string>(
+        i_objectPath, constants::assetInf, "SubModel");
+
+    if (!l_subModelInJson.empty() &&
+        !l_subModelInJson.value("SubModel", "").empty())
+    {
+        l_fruObject.insert(l_subModelInJson.cbegin(), l_subModelInJson.cend());
+    }
+
+    // Get the properties under VINI interface.
+
+    nlohmann::json l_viniPropertiesInJson = nlohmann::json::object({});
+
+    auto l_readViniKeyWord = [i_objectPath, &l_viniPropertiesInJson,
+                              this](const std::string& i_keyWord) {
+        const nlohmann::json l_keyWordJson =
+            getInventoryPropertyJson<vpd::types::BinaryVector>(
+                i_objectPath, constants::kwdVpdInf, i_keyWord);
+        l_viniPropertiesInJson.insert(l_keyWordJson.cbegin(),
+                                      l_keyWordJson.cend());
+    };
+
+    const std::vector<std::string> l_viniKeywords = {"SN", "PN", "CC", "FN",
+                                                     "DR"};
+
+    std::for_each(l_viniKeywords.cbegin(), l_viniKeywords.cend(),
+                  l_readViniKeyWord);
+
+    if (!l_viniPropertiesInJson.empty())
+    {
+        l_fruObject.insert(l_viniPropertiesInJson.cbegin(),
+                           l_viniPropertiesInJson.cend());
+    }
+
+    const auto l_typePropertyJson = getFruTypeProperty(i_objectPath);
+    if (!l_typePropertyJson.empty())
+    {
+        l_fruObject.insert(l_typePropertyJson.cbegin(),
+                           l_typePropertyJson.cend());
+    }
+
+    return l_fruJson;
+}
+
+template <typename PropertyType>
+nlohmann::json VpdTool::getInventoryPropertyJson(
+    const std::string& i_objectPath, const std::string& i_interface,
+    const std::string& i_propertyName) const noexcept
+{
+    nlohmann::json l_resultInJson = nlohmann::json::object({});
+    try
+    {
+        types::DbusVariantType l_keyWordValue;
+
+        l_keyWordValue =
+            utils::readDbusProperty(constants::inventoryManagerService,
+                                    i_objectPath, i_interface, i_propertyName);
+
+        if (const auto l_value = std::get_if<PropertyType>(&l_keyWordValue))
+        {
+            if constexpr (std::is_same<PropertyType, std::string>::value)
+            {
+                l_resultInJson.emplace(i_propertyName, *l_value);
+            }
+            else if constexpr (std::is_same<PropertyType, bool>::value)
+            {
+                l_resultInJson.emplace(i_propertyName,
+                                       *l_value ? "true" : "false");
+            }
+            else if constexpr (std::is_same<PropertyType,
+                                            types::BinaryVector>::value)
+            {
+                const std::string& l_keywordStrValue =
+                    vpd::utils::getPrintableValue(*l_value);
+
+                l_resultInJson.emplace(i_propertyName, l_keywordStrValue);
+            }
+        }
+        else
+        {
+            // TODO: Enable logging when verbose is enabled.
+            // std::cout << "Invalid data type received." << std::endl;
+        }
+    }
+    catch (const std::exception& l_ex)
+    {
+        // TODO: Enable logging when verbose is enabled.
+        /*std::cerr << "Read " << i_propertyName << " value for FRU path: " <<
+           i_objectPath
+                  << ", failed with exception: " << l_ex.what() << std::endl;*/
+    }
+    return l_resultInJson;
+}
+
+int VpdTool::fixSystemVpd() const noexcept
+{
+    int l_rc = constants::FAILURE;
+
+    nlohmann::json l_backupRestoreCfgJsonObj = getBackupRestoreCfgJsonObj();
+    if (!fetchKeywordInfo(l_backupRestoreCfgJsonObj))
+    {
+        return l_rc;
+    }
+
+    printSystemVpd(l_backupRestoreCfgJsonObj);
+
+    do
+    {
+        printFixSystemVpdOption(types::UserOption::UseBackupDataForAll);
+        printFixSystemVpdOption(
+            types::UserOption::UseSystemBackplaneDataForAll);
+        printFixSystemVpdOption(types::UserOption::MoreOptions);
+        printFixSystemVpdOption(types::UserOption::Exit);
+
+        int l_userSelectedOption = types::UserOption::Exit;
+        std::cin >> l_userSelectedOption;
+
+        std::cout << std::endl << std::string(191, '=') << std::endl;
+
+        if (types::UserOption::UseBackupDataForAll == l_userSelectedOption)
+        {
+            l_rc = updateAllKeywords(l_backupRestoreCfgJsonObj, true);
+            break;
+        }
+        else if (types::UserOption::UseSystemBackplaneDataForAll ==
+                 l_userSelectedOption)
+        {
+            l_rc = updateAllKeywords(l_backupRestoreCfgJsonObj, false);
+            break;
+        }
+        else if (types::UserOption::MoreOptions == l_userSelectedOption)
+        {
+            l_rc = handleMoreOption(l_backupRestoreCfgJsonObj);
+            break;
+        }
+        else if (types::UserOption::Exit == l_userSelectedOption)
+        {
+            std::cout << "Exit successfully" << std::endl;
+            break;
+        }
+        else
+        {
+            std::cout << "Provide a valid option. Retry." << std::endl;
+        }
+    } while (true);
+
+    return l_rc;
+}
+
+int VpdTool::writeKeyword(
+    std::string i_vpdPath, const std::string& i_recordName,
+    const std::string& i_keywordName, const std::string& i_keywordValue,
+    const bool i_onHardware) noexcept
+{
+    int l_rc = constants::FAILURE;
+    try
+    {
+        if (i_vpdPath.empty() || i_recordName.empty() ||
+            i_keywordName.empty() || i_keywordValue.empty())
+        {
+            throw std::runtime_error("Received input is empty.");
+        }
+
+        auto l_paramsToWrite =
+            std::make_tuple(i_recordName, i_keywordName,
+                            utils::convertToBinary(i_keywordValue));
+
+        if (i_onHardware)
+        {
+            l_rc = utils::writeKeywordOnHardware(i_vpdPath, l_paramsToWrite);
+        }
+        else
+        {
+            i_vpdPath = constants::baseInventoryPath + i_vpdPath;
+            l_rc = utils::writeKeyword(i_vpdPath, l_paramsToWrite);
+        }
+
+        if (l_rc > 0)
+        {
+            std::cout << "Data updated successfully " << std::endl;
+            l_rc = constants::SUCCESS;
+        }
+    }
+    catch (const std::exception& l_ex)
+    {
+        // TODO: Enable log when verbose is enabled.
+        std::cerr << "Write keyword's value for path: " << i_vpdPath
+                  << ", Record: " << i_recordName
+                  << ", Keyword: " << i_keywordName
+                  << " is failed. Exception: " << l_ex.what() << std::endl;
+    }
+    return l_rc;
+}
+
+nlohmann::json VpdTool::getBackupRestoreCfgJsonObj() const noexcept
+{
+    nlohmann::json l_parsedBackupRestoreJson{};
+    try
+    {
+        nlohmann::json l_parsedSystemJson =
+            utils::getParsedJson(INVENTORY_JSON_SYM_LINK);
+
+        // check for mandatory fields at this point itself.
+        if (!l_parsedSystemJson.contains("backupRestoreConfigPath"))
+        {
+            throw std::runtime_error(
+                "backupRestoreConfigPath tag is missing from system config JSON : " +
+                std::string(INVENTORY_JSON_SYM_LINK));
+        }
+
+        l_parsedBackupRestoreJson =
+            utils::getParsedJson(l_parsedSystemJson["backupRestoreConfigPath"]);
+    }
+    catch (const std::exception& l_ex)
+    {
+        // TODO: Enable logging when verbose is enabled.
+        std::cerr << l_ex.what() << std::endl;
+    }
+
+    return l_parsedBackupRestoreJson;
+}
+
+int VpdTool::cleanSystemVpd() const noexcept
+{
+    try
+    {
+        // get the keyword map from backup_restore json
+        // iterate through the keyword map get default value of
+        // l_keywordName.
+        // use writeKeyword API to update default value on hardware,
+        // backup and D - Bus.
+        const nlohmann::json l_parsedBackupRestoreJson =
+            getBackupRestoreCfgJsonObj();
+
+        // check for mandatory tags
+        if (l_parsedBackupRestoreJson.contains("source") &&
+            l_parsedBackupRestoreJson.contains("backupMap") &&
+            l_parsedBackupRestoreJson["source"].contains("hardwarePath") &&
+            l_parsedBackupRestoreJson["backupMap"].is_array())
+        {
+            // get the source hardware path
+            const auto& l_hardwarePath =
+                l_parsedBackupRestoreJson["source"]["hardwarePath"];
+
+            // iterate through the backup map
+            for (const auto& l_aRecordKwInfo :
+                 l_parsedBackupRestoreJson["backupMap"])
+            {
+                // check if Manufacturing Reset is required for this entry
+                const bool l_isMfgCleanRequired =
+                    l_aRecordKwInfo.value("isManufactureResetRequired", false);
+
+                if (l_isMfgCleanRequired)
+                {
+                    // get the Record name and Keyword name
+                    const std::string& l_srcRecordName =
+                        l_aRecordKwInfo.value("sourceRecord", "");
+                    const std::string& l_srcKeywordName =
+                        l_aRecordKwInfo.value("sourceKeyword", "");
+
+                    // validate the Record name, Keyword name and the
+                    // defaultValue
+                    if (!l_srcRecordName.empty() && !l_srcKeywordName.empty() &&
+                        l_aRecordKwInfo.contains("defaultValue") &&
+                        l_aRecordKwInfo["defaultValue"].is_array())
+                    {
+                        const types::BinaryVector l_defaultBinaryValue =
+                            l_aRecordKwInfo["defaultValue"]
+                                .get<types::BinaryVector>();
+
+                        // update the Keyword with default value, use D-Bus
+                        // method UpdateKeyword exposed by vpd-manager.
+                        // Note: writing to all paths (Primary EEPROM path,
+                        // Secondary EEPROM path, D-Bus cache and Backup path)
+                        // is the responsibility of vpd-manager's UpdateKeyword
+                        // API
+                        if (constants::FAILURE ==
+                            utils::writeKeyword(
+                                l_hardwarePath,
+                                std::make_tuple(l_srcRecordName,
+                                                l_srcKeywordName,
+                                                l_defaultBinaryValue)))
+                        {
+                            // TODO: Enable logging when verbose
+                            // is enabled.
+                            std::cerr << "Failed to update " << l_srcRecordName
+                                      << ":" << l_srcKeywordName << std::endl;
+                        }
+                    }
+                    else
+                    {
+                        std::cerr
+                            << "Unrecognized Entry Record [" << l_srcRecordName
+                            << "] Keyword [" << l_srcKeywordName
+                            << "] in Backup Restore JSON backup map"
+                            << std::endl;
+                    }
+                } // mfgClean required check
+            } // keyword list loop
+        }
+        else // backupRestoreJson is not valid
+        {
+            std::cerr << "Backup Restore JSON is not valid" << std::endl;
+        }
+
+        // success/failure message
+        std::cout << "The critical keywords from system backplane VPD has "
+                     "been reset successfully."
+                  << std::endl;
+
+    } // try block end
+    catch (const std::exception& l_ex)
+    {
+        // TODO: Enable logging when verbose is enabled.
+        std::cerr
+            << "Manufacturing reset on system vpd keywords is unsuccessful. Error : "
+            << l_ex.what() << std::endl;
+    }
+    return constants::SUCCESS;
+}
+
+bool VpdTool::fetchKeywordInfo(nlohmann::json& io_parsedJsonObj) const noexcept
+{
+    bool l_returnValue = false;
+    try
+    {
+        if (io_parsedJsonObj.empty() || !io_parsedJsonObj.contains("source") ||
+            !io_parsedJsonObj.contains("destination") ||
+            !io_parsedJsonObj.contains("backupMap"))
+        {
+            throw std::runtime_error("Invalid JSON");
+        }
+
+        std::string l_srcVpdPath;
+        std::string l_dstVpdPath;
+
+        bool l_isSourceOnHardware = false;
+        if (l_srcVpdPath = io_parsedJsonObj["source"].value("hardwarePath", "");
+            !l_srcVpdPath.empty())
+        {
+            l_isSourceOnHardware = true;
+        }
+        else if (l_srcVpdPath =
+                     io_parsedJsonObj["source"].value("inventoryPath", "");
+                 l_srcVpdPath.empty())
+        {
+            throw std::runtime_error("Source path is empty in JSON");
+        }
+
+        bool l_isDestinationOnHardware = false;
+        if (l_dstVpdPath =
+                io_parsedJsonObj["destination"].value("hardwarePath", "");
+            !l_dstVpdPath.empty())
+        {
+            l_isDestinationOnHardware = true;
+        }
+        else if (l_dstVpdPath =
+                     io_parsedJsonObj["destination"].value("inventoryPath", "");
+                 l_dstVpdPath.empty())
+        {
+            throw std::runtime_error("Destination path is empty in JSON");
+        }
+
+        for (auto& l_aRecordKwInfo : io_parsedJsonObj["backupMap"])
+        {
+            const std::string& l_srcRecordName =
+                l_aRecordKwInfo.value("sourceRecord", "");
+            const std::string& l_srcKeywordName =
+                l_aRecordKwInfo.value("sourceKeyword", "");
+            const std::string& l_dstRecordName =
+                l_aRecordKwInfo.value("destinationRecord", "");
+            const std::string& l_dstKeywordName =
+                l_aRecordKwInfo.value("destinationKeyword", "");
+
+            if (l_srcRecordName.empty() || l_dstRecordName.empty() ||
+                l_srcKeywordName.empty() || l_dstKeywordName.empty())
+            {
+                // TODO: Enable logging when verbose is enabled.
+                std::cout << "Record or keyword not found in the JSON."
+                          << std::endl;
+                continue;
+            }
+
+            types::DbusVariantType l_srcKeywordVariant;
+            if (l_isSourceOnHardware)
+            {
+                l_srcKeywordVariant = utils::readKeywordFromHardware(
+                    l_srcVpdPath,
+                    std::make_tuple(l_srcRecordName, l_srcKeywordName));
+            }
+            else
+            {
+                l_srcKeywordVariant = utils::readDbusProperty(
+                    constants::inventoryManagerService, l_srcVpdPath,
+                    constants::ipzVpdInfPrefix + l_srcRecordName,
+                    l_srcKeywordName);
+            }
+
+            if (auto l_srcKeywordValue =
+                    std::get_if<types::BinaryVector>(&l_srcKeywordVariant);
+                l_srcKeywordValue && !l_srcKeywordValue->empty())
+            {
+                l_aRecordKwInfo["sourcekeywordValue"] = *l_srcKeywordValue;
+            }
+            else
+            {
+                // TODO: Enable logging when verbose is enabled.
+                std::cout
+                    << "Invalid data type or empty data received, for source record: "
+                    << l_srcRecordName << ", keyword: " << l_srcKeywordName
+                    << std::endl;
+                continue;
+            }
+
+            types::DbusVariantType l_dstKeywordVariant;
+            if (l_isDestinationOnHardware)
+            {
+                l_dstKeywordVariant = utils::readKeywordFromHardware(
+                    l_dstVpdPath,
+                    std::make_tuple(l_dstRecordName, l_dstKeywordName));
+            }
+            else
+            {
+                l_dstKeywordVariant = utils::readDbusProperty(
+                    constants::inventoryManagerService, l_dstVpdPath,
+                    constants::ipzVpdInfPrefix + l_dstRecordName,
+                    l_dstKeywordName);
+            }
+
+            if (auto l_dstKeywordValue =
+                    std::get_if<types::BinaryVector>(&l_dstKeywordVariant);
+                l_dstKeywordValue && !l_dstKeywordValue->empty())
+            {
+                l_aRecordKwInfo["destinationkeywordValue"] = *l_dstKeywordValue;
+            }
+            else
+            {
+                // TODO: Enable logging when verbose is enabled.
+                std::cout
+                    << "Invalid data type or empty data received, for destination record: "
+                    << l_dstRecordName << ", keyword: " << l_dstKeywordName
+                    << std::endl;
+                continue;
+            }
+        }
+
+        l_returnValue = true;
+    }
+    catch (const std::exception& l_ex)
+    {
+        // TODO: Enable logging when verbose is enabled.
+        std::cerr << l_ex.what() << std::endl;
+    }
+
+    return l_returnValue;
+}
+
+nlohmann::json
+    VpdTool::getFruTypeProperty(const std::string& i_objectPath) const noexcept
+{
+    nlohmann::json l_resultInJson = nlohmann::json::object({});
+    std::vector<std::string> l_pimInfList;
+
+    auto l_serviceInfMap = utils::GetServiceInterfacesForObject(
+        i_objectPath, std::vector<std::string>{constants::inventoryItemInf});
+    if (l_serviceInfMap.contains(constants::inventoryManagerService))
+    {
+        l_pimInfList = l_serviceInfMap[constants::inventoryManagerService];
+
+        // iterate through the list and find
+        // "xyz.openbmc_project.Inventory.Item.*"
+        for (const auto& l_interface : l_pimInfList)
+        {
+            if (l_interface.find(constants::inventoryItemInf) !=
+                    std::string::npos &&
+                l_interface.length() >
+                    std::string(constants::inventoryItemInf).length())
+            {
+                l_resultInJson.emplace("type", l_interface);
+            }
+        }
+    }
+    return l_resultInJson;
+}
+
+bool VpdTool::isFruPresent(const std::string& i_objectPath) const noexcept
+{
+    bool l_returnValue{false};
+    try
+    {
+        types::DbusVariantType l_keyWordValue;
+
+        l_keyWordValue = utils::readDbusProperty(
+            constants::inventoryManagerService, i_objectPath,
+            constants::inventoryItemInf, "Present");
+
+        if (const auto l_value = std::get_if<bool>(&l_keyWordValue))
+        {
+            l_returnValue = *l_value;
+        }
+    }
+    catch (const std::runtime_error& l_ex)
+    {
+        // TODO: Enable logging when verbose is enabled.
+        // std::cerr << "Failed to check \"Present\" property for FRU "
+        //           << i_objectPath << " Error: " << l_ex.what() <<
+        //           std::endl;
+    }
+    return l_returnValue;
+}
+
+void VpdTool::printFixSystemVpdOption(
+    const types::UserOption& i_option) const noexcept
+{
+    switch (i_option)
+    {
+        case types::UserOption::Exit:
+            std::cout << "Enter 0 => To exit successfully : ";
+            break;
+        case types::UserOption::UseBackupDataForAll:
+            std::cout << "Enter 1 => If you choose the data on backup for all "
+                         "mismatching record-keyword pairs"
+                      << std::endl;
+            break;
+        case types::UserOption::UseSystemBackplaneDataForAll:
+            std::cout << "Enter 2 => If you choose the data on primary for all "
+                         "mismatching record-keyword pairs"
+                      << std::endl;
+            break;
+        case types::UserOption::MoreOptions:
+            std::cout << "Enter 3 => If you wish to explore more options"
+                      << std::endl;
+            break;
+        case types::UserOption::UseBackupDataForCurrent:
+            std::cout << "Enter 4 => If you choose the data on backup as the "
+                         "right value"
+                      << std::endl;
+            break;
+        case types::UserOption::UseSystemBackplaneDataForCurrent:
+            std::cout << "Enter 5 => If you choose the data on primary as the "
+                         "right value"
+                      << std::endl;
+            break;
+        case types::UserOption::NewValueOnBoth:
+            std::cout
+                << "Enter 6 => If you wish to enter a new value to update "
+                   "both on backup and primary"
+                << std::endl;
+            break;
+        case types::UserOption::SkipCurrent:
+            std::cout << "Enter 7 => If you wish to skip the above "
+                         "record-keyword pair"
+                      << std::endl;
+            break;
+    }
+}
+
+int VpdTool::dumpInventory(bool i_dumpTable) const noexcept
+{
+    int l_rc{constants::FAILURE};
+
+    try
+    {
+        // get all object paths under PIM
+        const auto l_objectPaths = utils::GetSubTreePaths(
+            constants::baseInventoryPath, 0,
+            std::vector<std::string>{constants::inventoryItemInf});
+
+        if (!l_objectPaths.empty())
+        {
+            nlohmann::json l_resultInJson = nlohmann::json::array({});
+
+            std::for_each(l_objectPaths.begin(), l_objectPaths.end(),
+                          [&](const auto& l_objectPath) {
+                              const auto l_fruJson =
+                                  getFruProperties(l_objectPath);
+                              if (!l_fruJson.empty())
+                              {
+                                  if (l_resultInJson.empty())
+                                  {
+                                      l_resultInJson += l_fruJson;
+                                  }
+                                  else
+                                  {
+                                      l_resultInJson.at(0).insert(
+                                          l_fruJson.cbegin(), l_fruJson.cend());
+                                  }
+                              }
+                          });
+
+            if (i_dumpTable)
+            {
+                // create Table object
+                utils::Table l_inventoryTable{};
+
+                // columns to be populated in the Inventory table
+                const std::vector<types::TableColumnNameSizePair>
+                    l_tableColumns = {
+                        {"FRU", 100},         {"CC", 6},  {"DR", 20},
+                        {"LocationCode", 32}, {"PN", 8},  {"PrettyName", 80},
+                        {"SubModel", 10},     {"SN", 15}, {"type", 60}};
+
+                types::TableInputData l_tableData;
+
+                // First prepare the Table Columns
+                for (const auto& l_column : l_tableColumns)
+                {
+                    if (constants::FAILURE ==
+                        l_inventoryTable.AddColumn(l_column.first,
+                                                   l_column.second))
+                    {
+                        // TODO: Enable logging when verbose is enabled.
+                        std::cerr << "Failed to add column " << l_column.first
+                                  << " in Inventory Table." << std::endl;
+                    }
+                }
+
+                // iterate through the json array
+                for (const auto& l_fruEntry : l_resultInJson[0].items())
+                {
+                    // if object path ends in "unit([0-9][0-9]?)", skip adding
+                    // the object path in the table
+                    if (std::regex_search(l_fruEntry.key(),
+                                          std::regex("unit([0-9][0-9]?)")))
+                    {
+                        continue;
+                    }
+
+                    std::vector<std::string> l_row;
+                    for (const auto& l_column : l_tableColumns)
+                    {
+                        const auto& l_fruJson = l_fruEntry.value();
+
+                        if (l_column.first == "FRU")
+                        {
+                            l_row.push_back(l_fruEntry.key());
+                        }
+                        else
+                        {
+                            if (l_fruJson.contains(l_column.first))
+                            {
+                                l_row.push_back(l_fruJson[l_column.first]);
+                            }
+                            else
+                            {
+                                l_row.push_back("");
+                            }
+                        }
+                    }
+
+                    l_tableData.push_back(l_row);
+                }
+
+                l_rc = l_inventoryTable.Print(l_tableData);
+            }
+            else
+            {
+                // print JSON to console
+                utils::printJson(l_resultInJson);
+                l_rc = constants::SUCCESS;
+            }
+        }
+    }
+    catch (const std::exception& l_ex)
+    {
+        // TODO: Enable logging when verbose is enabled.
+        std::cerr << "Dump inventory failed. Error: " << l_ex.what()
+                  << std::endl;
+    }
+    return l_rc;
+}
+
+void VpdTool::printSystemVpd(
+    const nlohmann::json& i_parsedJsonObj) const noexcept
+{
+    if (i_parsedJsonObj.empty() || !i_parsedJsonObj.contains("backupMap"))
+    {
+        // TODO: Enable logging when verbose is enabled.
+        std::cerr << "Invalid JSON to print system VPD" << std::endl;
+    }
+
+    std::string l_outline(191, '=');
+    std::cout << "\nRestorable record-keyword pairs and their data on backup & "
+                 "primary.\n\n"
+              << l_outline << std::endl;
+
+    std::cout << std::left << std::setw(6) << "S.No" << std::left
+              << std::setw(8) << "Record" << std::left << std::setw(9)
+              << "Keyword" << std::left << std::setw(75) << "Data On Backup"
+              << std::left << std::setw(75) << "Data On Primary" << std::left
+              << std::setw(14) << "Data Mismatch\n"
+              << l_outline << std::endl;
+
+    uint8_t l_slNum = 0;
+
+    for (const auto& l_aRecordKwInfo : i_parsedJsonObj["backupMap"])
+    {
+        if (l_aRecordKwInfo.contains("sourceRecord") ||
+            l_aRecordKwInfo.contains("sourceKeyword") ||
+            l_aRecordKwInfo.contains("destinationkeywordValue") ||
+            l_aRecordKwInfo.contains("sourcekeywordValue"))
+        {
+            std::string l_mismatchFound{
+                (l_aRecordKwInfo["destinationkeywordValue"] !=
+                 l_aRecordKwInfo["sourcekeywordValue"])
+                    ? "YES"
+                    : "NO"};
+
+            std::string l_splitLine(191, '-');
+
+            try
+            {
+                std::cout << std::left << std::setw(6)
+                          << static_cast<int>(++l_slNum) << std::left
+                          << std::setw(8)
+                          << l_aRecordKwInfo.value("sourceRecord", "")
+                          << std::left << std::setw(9)
+                          << l_aRecordKwInfo.value("sourceKeyword", "")
+                          << std::left << std::setw(75) << std::setfill(' ')
+                          << utils::getPrintableValue(
+                                 l_aRecordKwInfo["destinationkeywordValue"])
+                          << std::left << std::setw(75) << std::setfill(' ')
+                          << utils::getPrintableValue(
+                                 l_aRecordKwInfo["sourcekeywordValue"])
+                          << std::left << std::setw(14) << l_mismatchFound
+                          << '\n'
+                          << l_splitLine << std::endl;
+            }
+            catch (const std::exception& l_ex)
+            {
+                // TODO: Enable logging when verbose is enabled.
+                std::cerr << l_ex.what() << std::endl;
+            }
+        }
+    }
+}
+
+int VpdTool::updateAllKeywords(const nlohmann::json& i_parsedJsonObj,
+                               bool i_useBackupData) const noexcept
+{
+    int l_rc = constants::FAILURE;
+
+    if (i_parsedJsonObj.empty() || !i_parsedJsonObj.contains("source") ||
+        !i_parsedJsonObj.contains("backupMap"))
+    {
+        // TODO: Enable logging when verbose is enabled.
+        std::cerr << "Invalid JSON" << std::endl;
+        return l_rc;
+    }
+
+    std::string l_srcVpdPath;
+    if (auto l_vpdPath = i_parsedJsonObj["source"].value("hardwarePath", "");
+        !l_vpdPath.empty())
+    {
+        l_srcVpdPath = l_vpdPath;
+    }
+    else if (auto l_vpdPath =
+                 i_parsedJsonObj["source"].value("inventoryPath", "");
+             !l_vpdPath.empty())
+    {
+        l_srcVpdPath = l_vpdPath;
+    }
+    else
+    {
+        // TODO: Enable logging when verbose is enabled.
+        std::cerr << "source path information is missing in JSON" << std::endl;
+        return l_rc;
+    }
+
+    bool l_anyMismatchFound = false;
+    for (const auto& l_aRecordKwInfo : i_parsedJsonObj["backupMap"])
+    {
+        if (!l_aRecordKwInfo.contains("sourceRecord") ||
+            !l_aRecordKwInfo.contains("sourceKeyword") ||
+            !l_aRecordKwInfo.contains("destinationkeywordValue") ||
+            !l_aRecordKwInfo.contains("sourcekeywordValue"))
+        {
+            // TODO: Enable logging when verbose is enabled.
+            std::cerr << "Missing required information in the JSON"
+                      << std::endl;
+            continue;
+        }
+
+        if (l_aRecordKwInfo["sourcekeywordValue"] !=
+            l_aRecordKwInfo["destinationkeywordValue"])
+        {
+            l_anyMismatchFound = true;
+
+            auto l_keywordValue =
+                i_useBackupData ? l_aRecordKwInfo["destinationkeywordValue"]
+                                : l_aRecordKwInfo["sourcekeywordValue"];
+
+            auto l_paramsToWrite = std::make_tuple(
+                l_aRecordKwInfo["sourceRecord"],
+                l_aRecordKwInfo["sourceKeyword"], l_keywordValue);
+
+            try
+            {
+                l_rc = utils::writeKeyword(l_srcVpdPath, l_paramsToWrite);
+                if (l_rc > 0)
+                {
+                    l_rc = constants::SUCCESS;
+                }
+            }
+            catch (const std::exception& l_ex)
+            {
+                // TODO: Enable logging when verbose is enabled.
+                std::cerr << "write keyword failed for record: "
+                          << l_aRecordKwInfo["sourceRecord"]
+                          << ", keyword: " << l_aRecordKwInfo["sourceKeyword"]
+                          << ", error: " << l_ex.what() << std::ends;
+            }
+        }
+    }
+
+    std::string l_dataUsed =
+        (i_useBackupData ? "data from backup" : "data from primary VPD");
+    if (l_anyMismatchFound)
+    {
+        std::cout << "Data updated successfully for all mismatching "
+                     "record-keyword pairs by choosing their corresponding "
+                  << l_dataUsed << ". Exit successfully." << std::endl;
+    }
+    else
+    {
+        std::cout << "No mismatch found for any of the above mentioned "
+                     "record-keyword pair. Exit successfully."
+                  << std::endl;
+    }
+
+    return l_rc;
+}
+
+int VpdTool::handleMoreOption(
+    const nlohmann::json& i_parsedJsonObj) const noexcept
+{
+    int l_rc = constants::FAILURE;
+
+    try
+    {
+        if (i_parsedJsonObj.empty() || !i_parsedJsonObj.contains("backupMap"))
+        {
+            throw std::runtime_error("Invalid JSON");
+        }
+
+        std::string l_srcVpdPath;
+
+        if (auto l_vpdPath =
+                i_parsedJsonObj["source"].value("hardwarePath", "");
+            !l_vpdPath.empty())
+        {
+            l_srcVpdPath = l_vpdPath;
+        }
+        else if (auto l_vpdPath =
+                     i_parsedJsonObj["source"].value("inventoryPath", "");
+                 !l_vpdPath.empty())
+        {
+            l_srcVpdPath = l_vpdPath;
+        }
+        else
+        {
+            throw std::runtime_error(
+                "source path information is missing in JSON");
+        }
+
+        auto updateKeywordValue =
+            [](std::string io_vpdPath, const std::string& i_recordName,
+               const std::string& i_keywordName,
+               const types::BinaryVector& i_keywordValue) -> int {
+            int l_rc = constants::FAILURE;
+
+            try
+            {
+                auto l_paramsToWrite = std::make_tuple(
+                    i_recordName, i_keywordName, i_keywordValue);
+                l_rc = utils::writeKeyword(io_vpdPath, l_paramsToWrite);
+
+                if (l_rc > 0)
+                {
+                    std::cout << std::endl
+                              << "Data updated successfully." << std::endl;
+                }
+            }
+            catch (const std::exception& l_ex)
+            {
+                // TODO: Enable log when verbose is enabled.
+                std::cerr << l_ex.what() << std::endl;
+            }
+            return l_rc;
+        };
+
+        do
+        {
+            int l_slNum = 0;
+            bool l_exit = false;
+
+            for (const auto& l_aRecordKwInfo : i_parsedJsonObj["backupMap"])
+            {
+                if (!l_aRecordKwInfo.contains("sourceRecord") ||
+                    !l_aRecordKwInfo.contains("sourceKeyword") ||
+                    !l_aRecordKwInfo.contains("destinationkeywordValue") ||
+                    !l_aRecordKwInfo.contains("sourcekeywordValue"))
+                {
+                    // TODO: Enable logging when verbose is enabled.
+                    std::cerr
+                        << "Source or destination information is missing in the JSON."
+                        << std::endl;
+                    continue;
+                }
+
+                const std::string l_mismatchFound{
+                    (l_aRecordKwInfo["sourcekeywordValue"] !=
+                     l_aRecordKwInfo["destinationkeywordValue"])
+                        ? "YES"
+                        : "NO"};
+
+                std::cout << std::endl
+                          << std::left << std::setw(6) << "S.No" << std::left
+                          << std::setw(8) << "Record" << std::left
+                          << std::setw(9) << "Keyword" << std::left
+                          << std::setw(75) << std::setfill(' ') << "Backup Data"
+                          << std::left << std::setw(75) << std::setfill(' ')
+                          << "Primary Data" << std::left << std::setw(14)
+                          << "Data Mismatch" << std::endl;
+
+                std::cout << std::left << std::setw(6)
+                          << static_cast<int>(++l_slNum) << std::left
+                          << std::setw(8)
+                          << l_aRecordKwInfo.value("sourceRecord", "")
+                          << std::left << std::setw(9)
+                          << l_aRecordKwInfo.value("sourceKeyword", "")
+                          << std::left << std::setw(75) << std::setfill(' ')
+                          << utils::getPrintableValue(
+                                 l_aRecordKwInfo["destinationkeywordValue"])
+                          << std::left << std::setw(75) << std::setfill(' ')
+                          << utils::getPrintableValue(
+                                 l_aRecordKwInfo["sourcekeywordValue"])
+                          << std::left << std::setw(14) << l_mismatchFound
+                          << std::endl;
+
+                std::cout << std::string(191, '=') << std::endl;
+
+                if (constants::STR_CMP_SUCCESS ==
+                    l_mismatchFound.compare("YES"))
+                {
+                    printFixSystemVpdOption(
+                        types::UserOption::UseBackupDataForCurrent);
+                    printFixSystemVpdOption(
+                        types::UserOption::UseSystemBackplaneDataForCurrent);
+                    printFixSystemVpdOption(types::UserOption::NewValueOnBoth);
+                    printFixSystemVpdOption(types::UserOption::SkipCurrent);
+                    printFixSystemVpdOption(types::UserOption::Exit);
+                }
+                else
+                {
+                    std::cout << "No mismatch found." << std::endl << std::endl;
+                    printFixSystemVpdOption(types::UserOption::NewValueOnBoth);
+                    printFixSystemVpdOption(types::UserOption::SkipCurrent);
+                    printFixSystemVpdOption(types::UserOption::Exit);
+                }
+
+                int l_userSelectedOption = types::UserOption::Exit;
+                std::cin >> l_userSelectedOption;
+
+                if (types::UserOption::UseBackupDataForCurrent ==
+                    l_userSelectedOption)
+                {
+                    l_rc = updateKeywordValue(
+                        l_srcVpdPath, l_aRecordKwInfo["sourceRecord"],
+                        l_aRecordKwInfo["sourceKeyword"],
+                        l_aRecordKwInfo["destinationkeywordValue"]);
+                }
+                else if (types::UserOption::UseSystemBackplaneDataForCurrent ==
+                         l_userSelectedOption)
+                {
+                    l_rc = updateKeywordValue(
+                        l_srcVpdPath, l_aRecordKwInfo["sourceRecord"],
+                        l_aRecordKwInfo["sourceKeyword"],
+                        l_aRecordKwInfo["sourcekeywordValue"]);
+                }
+                else if (types::UserOption::NewValueOnBoth ==
+                         l_userSelectedOption)
+                {
+                    std::string l_newValue;
+                    std::cout
+                        << std::endl
+                        << "Enter the new value to update on both "
+                           "primary & backup. Value should be in ASCII or "
+                           "in HEX(prefixed with 0x) : ";
+                    std::cin >> l_newValue;
+                    std::cout << std::endl
+                              << std::string(191, '=') << std::endl;
+
+                    try
+                    {
+                        l_rc = updateKeywordValue(
+                            l_srcVpdPath, l_aRecordKwInfo["sourceRecord"],
+                            l_aRecordKwInfo["sourceKeyword"],
+                            utils::convertToBinary(l_newValue));
+                    }
+                    catch (const std::exception& l_ex)
+                    {
+                        // TODO: Enable logging when verbose is enabled.
+                        std::cerr << l_ex.what() << std::endl;
+                    }
+                }
+                else if (types::UserOption::SkipCurrent == l_userSelectedOption)
+                {
+                    std::cout << std::endl
+                              << "Skipped the above record-keyword pair. "
+                                 "Continue to the next available pair."
+                              << std::endl;
+                }
+                else if (types::UserOption::Exit == l_userSelectedOption)
+                {
+                    std::cout << "Exit successfully" << std::endl;
+                    l_exit = true;
+                    break;
+                }
+                else
+                {
+                    std::cout << "Provide a valid option. Retrying for the "
+                                 "current record-keyword pair"
+                              << std::endl;
+                }
+            }
+            if (l_exit)
+            {
+                l_rc = constants::SUCCESS;
+                break;
+            }
+        } while (true);
+    }
+    catch (const std::exception& l_ex)
+    {
+        // TODO: Enable logging when verbose is enabled.
+        std::cerr << l_ex.what() << std::endl;
+    }
+
+    return l_rc;
+}
+
+} // namespace vpd
diff --git a/vpd-tool/src/vpd_tool_main.cpp b/vpd-tool/src/vpd_tool_main.cpp
new file mode 100644
index 0000000..3fdf5d1
--- /dev/null
+++ b/vpd-tool/src/vpd_tool_main.cpp
@@ -0,0 +1,335 @@
+#include "tool_constants.hpp"
+#include "vpd_tool.hpp"
+
+#include <CLI/CLI.hpp>
+
+#include <filesystem>
+#include <iostream>
+
+/**
+ * @brief API to perform manufacturing clean.
+ *
+ * @param[in] i_mfgCleanConfirmFlag - Confirmation flag to perform manufacturing
+ * clean.
+ *
+ * @return Status returned by cleanSystemVpd operation, success otherwise.
+ */
+int doMfgClean(const auto& i_mfgCleanConfirmFlag)
+{
+    if (i_mfgCleanConfirmFlag->empty())
+    {
+        constexpr auto MAX_CONFIRMATION_STR_LENGTH{3};
+        std::string l_confirmation{};
+        std::cout
+            << "This option resets some of the system VPD keywords to their default values. Do you really wish to proceed further?[yes/no]:";
+        std::cin >> std::setw(MAX_CONFIRMATION_STR_LENGTH) >> l_confirmation;
+
+        if (l_confirmation != "yes")
+        {
+            return vpd::constants::SUCCESS;
+        }
+    }
+
+    vpd::VpdTool l_vpdToolObj;
+    return l_vpdToolObj.cleanSystemVpd();
+}
+
+/**
+ * @brief API to write keyword's value.
+ *
+ * @param[in] i_hardwareFlag - Flag to perform write on hardware.
+ * @param[in] i_keywordValueOption - Option to read keyword value from command.
+ * @param[in] i_vpdPath - DBus object path or EEPROM path.
+ * @param[in] i_recordName - Record to be updated.
+ * @param[in] i_keywordName - Keyword to be updated.
+ * @param[in] i_keywordValue - Value to be updated in keyword.
+ *
+ * @return Status of writeKeyword operation, failure otherwise.
+ */
+int writeKeyword(const auto& i_hardwareFlag, const auto& i_keywordValueOption,
+                 const std::string& i_vpdPath, const std::string& i_recordName,
+                 const std::string& i_keywordName,
+                 const std::string& i_keywordValue)
+{
+    std::error_code l_ec;
+
+    if (!i_hardwareFlag->empty() && !std::filesystem::exists(i_vpdPath, l_ec))
+    {
+        std::cerr << "Given EEPROM file path doesn't exist : " + i_vpdPath
+                  << std::endl;
+        return vpd::constants::FAILURE;
+    }
+
+    if (l_ec)
+    {
+        std::cerr << "filesystem call exists failed for file: " << i_vpdPath
+                  << ", reason: " + l_ec.message() << std::endl;
+        return vpd::constants::FAILURE;
+    }
+
+    if (!i_keywordValueOption->empty() && i_keywordValue.empty())
+    {
+        std::cerr
+            << "Please provide keyword value.\nUse --value/--file to give "
+               "keyword value. Refer --help."
+            << std::endl;
+        return vpd::constants::FAILURE;
+    }
+
+    if (i_keywordValueOption->empty())
+    {
+        std::cerr
+            << "Please provide keyword value.\nUse --value/--file to give "
+               "keyword value. Refer --help."
+            << std::endl;
+        return vpd::constants::FAILURE;
+    }
+
+    vpd::VpdTool l_vpdToolObj;
+    return l_vpdToolObj.writeKeyword(i_vpdPath, i_recordName, i_keywordName,
+                                     i_keywordValue, !i_hardwareFlag->empty());
+}
+
+/**
+ * @brief API to read keyword's value.
+ *
+ * @param[in] i_hardwareFlag - Flag to perform write on hardware.
+ * @param[in] i_vpdPath - DBus object path or EEPROM path.
+ * @param[in] i_recordName - Record to be updated.
+ * @param[in] i_keywordName - Keyword to be updated.
+ * @param[in] i_filePath - File path to save keyword's read value.
+ *
+ * @return Status of readKeyword operation, failure otherwise.
+ */
+int readKeyword(const auto& i_hardwareFlag, const std::string& i_vpdPath,
+                const std::string& i_recordName,
+                const std::string& i_keywordName, const std::string& i_filePath)
+{
+    std::error_code l_ec;
+
+    if (!i_hardwareFlag->empty() && !std::filesystem::exists(i_vpdPath, l_ec))
+    {
+        std::string l_errMessage{
+            "Given EEPROM file path doesn't exist : " + i_vpdPath};
+
+        if (l_ec)
+        {
+            l_errMessage += ". filesystem call exists failed, reason: " +
+                            l_ec.message();
+        }
+
+        std::cerr << l_errMessage << std::endl;
+        return vpd::constants::FAILURE;
+    }
+
+    bool l_isHardwareOperation = (!i_hardwareFlag->empty() ? true : false);
+
+    vpd::VpdTool l_vpdToolObj;
+    return l_vpdToolObj.readKeyword(i_vpdPath, i_recordName, i_keywordName,
+                                    l_isHardwareOperation, i_filePath);
+}
+
+/**
+ * @brief API to check option value pair in the tool command.
+ *
+ * In VPD tool command, some of the option(s) mandate values to be passed along
+ * with the option. This API based on option, detects those mandatory value(s).
+ *
+ * @param[in] i_objectOption - Option to pass object path.
+ * @param[in] i_vpdPath - Object path, DBus or EEPROM.
+ * @param[in] i_recordOption - Option to pass record name.
+ * @param[in] i_recordName - Record name.
+ * @param[in] i_keywordOption - Option to pass keyword name.
+ * @param[in] i_keywordName - Keyword name.
+ *
+ * @return Success if corresponding value is found against option, failure
+ * otherwise.
+ */
+int checkOptionValuePair(const auto& i_objectOption, const auto& i_vpdPath,
+                         const auto& i_recordOption, const auto& i_recordName,
+                         const auto& i_keywordOption, const auto& i_keywordName)
+{
+    if (!i_objectOption->empty() && i_vpdPath.empty())
+    {
+        std::cout << "Given path is empty." << std::endl;
+        return vpd::constants::FAILURE;
+    }
+
+    if (!i_recordOption->empty() &&
+        (i_recordName.size() != vpd::constants::RECORD_SIZE))
+    {
+        std::cerr << "Record " << i_recordName << " is not supported."
+                  << std::endl;
+        return vpd::constants::FAILURE;
+    }
+
+    if (!i_keywordOption->empty() &&
+        (i_keywordName.size() != vpd::constants::KEYWORD_SIZE))
+    {
+        std::cerr << "Keyword " << i_keywordName << " is not supported."
+                  << std::endl;
+        return vpd::constants::FAILURE;
+    }
+
+    return vpd::constants::SUCCESS;
+}
+
+/**
+ * @brief API to create app footer.
+ *
+ * @param[in] i_app - CLI::App object.
+ */
+void updateFooter(CLI::App& i_app)
+{
+    i_app.footer(
+        "Read:\n"
+        "    IPZ Format:\n"
+        "        From DBus to console: "
+        "vpd-tool -r -O <DBus Object Path> -R <Record Name> -K <Keyword Name>\n"
+        "        From DBus to file: "
+        "vpd-tool -r -O <DBus Object Path> -R <Record Name> -K <Keyword Name> --file <File Path>\n"
+        "        From hardware to console: "
+        "vpd-tool -r -H -O <EEPROM Path> -R <Record Name> -K <Keyword Name>\n"
+        "        From hardware to file: "
+        "vpd-tool -r -H -O <EEPROM Path> -R <Record Name> -K <Keyword Name> --file <File Path>\n"
+        "Write:\n"
+        "    IPZ Format:\n"
+        "        On DBus: "
+        "vpd-tool -w/-u -O <DBus Object Path> -R <Record Name> -K <Keyword Name> -V <Keyword Value>\n"
+        "        On DBus, take keyword value from file:\n"
+        "              vpd-tool -w/-u -O <DBus Object Path> -R <Record Name> -K <Keyword Name> --file <File Path>\n"
+        "        On hardware: "
+        "vpd-tool -w/-u -H -O <EEPROM Path> -R <Record Name> -K <Keyword Name> -V <Keyword Value>\n"
+        "        On hardware, take keyword value from file:\n"
+        "              vpd-tool -w/-u -H -O <EEPROM Path> -R <Record Name> -K <Keyword Name> --file <File Path>\n"
+        "Dump Object:\n"
+        "    From DBus to console: "
+        "vpd-tool -o -O <DBus Object Path>\n"
+        "Fix System VPD:\n"
+        "    vpd-tool --fixSystemVPD\n"
+        "MfgClean:\n"
+        "        Flag to clean and reset specific keywords on system VPD to its default value.\n"
+        "        vpd-tool --mfgClean\n"
+        "Dump Inventory:\n"
+        "   From DBus to console in JSON format: "
+        "vpd-tool -i\n"
+        "   From DBus to console in Table format: "
+        "vpd-tool -i -t\n");
+}
+
+int main(int argc, char** argv)
+{
+    CLI::App l_app{"VPD Command Line Tool"};
+
+    std::string l_vpdPath{};
+    std::string l_recordName{};
+    std::string l_keywordName{};
+    std::string l_filePath{};
+    std::string l_keywordValue{};
+
+    updateFooter(l_app);
+
+    auto l_objectOption =
+        l_app.add_option("--object, -O", l_vpdPath, "File path");
+    auto l_recordOption =
+        l_app.add_option("--record, -R", l_recordName, "Record name");
+    auto l_keywordOption =
+        l_app.add_option("--keyword, -K", l_keywordName, "Keyword name");
+
+    // Enable when file option is implemented.
+    /*auto l_fileOption = l_app.add_option("--file", l_filePath,
+                                         "Absolute file path");*/
+
+    auto l_keywordValueOption =
+        l_app.add_option("--value, -V", l_keywordValue,
+                         "Keyword value in ascii/hex format."
+                         " ascii ex: 01234; hex ex: 0x30313233");
+
+    auto l_hardwareFlag =
+        l_app.add_flag("--Hardware, -H", "CAUTION: Developer only option.");
+
+    auto l_readFlag = l_app.add_flag("--readKeyword, -r", "Read keyword")
+                          ->needs(l_objectOption)
+                          ->needs(l_recordOption)
+                          ->needs(l_keywordOption);
+
+    auto l_writeFlag =
+        l_app
+            .add_flag(
+                "--writeKeyword, -w,--updateKeyword, -u",
+                "Write keyword, Note: Irrespective of DBus or hardware path provided, primary and backup, redundant EEPROM(if any) paths will get updated with given key value")
+            ->needs(l_objectOption)
+            ->needs(l_recordOption)
+            ->needs(l_keywordOption);
+
+    // ToDo: Take offset value from user for hardware path.
+
+    auto l_dumpObjFlag =
+        l_app
+            .add_flag("--dumpObject, -o",
+                      "Dump specific properties of an inventory object")
+            ->needs(l_objectOption);
+
+    auto l_fixSystemVpdFlag = l_app.add_flag(
+        "--fixSystemVPD",
+        "Use this option to interactively fix critical system VPD keywords");
+    auto l_dumpInventoryFlag =
+        l_app.add_flag("--dumpInventory, -i", "Dump all the inventory objects");
+
+    auto l_mfgCleanFlag = l_app.add_flag(
+        "--mfgClean", "Manufacturing clean on system VPD keyword");
+
+    auto l_mfgCleanConfirmFlag = l_app.add_flag(
+        "--yes", "Using this flag with --mfgClean option, assumes "
+                 "yes to proceed without confirmation.");
+
+    auto l_dumpInventoryTableFlag =
+        l_app.add_flag("--table, -t", "Dump inventory in table format");
+
+    CLI11_PARSE(l_app, argc, argv);
+
+    if (checkOptionValuePair(l_objectOption, l_vpdPath, l_recordOption,
+                             l_recordName, l_keywordOption, l_keywordName) ==
+        vpd::constants::FAILURE)
+    {
+        return vpd::constants::FAILURE;
+    }
+
+    if (!l_readFlag->empty())
+    {
+        return readKeyword(l_hardwareFlag, l_vpdPath, l_recordName,
+                           l_keywordName, l_filePath);
+    }
+
+    if (!l_writeFlag->empty())
+    {
+        return writeKeyword(l_hardwareFlag, l_keywordValueOption, l_vpdPath,
+                            l_recordName, l_keywordName, l_keywordValue);
+    }
+
+    if (!l_dumpObjFlag->empty())
+    {
+        vpd::VpdTool l_vpdToolObj;
+        return l_vpdToolObj.dumpObject(l_vpdPath);
+    }
+
+    if (!l_fixSystemVpdFlag->empty())
+    {
+        vpd::VpdTool l_vpdToolObj;
+        return l_vpdToolObj.fixSystemVpd();
+    }
+
+    if (!l_mfgCleanFlag->empty())
+    {
+        return doMfgClean(l_mfgCleanConfirmFlag);
+    }
+
+    if (!l_dumpInventoryFlag->empty())
+    {
+        vpd::VpdTool l_vpdToolObj;
+        return l_vpdToolObj.dumpInventory(!l_dumpInventoryTableFlag->empty());
+    }
+
+    std::cout << l_app.help() << std::endl;
+    return vpd::constants::FAILURE;
+}
diff --git a/vpd_exceptions.hpp b/vpd_exceptions.hpp
deleted file mode 100644
index c0f84e8..0000000
--- a/vpd_exceptions.hpp
+++ /dev/null
@@ -1,155 +0,0 @@
-#pragma once
-
-#include <stdexcept>
-
-namespace openpower
-{
-namespace vpd
-{
-namespace exceptions
-{
-
-/** @class VPDException
- * @brief This class inherits std::runtime_error and overrides
- * "what" method to return the description of exception.
- * This class also works as base class for custom exception
- * classes of openpower-vpd repository.
- */
-class VPDException : public std::runtime_error
-{
-  public:
-    // deleted methods
-    VPDException() = delete;
-    VPDException(const VPDException&) = delete;
-    VPDException(VPDException&&) = delete;
-    VPDException& operator=(const VPDException&) = delete;
-
-    // default destructor
-    ~VPDException() = default;
-
-    /** @brief constructor
-     *  @param[in] - string to define exception
-     */
-    explicit VPDException(const std::string& msg) :
-        std::runtime_error(msg), errMsg(msg)
-    {}
-
-    /** @brief inline method to return exception string
-     * This is overridden method of std::runtime class
-     */
-    inline const char* what() const noexcept override
-    {
-        return errMsg.c_str();
-    }
-
-  private:
-    /** @brief string to hold the reason of exception */
-    std::string errMsg;
-
-}; // class VPDException
-
-/** @class VpdEccException
- *  @brief This class extends Exceptions class and define
- *  type for ECC related exception in VPD
- */
-class VpdEccException : public VPDException
-{
-  public:
-    // deleted methods
-    VpdEccException() = delete;
-    VpdEccException(const VpdEccException&) = delete;
-    VpdEccException(VpdEccException&&) = delete;
-    VpdEccException& operator=(const VpdEccException&) = delete;
-
-    // default destructor
-    ~VpdEccException() = default;
-
-    /** @brief constructor
-     *  @param[in] - string to define exception
-     */
-    explicit VpdEccException(const std::string& msg) : VPDException(msg) {}
-
-}; // class VpdEccException
-
-/** @class VpdDataException
- *  @brief This class extends Exceptions class and define
- *  type for data related exception in VPD
- */
-class VpdDataException : public VPDException
-{
-  public:
-    // deleted methods
-    VpdDataException() = delete;
-    VpdDataException(const VpdDataException&) = delete;
-    VpdDataException(VpdDataException&&) = delete;
-    VpdDataException& operator=(const VpdDataException&) = delete;
-
-    // default destructor
-    ~VpdDataException() = default;
-
-    /** @brief constructor
-     *  @param[in] - string to define exception
-     */
-    explicit VpdDataException(const std::string& msg) : VPDException(msg) {}
-
-}; // class VpdDataException
-
-class VpdJsonException : public VPDException
-{
-  public:
-    // deleted methods
-    VpdJsonException() = delete;
-    VpdJsonException(const VpdJsonException&) = delete;
-    VpdJsonException(VpdDataException&&) = delete;
-    VpdJsonException& operator=(const VpdDataException&) = delete;
-
-    // default destructor
-    ~VpdJsonException() = default;
-
-    /** @brief constructor
-     *  @param[in] msg - string to define exception
-     *  @param[in] path - Json path
-     */
-    VpdJsonException(const std::string& msg, const std::string& path) :
-        VPDException(msg), jsonPath(path)
-    {}
-
-    /** @brief Json path getter method.
-     *  @return - Json path
-     */
-    inline std::string getJsonPath() const
-    {
-        return jsonPath;
-    }
-
-  private:
-    /** To hold the path of Json that failed to parse*/
-    std::string jsonPath;
-
-}; // class VpdJSonException
-
-/** @class GpioException
- *  @brief This class extends Exceptions class and define
- *  type for GPIO related exception in VPD
- */
-class GpioException : public VPDException
-{
-  public:
-    // deleted methods
-    GpioException() = delete;
-    GpioException(const GpioException&) = delete;
-    GpioException(GpioException&&) = delete;
-    GpioException& operator=(const GpioException&) = delete;
-
-    // default destructor
-    ~GpioException() = default;
-
-    /** @brief constructor
-     *  @param[in] msg - string to define exception
-     */
-    explicit GpioException(const std::string& msg) : VPDException(msg) {}
-};
-
-} // namespace exceptions
-} // namespace vpd
-} // namespace openpower
diff --git a/vpd_tool.cpp b/vpd_tool.cpp
deleted file mode 100644
index d53a593..0000000
--- a/vpd_tool.cpp
+++ /dev/null
@@ -1,264 +0,0 @@
-#include "vpd_tool_impl.hpp"
-
-#include <CLI/CLI.hpp>
-
-#include <filesystem>
-#include <fstream>
-#include <iostream>
-
-using namespace CLI;
-using namespace std;
-namespace fs = std::filesystem;
-using namespace openpower::vpd;
-using json = nlohmann::json;
-
-int main(int argc, char** argv)
-{
-    int rc = 0;
-    App app{"VPD Command line tool to dump the inventory and to read and "
-            "update the keywords"};
-
-    string objectPath{};
-    string recordName{};
-    string keyword{};
-    string val{};
-    uint32_t offset = 0;
-
-    auto object =
-        app.add_option("--object, -O", objectPath, "Enter the Object Path");
-    auto record =
-        app.add_option("--record, -R", recordName, "Enter the Record Name");
-    auto kw = app.add_option("--keyword, -K", keyword, "Enter the Keyword");
-    auto valOption = app.add_option(
-        "--value, -V", val,
-        "Enter the value. The value to be updated should be either in ascii or "
-        "in hex. ascii eg: 01234; hex eg: 0x30313233");
-    app.add_option("--seek, -s", offset,
-                   "User can provide VPD offset using this option. Default "
-                   "offset value is 0. Using --seek is optional and is valid "
-                   "only while using --Hardware/-H option.");
-
-    auto dumpObjFlag =
-        app.add_flag("--dumpObject, -o",
-                     "Dump the given object from the inventory. { "
-                     "vpd-tool-exe --dumpObject/-o --object/-O object-name }")
-            ->needs(object);
-
-    auto dumpInvFlag = app.add_flag(
-        "--dumpInventory, -i", "Dump all the inventory objects. { vpd-tool-exe "
-                               "--dumpInventory/-i }");
-
-    auto readFlag =
-        app.add_flag("--readKeyword, -r",
-                     "Read the data of the given keyword. { "
-                     "vpd-tool-exe --readKeyword/-r --object/-O "
-                     "\"object-name\" --record/-R \"record-name\" --keyword/-K "
-                     "\"keyword-name\" }")
-            ->needs(object)
-            ->needs(record)
-            ->needs(kw);
-
-    auto writeFlag =
-        app.add_flag(
-               "--writeKeyword, -w, --updateKeyword, -u",
-               "Update the value. { vpd-tool-exe "
-               "--writeKeyword/-w/--updateKeyword/-u "
-               "--object/-O object-name --record/-R record-name --keyword/-K "
-               "keyword-name --value/-V (or) --file }. Value can be given "
-               "directly via console using --value or via file using --file")
-            ->needs(object)
-            ->needs(record)
-            ->needs(kw);
-
-    auto fileOption = app.add_option(
-        "--file", val,
-        "Enter the file name with its absolute path. This option can be used "
-        "in read and write operations. When used in read, the read value will "
-        "be saved to this file and when used in write, the value to be written "
-        "will be taken from this file.");
-
-    auto forceResetFlag =
-        app.add_flag("--forceReset, -f, -F",
-                     "Force Collect for Hardware. CAUTION: Developer Only "
-                     "Option. { vpd-tool-exe --forceReset/-f/-F }");
-
-    auto Hardware = app.add_flag(
-        "--Hardware, -H",
-        "This is a supplementary flag to read/write directly from/to hardware. "
-        "User should provide valid hardware/eeprom path (and not dbus object "
-        "path) in the -O/--object path. CAUTION: Developer Only Option");
-
-    auto fixSystemVPDFlag = app.add_flag(
-        "--fixSystemVPD", "Use this option to interactively fix critical "
-                          "system VPD keywords {vpd-tool-exe --fixSystemVPD}");
-
-    auto mfgClean =
-        app.add_flag("--mfgClean", "Flag to clean and reset specific keywords "
-                                   "on system VPD to its default value.");
-
-    auto confirm =
-        app.add_flag("--yes", "Using this flag with --mfgClean option, assumes "
-                              "yes to proceed without confirmation.");
-
-    CLI11_PARSE(app, argc, argv);
-
-    ifstream inventoryJson(INVENTORY_JSON_SYM_LINK);
-    auto jsObject = json::parse(inventoryJson);
-
-    try
-    {
-        if (*object && objectPath.empty())
-        {
-            throw runtime_error("Given path is empty.");
-        }
-
-        if (*record && (recordName.size() != 4))
-        {
-            throw runtime_error("Record " + recordName + " not supported.");
-        }
-
-        if ((*kw) && (keyword.size() != 2))
-        {
-            throw runtime_error("Keyword " + keyword + " not supported.");
-        }
-
-        if (*Hardware)
-        {
-            if (!fs::exists(objectPath)) // if dbus object path is given or
-                                         // invalid eeprom path is given
-            {
-                string errorMsg = "Invalid EEPROM path : ";
-                errorMsg += objectPath;
-                errorMsg +=
-                    ". The given EEPROM path doesn't exist. Provide valid "
-                    "EEPROM path when -H flag is used. Refer help option. ";
-                throw runtime_error(errorMsg);
-            }
-        }
-
-        if (*writeFlag)
-        {
-            if (isReadOnlyEEPROM(objectPath, jsObject))
-            {
-                throw runtime_error("Read only EEPROM. Update not allowed.");
-            }
-
-            if ((!*fileOption) && (!*valOption))
-            {
-                throw runtime_error("Please provide the data that needs to be "
-                                    "updated. Use --value/--file to "
-                                    "input data. Refer --help.");
-            }
-
-            if ((*fileOption) && (!fs::exists(val)))
-            {
-                throw runtime_error("Please provide a valid file with absolute "
-                                    "path in --file.");
-            }
-        }
-
-        if (*dumpObjFlag)
-        {
-            VpdTool vpdToolObj(move(objectPath));
-            vpdToolObj.dumpObject(jsObject);
-        }
-
-        else if (*dumpInvFlag)
-        {
-            VpdTool vpdToolObj;
-            vpdToolObj.dumpInventory(jsObject);
-        }
-
-        else if (*readFlag && !*Hardware)
-        {
-            VpdTool vpdToolObj(move(objectPath), move(recordName),
-                               move(keyword), move(val));
-            vpdToolObj.readKeyword();
-        }
-
-        else if (*writeFlag && !*Hardware)
-        {
-            VpdTool vpdToolObj(move(objectPath), move(recordName),
-                               move(keyword), move(val));
-            rc = vpdToolObj.updateKeyword();
-        }
-
-        else if (*forceResetFlag)
-        {
-            // Force reset the BMC only if the CEC is powered OFF.
-            if (getPowerState() ==
-                "xyz.openbmc_project.State.Chassis.PowerState.Off")
-            {
-                VpdTool vpdToolObj;
-                vpdToolObj.forceReset(jsObject);
-            }
-            else
-            {
-                std::cerr << "The chassis power state is not Off. Force reset "
-                             "operation is not allowed.";
-                return -1;
-            }
-        }
-
-        else if (*writeFlag && *Hardware)
-        {
-            VpdTool vpdToolObj(move(objectPath), move(recordName),
-                               move(keyword), move(val));
-            rc = vpdToolObj.updateHardware(offset);
-        }
-        else if (*readFlag && *Hardware)
-        {
-            VpdTool vpdToolObj(move(objectPath), move(recordName),
-                               move(keyword), move(val));
-            vpdToolObj.readKwFromHw(offset);
-        }
-        else if (*fixSystemVPDFlag)
-        {
-            std::string backupEepromPath;
-            std::string backupInvPath;
-            findBackupVPDPaths(backupEepromPath, backupInvPath, jsObject);
-            VpdTool vpdToolObj;
-
-            if (backupEepromPath.empty())
-            {
-                rc = vpdToolObj.fixSystemVPD();
-            }
-            else
-            {
-                rc = vpdToolObj.fixSystemBackupVPD(backupEepromPath,
-                                                   backupInvPath);
-            }
-        }
-        else if (*mfgClean)
-        {
-            if (!*confirm)
-            {
-                std::string confirmation{};
-                std::cout << "\nThis option resets some of the system VPD "
-                             "keywords to their default values. Do you really "
-                             "wish to proceed further?[yes/no]: ";
-                std::cin >> confirmation;
-
-                if (confirmation != "yes")
-                {
-                    return 0;
-                }
-            }
-            VpdTool vpdToolObj;
-            rc = vpdToolObj.cleanSystemVPD();
-        }
-        else
-        {
-            throw runtime_error("One of the valid options is required. Refer "
-                                "--help for list of options.");
-        }
-    }
-
-    catch (const exception& e)
-    {
-        cerr << e.what();
-        rc = -1;
-    }
-
-    return rc;
-}
diff --git a/vpd_tool_impl.cpp b/vpd_tool_impl.cpp
deleted file mode 100644
index 30f7294..0000000
--- a/vpd_tool_impl.cpp
+++ /dev/null
@@ -1,1351 +0,0 @@
-#include "vpd_tool_impl.hpp"
-
-#include "impl.hpp"
-#include "parser_factory.hpp"
-#include "vpd_exceptions.hpp"
-
-#include <sdbusplus/bus.hpp>
-
-#include <cstdlib>
-#include <filesystem>
-#include <iostream>
-#include <variant>
-#include <vector>
-
-using namespace std;
-using namespace openpower::vpd;
-using namespace inventory;
-using namespace openpower::vpd::manager::editor;
-namespace fs = std::filesystem;
-using json = nlohmann::json;
-using namespace openpower::vpd::exceptions;
-using namespace openpower::vpd::parser;
-using namespace openpower::vpd::parser::factory;
-using namespace openpower::vpd::parser::interface;
-
-bool VpdTool::fileToVector(Binary& data)
-{
-    try
-    {
-        std::ifstream file(value, std::ifstream::in);
-
-        if (file)
-        {
-            std::string line;
-            while (std::getline(file, line))
-            {
-                std::istringstream iss(line);
-                std::string byteStr;
-                while (iss >> std::setw(2) >> std::hex >> byteStr)
-                {
-                    uint8_t byte = strtoul(byteStr.c_str(), nullptr, 16);
-                    data.emplace(data.end(), byte);
-                }
-            }
-            return true;
-        }
-        else
-        {
-            std::cerr << "Unable to open the given file " << value << std::endl;
-        }
-    }
-    catch (std::exception& e)
-    {
-        std::cerr << e.what();
-    }
-    return false;
-}
-
-bool VpdTool::copyStringToFile(const std::string& input)
-{
-    try
-    {
-        std::ofstream outFile(value, std::ofstream::out);
-
-        if (outFile.is_open())
-        {
-            std::string hexString = input;
-            if (input.substr(0, 2) == "0x")
-            {
-                // truncating prefix 0x
-                hexString = input.substr(2);
-            }
-            outFile.write(hexString.c_str(), hexString.length());
-        }
-        else
-        {
-            std::cerr << "Error opening output file " << value << std::endl;
-            return false;
-        }
-
-        outFile.close();
-    }
-    catch (std::exception& e)
-    {
-        std::cerr << e.what();
-        return false;
-    }
-    return true;
-}
-
-static void
-    getVPDInMap(const std::string& vpdPath,
-                std::unordered_map<std::string, DbusPropertyMap>& vpdMap,
-                json& js, const std::string& invPath)
-{
-    auto jsonToParse = INVENTORY_JSON_DEFAULT;
-    if (fs::exists(INVENTORY_JSON_SYM_LINK))
-    {
-        jsonToParse = INVENTORY_JSON_SYM_LINK;
-    }
-
-    std::ifstream inventoryJson(jsonToParse);
-    if (!inventoryJson)
-    {
-        throw std::runtime_error("VPD JSON file not found");
-    }
-
-    try
-    {
-        js = json::parse(inventoryJson);
-    }
-    catch (const json::parse_error& ex)
-    {
-        throw std::runtime_error("VPD JSON parsing failed");
-    }
-
-    Binary vpdVector{};
-
-    uint32_t vpdStartOffset = 0;
-    vpdVector = getVpdDataInVector(js, vpdPath);
-    ParserInterface* parser =
-        ParserFactory::getParser(vpdVector, invPath, vpdPath, vpdStartOffset);
-    auto parseResult = parser->parse();
-    ParserFactory::freeParser(parser);
-
-    if (auto pVal = std::get_if<Store>(&parseResult))
-    {
-        vpdMap = pVal->getVpdMap();
-    }
-    else
-    {
-        std::string err =
-            vpdPath + " is not of type IPZ VPD. Unable to parse the VPD.";
-        throw std::runtime_error(err);
-    }
-}
-
-Binary VpdTool::toBinary(const std::string& value)
-{
-    Binary val{};
-    if (value.find("0x") == string::npos)
-    {
-        val.assign(value.begin(), value.end());
-    }
-    else if (value.find("0x") != string::npos)
-    {
-        stringstream ss;
-        ss.str(value.substr(2));
-        string byteStr{};
-
-        if (value.length() % 2 != 0)
-        {
-            throw runtime_error(
-                "VPD-TOOL write option accepts 2 digit hex numbers. (Eg. 0x1 "
-                "should be given as 0x01). Aborting the write operation.");
-        }
-
-        if (value.find_first_not_of("0123456789abcdefABCDEF", 2) !=
-            std::string::npos)
-        {
-            throw runtime_error("Provide a valid hexadecimal input.");
-        }
-
-        while (ss >> setw(2) >> byteStr)
-        {
-            uint8_t byte = strtoul(byteStr.c_str(), nullptr, 16);
-
-            val.push_back(byte);
-        }
-    }
-
-    else
-    {
-        throw runtime_error("The value to be updated should be either in ascii "
-                            "or in hex. Refer --help option");
-    }
-    return val;
-}
-
-void VpdTool::printReturnCode(int returnCode)
-{
-    if (returnCode)
-    {
-        cout << "\n Command failed with the return code " << returnCode
-             << ". Continuing the execution. " << endl;
-    }
-}
-
-void VpdTool::eraseInventoryPath(string& fru)
-{
-    // Power supply frupath comes with INVENTORY_PATH appended in prefix.
-    // Stripping it off inorder to avoid INVENTORY_PATH duplication
-    // during getVINIProperties() execution.
-    fru.erase(0, sizeof(INVENTORY_PATH) - 1);
-}
-
-void VpdTool::debugger(json output)
-{
-    cout << output.dump(4) << '\n';
-}
-
-auto VpdTool::makeDBusCall(const string& objectName, const string& interface,
-                           const string& kw)
-{
-    auto bus = sdbusplus::bus::new_default();
-    auto properties =
-        bus.new_method_call(INVENTORY_MANAGER_SERVICE, objectName.c_str(),
-                            "org.freedesktop.DBus.Properties", "Get");
-    properties.append(interface);
-    properties.append(kw);
-    auto result = bus.call(properties);
-
-    if (result.is_method_error())
-    {
-        throw runtime_error("Get api failed");
-    }
-    return result;
-}
-
-json VpdTool::getVINIProperties(string invPath)
-{
-    variant<Binary> response;
-    json kwVal = json::object({});
-
-    vector<string> keyword{"CC", "SN", "PN", "FN", "DR"};
-    string interface = "com.ibm.ipzvpd.VINI";
-    string objectName = {};
-
-    if (invPath.find(INVENTORY_PATH) != string::npos)
-    {
-        objectName = invPath;
-        eraseInventoryPath(invPath);
-    }
-    else
-    {
-        objectName = INVENTORY_PATH + invPath;
-    }
-    for (string kw : keyword)
-    {
-        try
-        {
-            makeDBusCall(objectName, interface, kw).read(response);
-
-            if (auto vec = get_if<Binary>(&response))
-            {
-                string printableVal = getPrintableValue(*vec);
-                kwVal.emplace(kw, printableVal);
-            }
-        }
-        catch (const sdbusplus::exception_t& e)
-        {
-            if (string(e.name()) ==
-                string("org.freedesktop.DBus.Error.UnknownObject"))
-            {
-                kwVal.emplace(invPath, json::object({}));
-                objFound = false;
-                break;
-            }
-        }
-    }
-
-    return kwVal;
-}
-
-void VpdTool::getExtraInterfaceProperties(const string& invPath,
-                                          const string& extraInterface,
-                                          const json& prop, json& output)
-{
-    variant<string> response;
-
-    string objectName = INVENTORY_PATH + invPath;
-
-    for (const auto& itProp : prop.items())
-    {
-        string kw = itProp.key();
-        try
-        {
-            makeDBusCall(objectName, extraInterface, kw).read(response);
-
-            if (auto str = get_if<string>(&response))
-            {
-                output.emplace(kw, *str);
-            }
-        }
-        catch (const sdbusplus::exception_t& e)
-        {
-            if (std::string(e.name()) ==
-                std::string("org.freedesktop.DBus.Error.UnknownObject"))
-            {
-                objFound = false;
-                break;
-            }
-            else if (std::string(e.name()) ==
-                     std::string("org.freedesktop.DBus.Error.UnknownProperty"))
-            {
-                output.emplace(kw, "");
-            }
-        }
-    }
-}
-
-json VpdTool::interfaceDecider(json& itemEEPROM)
-{
-    if (itemEEPROM.find("inventoryPath") == itemEEPROM.end())
-    {
-        throw runtime_error("Inventory Path not found");
-    }
-
-    if (itemEEPROM.find("extraInterfaces") == itemEEPROM.end())
-    {
-        throw runtime_error("Extra Interfaces not found");
-    }
-
-    json subOutput = json::object({});
-    fruType = "FRU";
-
-    json j;
-    objFound = true;
-    string invPath = itemEEPROM.at("inventoryPath");
-
-    j = getVINIProperties(invPath);
-
-    if (objFound)
-    {
-        subOutput.insert(j.begin(), j.end());
-        json js;
-        if (itemEEPROM.find("type") != itemEEPROM.end())
-        {
-            fruType = itemEEPROM.at("type");
-        }
-        js.emplace("TYPE", fruType);
-
-        if (invPath.find("powersupply") != string::npos)
-        {
-            js.emplace("type", POWER_SUPPLY_TYPE_INTERFACE);
-        }
-        else if (invPath.find("fan") != string::npos)
-        {
-            js.emplace("type", FAN_INTERFACE);
-        }
-
-        for (const auto& ex : itemEEPROM["extraInterfaces"].items())
-        {
-            // Properties under Decorator.Asset interface are derived from VINI
-            // keywords. Displaying VINI keywords and skipping Decorator.Asset
-            // interface's properties will avoid duplicate entries in vpd-tool
-            // output.
-            if (ex.key() == "xyz.openbmc_project.Inventory.Decorator.Asset" &&
-                itemEEPROM["extraInterfaces"].find(constants::kwdVpdInf) !=
-                    itemEEPROM["extraInterfaces"].end())
-            {
-                continue;
-            }
-
-            if (!(ex.value().is_null()))
-            {
-                // TODO: Remove this if condition check once inventory json is
-                // updated with xyz location code interface.
-                if (ex.key() == "com.ibm.ipzvpd.Location")
-                {
-                    getExtraInterfaceProperties(
-                        invPath,
-                        "xyz.openbmc_project.Inventory.Decorator.LocationCode",
-                        ex.value(), js);
-                }
-                else
-                {
-                    getExtraInterfaceProperties(invPath, ex.key(), ex.value(),
-                                                js);
-                }
-            }
-            if ((ex.key().find("Item") != string::npos) &&
-                (ex.value().is_null()))
-            {
-                js.emplace("type", ex.key());
-            }
-            subOutput.insert(js.begin(), js.end());
-        }
-    }
-    return subOutput;
-}
-
-json VpdTool::getPresentPropJson(const std::string& invPath)
-{
-    std::variant<bool> response;
-    std::string presence = "Unknown";
-
-    try
-    {
-        makeDBusCall(invPath, "xyz.openbmc_project.Inventory.Item", "Present")
-            .read(response);
-
-        if (auto pVal = get_if<bool>(&response))
-        {
-            presence = *pVal ? "true" : "false";
-        }
-    }
-    catch (const sdbusplus::exception::SdBusError& e)
-    {
-        presence = "Unknown";
-    }
-
-    json js;
-    js.emplace("Present", presence);
-    return js;
-}
-
-json VpdTool::parseInvJson(const json& jsObject, char flag, string fruPath)
-{
-    json output = json::object({});
-    bool validObject = false;
-
-    if (jsObject.find("frus") == jsObject.end())
-    {
-        throw runtime_error("Frus missing in Inventory json");
-    }
-    else
-    {
-        for (const auto& itemFRUS : jsObject["frus"].items())
-        {
-            for (auto itemEEPROM : itemFRUS.value())
-            {
-                json subOutput = json::object({});
-                try
-                {
-                    if (flag == 'O')
-                    {
-                        if (itemEEPROM.find("inventoryPath") ==
-                            itemEEPROM.end())
-                        {
-                            throw runtime_error("Inventory Path not found");
-                        }
-                        else if (itemEEPROM.at("inventoryPath") == fruPath)
-                        {
-                            validObject = true;
-                            subOutput = interfaceDecider(itemEEPROM);
-                            json presentJs = getPresentPropJson(
-                                "/xyz/openbmc_project/inventory" + fruPath);
-                            subOutput.insert(presentJs.begin(),
-                                             presentJs.end());
-                            output.emplace(fruPath, subOutput);
-                            return output;
-                        }
-                    }
-                    else
-                    {
-                        subOutput = interfaceDecider(itemEEPROM);
-                        json presentJs = getPresentPropJson(
-                            "/xyz/openbmc_project/inventory" +
-                            string(itemEEPROM.at("inventoryPath")));
-                        subOutput.insert(presentJs.begin(), presentJs.end());
-                        output.emplace(string(itemEEPROM.at("inventoryPath")),
-                                       subOutput);
-                    }
-                }
-                catch (const exception& e)
-                {
-                    cerr << e.what();
-                }
-            }
-        }
-        if ((flag == 'O') && (!validObject))
-        {
-            throw runtime_error(
-                "Invalid object path. Refer --dumpInventory/-i option.");
-        }
-    }
-    return output;
-}
-
-void VpdTool::dumpInventory(const nlohmann::basic_json<>& jsObject)
-{
-    char flag = 'I';
-    json output = json::array({});
-    output.emplace_back(parseInvJson(jsObject, flag, ""));
-    debugger(output);
-}
-
-void VpdTool::dumpObject(const nlohmann::basic_json<>& jsObject)
-{
-    char flag = 'O';
-    json output = json::array({});
-    output.emplace_back(parseInvJson(jsObject, flag, fruPath));
-    debugger(output);
-}
-
-void VpdTool::readKeyword()
-{
-    const std::string& kw = getDbusNameForThisKw(keyword);
-
-    string interface = "com.ibm.ipzvpd.";
-    variant<Binary> response;
-
-    try
-    {
-        makeDBusCall(INVENTORY_PATH + fruPath, interface + recordName, kw)
-            .read(response);
-
-        string printableVal{};
-        if (auto vec = get_if<Binary>(&response))
-        {
-            printableVal = getPrintableValue(*vec);
-        }
-
-        if (!value.empty())
-        {
-            if (copyStringToFile(printableVal))
-            {
-                std::cout << "Value read is saved in the file " << value
-                          << std::endl;
-                return;
-            }
-            else
-            {
-                std::cerr << "Error while saving the read value in file. "
-                             "Displaying the read value on console"
-                          << std::endl;
-            }
-        }
-
-        json output = json::object({});
-        json kwVal = json::object({});
-        kwVal.emplace(keyword, printableVal);
-
-        output.emplace(fruPath, kwVal);
-
-        debugger(output);
-    }
-    catch (const json::exception& e)
-    {
-        std::cout << "Keyword Value: " << keyword << std::endl;
-        std::cout << e.what() << std::endl;
-    }
-}
-
-int VpdTool::updateKeyword()
-{
-    Binary val;
-
-    if (std::filesystem::exists(value))
-    {
-        if (!fileToVector(val))
-        {
-            std::cout << "Keyword " << keyword << " update failed."
-                      << std::endl;
-            return 1;
-        }
-    }
-    else
-    {
-        val = toBinary(value);
-    }
-
-    auto bus = sdbusplus::bus::new_default();
-    auto properties =
-        bus.new_method_call(BUSNAME, OBJPATH, IFACE, "WriteKeyword");
-    properties.append(static_cast<sdbusplus::message::object_path>(fruPath));
-    properties.append(recordName);
-    properties.append(keyword);
-    properties.append(val);
-
-    // When there is a request to write 10K bytes, there occurs a delay in dbus
-    // call which leads to dbus timeout exception. To avoid such exceptions
-    // increase the timeout period from default 25 seconds to 60 seconds.
-    auto timeoutInMicroSeconds = 60 * 1000000L;
-    auto result = bus.call(properties, timeoutInMicroSeconds);
-
-    if (result.is_method_error())
-    {
-        throw runtime_error("Get api failed");
-    }
-    std::cout << "Data updated successfully " << std::endl;
-    return 0;
-}
-
-void VpdTool::forceReset(const nlohmann::basic_json<>& jsObject)
-{
-    for (const auto& itemFRUS : jsObject["frus"].items())
-    {
-        for (const auto& itemEEPROM : itemFRUS.value().items())
-        {
-            string fru = itemEEPROM.value().at("inventoryPath");
-
-            fs::path fruCachePath = INVENTORY_MANAGER_CACHE;
-            fruCachePath += INVENTORY_PATH;
-            fruCachePath += fru;
-
-            try
-            {
-                for (const auto& it : fs::directory_iterator(fruCachePath))
-                {
-                    if (fs::is_regular_file(it.status()))
-                    {
-                        fs::remove(it);
-                    }
-                }
-            }
-            catch (const fs::filesystem_error& e)
-            {}
-        }
-    }
-
-    cout.flush();
-    string udevRemove = "udevadm trigger -c remove -s \"*nvmem*\" -v";
-    int returnCode = system(udevRemove.c_str());
-    printReturnCode(returnCode);
-
-    string invManagerRestart =
-        "systemctl restart xyz.openbmc_project.Inventory.Manager.service";
-    returnCode = system(invManagerRestart.c_str());
-    printReturnCode(returnCode);
-
-    string sysVpdRestart = "systemctl restart system-vpd.service";
-    returnCode = system(sysVpdRestart.c_str());
-    printReturnCode(returnCode);
-
-    string udevAdd = "udevadm trigger -c add -s \"*nvmem*\" -v";
-    returnCode = system(udevAdd.c_str());
-    printReturnCode(returnCode);
-}
-
-int VpdTool::updateHardware(const uint32_t offset)
-{
-    int rc = 0;
-    Binary val;
-    if (std::filesystem::exists(value))
-    {
-        if (!fileToVector(val))
-        {
-            std::cout << "Keyword " << keyword << " update failed."
-                      << std::endl;
-            return 1;
-        }
-    }
-    else
-    {
-        val = toBinary(value);
-    }
-
-    ifstream inventoryJson(INVENTORY_JSON_SYM_LINK);
-    try
-    {
-        auto json = nlohmann::json::parse(inventoryJson);
-        EditorImpl edit(fruPath, json, recordName, keyword);
-
-        edit.updateKeyword(val, offset, false);
-    }
-    catch (const json::parse_error& ex)
-    {
-        throw(VpdJsonException("Json Parsing failed", INVENTORY_JSON_SYM_LINK));
-    }
-    std::cout << "Data updated successfully " << std::endl;
-    return rc;
-}
-
-void VpdTool::readKwFromHw(const uint32_t& startOffset)
-{
-    ifstream inventoryJson(INVENTORY_JSON_SYM_LINK);
-    auto jsonFile = nlohmann::json::parse(inventoryJson);
-    std::string inventoryPath;
-
-    if (jsonFile["frus"].contains(fruPath))
-    {
-        uint32_t vpdStartOffset = 0;
-
-        for (const auto& item : jsonFile["frus"][fruPath])
-        {
-            if (item.find("offset") != item.end())
-            {
-                vpdStartOffset = item["offset"];
-                break;
-            }
-        }
-
-        if ((startOffset != vpdStartOffset))
-        {
-            std::cerr << "Invalid offset, please correct the offset" << endl;
-            std::cerr << "Recommended Offset is: " << vpdStartOffset << endl;
-            return;
-        }
-        inventoryPath = jsonFile["frus"][fruPath][0]["inventoryPath"];
-    }
-
-    Binary completeVPDFile;
-    fstream vpdFileStream;
-
-    vpdFileStream.exceptions(std::ifstream::badbit | std::ifstream::failbit);
-    try
-    {
-        vpdFileStream.open(fruPath,
-                           std::ios::in | std::ios::out | std::ios::binary);
-
-        auto vpdFileSize = std::min(std::filesystem::file_size(fruPath),
-                                    constants::MAX_VPD_SIZE);
-        if (vpdFileSize == 0)
-        {
-            std::cerr << "File size is 0 for " << fruPath << std::endl;
-            throw std::runtime_error("File size is 0.");
-        }
-
-        completeVPDFile.resize(vpdFileSize);
-        vpdFileStream.seekg(startOffset, ios_base::cur);
-        vpdFileStream.read(reinterpret_cast<char*>(&completeVPDFile[0]),
-                           vpdFileSize);
-        vpdFileStream.clear(std::ios_base::eofbit);
-    }
-    catch (const std::system_error& fail)
-    {
-        std::cerr << "Exception in file handling [" << fruPath
-                  << "] error : " << fail.what();
-        std::cerr << "Stream file size = " << vpdFileStream.gcount()
-                  << std::endl;
-        throw;
-    }
-
-    if (completeVPDFile.empty())
-    {
-        throw std::runtime_error("Invalid File");
-    }
-
-    Impl obj(completeVPDFile, (constants::pimPath + inventoryPath), fruPath,
-             startOffset);
-    std::string keywordVal = obj.readKwFromHw(recordName, keyword);
-
-    keywordVal = getPrintableValue(keywordVal);
-
-    if (keywordVal.empty())
-    {
-        std::cerr << "The given keyword " << keyword << " or record "
-                  << recordName
-                  << " or both are not present in the given FRU path "
-                  << fruPath << std::endl;
-        return;
-    }
-
-    if (!value.empty())
-    {
-        if (copyStringToFile(keywordVal))
-        {
-            std::cout << "Value read is saved in the file " << value
-                      << std::endl;
-            return;
-        }
-        else
-        {
-            std::cerr
-                << "Error while saving the read value in file. Displaying "
-                   "the read value on console"
-                << std::endl;
-        }
-    }
-
-    json output = json::object({});
-    json kwVal = json::object({});
-    kwVal.emplace(keyword, keywordVal);
-    output.emplace(fruPath, kwVal);
-    debugger(output);
-}
-
-void VpdTool::printFixSystemVPDOption(UserOption option)
-{
-    switch (option)
-    {
-        case VpdTool::EXIT:
-            cout << "\nEnter 0 => To exit successfully : ";
-            break;
-        case VpdTool::BACKUP_DATA_FOR_ALL:
-            cout << "\n\nEnter 1 => If you choose the data on backup for all "
-                    "mismatching record-keyword pairs";
-            break;
-        case VpdTool::SYSTEM_BACKPLANE_DATA_FOR_ALL:
-            cout << "\nEnter 2 => If you choose the data on primary for all "
-                    "mismatching record-keyword pairs";
-            break;
-        case VpdTool::MORE_OPTIONS:
-            cout << "\nEnter 3 => If you wish to explore more options";
-            break;
-        case VpdTool::BACKUP_DATA_FOR_CURRENT:
-            cout << "\nEnter 4 => If you choose the data on backup as the "
-                    "right value";
-            break;
-        case VpdTool::SYSTEM_BACKPLANE_DATA_FOR_CURRENT:
-            cout << "\nEnter 5 => If you choose the data on primary as the "
-                    "right value";
-            break;
-        case VpdTool::NEW_VALUE_ON_BOTH:
-            cout << "\nEnter 6 => If you wish to enter a new value to update "
-                    "both on backup and primary";
-            break;
-        case VpdTool::SKIP_CURRENT:
-            cout << "\nEnter 7 => If you wish to skip the above "
-                    "record-keyword pair";
-            break;
-    }
-}
-
-void VpdTool::getSystemDataFromCache(IntfPropMap& svpdBusData)
-{
-    const auto vsys = getAllDBusProperty<GetAllResultType>(
-        constants::pimIntf,
-        "/xyz/openbmc_project/inventory/system/chassis/motherboard",
-        "com.ibm.ipzvpd.VSYS");
-    svpdBusData.emplace("VSYS", vsys);
-
-    const auto vcen = getAllDBusProperty<GetAllResultType>(
-        constants::pimIntf,
-        "/xyz/openbmc_project/inventory/system/chassis/motherboard",
-        "com.ibm.ipzvpd.VCEN");
-    svpdBusData.emplace("VCEN", vcen);
-
-    const auto lxr0 = getAllDBusProperty<GetAllResultType>(
-        constants::pimIntf,
-        "/xyz/openbmc_project/inventory/system/chassis/motherboard",
-        "com.ibm.ipzvpd.LXR0");
-    svpdBusData.emplace("LXR0", lxr0);
-
-    const auto util = getAllDBusProperty<GetAllResultType>(
-        constants::pimIntf,
-        "/xyz/openbmc_project/inventory/system/chassis/motherboard",
-        "com.ibm.ipzvpd.UTIL");
-    svpdBusData.emplace("UTIL", util);
-}
-
-int VpdTool::fixSystemVPD()
-{
-    std::string outline(191, '=');
-    cout << "\nRestorable record-keyword pairs and their data on backup & "
-            "primary.\n\n"
-         << outline << std::endl;
-
-    cout << left << setw(6) << "S.No" << left << setw(8) << "Record" << left
-         << setw(9) << "Keyword" << left << setw(75) << "Data On Backup" << left
-         << setw(75) << "Data On Primary" << left << setw(14)
-         << "Data Mismatch\n"
-         << outline << std::endl;
-
-    uint8_t num = 0;
-
-    // Get system VPD data in map
-    unordered_map<string, DbusPropertyMap> vpdMap;
-    json js;
-    getVPDInMap(constants::systemVpdFilePath, vpdMap, js,
-                constants::pimPath +
-                    static_cast<std::string>(constants::SYSTEM_OBJECT));
-
-    // Get system VPD D-Bus Data in a map
-    IntfPropMap svpdBusData;
-    getSystemDataFromCache(svpdBusData);
-
-    for (const auto& recordKw : svpdKwdMap)
-    {
-        string record = recordKw.first;
-
-        // Extract specific record data from the svpdBusData map.
-        const auto& rec = svpdBusData.find(record);
-
-        if (rec == svpdBusData.end())
-        {
-            std::cerr << record << " not a part of critical system VPD records."
-                      << std::endl;
-            continue;
-        }
-
-        const auto& recData = svpdBusData.find(record)->second;
-
-        string busStr{}, hwValStr{};
-
-        for (const auto& keywordInfo : recordKw.second)
-        {
-            const auto& keyword = get<0>(keywordInfo);
-            string mismatch = "NO"; // no mismatch
-            string hardwareValue{};
-            auto recItr = vpdMap.find(record);
-
-            if (recItr != vpdMap.end())
-            {
-                DbusPropertyMap& kwValMap = recItr->second;
-                auto kwItr = kwValMap.find(keyword);
-                if (kwItr != kwValMap.end())
-                {
-                    hardwareValue = kwItr->second;
-                }
-            }
-
-            inventory::Value kwValue;
-            for (auto& kwData : recData)
-            {
-                if (kwData.first == keyword)
-                {
-                    kwValue = kwData.second;
-                    break;
-                }
-            }
-
-            if (keyword != "SE") // SE to display in Hex string only
-            {
-                ostringstream hwValStream;
-                hwValStream << "0x";
-                hwValStr = hwValStream.str();
-
-                for (uint16_t byte : hardwareValue)
-                {
-                    hwValStream << setfill('0') << setw(2) << hex << byte;
-                    hwValStr = hwValStream.str();
-                }
-
-                if (const auto value = get_if<Binary>(&kwValue))
-                {
-                    busStr = hexString(*value);
-                }
-                if (busStr != hwValStr)
-                {
-                    mismatch = "YES";
-                }
-            }
-            else
-            {
-                if (const auto value = get_if<Binary>(&kwValue))
-                {
-                    busStr = getPrintableValue(*value);
-                }
-                if (busStr != hardwareValue)
-                {
-                    mismatch = "YES";
-                }
-                hwValStr = hardwareValue;
-            }
-            recKwData.push_back(
-                make_tuple(++num, record, keyword, busStr, hwValStr, mismatch));
-
-            std::string splitLine(191, '-');
-            cout << left << setw(6) << static_cast<int>(num) << left << setw(8)
-                 << record << left << setw(9) << keyword << left << setw(75)
-                 << setfill(' ') << busStr << left << setw(75) << setfill(' ')
-                 << hwValStr << left << setw(14) << mismatch << '\n'
-                 << splitLine << endl;
-        }
-    }
-    parseSVPDOptions(js, std::string());
-    return 0;
-}
-
-void VpdTool::parseSVPDOptions(const nlohmann::json& json,
-                               const std::string& backupEEPROMPath)
-{
-    do
-    {
-        printFixSystemVPDOption(VpdTool::BACKUP_DATA_FOR_ALL);
-        printFixSystemVPDOption(VpdTool::SYSTEM_BACKPLANE_DATA_FOR_ALL);
-        printFixSystemVPDOption(VpdTool::MORE_OPTIONS);
-        printFixSystemVPDOption(VpdTool::EXIT);
-
-        int option = 0;
-        cin >> option;
-
-        std::string outline(191, '=');
-        cout << '\n' << outline << endl;
-
-        if (json.find("frus") == json.end())
-        {
-            throw runtime_error("Frus not found in json");
-        }
-
-        bool mismatchFound = false;
-
-        if (option == VpdTool::BACKUP_DATA_FOR_ALL)
-        {
-            for (const auto& data : recKwData)
-            {
-                if (get<5>(data) == "YES")
-                {
-                    EditorImpl edit(constants::systemVpdFilePath, json,
-                                    get<1>(data), get<2>(data));
-                    edit.updateKeyword(toBinary(get<3>(data)), 0, true);
-                    mismatchFound = true;
-                }
-            }
-
-            if (mismatchFound)
-            {
-                cout << "\nData updated successfully for all mismatching "
-                        "record-keyword pairs by choosing their corresponding "
-                        "data from backup. Exit successfully.\n"
-                     << endl;
-            }
-            else
-            {
-                cout << "\nNo mismatch found for any of the above mentioned "
-                        "record-keyword pair. Exit successfully.\n";
-            }
-
-            exit(0);
-        }
-        else if (option == VpdTool::SYSTEM_BACKPLANE_DATA_FOR_ALL)
-        {
-            std::string hardwarePath = constants::systemVpdFilePath;
-            if (!backupEEPROMPath.empty())
-            {
-                hardwarePath = backupEEPROMPath;
-            }
-
-            for (const auto& data : recKwData)
-            {
-                if (get<5>(data) == "YES")
-                {
-                    std::string record = get<1>(data), keyword = get<2>(data);
-
-                    if (!backupEEPROMPath.empty())
-                    {
-                        getBackupRecordKeyword(record, keyword);
-                    }
-
-                    EditorImpl edit(hardwarePath, json, record, keyword);
-                    edit.updateKeyword(toBinary(get<4>(data)), 0, true);
-                    mismatchFound = true;
-                }
-            }
-
-            if (mismatchFound)
-            {
-                cout << "\nData updated successfully for all mismatching "
-                        "record-keyword pairs by choosing their corresponding "
-                        "data from primary VPD.\n"
-                     << endl;
-            }
-            else
-            {
-                cout << "\nNo mismatch found for any of the above mentioned "
-                        "record-keyword pair. Exit successfully.\n";
-            }
-
-            exit(0);
-        }
-        else if (option == VpdTool::MORE_OPTIONS)
-        {
-            cout << "\nIterate through all restorable record-keyword pairs\n";
-
-            for (const auto& data : recKwData)
-            {
-                do
-                {
-                    cout << '\n' << outline << endl;
-
-                    cout << left << setw(6) << "S.No" << left << setw(8)
-                         << "Record" << left << setw(9) << "Keyword" << left
-                         << setw(75) << setfill(' ') << "Backup Data" << left
-                         << setw(75) << setfill(' ') << "Primary Data" << left
-                         << setw(14) << "Data Mismatch" << endl;
-
-                    cout << left << setw(6) << static_cast<int>(get<0>(data))
-                         << left << setw(8) << get<1>(data) << left << setw(9)
-                         << get<2>(data) << left << setw(75) << setfill(' ')
-                         << get<3>(data) << left << setw(75) << setfill(' ')
-                         << get<4>(data) << left << setw(14) << get<5>(data);
-
-                    cout << '\n' << outline << endl;
-
-                    if (get<5>(data) == "NO")
-                    {
-                        cout << "\nNo mismatch found.\n";
-                        printFixSystemVPDOption(VpdTool::NEW_VALUE_ON_BOTH);
-                        printFixSystemVPDOption(VpdTool::SKIP_CURRENT);
-                        printFixSystemVPDOption(VpdTool::EXIT);
-                    }
-                    else
-                    {
-                        printFixSystemVPDOption(
-                            VpdTool::BACKUP_DATA_FOR_CURRENT);
-                        printFixSystemVPDOption(
-                            VpdTool::SYSTEM_BACKPLANE_DATA_FOR_CURRENT);
-                        printFixSystemVPDOption(VpdTool::NEW_VALUE_ON_BOTH);
-                        printFixSystemVPDOption(VpdTool::SKIP_CURRENT);
-                        printFixSystemVPDOption(VpdTool::EXIT);
-                    }
-
-                    cin >> option;
-                    cout << '\n' << outline << endl;
-
-                    if (option == VpdTool::BACKUP_DATA_FOR_CURRENT)
-                    {
-                        EditorImpl edit(constants::systemVpdFilePath, json,
-                                        get<1>(data), get<2>(data));
-                        edit.updateKeyword(toBinary(get<3>(data)), 0, true);
-                        cout << "\nData updated successfully.\n";
-                        break;
-                    }
-                    else if (option ==
-                             VpdTool::SYSTEM_BACKPLANE_DATA_FOR_CURRENT)
-                    {
-                        std::string hardwarePath = constants::systemVpdFilePath;
-                        std::string record = get<1>(data);
-                        std::string keyword = get<2>(data);
-
-                        if (!backupEEPROMPath.empty())
-                        {
-                            hardwarePath = backupEEPROMPath;
-                            getBackupRecordKeyword(record, keyword);
-                        }
-
-                        EditorImpl edit(hardwarePath, json, record, keyword);
-                        edit.updateKeyword(toBinary(get<4>(data)), 0, true);
-                        cout << "\nData updated successfully.\n";
-                        break;
-                    }
-                    else if (option == VpdTool::NEW_VALUE_ON_BOTH)
-                    {
-                        string value;
-                        cout << "\nEnter the new value to update on both "
-                                "primary & backup. Value should be in ASCII or "
-                                "in HEX(prefixed with 0x) : ";
-                        cin >> value;
-                        cout << '\n' << outline << endl;
-
-                        EditorImpl edit(constants::systemVpdFilePath, json,
-                                        get<1>(data), get<2>(data));
-                        edit.updateKeyword(toBinary(value), 0, true);
-
-                        if (!backupEEPROMPath.empty())
-                        {
-                            std::string record = get<1>(data);
-                            std::string keyword = get<2>(data);
-
-                            getBackupRecordKeyword(record, keyword);
-                            EditorImpl edit(backupEEPROMPath, json, record,
-                                            keyword);
-                            edit.updateKeyword(toBinary(value), 0, true);
-                        }
-
-                        cout << "\nData updated successfully.\n";
-                        break;
-                    }
-                    else if (option == VpdTool::SKIP_CURRENT)
-                    {
-                        cout << "\nSkipped the above record-keyword pair. "
-                                "Continue to the next available pair.\n";
-                        break;
-                    }
-                    else if (option == VpdTool::EXIT)
-                    {
-                        cout << "\nExit successfully\n";
-                        exit(0);
-                    }
-                    else
-                    {
-                        cout << "\nProvide a valid option. Retrying for the "
-                                "current record-keyword pair\n";
-                    }
-                } while (1);
-            }
-            exit(0);
-        }
-        else if (option == VpdTool::EXIT)
-        {
-            cout << "\nExit successfully";
-            exit(0);
-        }
-        else
-        {
-            cout << "\nProvide a valid option. Retry.";
-            continue;
-        }
-
-    } while (true);
-}
-
-int VpdTool::cleanSystemVPD()
-{
-    try
-    {
-        // Get system VPD hardware data in map
-        unordered_map<string, DbusPropertyMap> vpdMap;
-        json js;
-        getVPDInMap(constants::systemVpdFilePath, vpdMap, js,
-                    constants::pimPath +
-                        static_cast<std::string>(constants::SYSTEM_OBJECT));
-
-        RecKwValMap kwdsToBeUpdated;
-
-        for (auto recordMap : svpdKwdMap)
-        {
-            const auto& record = recordMap.first;
-            std::unordered_map<std::string, Binary> kwDefault;
-            for (auto keywordMap : recordMap.second)
-            {
-                // Skip those keywords which cannot be reset at manufacturing
-                if (!std::get<3>(keywordMap))
-                {
-                    continue;
-                }
-                const auto& keyword = std::get<0>(keywordMap);
-
-                // Get hardware value for this keyword from vpdMap
-                Binary hardwareValue;
-
-                auto recItr = vpdMap.find(record);
-
-                if (recItr != vpdMap.end())
-                {
-                    DbusPropertyMap& kwValMap = recItr->second;
-                    auto kwItr = kwValMap.find(keyword);
-                    if (kwItr != kwValMap.end())
-                    {
-                        hardwareValue = toBinary(kwItr->second);
-                    }
-                }
-
-                // compare hardware value with the keyword's default value
-                auto defaultValue = std::get<1>(keywordMap);
-                if (hardwareValue != defaultValue)
-                {
-                    EditorImpl edit(constants::systemVpdFilePath, js, record,
-                                    keyword);
-                    edit.updateKeyword(defaultValue, 0, true);
-                }
-            }
-        }
-
-        std::cout << "\n The critical keywords from system backplane VPD has "
-                     "been reset successfully."
-                  << std::endl;
-    }
-    catch (const std::exception& e)
-    {
-        std::cerr << e.what();
-        std::cerr
-            << "\nManufacturing reset on system vpd keywords is unsuccessful";
-    }
-    return 0;
-}
-
-int VpdTool::fixSystemBackupVPD(const std::string& backupEepromPath,
-                                const std::string& backupInvPath)
-{
-    std::string outline(191, '=');
-    cout << "\nRestorable record-keyword pairs and their data on backup & "
-            "primary.\n\n"
-         << outline << std::endl;
-
-    cout << left << setw(6) << "S.No" << left << setw(8) << "Record" << left
-         << setw(9) << "Keyword" << left << setw(75) << "Data On Backup" << left
-         << setw(75) << "Data On Primary" << left << setw(14)
-         << "Data Mismatch\n"
-         << outline << std::endl;
-
-    uint8_t num = 0;
-    // Get system VPD data in map
-    unordered_map<string, DbusPropertyMap> systemVPDMap;
-    json js;
-    getVPDInMap(constants::systemVpdFilePath, systemVPDMap, js,
-                constants::pimPath +
-                    static_cast<std::string>(constants::SYSTEM_OBJECT));
-
-    // Get backup VPD data in map
-    unordered_map<string, DbusPropertyMap> backupVPDMap;
-    getVPDInMap(backupEepromPath, backupVPDMap, js,
-                constants::pimPath + backupInvPath);
-
-    for (const auto& recordKw : svpdKwdMap)
-    {
-        const std::string& primaryRecord = recordKw.first;
-
-        std::string primaryValStr{}, backupValStr{};
-
-        for (const auto& keywordInfo : recordKw.second)
-        {
-            const auto& primaryKeyword = get<0>(keywordInfo);
-            const auto& bkRecord = get<4>(keywordInfo);
-            const auto& bkKeyword = get<5>(keywordInfo);
-            string mismatch = "NO";
-            string primaryValue{};
-            string backupValue{};
-
-            // Find keyword value for system VPD (primary VPD)
-            auto primaryRecItr = systemVPDMap.find(primaryRecord);
-            if (primaryRecItr != systemVPDMap.end())
-            {
-                DbusPropertyMap& primaryKwValMap = primaryRecItr->second;
-                auto kwItr = primaryKwValMap.find(primaryKeyword);
-                if (kwItr != primaryKwValMap.end())
-                {
-                    primaryValue = kwItr->second;
-                }
-            }
-
-            // Find keyword value for backup VPD
-            auto bkRecItr = backupVPDMap.find(bkRecord);
-            if (bkRecItr != backupVPDMap.end())
-            {
-                DbusPropertyMap& bkKwValMap = bkRecItr->second;
-                auto kwItr = bkKwValMap.find(bkKeyword);
-                if (kwItr != bkKwValMap.end())
-                {
-                    backupValue = kwItr->second;
-                }
-            }
-
-            // SE to display in hex string only
-            if (primaryKeyword != "SE")
-            {
-                ostringstream hwValStream;
-                hwValStream << "0x";
-                primaryValStr = hwValStream.str();
-
-                for (uint16_t byte : primaryValue)
-                {
-                    hwValStream << setfill('0') << setw(2) << hex << byte;
-                    primaryValStr = hwValStream.str();
-                }
-
-                hwValStream.str(std::string());
-                hwValStream << "0x";
-                backupValStr = hwValStream.str();
-
-                for (uint16_t byte : backupValue)
-                {
-                    hwValStream << setfill('0') << setw(2) << hex << byte;
-                    backupValStr = hwValStream.str();
-                }
-                if (primaryValStr != backupValStr)
-                {
-                    mismatch = "YES";
-                }
-            }
-            else
-            {
-                if (primaryValue != backupValue)
-                {
-                    mismatch = "YES";
-                }
-
-                primaryValStr = primaryValue;
-                backupValStr = backupValue;
-            }
-
-            recKwData.push_back(
-                make_tuple(++num, primaryRecord, primaryKeyword, backupValStr,
-                           primaryValStr, mismatch));
-
-            std::string splitLine(191, '-');
-            cout << left << setw(6) << static_cast<int>(num) << left << setw(8)
-                 << primaryRecord << left << setw(9) << primaryKeyword << left
-                 << setw(75) << setfill(' ') << backupValStr << left << setw(75)
-                 << setfill(' ') << primaryValStr << left << setw(14)
-                 << mismatch << '\n'
-                 << splitLine << endl;
-        }
-    }
-
-    parseSVPDOptions(js, backupEepromPath);
-    return 0;
-}
diff --git a/vpd_tool_impl.hpp b/vpd_tool_impl.hpp
deleted file mode 100644
index 47a555f..0000000
--- a/vpd_tool_impl.hpp
+++ /dev/null
@@ -1,322 +0,0 @@
-#include "config.h"
-
-#include "editor_impl.hpp"
-#include "ibm_vpd_utils.hpp"
-#include "types.hpp"
-
-#include <nlohmann/json.hpp>
-
-#include <string>
-
-using json = nlohmann::json;
-
-// <S.no, Record, Keyword, D-Bus value, HW value, Data mismatch>
-using SystemCriticalData =
-    std::vector<std::tuple<uint8_t, std::string, std::string, std::string,
-                           std::string, std::string>>;
-
-class VpdTool
-{
-  private:
-    const std::string fruPath;
-    const std::string recordName;
-    const std::string keyword;
-    const std::string value;
-    bool objFound = true;
-    SystemCriticalData recKwData;
-
-    // Store Type of FRU
-    std::string fruType;
-
-    /**
-     * @brief Debugger
-     * Displays the output in JSON.
-     *
-     * @param[in] output - json output to be displayed
-     */
-    void debugger(json output);
-
-    /**
-     * @brief make Dbus Call
-     *
-     * @param[in] objectName - dbus Object
-     * @param[in] interface - dbus Interface
-     * @param[in] kw - keyword under the interface
-     *
-     * @return dbus call response
-     */
-    auto makeDBusCall(const std::string& objectName,
-                      const std::string& interface, const std::string& kw);
-
-    /**
-     * @brief Get VINI properties
-     * Making a dbus call for properties [SN, PN, CC, FN, DR]
-     * under VINI interface.
-     *
-     * @param[in] invPath - Value of inventory Path
-     *
-     * @return json output which gives the properties under invPath's VINI
-     * interface
-     */
-    json getVINIProperties(std::string invPath);
-
-    /**
-     * @brief Get ExtraInterface Properties
-     * Making a dbus call for those properties under extraInterfaces.
-     *
-     * @param[in] invPath - Value of inventory path
-     * @param[in] extraInterface - One of the invPath's extraInterfaces whose
-     * value is not null
-     * @param[in] prop - All properties of the extraInterface.
-     * @param[out] output - output json which has the properties under invPath's
-     * extra interface.
-     */
-    void getExtraInterfaceProperties(const std::string& invPath,
-                                     const std::string& extraInterface,
-                                     const json& prop, json& output);
-
-    /**
-     * @brief Interface Decider
-     * Decides whether to make the dbus call for
-     * getting properties from extraInterface or from
-     * VINI interface, depending on the value of
-     * extraInterfaces object in the inventory json.
-     *
-     * @param[in] itemEEPROM - holds the reference of one of the EEPROM objects.
-     *
-     * @return json output for one of the EEPROM objects.
-     */
-    json interfaceDecider(json& itemEEPROM);
-
-    /**
-     * @brief Parse Inventory JSON
-     * Parses the complete inventory json and depending upon
-     * the user option makes the dbuscall for the frus
-     * via interfaceDecider function.
-     *
-     * @param[in] jsObject - Inventory json object
-     * @param[in] flag - flag which tells about the user option(either
-     * dumpInventory or dumpObject)
-     * @param[in] fruPath - fruPath is empty for dumpInventory option and holds
-     *                      valid fruPath for dumpObject option.
-     *
-     * @return output json
-     */
-    json parseInvJson(const json& jsObject, char flag, std::string fruPath);
-
-    /**
-     * @brief eraseInventoryPath
-     * Remove the INVENTORY_PATH - "/xyz/openbmc_project/inventory"
-     * for code convenience.
-     *
-     * @param[out] fru - Reference to the fru path whose INVENTORY_PATH is
-     * stripped off.
-     */
-    void eraseInventoryPath(std::string& fru);
-
-    /**
-     * @brief printReturnCode
-     * Prints the return code of the program in console output, whenever
-     * the program fails to exit successfully.
-     *
-     * @param[in] returnCode - return code of the program.
-     */
-    void printReturnCode(int returnCode);
-
-    /**
-     * @brief Convert hex/ascii values to Binary
-     * @param[in] - value in hex/ascii.
-     * @param[out] - value in binary.
-     */
-    openpower::vpd::Binary toBinary(const std::string& value);
-
-    /**
-     * @brief Get the json which has Present property value of the given fru.
-     * @param[in] invPath - inventory path of the fru.
-     * @return output json which has the Present property value.
-     */
-    json getPresentPropJson(const std::string& invPath);
-
-    /**
-     * @brief Parse through the options to fix system VPD
-     *
-     * @param[in] json - Inventory JSON
-     * @param[in] backupEEPROMPath - Backup VPD path
-     */
-    void parseSVPDOptions(const nlohmann::json& json,
-                          const std::string& backupEEPROMPath);
-
-    /**
-     * @brief List of user options that can be used to fix system VPD keywords.
-     */
-    enum UserOption
-    {
-        EXIT = 0,
-        BACKUP_DATA_FOR_ALL = 1,
-        SYSTEM_BACKPLANE_DATA_FOR_ALL = 2,
-        MORE_OPTIONS = 3,
-        BACKUP_DATA_FOR_CURRENT = 4,
-        SYSTEM_BACKPLANE_DATA_FOR_CURRENT = 5,
-        NEW_VALUE_ON_BOTH = 6,
-        SKIP_CURRENT = 7
-    };
-
-    /**
-     * @brief Print options to fix system VPD.
-     * @param[in] option - Option to use.
-     */
-    void printFixSystemVPDOption(UserOption option);
-
-    /**
-     * @brief Get System VPD data stored in cache
-     *
-     * @param[in] svpdBusData - Map of system VPD record data.
-     */
-    void getSystemDataFromCache(
-        openpower::vpd::inventory::IntfPropMap& svpdBusData);
-
-    /**
-     * @brief Get data from file and store in binary format
-     *
-     * @param[out] data - The resulting binary data
-     *
-     * @return If operation is success return true, else on failure return
-     * false.
-     */
-    bool fileToVector(openpower::vpd::Binary& data);
-
-    /**
-     * @brief Copy string data to file.
-     *
-     * @param[in] input - input string
-     *
-     * @return If operation is success return true, else on failure return
-     * false.
-     */
-    bool copyStringToFile(const std::string& input);
-
-  public:
-    /**
-     * @brief Dump the complete inventory in JSON format
-     *
-     * @param[in] jsObject - Inventory JSON specified in configure file.
-     */
-    void dumpInventory(const nlohmann::basic_json<>& jsObject);
-
-    /**
-     * @brief Dump the given inventory object in JSON format
-     *
-     * @param[in] jsObject - Inventory JSON specified in configure file.
-     */
-    void dumpObject(const nlohmann::basic_json<>& jsObject);
-
-    /**
-     * @brief Read keyword
-     * Read the given object path, record name and keyword
-     * from the inventory and display the value of the keyword
-     * in JSON format. The read value will be piped to file if --file is given
-     * by the user. Else the value read will be displayed on console.
-     */
-    void readKeyword();
-
-    /**
-     * @brief Update Keyword
-     * Update the given keyword with the given value.
-     *
-     * @return return code (Success(0)/Failure(-1))
-     */
-    int updateKeyword();
-
-    /**
-     * @brief Force Reset
-     * Clearing the inventory cache data and restarting the
-     * phosphor inventory manager and also retriggering all the
-     * udev events.
-     *
-     * @param[in] jsObject - Inventory JSON specified in configure file.
-     */
-    void forceReset(const nlohmann::basic_json<>& jsObject);
-
-    /**
-     * @brief Update Hardware
-     * The given data is updated only on the given hardware path and not on dbus
-     * for the given record-keyword pair. The user can now update record-keyword
-     * value for any hardware path irrespective of whether its present or not in
-     * VPD JSON, by providing a valid offset. By default offset takes 0.
-     *
-     * @param[in] offset - VPD offset.
-     * @return returncode (success/failure).
-     */
-    int updateHardware(const uint32_t offset);
-
-    /**
-     * @brief Read Keyword from Hardware
-     * This api is to read a keyword directly from the hardware. The hardware
-     * path, record name and keyword name are received at the time of
-     * initialising the constructor.
-     * The user can now read keyword from any hardware path irrespective of
-     * whether its present or not in VPD JSON, by providing a valid offset. By
-     * default offset takes 0. The read value can be either saved in a
-     * file/displayed on console.
-     *
-     * @param[in] startOffset - VPD offset.
-     */
-    void readKwFromHw(const uint32_t& startOffset);
-
-    /**
-     * @brief Fix System VPD keyword.
-     * This API provides an interactive way to fix system VPD keywords that are
-     * part of restorable record-keyword pairs. The user can use this option to
-     * restore the restorable keywords in cache or in hardware or in both cache
-     * and hardware.
-     * @return returncode (success/failure).
-     */
-    int fixSystemVPD();
-
-    /**
-     * @brief Clean specific keywords in system backplane VPD
-     *
-     * @return return code (success/failure)
-     */
-    int cleanSystemVPD();
-
-    /**
-     * @brief Fix system VPD and its backup VPD
-     * API is triggered if the backup of system VPD has to be taken in a
-     * hardware VPD. User can use the --fixSystemVPD option to restore the
-     * keywords in backup VPD and/or system VPD.
-     *
-     * @param[in] backupEepromPath - Backup VPD path
-     * @param[in] backupInvPath - Backup inventory path
-     * @return returncode
-     */
-    int fixSystemBackupVPD(const std::string& backupEepromPath,
-                           const std::string& backupInvPath);
-
-    /**
-     * @brief Constructor
-     * Constructor is called during the
-     * object instantiation for dumpInventory option and
-     * forceReset option.
-     */
-    VpdTool() {}
-
-    /**
-     * @brief Constructor
-     * Constructor is called during the
-     * object instantiation for dumpObject option.
-     */
-    VpdTool(const std::string&& fru) : fruPath(std::move(fru)) {}
-
-    /**
-     * @brief Constructor
-     * Constructor is called during the
-     * object instantiation for updateKeyword option.
-     */
-
-    VpdTool(const std::string&& fru, const std::string&& recName,
-            const std::string&& kw, const std::string&& val) :
-        fruPath(std::move(fru)), recordName(std::move(recName)),
-        keyword(std::move(kw)), value(std::move(val))
-    {}
-};
diff --git a/vpdecc/vpdecc.h b/vpdecc/vpdecc.h
index 705d107..2286abe 100644
--- a/vpdecc/vpdecc.h
+++ b/vpdecc/vpdecc.h
@@ -27,7 +27,7 @@
 /* this function creates the ECC */
 /*                                                                            */
 /* @param     pData           In-Buffer containing the raw VPD data */
-/*                                            (won't be changed) */
+/*                                            (wont't be changed) */
 /*                                                                            */
 /* @param     vDataLength     In        should contain the length of the
  * Data */
diff --git a/write.cpp b/write.cpp
deleted file mode 100644
index 31ff229..0000000
--- a/write.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-#include "write.hpp"
-
-#include "defines.hpp"
-#include "writefru.hpp"
-
-#include <algorithm>
-#include <exception>
-
-namespace openpower
-{
-namespace vpd
-{
-namespace inventory
-{
-
-// Some systems have two MAC addresses
-static const std::unordered_map<std::string, Fru> supportedFrus = {
-    {"BMC", Fru::BMC},
-    {"ETHERNET", Fru::ETHERNET},
-    {"ETHERNET1", Fru::ETHERNET1}};
-
-void write(const std::string& type, const Store& vpdStore,
-           const std::string& path)
-{
-    // Get the enum corresponding to type, and call
-    // appropriate write FRU method.
-
-    std::string fru = type;
-    std::transform(fru.begin(), fru.end(), fru.begin(),
-                   [](unsigned char c) { return std::toupper(c); });
-    auto iterator = supportedFrus.find(fru);
-    if (supportedFrus.end() == iterator)
-    {
-        throw std::runtime_error("Unsupported FRU: " + std::move(fru));
-    }
-    else
-    {
-        switch (iterator->second)
-        {
-            case Fru::BMC:
-            {
-                writeFru<Fru::BMC>(vpdStore, path);
-                break;
-            }
-
-            case Fru::ETHERNET:
-            {
-                writeFru<Fru::ETHERNET>(vpdStore, path);
-                break;
-            }
-
-            case Fru::ETHERNET1:
-            {
-                writeFru<Fru::ETHERNET1>(vpdStore, path);
-                break;
-            }
-
-            default:
-                break;
-        }
-    }
-}
-
-} // namespace inventory
-} // namespace vpd
-} // namespace openpower
diff --git a/write.hpp b/write.hpp
deleted file mode 100644
index ac1b148..0000000
--- a/write.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-#pragma once
-
-#include <store.hpp>
-
-#include <string>
-
-namespace openpower
-{
-namespace vpd
-{
-namespace inventory
-{
-
-/** @brief API to write parsed VPD to inventory
- *
- *  @param [in] type - FRU type
- *  @param [in] vpdStore - Store object containing parsed VPD
- *  @param [in] path - FRU object path
- */
-void write(const std::string& type, const Store& vpdStore,
-           const std::string& path);
-
-} // namespace inventory
-} // namespace vpd
-} // namespace openpower
diff --git a/writefru.mako.hpp b/writefru.mako.hpp
deleted file mode 100755
index 6e04649..0000000
--- a/writefru.mako.hpp
+++ /dev/null
@@ -1,108 +0,0 @@
-## This file is a template.  The comment below is emitted
-## into the rendered file; feel free to edit this file.
-// WARNING: Generated header. Do not edit!
-
-
-#pragma once
-
-#include <map>
-#include <iostream>
-#include "defines.hpp"
-#include "store.hpp"
-#include "types.hpp"
-#include "common_utility.hpp"
-#include "extra-properties-gen.hpp"
-
-namespace openpower
-{
-namespace vpd
-{
-namespace inventory
-{
-using namespace openpower::vpd::common::utility;
-
-/** @brief API to write parsed VPD to inventory,
- *      for a specific FRU
- *
- *  @param [in] vpdStore - Store object containing
- *      parsed VPD
- *  @param [in] path - FRU object path
- */
-template<Fru F>
-void writeFru(const Store& /*vpdStore*/, const std::string& /*path*/) {
-    throw std::runtime_error("Not implemented");
-}
-
-% for key in fruDict.keys():
-<%
-    fru = fruDict[key]
-%>\
-// Specialization of ${key}
-template<>
-void writeFru<Fru::${key}>(const Store& vpdStore,
-                           const std::string& path)
-{
-    ObjectMap objects;
-    InterfaceMap interfaces;
-    auto iter = extra::objects.find(path);
-
-    // Inventory manager needs object path, list of interface names to be
-    // implemented, and property:value pairs contained in said interfaces
-
-    % for interface, properties in fru.items():
-<%
-        names = interface.split(".")
-        intfName = names[0] + names[-1]
-%>\
-    PropertyMap ${intfName}Props;
-        % if properties:
-            % for name, value in properties.items():
-                % if fru and interface and name and value:
-<%
-                record, keyword = name.split(",")
-%>\
-    if (vpdStore.exists<Record::${record}, record::Keyword::${keyword}>())
-    {
-        ${intfName}Props["${value}"] =
-            vpdStore.get<Record::${record}, record::Keyword::${keyword}>();
-    }
-                % endif
-            % endfor
-        % endif
-    // Check and update extra properties
-    if(extra::objects.end() != iter)
-    {
-        auto propIter = (iter->second).find("${interface}");
-        if((iter->second).end() != propIter)
-        {
-            for(const auto& map : propIter->second)
-            {
-                ${intfName}Props[map.first] = map.second;
-            }
-        }
-    }
-    interfaces.emplace("${interface}",
-                       std::move(${intfName}Props));
-    % endfor
-
-    sdbusplus::message::object_path object(path);
-    // Check and update extra properties
-    if(extra::objects.end() != iter)
-    {
-        for(const auto& entry : iter->second)
-        {
-            if(interfaces.end() == interfaces.find(entry.first))
-            {
-                interfaces.emplace(entry.first, entry.second);
-            }
-        }
-    }
-    objects.emplace(std::move(object), std::move(interfaces));
-
-    callPIM(std::move(objects));
-}
-
-% endfor
-} // namespace inventory
-} // namespace vpd
-} // namespace openpower
diff --git a/writefru.py b/writefru.py
deleted file mode 100755
index d623eb7..0000000
--- a/writefru.py
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env python3
-
-import argparse
-import os
-
-import yaml
-from mako.template import Template
-
-
-def main():
-    parser = argparse.ArgumentParser(
-        description="OpenPOWER FRU VPD parser and code generator"
-    )
-
-    parser.add_argument(
-        "-i",
-        "--inventory_yaml",
-        dest="inventory_yaml",
-        default="writefru.yaml",
-        help="input inventory yaml file to parse",
-    )
-    args = parser.parse_args()
-
-    with open(os.path.join(script_dir, args.inventory_yaml), "r") as fd:
-        yamlDict = yaml.safe_load(fd)
-
-        # Render the mako template
-        template = os.path.join(script_dir, "writefru.mako.hpp")
-        t = Template(filename=template)
-        with open("writefru.hpp", "w") as fd:
-            fd.write(t.render(fruDict=yamlDict))
-
-
-if __name__ == "__main__":
-    script_dir = os.path.dirname(os.path.realpath(__file__))
-    main()
diff --git a/writefru.yaml b/writefru.yaml
deleted file mode 100644
index c620b59..0000000
--- a/writefru.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
-BMC:
-    xyz.openbmc_project.Inventory.Decorator.Asset:
-        VINI,PN: PartNumber
-        VINI,SN: SerialNumber
-        OPFR,VN: Manufacturer
-    xyz.openbmc_project.Inventory.Item:
-        VINI,DR: PrettyName
-    xyz.openbmc_project.Common.UUID:
-        OPFR,UD: UUID
-    xyz.openbmc_project.Inventory.Item.Bmc:
-
-ETHERNET:
-    xyz.openbmc_project.Inventory.Item.NetworkInterface:
-        VINI,B1: MACAddress
-        OPFR,B1: MACAddress
-    xyz.openbmc_project.Inventory.Item.Ethernet:
-
-ETHERNET1:
-    xyz.openbmc_project.Inventory.Item.NetworkInterface:
-        VINI,B1: MACAddress
-        OPFR,B1: MACAddress
-    xyz.openbmc_project.Inventory.Item.Ethernet: