diff --git a/src/crow_test.cpp b/src/crow_test.cpp
index 96b90b0..beefdee 100644
--- a/src/crow_test.cpp
+++ b/src/crow_test.cpp
@@ -398,7 +398,7 @@
     Server<SimpleApp> server(&app, LOCALHOST_ADDRESS, 45451);
     auto _ = async(launch::async, [&] { server.run(); });
     std::string sendmsg = "POX";
-    asio::io_service is;
+    asio::io_context is;
     {
         asio::ip::tcp::socket c(is);
         c.connect(asio::ip::tcp::endpoint(
@@ -436,7 +436,7 @@
 
     std::string sendmsg =
         "POST /\r\nContent-Length:3\r\nX-HeaderTest: 123\r\n\r\nA=b\r\n";
-    asio::io_service is;
+    asio::io_context is;
     {
         asio::ip::tcp::socket c(is);
         c.connect(asio::ip::tcp::endpoint(
@@ -645,7 +645,7 @@
     decltype(app)::server_t server(&app, LOCALHOST_ADDRESS, 45451);
     auto _ = async(launch::async, [&] { server.run(); });
     std::string sendmsg = "GET /\r\n\r\n";
-    asio::io_service is;
+    asio::io_context is;
     {
         asio::ip::tcp::socket c(is);
         c.connect(asio::ip::tcp::endpoint(
@@ -701,7 +701,7 @@
     decltype(app)::server_t server(&app, LOCALHOST_ADDRESS, 45451);
     auto _ = async(launch::async, [&] { server.run(); });
     std::string sendmsg = "GET / HTTP/1.1\r\nHost: localhost\r\n\r\n";
-    asio::io_service is;
+    asio::io_context is;
     {
         std::vector<std::future<void>> v;
         for (int i = 0; i < 5; i++)
@@ -744,7 +744,7 @@
 
     decltype(app)::server_t server(&app, LOCALHOST_ADDRESS, 45451);
     auto _ = async(launch::async, [&] { server.run(); });
-    asio::io_service is;
+    asio::io_context is;
     std::string sendmsg;
 
     // check empty params
diff --git a/src/kvm_websocket_test.cpp b/src/kvm_websocket_test.cpp
index 1ddaad9..40470a9 100644
--- a/src/kvm_websocket_test.cpp
+++ b/src/kvm_websocket_test.cpp
@@ -24,7 +24,7 @@
     BMCWEB_ROUTE(app, "/")([]() { return boost::beast::http::status::ok; });
     auto _ = async(std::launch::async, [&] { app.run(); });
     auto routes = app.getRoutes();
-    asio::io_service is;
+    asio::io_context is;
 
     {
         // Retry a couple of times waiting for the server to come up
diff --git a/src/security_headers_middleware_test.cpp b/src/security_headers_middleware_test.cpp
index 2af15c6..4fa3003 100644
--- a/src/security_headers_middleware_test.cpp
+++ b/src/security_headers_middleware_test.cpp
@@ -16,7 +16,7 @@
     BMCWEB_ROUTE(app, "/")([]() { return boost::beast::http::status::ok; });
     auto _ = async(launch::async, [&] { app.run(); });
 
-    asio::io_service is;
+    asio::io_context is;
     std::array<char, 2048> buf;
     std::string sendmsg;
 
diff --git a/src/token_authorization_middleware_test.cpp b/src/token_authorization_middleware_test.cpp
index 812a6d1..8f4c5c8 100644
--- a/src/token_authorization_middleware_test.cpp
+++ b/src/token_authorization_middleware_test.cpp
@@ -15,14 +15,14 @@
   public:
     TokenAuth() :
         lk(std::unique_lock<std::mutex>(m)),
-        io(std::make_shared<boost::asio::io_service>())
+        io(std::make_shared<boost::asio::io_context>())
     {
     }
 
     std::mutex m;
     std::condition_variable cv;
     std::unique_lock<std::mutex> lk;
-    std::shared_ptr<boost::asio::io_service> io;
+    std::shared_ptr<boost::asio::io_context> io;
     int testPort = 45451;
 };
 
@@ -38,7 +38,7 @@
         io->run();
     });
 
-    asio::io_service is;
+    asio::io_context is;
     std::string sendmsg;
 
     static char buf[2048];
@@ -80,7 +80,7 @@
     BMCWEB_ROUTE(app, "/")([]() { return boost::beast::http::status::ok; });
     auto _ = async(std::launch::async, [&] { app.run(); });
 
-    asio::io_service is;
+    asio::io_context is;
     static char buf[2048];
 
     // Other resources should not be passed
@@ -116,7 +116,7 @@
     BMCWEB_ROUTE(app, "/")([]() { return boost::beast::http::status::ok; });
     auto _ = async(std::launch::async, [&] { app.run(); });
 
-    asio::io_service is;
+    asio::io_context is;
     static char buf[2048];
 
     // Other resources should not be passed
@@ -152,7 +152,7 @@
     BMCWEB_ROUTE(app, "/")([]() { return boost::beast::http::status::ok; });
     auto _ = async(std::launch::async, [&] { app.run(); });
 
-    asio::io_service is;
+    asio::io_context is;
     std::array<char, 2048> buf;
     std::string sendmsg;
 
@@ -244,7 +244,7 @@
     BMCWEB_ROUTE(app, "/")([]() { return boost::beast::http::status::ok; });
     auto _ = async(std::launch::async, [&] { app.run(); });
 
-    asio::io_service is;
+    asio::io_context is;
     std::array<char, 2048> buf;
     std::string sendmsg;
 
diff --git a/src/webassets_test.cpp b/src/webassets_test.cpp
index a3106f2..3df7542 100644
--- a/src/webassets_test.cpp
+++ b/src/webassets_test.cpp
@@ -25,7 +25,7 @@
     // get the homepage
     std::string sendmsg = "GET /\r\n\r\n";
 
-    asio::io_service is;
+    asio::io_context is;
 
     asio::ip::tcp::socket c(is);
     c.connect(asio::ip::tcp::endpoint(
@@ -100,7 +100,7 @@
     // get the homepage
     std::string sendmsg = "GET /\r\n\r\n";
 
-    asio::io_service is;
+    asio::io_context is;
 
     asio::ip::tcp::socket c(is);
     c.connect(asio::ip::tcp::endpoint(
diff --git a/src/webserver_main.cpp b/src/webserver_main.cpp
index b4d36ef..7c64f4c 100644
--- a/src/webserver_main.cpp
+++ b/src/webserver_main.cpp
@@ -1,7 +1,7 @@
 #include <crow/app.h>
 #include <systemd/sd-daemon.h>
 
-#include <boost/asio/io_service.hpp>
+#include <boost/asio/io_context.hpp>
 #include <dbus_monitor.hpp>
 #include <dbus_singleton.hpp>
 #include <image_upload.hpp>
@@ -57,7 +57,7 @@
 {
     crow::logger::setLogLevel(crow::LogLevel::DEBUG);
 
-    auto io = std::make_shared<boost::asio::io_service>();
+    auto io = std::make_shared<boost::asio::io_context>();
     CrowApp app(io);
 
 #ifdef BMCWEB_ENABLE_SSL
