diff --git a/bmc-vmi-ca/ca_certs_manager.hpp b/bmc-vmi-ca/ca_certs_manager.hpp
index f99a750..72e1ba4 100644
--- a/bmc-vmi-ca/ca_certs_manager.hpp
+++ b/bmc-vmi-ca/ca_certs_manager.hpp
@@ -6,7 +6,6 @@
 
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/server/object.hpp>
-#include <sdeventplus/source/event.hpp>
 
 namespace ca::cert
 {
diff --git a/bmc-vmi-ca/mainapp.cpp b/bmc-vmi-ca/mainapp.cpp
index 062a60d..fc1c7af 100644
--- a/bmc-vmi-ca/mainapp.cpp
+++ b/bmc-vmi-ca/mainapp.cpp
@@ -2,7 +2,7 @@
 
 #include "ca_certs_manager.hpp"
 
-#include <sdeventplus/event.hpp>
+#include <sdbusplus/server/manager.hpp>
 #include <string>
 
 int main()
@@ -13,16 +13,10 @@
     // Add sdbusplus ObjectManager
     sdbusplus::server::manager_t objManager(bus, objPath);
 
-    // Get default event loop
-    auto event = sdeventplus::Event::get_default();
-
-    // Attach the bus to sd_event to service user requests
-    bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL);
-
     ca::cert::CACertMgr manager(bus, objPath);
 
     std::string busName = "xyz.openbmc_project.Certs.ca.authority.Manager";
     bus.request_name(busName.c_str());
-    event.loop();
+    bus.process_loop();
     return 0;
 }
diff --git a/bmc-vmi-ca/meson.build b/bmc-vmi-ca/meson.build
index 93fb90a..bf69205 100644
--- a/bmc-vmi-ca/meson.build
+++ b/bmc-vmi-ca/meson.build
@@ -2,7 +2,6 @@
     phosphor_dbus_interfaces_dep,
     phosphor_logging_dep,
     sdbusplus_dep,
-    sdeventplus_dep,
 ]
 
 bmc_vmi_ca_lib = static_library(
diff --git a/test/ca_certs_manager_test.cpp b/test/ca_certs_manager_test.cpp
index 3b4e9c5..9043aa3 100644
--- a/test/ca_certs_manager_test.cpp
+++ b/test/ca_certs_manager_test.cpp
@@ -3,7 +3,6 @@
 #include "bmc-vmi-ca/ca_certs_manager.hpp"
 
 #include <iterator>
-#include <sdeventplus/event.hpp>
 #include <string>
 #include <xyz/openbmc_project/Certs/error.hpp>
 #include <xyz/openbmc_project/Common/error.hpp>
@@ -64,8 +63,6 @@
 {
     auto bus = sdbusplus::bus::new_default();
     std::string objPath = "/xyz/openbmc_project/certs/ca";
-    auto event = sdeventplus::Event::get_default();
-    bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL);
     MockCACertMgr manager(bus, objPath.c_str());
 
     std::string csrString = "csr string";
@@ -77,8 +74,6 @@
 {
     auto bus = sdbusplus::bus::new_default();
     std::string objPath = "/xyz/openbmc_project/certs/ca";
-    auto event = sdeventplus::Event::get_default();
-    bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL);
     MockCACertMgr manager(bus, objPath.c_str());
 
     std::string csrString(4097, 'C');
@@ -89,9 +84,7 @@
 {
     auto bus = sdbusplus::bus::new_default();
     std::string objPath = "/xyz/openbmc_project/certs/ca";
-    auto event = sdeventplus::Event::get_default();
 
-    bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL);
     MockCACertMgr manager(bus, objPath.c_str());
 
     std::string csrString = "csr string";
@@ -108,8 +101,6 @@
 
     auto bus = sdbusplus::bus::new_default();
     std::string objPath = "/xyz/openbmc_project/certs/ca";
-    auto event = sdeventplus::Event::get_default();
-    bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL);
     MockCACertMgr manager(bus, objPath.c_str());
 
     std::string csrString = "csr string";
