diff --git a/redfish-core/lib/systems.hpp b/redfish-core/lib/systems.hpp
index 680a0ee..3e27241 100644
--- a/redfish-core/lib/systems.hpp
+++ b/redfish-core/lib/systems.hpp
@@ -2778,15 +2778,12 @@
                 std::optional<std::string> assetTag;
                 std::optional<std::string> powerRestorePolicy;
                 std::optional<std::string> powerMode;
-                std::optional<bool> trustedModuleRequiredToBoot;
                 if (!json_util::readJson(
                         req, asyncResp->res, "IndicatorLED", indicatorLed,
                         "LocationIndicatorActive", locationIndicatorActive,
                         "Boot", bootProps, "WatchdogTimer", wdtTimerProps,
                         "PowerRestorePolicy", powerRestorePolicy, "AssetTag",
-                        assetTag, "PowerMode", powerMode,
-                        "TrustedModuleRequiredToBoot",
-                        trustedModuleRequiredToBoot))
+                        assetTag, "PowerMode", powerMode))
                 {
                     return;
                 }
@@ -2818,13 +2815,16 @@
                     std::optional<std::string> bootType;
                     std::optional<std::string> bootEnable;
                     std::optional<std::string> automaticRetryConfig;
+                    std::optional<bool> trustedModuleRequiredToBoot;
 
                     if (!json_util::readJson(
                             *bootProps, asyncResp->res,
                             "BootSourceOverrideTarget", bootSource,
                             "BootSourceOverrideMode", bootType,
                             "BootSourceOverrideEnabled", bootEnable,
-                            "AutomaticRetryConfig", automaticRetryConfig))
+                            "AutomaticRetryConfig", automaticRetryConfig,
+                            "TrustedModuleRequiredToBoot",
+                            trustedModuleRequiredToBoot))
                     {
                         return;
                     }
@@ -2838,6 +2838,12 @@
                     {
                         setAutomaticRetry(asyncResp, *automaticRetryConfig);
                     }
+
+                    if (trustedModuleRequiredToBoot)
+                    {
+                        setTrustedModuleRequiredToBoot(
+                            asyncResp, *trustedModuleRequiredToBoot);
+                    }
                 }
 
                 if (locationIndicatorActive)
@@ -2866,12 +2872,6 @@
                 {
                     setPowerMode(asyncResp, *powerMode);
                 }
-
-                if (trustedModuleRequiredToBoot)
-                {
-                    setTrustedModuleRequiredToBoot(
-                        asyncResp, *trustedModuleRequiredToBoot);
-                }
             });
 }
 
