diff --git a/redfish-core/lib/managers.hpp b/redfish-core/lib/managers.hpp
index c3192e1..38e9165 100644
--- a/redfish-core/lib/managers.hpp
+++ b/redfish-core/lib/managers.hpp
@@ -36,6 +36,7 @@
 #include <sdbusplus/asio/property.hpp>
 #include <sdbusplus/unpack_properties.hpp>
 #include <utils/location_utils.hpp>
+#include "chassis.hpp"
 
 #include <algorithm>
 #include <array>
@@ -143,6 +144,16 @@
         doBMCForceRestart(asyncResp);
         return;
     }
+    if (resetType == "TrayPowerCycle")
+    {
+        BMCWEB_LOG_DEBUG << "Proceeding with " << resetType;
+        // We don't support delay powercycle for now. If S4 wants to use it in
+        // the future, we will add it.
+        std::optional<int> delayTimeSecs = std::nullopt;
+        doChassisPowerCycle(asyncResp, delayTimeSecs);
+        return;
+    }
+
     BMCWEB_LOG_DEBUG << "Invalid property value for ResetType: " << resetType;
     messages::actionParameterNotSupported(asyncResp->res, resetType,
                                           "ResetType");
@@ -261,6 +272,7 @@
     nlohmann::json::array_t allowableValues;
     allowableValues.emplace_back("GracefulRestart");
     allowableValues.emplace_back("ForceRestart");
+    allowableValues.emplace_back("TrayPowerCycle");
     parameter["AllowableValues"] = std::move(allowableValues);
 
     nlohmann::json::array_t parameters;
diff --git a/test/redfish-core/lib/manager_test.cpp b/test/redfish-core/lib/manager_test.cpp
index 162dbe7..ab1c4e1 100644
--- a/test/redfish-core/lib/manager_test.cpp
+++ b/test/redfish-core/lib/manager_test.cpp
@@ -160,5 +160,51 @@
         "n/a");
 }
 
+TEST_F(SnapshotFixture, PostManagerResetActionGood){
+// using expected call to mitigate the memory issue in valgrind
+// https://b.corp.google.com/issues/416295689
+// https://b.corp.google.com/issues/416608762
+    EXPECT_CALL(*managedStore::GetManagedObjectStore(),
+                PostDbusCallToIoContextThreadSafe(
+                    testing::_,
+                    testing::An<absl::AnyInvocable<void(const boost::system::error_code&)>&&>(),
+                    "xyz.openbmc_project.State.Chassis",
+                    testing::An<const std::string&>(),
+                    "org.freedesktop.DBus.Properties",
+                    "Set",
+                    "xyz.openbmc_project.State.Chassis",
+                    "RequestedPowerTransition",
+                    dbus::utility::DbusVariantType("xyz.openbmc_project.State.Chassis.Transition.PowerCycle")
+                ))
+        .WillOnce(
+            managedStore::SimulateSuccessfulAsyncPostDbusCallThreadSafeAction::
+            SimulateSuccessfulAsyncPostDbusCall());
+
+    handlePostManagerResetAction(app_, CreateRequest("{\"ResetType\":\"TrayPowerCycle\"} "), share_async_resp_);
+
+    RunIoUntilDone();
+
+    EXPECT_EQ(share_async_resp_->res.result(),boost::beast::http::status::ok);
+}
+
+TEST_F(SnapshotFixture, PostManagerResetActionBadResetType){
+    handlePostManagerResetAction(app_, CreateRequest("{\"ResetType\":\"Typo\"} "), share_async_resp_);
+
+    RunIoUntilDone();
+
+    EXPECT_EQ(share_async_resp_->res.result(),boost::beast::http::status::bad_request);
+}
+
+TEST_F(SnapshotFixture, handleManagerResetActionInfoAllowableValues){
+    handleManagerResetActionInfo(app_, CreateRequest(""), share_async_resp_);
+
+    RunIoUntilDone();
+
+    EXPECT_EQ(share_async_resp_->res.result(),boost::beast::http::status::ok);
+
+    auto allowable_values = share_async_resp_->res.jsonValue["Parameters"][0]["AllowableValues"];
+    EXPECT_THAT(allowable_values, testing::ElementsAre("GracefulRestart", "ForceRestart", "TrayPowerCycle"));
+}
+
 } // namespace
 } // namespace redfish
