diff --git a/src/report.cpp b/src/report.cpp
index c2813c0..54189e3 100644
--- a/src/report.cpp
+++ b/src/report.cpp
@@ -161,7 +161,7 @@
                 enabled = newVal;
                 persistency = storeConfiguration();
             }
-            return true;
+            return 1;
         },
         [this](const auto&) { return enabled; });
     dbusIface->register_property_rw(
@@ -176,9 +176,11 @@
                     interval = newValT;
                     persistency = storeConfiguration();
                 }
-                return true;
+                return 1;
             }
-            return false;
+            throw sdbusplus::exception::SdBusError(
+                static_cast<int>(std::errc::invalid_argument),
+                "Invalid interval");
         },
         [this](const auto&) { return interval.count(); });
     dbusIface->register_property_rw(
@@ -186,7 +188,7 @@
         [this](bool newVal, const auto&) {
             if (newVal == persistency)
             {
-                return true;
+                return 1;
             }
             if (newVal)
             {
@@ -197,7 +199,7 @@
                 reportStorage.remove(fileName());
                 persistency = false;
             }
-            return true;
+            return 1;
         },
         [this](const auto&) { return persistency; });
 
@@ -251,7 +253,7 @@
             ReportManager::verifyReportUpdates(utils::toReportUpdates(newVal));
             setReportUpdates(utils::toReportUpdates(newVal));
             oldVal = newVal;
-            return true;
+            return 1;
         },
         [this](const auto&) { return utils::enumToString(reportUpdates); });
     dbusIface->register_method("Update", [this] {
diff --git a/src/trigger.cpp b/src/trigger.cpp
index 0b210ae..e84a389 100644
--- a/src/trigger.cpp
+++ b/src/trigger.cpp
@@ -50,7 +50,7 @@
                 [this](bool newVal, const auto&) {
                     if (newVal == persistent)
                     {
-                        return true;
+                        return 1;
                     }
                     if (newVal)
                     {
@@ -61,7 +61,7 @@
                         triggerStorage.remove(fileName);
                         persistent = false;
                     }
-                    return true;
+                    return 1;
                 },
                 [this](const auto&) { return persistent; });
 
@@ -97,7 +97,7 @@
                 sdbusplus::vtable::property_::emits_change,
                 [this](auto newVal, auto& oldVal) {
                     name = oldVal = newVal;
-                    return true;
+                    return 1;
                 },
                 [this](const auto&) { return name; });
 
diff --git a/subprojects/phosphor-logging.wrap b/subprojects/phosphor-logging.wrap
index ed29605..c15c63d 100644
--- a/subprojects/phosphor-logging.wrap
+++ b/subprojects/phosphor-logging.wrap
@@ -1,3 +1,3 @@
 [wrap-git]
 url = https://github.com/openbmc/phosphor-logging.git
-revision = 0a0b5ea558adeb109a3ac52e55ad720e188adb90
+revision = dd4bd482f1009576a7a074cc63c6a9ce6698876d
diff --git a/subprojects/sdbusplus.wrap b/subprojects/sdbusplus.wrap
index 17b56bd..f8da7b3 100644
--- a/subprojects/sdbusplus.wrap
+++ b/subprojects/sdbusplus.wrap
@@ -1,3 +1,3 @@
 [wrap-git]
 url = https://github.com/openbmc/sdbusplus.git
-revision = 0ade192c8f8f30128ccdd3daea5cfe41a1cec8e9
+revision = ce62764d6c0a72ec88eb433e1afd05b751225971
diff --git a/tests/src/test_report.cpp b/tests/src/test_report.cpp
index 1beb15f..dc08630 100644
--- a/tests/src/test_report.cpp
+++ b/tests/src/test_report.cpp
@@ -179,11 +179,13 @@
                 Eq(newValue));
 }
 
-TEST_F(TestReport, settingIntervalWithInvalidValueDoesNotChangeProperty)
+TEST_F(
+    TestReport,
+    settingIntervalWithInvalidValueDoesNotChangePropertyAndReturnsInvalidArgument)
 {
     uint64_t newValue = defaultParams.interval().count() - 1;
     EXPECT_THAT(setProperty(sut->getPath(), "Interval", newValue).value(),
-                Eq(boost::system::errc::success));
+                Eq(boost::system::errc::invalid_argument));
     EXPECT_THAT(getProperty<uint64_t>(sut->getPath(), "Interval"),
                 Eq(defaultParams.interval().count()));
 }
