diff --git a/occ_dbus.cpp b/occ_dbus.cpp
index e018246..f68aa2a 100644
--- a/occ_dbus.cpp
+++ b/occ_dbus.cpp
@@ -242,6 +242,38 @@
     dvfsTemps[path]->value(value);
 }
 
+bool OccDBusSensors::setPurpose(const std::string& path,
+                                const std::string& value)
+{
+    if (path.empty())
+    {
+        return false;
+    }
+
+    if (!purposes.contains(path))
+    {
+        purposes.emplace(
+            path, std::make_unique<PurposeIntf>(utils::getBus(), path.c_str()));
+        try
+        {
+            std::set<sdbusplus::common::xyz::openbmc_project::sensor::Purpose::
+                         SensorPurpose>
+                pSet{sdbusplus::common::xyz::openbmc_project::sensor::Purpose::
+                         convertSensorPurposeFromString(value)};
+            purposes.at(path)->purpose(pSet);
+        }
+        catch (const std::exception& e)
+        {
+            lg2::error(
+                "set SensorPurpose propety failed for {PATH}: error={ERR}",
+                "PATH", path, "ERR", e.what());
+            return false;
+        }
+    }
+
+    return true;
+}
+
 } // namespace dbus
 } // namespace occ
 } // namespace open_power
diff --git a/occ_dbus.hpp b/occ_dbus.hpp
index 595cf5f..1446a45 100644
--- a/occ_dbus.hpp
+++ b/occ_dbus.hpp
@@ -1,6 +1,7 @@
 #pragma once
 
 #include <xyz/openbmc_project/Association/Definitions/server.hpp>
+#include <xyz/openbmc_project/Sensor/Purpose/server.hpp>
 #include <xyz/openbmc_project/Sensor/Value/server.hpp>
 #include <xyz/openbmc_project/State/Decorator/OperationalStatus/server.hpp>
 
@@ -18,6 +19,8 @@
 using OperationalStatusIntf =
     sdbusplus::server::object_t<sdbusplus::xyz::openbmc_project::State::
                                     Decorator::server::OperationalStatus>;
+using PurposeIntf = sdbusplus::server::object_t<
+    sdbusplus::xyz::openbmc_project::Sensor::server::Purpose>;
 
 // Note: Not using object<> so the PropertiesVariant ctor is available.
 using AssociationIntf =
@@ -159,8 +162,18 @@
      */
     bool hasDvfsTemp(const std::string& path) const;
 
+    /** @brief Set the purpose of the Sensor
+     *
+     *  @param[in] path  - The object path
+     *  @param[in] value - The value of the Purpose property
+     *
+     *  @return true or false
+     */
+    bool setPurpose(const std::string& path, const std::string& value);
+
   private:
     std::map<ObjectPath, std::unique_ptr<SensorIntf>> sensors;
+    std::map<ObjectPath, std::unique_ptr<PurposeIntf>> purposes;
 
     std::map<ObjectPath, std::unique_ptr<OperationalStatusIntf>>
         operationalStatus;
diff --git a/occ_manager.cpp b/occ_manager.cpp
index df8ff0c..6b0282c 100644
--- a/occ_manager.cpp
+++ b/occ_manager.cpp
@@ -1260,12 +1260,13 @@
 
         if (existingSensors.find(sensorPath) == existingSensors.end())
         {
-            std::vector<int> occs;
             std::vector<std::string> fTypeList = {"all_sensors"};
             if (iter->second == "total_power")
             {
-                // Total system power has its own chassis association
-                fTypeList.push_back("total_power");
+                // Set sensor purpose as TotalPower
+                dbus::OccDBusSensors::getOccDBus().setPurpose(
+                    sensorPath,
+                    "xyz.openbmc_project.Sensor.Purpose.SensorPurpose.TotalPower");
             }
             dbus::OccDBusSensors::getOccDBus().setChassisAssociation(
                 sensorPath, fTypeList);
