diff --git a/include/error_monitors.hpp b/include/error_monitors.hpp
index 55b8790..80332b0 100644
--- a/include/error_monitors.hpp
+++ b/include/error_monitors.hpp
@@ -36,7 +36,7 @@
 }
 
 // Start the signal monitors
-bool startMonitors(boost::asio::io_service& io,
+bool startMonitors(boost::asio::io_context& io,
                    std::shared_ptr<sdbusplus::asio::connection> conn)
 {
     // smiMonitor =
diff --git a/include/error_monitors/base_gpio_monitor.hpp b/include/error_monitors/base_gpio_monitor.hpp
index 40bd1bc..63be49c 100644
--- a/include/error_monitors/base_gpio_monitor.hpp
+++ b/include/error_monitors/base_gpio_monitor.hpp
@@ -163,7 +163,7 @@
         waitForEvent();
     }
 
-    BaseGPIOMonitor(boost::asio::io_service& io,
+    BaseGPIOMonitor(boost::asio::io_context& io,
                     std::shared_ptr<sdbusplus::asio::connection> conn,
                     const std::string& signalName, AssertValue assertValue) :
         BaseMonitor(io, conn, signalName),
diff --git a/include/error_monitors/base_gpio_poll_monitor.hpp b/include/error_monitors/base_gpio_poll_monitor.hpp
index eee430f..3d79f18 100644
--- a/include/error_monitors/base_gpio_poll_monitor.hpp
+++ b/include/error_monitors/base_gpio_poll_monitor.hpp
@@ -221,7 +221,7 @@
     }
 
   public:
-    BaseGPIOPollMonitor(boost::asio::io_service& io,
+    BaseGPIOPollMonitor(boost::asio::io_context& io,
                         std::shared_ptr<sdbusplus::asio::connection> conn,
                         const std::string& signalName, AssertValue assertValue,
                         size_t pollingTimeMs, size_t timeoutMs) :
diff --git a/include/error_monitors/base_monitor.hpp b/include/error_monitors/base_monitor.hpp
index 1ddb76b..a752cdf 100644
--- a/include/error_monitors/base_monitor.hpp
+++ b/include/error_monitors/base_monitor.hpp
@@ -25,12 +25,12 @@
 {
   public:
     bool valid;
-    boost::asio::io_service& io;
+    boost::asio::io_context& io;
     std::shared_ptr<sdbusplus::asio::connection> conn;
 
     std::string signalName;
 
-    BaseMonitor(boost::asio::io_service& io,
+    BaseMonitor(boost::asio::io_context& io,
                 std::shared_ptr<sdbusplus::asio::connection> conn,
                 const std::string& signalName) :
         valid(false),
diff --git a/include/error_monitors/cpld_crc_monitor.hpp b/include/error_monitors/cpld_crc_monitor.hpp
index 4f93bbd..3732f8e 100644
--- a/include/error_monitors/cpld_crc_monitor.hpp
+++ b/include/error_monitors/cpld_crc_monitor.hpp
@@ -81,7 +81,7 @@
     }
 
     /** @brief Constructor to create a CPLD CRC signal monitor
-     *  @param[in] io - ASIO io_service
+     *  @param[in] io - ASIO io_context
      *  @param[in] conn - ASIO connection
      *  @param[in] signalName - GPIO name of the signal to monitor
      *  @param[in] cpuNum - CPU number associated with the signal
@@ -89,7 +89,7 @@
      *                               if the CPU is present
      */
   public:
-    CPLDCRCMonitor(boost::asio::io_service& io,
+    CPLDCRCMonitor(boost::asio::io_context& io,
                    std::shared_ptr<sdbusplus::asio::connection> conn,
                    const std::string& signalName, const size_t cpuNum,
                    const std::string& cpuPresenceName) :
diff --git a/include/error_monitors/cpu_early_error_monitor.hpp b/include/error_monitors/cpu_early_error_monitor.hpp
index ea5808a..5e048b2 100644
--- a/include/error_monitors/cpu_early_error_monitor.hpp
+++ b/include/error_monitors/cpu_early_error_monitor.hpp
@@ -40,7 +40,7 @@
     }
 
   public:
-    CPUEarlyErrorMonitor(boost::asio::io_service& io,
+    CPUEarlyErrorMonitor(boost::asio::io_context& io,
                          std::shared_ptr<sdbusplus::asio::connection> conn,
                          const std::string& signalName, const size_t cpuNum) :
         BaseGPIOMonitor(io, conn, signalName, assertValue),
diff --git a/include/error_monitors/cpu_mismatch_monitor.hpp b/include/error_monitors/cpu_mismatch_monitor.hpp
index 5a99da2..c378f75 100644
--- a/include/error_monitors/cpu_mismatch_monitor.hpp
+++ b/include/error_monitors/cpu_mismatch_monitor.hpp
@@ -90,7 +90,7 @@
     }
 
   public:
-    CPUMismatchMonitor(boost::asio::io_service& io,
+    CPUMismatchMonitor(boost::asio::io_context& io,
                        std::shared_ptr<sdbusplus::asio::connection> conn,
                        const std::string& signalName, const size_t cpuNum) :
         BaseMonitor(io, conn, signalName),
diff --git a/include/error_monitors/cpu_presence_monitor.hpp b/include/error_monitors/cpu_presence_monitor.hpp
index beaf92c..3625a88 100644
--- a/include/error_monitors/cpu_presence_monitor.hpp
+++ b/include/error_monitors/cpu_presence_monitor.hpp
@@ -87,7 +87,7 @@
     }
 
   public:
-    CPUPresenceMonitor(boost::asio::io_service& io,
+    CPUPresenceMonitor(boost::asio::io_context& io,
                        std::shared_ptr<sdbusplus::asio::connection> conn,
                        const std::string& signalName, const size_t cpuNum) :
         BaseMonitor(io, conn, signalName),
diff --git a/include/error_monitors/cpu_thermtrip_monitor.hpp b/include/error_monitors/cpu_thermtrip_monitor.hpp
index 02f11f4..f1b7758 100644
--- a/include/error_monitors/cpu_thermtrip_monitor.hpp
+++ b/include/error_monitors/cpu_thermtrip_monitor.hpp
@@ -51,7 +51,7 @@
     }
 
   public:
-    CPUThermtripMonitor(boost::asio::io_service& io,
+    CPUThermtripMonitor(boost::asio::io_context& io,
                         std::shared_ptr<sdbusplus::asio::connection> conn,
                         const std::string& signalName, const size_t cpuNum,
                         const std::string& customName = std::string()) :
diff --git a/include/error_monitors/err2_monitor.hpp b/include/error_monitors/err2_monitor.hpp
index 66315d8..9477fa6 100644
--- a/include/error_monitors/err2_monitor.hpp
+++ b/include/error_monitors/err2_monitor.hpp
@@ -62,7 +62,7 @@
     }
 
   public:
-    Err2Monitor(boost::asio::io_service& io,
+    Err2Monitor(boost::asio::io_context& io,
                 std::shared_ptr<sdbusplus::asio::connection> conn,
                 const std::string& signalName) :
         host_error_monitor::err_pin_timeout_monitor::ErrPinTimeoutMonitor(
diff --git a/include/error_monitors/err_pin_monitor.hpp b/include/error_monitors/err_pin_monitor.hpp
index c618342..04e3654 100644
--- a/include/error_monitors/err_pin_monitor.hpp
+++ b/include/error_monitors/err_pin_monitor.hpp
@@ -74,7 +74,7 @@
     }
 
   public:
-    ErrPinMonitor(boost::asio::io_service& io,
+    ErrPinMonitor(boost::asio::io_context& io,
                   std::shared_ptr<sdbusplus::asio::connection> conn,
                   const std::string& signalName, const size_t errPin) :
         BaseGPIOMonitor(io, conn, signalName, assertValue),
diff --git a/include/error_monitors/err_pin_timeout_monitor.hpp b/include/error_monitors/err_pin_timeout_monitor.hpp
index 772fefd..5afdb10 100644
--- a/include/error_monitors/err_pin_timeout_monitor.hpp
+++ b/include/error_monitors/err_pin_timeout_monitor.hpp
@@ -82,7 +82,7 @@
     }
 
   public:
-    ErrPinTimeoutMonitor(boost::asio::io_service& io,
+    ErrPinTimeoutMonitor(boost::asio::io_context& io,
                          std::shared_ptr<sdbusplus::asio::connection> conn,
                          const std::string& signalName, const size_t errPin) :
         BaseGPIOPollMonitor(io, conn, signalName, assertValue,
diff --git a/include/error_monitors/ierr_monitor.hpp b/include/error_monitors/ierr_monitor.hpp
index 374dbff..213eb2e 100644
--- a/include/error_monitors/ierr_monitor.hpp
+++ b/include/error_monitors/ierr_monitor.hpp
@@ -414,7 +414,7 @@
     }
 
   public:
-    IERRMonitor(boost::asio::io_service& io,
+    IERRMonitor(boost::asio::io_context& io,
                 std::shared_ptr<sdbusplus::asio::connection> conn,
                 const std::string& signalName,
                 const std::string& customName = std::string()) :
diff --git a/include/error_monitors/mcerr_monitor.hpp b/include/error_monitors/mcerr_monitor.hpp
index cbe954d..8a1f9e6 100644
--- a/include/error_monitors/mcerr_monitor.hpp
+++ b/include/error_monitors/mcerr_monitor.hpp
@@ -37,7 +37,7 @@
 
   public:
     MCERRMonitor(
-        boost::asio::io_service& io,
+        boost::asio::io_context& io,
         std::shared_ptr<sdbusplus::asio::connection> conn,
         const std::string& signalName,
         const host_error_monitor::base_gpio_monitor::AssertValue assertValue,
diff --git a/include/error_monitors/mem_thermtrip_monitor.hpp b/include/error_monitors/mem_thermtrip_monitor.hpp
index fea3e21..ee46463 100644
--- a/include/error_monitors/mem_thermtrip_monitor.hpp
+++ b/include/error_monitors/mem_thermtrip_monitor.hpp
@@ -47,7 +47,7 @@
     }
 
   public:
-    MemThermtripMonitor(boost::asio::io_service& io,
+    MemThermtripMonitor(boost::asio::io_context& io,
                         std::shared_ptr<sdbusplus::asio::connection> conn,
                         const std::string& signalName, const size_t cpuNum,
                         const std::string& customName = std::string()) :
diff --git a/include/error_monitors/memhot_monitor.hpp b/include/error_monitors/memhot_monitor.hpp
index 68c93b9..90beaaa 100644
--- a/include/error_monitors/memhot_monitor.hpp
+++ b/include/error_monitors/memhot_monitor.hpp
@@ -41,7 +41,7 @@
     }
 
   public:
-    MemhotMonitor(boost::asio::io_service& io,
+    MemhotMonitor(boost::asio::io_context& io,
                   std::shared_ptr<sdbusplus::asio::connection> conn,
                   const std::string& signalName, const size_t cpuNum) :
         BaseGPIOMonitor(io, conn, signalName, assertValue),
diff --git a/include/error_monitors/pch_thermtrip_monitor.hpp b/include/error_monitors/pch_thermtrip_monitor.hpp
index d439efe..a5b395d 100644
--- a/include/error_monitors/pch_thermtrip_monitor.hpp
+++ b/include/error_monitors/pch_thermtrip_monitor.hpp
@@ -75,7 +75,7 @@
     }
 
   public:
-    PCHThermtripMonitor(boost::asio::io_service& io,
+    PCHThermtripMonitor(boost::asio::io_context& io,
                         std::shared_ptr<sdbusplus::asio::connection> conn,
                         const std::string& signalName) :
         BaseGPIOMonitor(io, conn, signalName, assertValue)
diff --git a/include/error_monitors/smi_monitor.hpp b/include/error_monitors/smi_monitor.hpp
index f633b2e..921f95d 100644
--- a/include/error_monitors/smi_monitor.hpp
+++ b/include/error_monitors/smi_monitor.hpp
@@ -82,7 +82,7 @@
     }
 
   public:
-    SMIMonitor(boost::asio::io_service& io,
+    SMIMonitor(boost::asio::io_context& io,
                std::shared_ptr<sdbusplus::asio::connection> conn,
                const std::string& signalName) :
         BaseGPIOPollMonitor(io, conn, signalName, assertValue, smiPollingTimeMs,
diff --git a/include/error_monitors/vr_hot_monitor.hpp b/include/error_monitors/vr_hot_monitor.hpp
index 81c684d..fe8aa39 100644
--- a/include/error_monitors/vr_hot_monitor.hpp
+++ b/include/error_monitors/vr_hot_monitor.hpp
@@ -39,7 +39,7 @@
     }
 
   public:
-    VRHotMonitor(boost::asio::io_service& io,
+    VRHotMonitor(boost::asio::io_context& io,
                  std::shared_ptr<sdbusplus::asio::connection> conn,
                  const std::string& signalName, const std::string& vrName) :
         BaseGPIOMonitor(io, conn, signalName, assertValue),
diff --git a/src/host_error_monitor.cpp b/src/host_error_monitor.cpp
index 0f34535..a98a407 100644
--- a/src/host_error_monitor.cpp
+++ b/src/host_error_monitor.cpp
@@ -13,7 +13,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 */
-#include <boost/asio/io_service.hpp>
+#include <boost/asio/io_context.hpp>
 #include <boost/container/flat_map.hpp>
 #include <error_monitors.hpp>
 #include <host_error_monitor.hpp>
@@ -24,7 +24,7 @@
 
 namespace host_error_monitor
 {
-static boost::asio::io_service io;
+static boost::asio::io_context io;
 static std::shared_ptr<sdbusplus::asio::connection> conn;
 
 static bool hostOff = true;
