diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
index 6cb95c4..e6e694f 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
@@ -663,7 +663,7 @@
         }
     }
 
-    void loadOldBehavior()
+    static void loadOldBehavior()
     {
         std::ifstream eventConfigFile(eventServiceFile);
         if (!eventConfigFile.good())
@@ -1312,8 +1312,14 @@
     }
 
 #endif
-    void getReadingsForReport(sdbusplus::message::message& msg)
+    static void getReadingsForReport(sdbusplus::message::message& msg)
     {
+        if (msg.is_method_error())
+        {
+            BMCWEB_LOG_ERROR << "TelemetryMonitor Signal error";
+            return;
+        }
+
         sdbusplus::message::object_path path(msg.get_path());
         std::string id = path.filename();
         if (id.empty())
@@ -1380,16 +1386,7 @@
                                "arg0=xyz.openbmc_project.Telemetry.Report";
 
         matchTelemetryMonitor = std::make_shared<sdbusplus::bus::match::match>(
-            *crow::connections::systemBus, matchStr,
-            [this](sdbusplus::message::message& msg) {
-                if (msg.is_method_error())
-                {
-                    BMCWEB_LOG_ERROR << "TelemetryMonitor Signal error";
-                    return;
-                }
-
-                getReadingsForReport(msg);
-            });
+            *crow::connections::systemBus, matchStr, getReadingsForReport);
     }
 };
 
diff --git a/redfish-core/include/gzfile.hpp b/redfish-core/include/gzfile.hpp
index 567741d..696b13c 100644
--- a/redfish-core/include/gzfile.hpp
+++ b/redfish-core/include/gzfile.hpp
@@ -38,7 +38,7 @@
     std::string lastDelimiter;
     size_t totalFilesSize = 0;
 
-    void printErrorMessage(gzFile logStream)
+    static void printErrorMessage(gzFile logStream)
     {
         int errNum = 0;
         const char* errMsg = gzerror(logStream, &errNum);
diff --git a/redfish-core/lib/task.hpp b/redfish-core/lib/task.hpp
index b7795a7..4ebbc14 100644
--- a/redfish-core/lib/task.hpp
+++ b/redfish-core/lib/task.hpp
@@ -188,7 +188,7 @@
             });
     }
 
-    void sendTaskEvent(const std::string_view state, size_t index)
+    static void sendTaskEvent(const std::string_view state, size_t index)
     {
         std::string origin =
             "/redfish/v1/TaskService/Tasks/" + std::to_string(index);
