diff --git a/redfish-core/lib/managers.hpp b/redfish-core/lib/managers.hpp
index 01ec4e5..2db8f86 100644
--- a/redfish-core/lib/managers.hpp
+++ b/redfish-core/lib/managers.hpp
@@ -929,10 +929,6 @@
                 "PositiveHysteresis", doubles["PositiveHysteresis"],
                 "NegativeHysteresis", doubles["NegativeHysteresis"]))
         {
-            BMCWEB_LOG_ERROR
-                << "Illegal Property "
-                << it.value().dump(2, ' ', true,
-                                   nlohmann::json::error_handler_t::replace);
             return CreatePIDRet::fail;
         }
         if (zones)
@@ -1026,10 +1022,6 @@
                                           failSafePercent, "MinThermalOutput",
                                           minThermalOutput))
         {
-            BMCWEB_LOG_ERROR
-                << "Illegal Property "
-                << it.value().dump(2, ' ', true,
-                                   nlohmann::json::error_handler_t::replace);
             return CreatePIDRet::fail;
         }
 
@@ -1040,11 +1032,6 @@
             if (!redfish::json_util::readJson(*chassisContainer, response->res,
                                               "@odata.id", chassisId))
             {
-                BMCWEB_LOG_ERROR
-                    << "Illegal Property "
-                    << chassisContainer->dump(
-                           2, ' ', true,
-                           nlohmann::json::error_handler_t::replace);
                 return CreatePIDRet::fail;
             }
 
@@ -1083,10 +1070,6 @@
                 "NegativeHysteresis", negativeHysteresis, "Direction",
                 direction))
         {
-            BMCWEB_LOG_ERROR
-                << "Illegal Property "
-                << it.value().dump(2, ' ', true,
-                                   nlohmann::json::error_handler_t::replace);
             return CreatePIDRet::fail;
         }
 
@@ -1121,11 +1104,6 @@
                 if (!redfish::json_util::readJson(step, response->res, "Target",
                                                   target, "Output", out))
                 {
-                    BMCWEB_LOG_ERROR
-                        << "Illegal Property "
-                        << it.value().dump(
-                               2, ' ', true,
-                               nlohmann::json::error_handler_t::replace);
                     return CreatePIDRet::fail;
                 }
                 readings.emplace_back(target);
@@ -1366,10 +1344,6 @@
                 "FanControllers", fanControllers, "FanZones", fanZones,
                 "StepwiseControllers", stepwiseControllers, "Profile", profile))
         {
-            BMCWEB_LOG_ERROR
-                << "Illegal Property "
-                << data.dump(2, ' ', true,
-                             nlohmann::json::error_handler_t::replace);
             return;
         }
         configuration.emplace_back("PidControllers", std::move(pidControllers));
@@ -2227,10 +2201,6 @@
             if (!redfish::json_util::readJson(*oem, asyncResp->res, "OpenBmc",
                                               openbmc))
             {
-                BMCWEB_LOG_ERROR
-                    << "Illegal Property "
-                    << oem->dump(2, ' ', true,
-                                 nlohmann::json::error_handler_t::replace);
                 return;
             }
             if (openbmc)
@@ -2239,11 +2209,6 @@
                 if (!redfish::json_util::readJson(*openbmc, asyncResp->res,
                                                   "Fan", fan))
                 {
-                    BMCWEB_LOG_ERROR
-                        << "Illegal Property "
-                        << openbmc->dump(
-                               2, ' ', true,
-                               nlohmann::json::error_handler_t::replace);
                     return;
                 }
                 if (fan)
