diff --git a/phosphor-regulators/src/chassis.hpp b/phosphor-regulators/src/chassis.hpp
index 7462094..30f62ff 100644
--- a/phosphor-regulators/src/chassis.hpp
+++ b/phosphor-regulators/src/chassis.hpp
@@ -61,15 +61,16 @@
      *
      * @param number Chassis number within the system.  Chassis numbers start at
      *               1 because chassis 0 represents the entire system.
+     * @param inventoryPath D-Bus inventory path for this chassis
      * @param devices Devices within this chassis, if any.  The vector should
      *                contain regulator devices and any related devices required
      *                to perform regulator operations.
      */
-    explicit Chassis(unsigned int number,
+    explicit Chassis(unsigned int number, const std::string& inventoryPath,
                      std::vector<std::unique_ptr<Device>> devices =
                          std::vector<std::unique_ptr<Device>>{}) :
         number{number},
-        devices{std::move(devices)}
+        inventoryPath{inventoryPath}, devices{std::move(devices)}
     {
         if (number < 1)
         {
@@ -122,6 +123,16 @@
     }
 
     /**
+     * Returns the D-Bus inventory path for this chassis.
+     *
+     * @return inventory path
+     */
+    const std::string& getInventoryPath() const
+    {
+        return inventoryPath;
+    }
+
+    /**
      * Returns the chassis number within the system.
      *
      * @return chassis number
@@ -152,6 +163,11 @@
     const unsigned int number{};
 
     /**
+     * D-Bus inventory path for this chassis.
+     */
+    const std::string inventoryPath{};
+
+    /**
      * Devices within this chassis, if any.
      *
      * The vector contains regulator devices and any related devices
diff --git a/phosphor-regulators/src/config_file_parser.cpp b/phosphor-regulators/src/config_file_parser.cpp
index 99abd6c..5238741 100644
--- a/phosphor-regulators/src/config_file_parser.cpp
+++ b/phosphor-regulators/src/config_file_parser.cpp
@@ -203,6 +203,15 @@
     }
     ++propertyCount;
 
+    // Optional inventory_path property.  Will be required in future.
+    std::string inventoryPath{"/xyz/openbmc_project/inventory/system/chassis"};
+    auto inventoryPathIt = element.find("inventory_path");
+    if (inventoryPathIt != element.end())
+    {
+        inventoryPath = parseInventoryPath(*inventoryPathIt);
+        ++propertyCount;
+    }
+
     // Optional devices property
     std::vector<std::unique_ptr<Device>> devices{};
     auto devicesIt = element.find("devices");
@@ -215,7 +224,7 @@
     // Verify no invalid properties exist
     verifyPropertyCount(element, propertyCount);
 
-    return std::make_unique<Chassis>(number, std::move(devices));
+    return std::make_unique<Chassis>(number, inventoryPath, std::move(devices));
 }
 
 std::vector<std::unique_ptr<Chassis>> parseChassisArray(const json& element)
