diff --git a/meson.build b/meson.build
index 7a2bf69..cc9f824 100644
--- a/meson.build
+++ b/meson.build
@@ -434,6 +434,7 @@
     'test/include/ossl_random.cpp',
     'test/include/ssl_key_handler_test.cpp',
     'test/include/str_utility_test.cpp',
+    'test/redfish-core/include/dbus_log_watcher_test.cpp',
     'test/redfish-core/include/event_log_test.cpp',
     'test/redfish-core/include/event_matches_filter_test.cpp',
     'test/redfish-core/include/filter_expr_executor_test.cpp',
diff --git a/redfish-core/include/dbus_log_watcher.hpp b/redfish-core/include/dbus_log_watcher.hpp
index 233b9be..6c0f2e0 100644
--- a/redfish-core/include/dbus_log_watcher.hpp
+++ b/redfish-core/include/dbus_log_watcher.hpp
@@ -1,5 +1,8 @@
 #pragma once
 
+#include "dbus_utility.hpp"
+#include "event_logs_object_type.hpp"
+
 #include <sdbusplus/bus/match.hpp>
 namespace redfish
 {
@@ -8,6 +11,10 @@
   public:
     DbusEventLogMonitor();
     sdbusplus::bus::match_t dbusEventLogMonitor;
+
+    static bool
+        eventLogObjectFromDBus(const dbus::utility::DBusPropertiesMap& map,
+                               EventLogObjectsType& event);
 };
 
 class DbusTelemetryMonitor
diff --git a/redfish-core/src/dbus_log_watcher.cpp b/redfish-core/src/dbus_log_watcher.cpp
index a371f87..c6ca381 100644
--- a/redfish-core/src/dbus_log_watcher.cpp
+++ b/redfish-core/src/dbus_log_watcher.cpp
@@ -22,8 +22,8 @@
 namespace redfish
 {
 
-static bool eventLogObjectFromDBus(const dbus::utility::DBusPropertiesMap& map,
-                                   EventLogObjectsType& event)
+bool DbusEventLogMonitor::eventLogObjectFromDBus(
+    const dbus::utility::DBusPropertiesMap& map, EventLogObjectsType& event)
 {
     std::optional<DbusEventLogEntry> optEntry =
         fillDbusEventLogEntryFromPropertyMap(map);
@@ -60,7 +60,7 @@
 {
     std::vector<EventLogObjectsType> eventRecords;
     EventLogObjectsType& event = eventRecords.emplace_back();
-    bool success = eventLogObjectFromDBus(map, event);
+    bool success = DbusEventLogMonitor::eventLogObjectFromDBus(map, event);
     if (!success)
     {
         BMCWEB_LOG_ERROR("Could not parse event log entry from dbus");
diff --git a/test/redfish-core/include/dbus_log_watcher_test.cpp b/test/redfish-core/include/dbus_log_watcher_test.cpp
new file mode 100644
index 0000000..c2a33df
--- /dev/null
+++ b/test/redfish-core/include/dbus_log_watcher_test.cpp
@@ -0,0 +1,76 @@
+#include "dbus_log_watcher.hpp"
+#include "dbus_utility.hpp"
+#include "event_logs_object_type.hpp"
+
+#include <cstdint>
+#include <string>
+#include <vector>
+
+#include <gtest/gtest.h>
+
+namespace redfish
+{
+
+using namespace dbus::utility;
+
+TEST(DBusLogWatcher, EventLogObjectFromDBusSuccess)
+{
+    const DBusPropertiesMap propMapStub = {
+        {"AdditionalData",
+         DbusVariantType(std::vector<std::string>{"KEY=VALUE"})},
+        {"EventId", DbusVariantType("")},
+        {"Id", DbusVariantType(static_cast<uint32_t>(1838))},
+
+        // use 'Message' for MessageId as per the design
+        // https://github.com/openbmc/docs/blob/d886ce89fe66c128b3ab492e530ad48fa0c1b4eb/designs/event-logging.md?plain=1#L448
+        {"Message", DbusVariantType("OpenBMC.0.1.PowerButtonPressed")},
+        {"Resolution", DbusVariantType("")},
+        {"Resolved", DbusVariantType(true)},
+        {"ServiceProviderNotify", DbusVariantType("")},
+        {"Severity", DbusVariantType("")},
+        {"Timestamp", DbusVariantType(static_cast<uint64_t>(1638312095123))},
+        {"UpdateTimestamp", DbusVariantType(static_cast<uint64_t>(3899))},
+    };
+
+    EventLogObjectsType event;
+
+    const bool status =
+        DbusEventLogMonitor::eventLogObjectFromDBus(propMapStub, event);
+
+    EXPECT_TRUE(status);
+
+    EXPECT_EQ(event.id, "1838");
+
+    EXPECT_EQ(event.timestamp, "2021-11-30T22:41:35.123+00:00");
+
+    EXPECT_EQ(event.messageId, "OpenBMC.0.1.PowerButtonPressed");
+
+    // dbus event subscriptions currently do not support message args
+    EXPECT_TRUE(event.messageArgs.empty());
+}
+
+TEST(DBusLogWatcher, EventLogObjectFromDBusFailMissingProperty)
+{
+    // missing 'Resolved'
+    const DBusPropertiesMap propMapWrong = {
+        {"AdditionalData",
+         DbusVariantType(std::vector<std::string>{"KEY=VALUE"})},
+        {"EventId", DbusVariantType("")},
+        {"Id", DbusVariantType(static_cast<uint32_t>(1838))},
+        {"Message", DbusVariantType("")},
+        {"Resolution", DbusVariantType("")},
+        {"ServiceProviderNotify", DbusVariantType("")},
+        {"Severity", DbusVariantType("")},
+        {"Timestamp", DbusVariantType(static_cast<uint64_t>(3832))},
+        {"UpdateTimestamp", DbusVariantType(static_cast<uint64_t>(3899))},
+    };
+
+    EventLogObjectsType event;
+
+    const bool status =
+        DbusEventLogMonitor::eventLogObjectFromDBus(propMapWrong, event);
+
+    EXPECT_FALSE(status);
+}
+
+} // namespace redfish
