diff --git a/extensions/openpower-pels/data_interface.cpp b/extensions/openpower-pels/data_interface.cpp
index 89b1f54..0365b8b 100644
--- a/extensions/openpower-pels/data_interface.cpp
+++ b/extensions/openpower-pels/data_interface.cpp
@@ -79,6 +79,7 @@
 constexpr auto operationalStatus =
     "xyz.openbmc_project.State.Decorator.OperationalStatus";
 constexpr auto logSetting = "xyz.openbmc_project.Logging.Settings";
+constexpr auto association = "xyz.openbmc_project.Association.Definitions";
 } // namespace interface
 
 using namespace sdbusplus::xyz::openbmc_project::State::Boot::server;
@@ -528,6 +529,39 @@
     _bus.call(method);
 }
 
+using AssociationTuple = std::tuple<std::string, std::string, std::string>;
+using AssociationsProperty = std::vector<AssociationTuple>;
+
+void DataInterface::setCriticalAssociation(const std::string& objectPath) const
+{
+    DBusValue getAssociationValue;
+
+    auto service = getService(objectPath, interface::association);
+
+    getProperty(service, objectPath, interface::association, "Associations",
+                getAssociationValue);
+
+    auto association = std::get<AssociationsProperty>(getAssociationValue);
+
+    AssociationTuple critAssociation{
+        "health_rollup", "critical",
+        "/xyz/openbmc_project/inventory/system/chassis"};
+
+    if (std::find(association.begin(), association.end(), critAssociation) ==
+        association.end())
+    {
+        association.push_back(critAssociation);
+        DBusValue setAssociationValue = association;
+
+        auto method = _bus.new_method_call(service.c_str(), objectPath.c_str(),
+                                           interface::dbusProperty, "Set");
+
+        method.append(interface::association, "Associations",
+                      setAssociationValue);
+        _bus.call(method);
+    }
+}
+
 std::vector<std::string> DataInterface::getSystemNames() const
 {
     DBusSubTree subtree;
diff --git a/extensions/openpower-pels/data_interface.hpp b/extensions/openpower-pels/data_interface.hpp
index 7a203ae..89b09ed 100644
--- a/extensions/openpower-pels/data_interface.hpp
+++ b/extensions/openpower-pels/data_interface.hpp
@@ -296,6 +296,14 @@
                                bool functional) const = 0;
 
     /**
+     * @brief Sets the critical association on the D-Bus object.
+     *
+     * @param[in] objectPath - The D-Bus object path
+     */
+    virtual void
+        setCriticalAssociation(const std::string& objectPath) const = 0;
+
+    /**
      * @brief Returns the manufacturing QuiesceOnError property
      *
      * @return bool - Manufacturing QuiesceOnError property
@@ -579,6 +587,13 @@
                        bool functional) const override;
 
     /**
+     * @brief Sets the critical association on the D-Bus object.
+     *
+     * @param[in] objectPath - The D-Bus object path
+     */
+    void setCriticalAssociation(const std::string& objectPath) const override;
+
+    /**
      * @brief Returns the manufacturing QuiesceOnError property
      *
      * @return bool - Manufacturing QuiesceOnError property
diff --git a/extensions/openpower-pels/dbus_types.hpp b/extensions/openpower-pels/dbus_types.hpp
index 9532177..edb5637 100644
--- a/extensions/openpower-pels/dbus_types.hpp
+++ b/extensions/openpower-pels/dbus_types.hpp
@@ -9,8 +9,9 @@
 namespace openpower::pels
 {
 
-using DBusValue = std::variant<std::string, bool, std::vector<uint8_t>,
-                               std::vector<std::string>>;
+using DBusValue = std::variant<
+    std::string, bool, std::vector<uint8_t>, std::vector<std::string>,
+    std::vector<std::tuple<std::string, std::string, std::string>>>;
 using DBusProperty = std::string;
 using DBusInterface = std::string;
 using DBusService = std::string;
diff --git a/extensions/openpower-pels/service_indicators.cpp b/extensions/openpower-pels/service_indicators.cpp
index 1c9eff0..fca9f27 100644
--- a/extensions/openpower-pels/service_indicators.cpp
+++ b/extensions/openpower-pels/service_indicators.cpp
@@ -80,6 +80,7 @@
             if (!paths.empty())
             {
                 setNotFunctional(paths);
+                createCriticalAssociation(paths);
                 sai = false;
             }
         }
@@ -242,4 +243,24 @@
     }
 }
 
+void LightPath::createCriticalAssociation(
+    const std::vector<std::string>& inventoryPaths) const
+{
+    for (const auto& path : inventoryPaths)
+    {
+        try
+        {
+            _dataIface.setCriticalAssociation(path);
+        }
+        catch (const std::exception& e)
+        {
+            log<level::INFO>(
+                fmt::format(
+                    "Could not set critical association on object path {} ({})",
+                    path, e.what())
+                    .c_str());
+        }
+    }
+}
+
 } // namespace openpower::pels::service_indicators
diff --git a/extensions/openpower-pels/service_indicators.hpp b/extensions/openpower-pels/service_indicators.hpp
index 85adf2b..1cb61a9 100644
--- a/extensions/openpower-pels/service_indicators.hpp
+++ b/extensions/openpower-pels/service_indicators.hpp
@@ -145,6 +145,15 @@
     void setNotFunctional(const std::vector<std::string>& inventoryPaths) const;
 
     /**
+     * @brief Sets the critical association on the passed in
+     *        inventory paths.
+     *
+     * @param[in] inventoryPaths - The inventory D-Bus paths
+     */
+    void createCriticalAssociation(
+        const std::vector<std::string>& inventoryPaths) const;
+
+    /**
      * @brief Checks if the callout priority is one that the policy
      *        may turn on an LED for.
      *
