diff --git a/control/json/manager.cpp b/control/json/manager.cpp
index 804b15e..78aac29 100644
--- a/control/json/manager.cpp
+++ b/control/json/manager.cpp
@@ -15,6 +15,7 @@
  */
 #include "manager.hpp"
 
+#include "fan.hpp"
 #include "json_config.hpp"
 #include "profile.hpp"
 #include "zone.hpp"
@@ -23,6 +24,7 @@
 #include <sdbusplus/bus.hpp>
 #include <sdeventplus/event.hpp>
 
+#include <algorithm>
 #include <filesystem>
 #include <vector>
 
@@ -49,6 +51,21 @@
 
     // Load the zone configurations
     _zones = getConfig<Zone>(bus);
+
+    // Load the fan configurations and move each fan into its zone
+    auto fans = getConfig<Fan>(bus);
+    for (auto& fan : fans)
+    {
+        auto itZone =
+            std::find_if(_zones.begin(), _zones.end(),
+                         [&fanZone = fan.second->getZone()](const auto& zone) {
+                             return fanZone == zone.second->getName();
+                         });
+        if (itZone != _zones.end())
+        {
+            itZone->second->addFan(std::move(fan.second));
+        }
+    }
 }
 
 const std::vector<std::string>& Manager::getActiveProfiles()
diff --git a/control/json/zone.cpp b/control/json/zone.cpp
index 33ab048..11b7814 100644
--- a/control/json/zone.cpp
+++ b/control/json/zone.cpp
@@ -16,6 +16,7 @@
 #include "zone.hpp"
 
 #include "../zone.hpp"
+#include "fan.hpp"
 #include "functor.hpp"
 #include "handlers.hpp"
 #include "types.hpp"
@@ -66,6 +67,11 @@
     }
 }
 
+void Zone::addFan(std::unique_ptr<Fan> fan)
+{
+    _fans.emplace_back(std::move(fan));
+}
+
 void Zone::setFullSpeed(const json& jsonObj)
 {
     if (!jsonObj.contains("full_speed"))
diff --git a/control/json/zone.hpp b/control/json/zone.hpp
index 4f7742c..2ed3166 100644
--- a/control/json/zone.hpp
+++ b/control/json/zone.hpp
@@ -16,6 +16,7 @@
 #pragma once
 
 #include "config_base.hpp"
+#include "fan.hpp"
 #include "types.hpp"
 
 #include <nlohmann/json.hpp>
@@ -148,6 +149,17 @@
         return _zoneHandlers;
     }
 
+    /**
+     * @brief Add a fan object to the zone
+     *
+     * @param[in] fan - Unique pointer to a fan object that will be moved into
+     * the zone
+     *
+     * Adds a fan object to the list of fans that make up the zone by moving the
+     * fan object into the list.
+     */
+    void addFan(std::unique_ptr<Fan> fan);
+
   private:
     /* The zone's full speed value for fans */
     uint64_t _fullSpeed;
@@ -171,6 +183,9 @@
     static const std::map<std::string, std::map<std::string, propHandler>>
         _intfPropHandlers;
 
+    /* List of fans included in this zone */
+    std::vector<std::unique_ptr<Fan>> _fans;
+
     /**
      * @brief Parse and set the zone's full speed value
      *
