diff --git a/monitor/fan.cpp b/monitor/fan.cpp
index 52b4031..09af6cd 100644
--- a/monitor/fan.cpp
+++ b/monitor/fan.cpp
@@ -62,7 +62,8 @@
         std::bind(std::mem_fn(&Fan::presenceIfaceAdded), this,
                   std::placeholders::_1)),
     _fanMissingErrorDelay(std::get<fanMissingErrDelayField>(def)),
-    _countInterval(std::get<countIntervalField>(def))
+    _countInterval(std::get<countIntervalField>(def)),
+    _setFuncOnPresent(std::get<funcOnPresentField>(def))
 {
     bool enableCountTimer = false;
 
@@ -456,6 +457,15 @@
 
         _system.fanStatusChange(*this);
 
+        if (_present && _setFuncOnPresent)
+        {
+            updateInventory(true);
+            std::for_each(_sensors.begin(), _sensors.end(), [](auto& sensor) {
+                sensor->setFunctional(true);
+                sensor->resetMethod();
+            });
+        }
+
         if (_fanMissingErrorDelay)
         {
             if (!_present && _system.isPowerOn())
diff --git a/monitor/fan.hpp b/monitor/fan.hpp
index 92016b1..3687a85 100644
--- a/monitor/fan.hpp
+++ b/monitor/fan.hpp
@@ -340,6 +340,12 @@
     std::unique_ptr<
         sdeventplus::utility::Timer<sdeventplus::ClockId::Monotonic>>
         _countTimer;
+
+    /**
+     * @brief If the fan and sensors should be set to functional when
+     *        a fan plug is detected.
+     */
+    bool _setFuncOnPresent;
 };
 
 } // namespace monitor
diff --git a/monitor/gen-fan-monitor-defs.py b/monitor/gen-fan-monitor-defs.py
index b77ea59..1d46f80 100755
--- a/monitor/gen-fan-monitor-defs.py
+++ b/monitor/gen-fan-monitor-defs.py
@@ -85,7 +85,8 @@
                       ${indent(getCondParams(cond=fan_data['condition']), 5)}\
                   ))
                   %else:
-                  {}
+                  {},
+                  false // set_func_on_present. Hardcoded to false.
                   %endif
     },
 %endfor
diff --git a/monitor/json_parser.cpp b/monitor/json_parser.cpp
index 888a57d..ff86642 100644
--- a/monitor/json_parser.cpp
+++ b/monitor/json_parser.cpp
@@ -331,10 +331,18 @@
             }
         }
 
+        // if the fan should be set to functional when plugged in
+        bool setFuncOnPresent = false;
+        if (fan.contains("set_func_on_present"))
+        {
+            setFuncOnPresent = fan["set_func_on_present"].get<bool>();
+        }
+
         fanDefs.emplace_back(std::tuple(
             fan["inventory"].get<std::string>(), method, funcDelay, timeout,
             deviation, nonfuncSensorsCount, monitorDelay, countInterval,
-            nonfuncRotorErrorDelay, fanMissingErrorDelay, sensorDefs, cond));
+            nonfuncRotorErrorDelay, fanMissingErrorDelay, sensorDefs, cond,
+            setFuncOnPresent));
     }
 
     return fanDefs;
diff --git a/monitor/types.hpp b/monitor/types.hpp
index 15b1f1a..faf3b66 100644
--- a/monitor/types.hpp
+++ b/monitor/types.hpp
@@ -124,11 +124,12 @@
 constexpr auto fanMissingErrDelayField = 9;
 constexpr auto sensorListField = 10;
 constexpr auto conditionField = 11;
+constexpr auto funcOnPresentField = 12;
 
 using FanDefinition =
     std::tuple<std::string, size_t, size_t, size_t, size_t, size_t, size_t,
                size_t, std::optional<size_t>, std::optional<size_t>,
-               std::vector<SensorDefinition>, std::optional<Condition>>;
+               std::vector<SensorDefinition>, std::optional<Condition>, bool>;
 
 constexpr auto presentHealthPos = 0;
 constexpr auto sensorFuncHealthPos = 1;
