diff --git a/callback-manager/src/callback_manager.cpp b/callback-manager/src/callback_manager.cpp
index 15e96b0..fbac190 100644
--- a/callback-manager/src/callback_manager.cpp
+++ b/callback-manager/src/callback_manager.cpp
@@ -99,7 +99,35 @@
                                              warningVector);
 
     StatusSetting last = currentPriority;
-
+    std::vector<std::pair<std::string, std::variant<bool>>> ledsToSet;
+    if (forceRefresh)
+    {
+        ledsToSet.push_back(std::make_pair(fatalLedPath, false));
+        ledsToSet.push_back(std::make_pair(criticalLedPath, false));
+        ledsToSet.push_back(std::make_pair(warningLedPath, false));
+        ledsToSet.push_back(std::make_pair(okLedPath, false));
+        for (const auto& ledPair : ledsToSet)
+        {
+            conn->async_method_call(
+                [ledPair](const boost::system::error_code ec) {
+                    if (ec)
+                    {
+                        std::cerr << "Cannot set " << ledPair.first << " to "
+                                  << std::boolalpha
+                                  << std::get<bool>(ledPair.second) << "\n";
+                    }
+                    if constexpr (debug)
+                    {
+                        std::cerr << "Set " << ledPair.first << " to "
+                                  << std::boolalpha
+                                  << std::get<bool>(ledPair.second) << "\n";
+                    }
+                },
+                ledManagerBusname, ledPair.first,
+                "org.freedesktop.DBus.Properties", "Set", ledIface,
+                ledAssertProp, ledPair.second);
+        }
+    }
     if (fatal)
     {
         currentPriority = StatusSetting::fatal;
@@ -117,8 +145,6 @@
         currentPriority = StatusSetting::ok;
     }
 
-    std::vector<std::pair<std::string, std::variant<bool>>> ledsToSet;
-
     if (last != currentPriority || forceRefresh)
     {
         switch (currentPriority)
