diff --git a/redfish-core/lib/account_service.hpp b/redfish-core/lib/account_service.hpp
index c711983..b579994 100644
--- a/redfish-core/lib/account_service.hpp
+++ b/redfish-core/lib/account_service.hpp
@@ -64,7 +64,7 @@
     std::vector<std::pair<std::string, LDAPRoleMapData>> groupRoleList;
 };
 
-using DbusVariantType = sdbusplus::message::variant<bool, int32_t, std::string>;
+using DbusVariantType = std::variant<bool, int32_t, std::string>;
 
 using DbusInterfaceType = boost::container::flat_map<
     std::string, boost::container::flat_map<std::string, DbusVariantType>>;
@@ -1867,7 +1867,7 @@
                         "org.freedesktop.DBus.Properties", "Set",
                         "xyz.openbmc_project.User.Attributes",
                         "UserLockedForFailedAttempt",
-                        sdbusplus::message::variant<bool>{*locked});
+                        std::variant<bool>{*locked});
                 }
             });
     }
diff --git a/redfish-core/lib/ethernet.hpp b/redfish-core/lib/ethernet.hpp
index ae050ac..7915bd0 100644
--- a/redfish-core/lib/ethernet.hpp
+++ b/redfish-core/lib/ethernet.hpp
@@ -41,10 +41,10 @@
     std::vector<std::pair<
         std::string,
         boost::container::flat_map<
-            std::string, sdbusplus::message::variant<
-                             std::string, bool, uint8_t, int16_t, uint16_t,
-                             int32_t, uint32_t, int64_t, uint64_t, double,
-                             std::vector<std::string>>>>>>>;
+            std::string,
+            std::variant<std::string, bool, uint8_t, int16_t, uint16_t, int32_t,
+                         uint32_t, int64_t, uint64_t, double,
+                         std::vector<std::string>>>>>>>;
 
 enum class LinkType
 {
diff --git a/redfish-core/lib/log_services.hpp b/redfish-core/lib/log_services.hpp
index 77155e3..667fb40 100644
--- a/redfish-core/lib/log_services.hpp
+++ b/redfish-core/lib/log_services.hpp
@@ -96,9 +96,8 @@
 namespace fs = std::filesystem;
 
 using GetManagedPropertyType = boost::container::flat_map<
-    std::string,
-    sdbusplus::message::variant<std::string, bool, uint8_t, int16_t, uint16_t,
-                                int32_t, uint32_t, int64_t, uint64_t, double>>;
+    std::string, std::variant<std::string, bool, uint8_t, int16_t, uint16_t,
+                              int32_t, uint32_t, int64_t, uint64_t, double>>;
 
 using GetManagedObjectsType = boost::container::flat_map<
     sdbusplus::message::object_path,
diff --git a/redfish-core/lib/pcie.hpp b/redfish-core/lib/pcie.hpp
index 33b8828..f8a5e29 100644
--- a/redfish-core/lib/pcie.hpp
+++ b/redfish-core/lib/pcie.hpp
@@ -135,8 +135,8 @@
         auto getPCIeDeviceCallback =
             [asyncResp,
              device](const boost::system::error_code ec,
-                     boost::container::flat_map<
-                         std::string, sdbusplus::message::variant<std::string>>
+                     boost::container::flat_map<std::string,
+                                                std::variant<std::string>>
                          &pcieDevProperties) {
                 if (ec)
                 {
@@ -231,8 +231,8 @@
         auto getPCIeDeviceCallback =
             [asyncResp,
              device](const boost::system::error_code ec,
-                     boost::container::flat_map<
-                         std::string, sdbusplus::message::variant<std::string>>
+                     boost::container::flat_map<std::string,
+                                                std::variant<std::string>>
                          &pcieDevProperties) {
                 if (ec)
                 {
@@ -319,8 +319,7 @@
                                          const boost::system::error_code ec,
                                          boost::container::flat_map<
                                              std::string,
-                                             sdbusplus::message::variant<
-                                                 std::string>>
+                                             std::variant<std::string>>
                                              &pcieDevProperties) {
             if (ec)
             {
diff --git a/redfish-core/lib/power.hpp b/redfish-core/lib/power.hpp
index f11d7e8..a159ed6 100644
--- a/redfish-core/lib/power.hpp
+++ b/redfish-core/lib/power.hpp
@@ -131,7 +131,7 @@
                         "/xyz/openbmc_project/control/host0/power_cap",
                         "org.freedesktop.DBus.Properties", "Set",
                         "xyz.openbmc_project.Control.Power.Cap", "PowerCap",
-                        sdbusplus::message::variant<uint32_t>(*value));
+                        std::variant<uint32_t>(*value));
                 };
                 crow::connections::systemBus->async_method_call(
                     std::move(valueHandler), "xyz.openbmc_project.Settings",
diff --git a/redfish-core/lib/sensors.hpp b/redfish-core/lib/sensors.hpp
index 39a815a..b158c78 100644
--- a/redfish-core/lib/sensors.hpp
+++ b/redfish-core/lib/sensors.hpp
@@ -2712,8 +2712,7 @@
                         item.second, item.first,
                         "org.freedesktop.DBus.Properties", "Set",
                         "xyz.openbmc_project.Sensor.Value", "Value",
-                        sdbusplus::message::variant<double>(
-                            iterator->second.first));
+                        std::variant<double>(iterator->second.first));
                 }
             };
         // Get object with connection for the given sensor name
diff --git a/redfish-core/lib/systems.hpp b/redfish-core/lib/systems.hpp
index a4c4f5b..c17e135 100644
--- a/redfish-core/lib/systems.hpp
+++ b/redfish-core/lib/systems.hpp
@@ -893,7 +893,7 @@
 
     crow::connections::systemBus->async_method_call(
         [aResp](const boost::system::error_code ec,
-                const sdbusplus::message::variant<bool> &oneTime) {
+                const std::variant<bool> &oneTime) {
             if (ec)
             {
                 BMCWEB_LOG_DEBUG << "DBUS response error " << ec;
@@ -929,7 +929,7 @@
 
     crow::connections::systemBus->async_method_call(
         [aResp](const boost::system::error_code ec,
-                sdbusplus::message::variant<std::string> &policy) {
+                std::variant<std::string> &policy) {
             if (ec)
             {
                 BMCWEB_LOG_DEBUG << "DBUS response error " << ec;
@@ -1111,9 +1111,8 @@
 
     crow::connections::systemBus->async_method_call(
         [aResp, bootSource{std::move(bootSource)},
-         bootEnable{std::move(bootEnable)}](
-            const boost::system::error_code ec,
-            const sdbusplus::message::variant<bool> &oneTime) {
+         bootEnable{std::move(bootEnable)}](const boost::system::error_code ec,
+                                            const std::variant<bool> &oneTime) {
             if (ec)
             {
                 BMCWEB_LOG_DEBUG << "DBUS response error " << ec;
