diff --git a/src/Services/EventActionService.cpp b/src/Services/EventActionService.cpp
index 6ac29c0531184da62bbd617f94189fb240995cf6..3f680a8bf5d2371c5d1f17d5fb2af59c052d0066 100644
--- a/src/Services/EventActionService.cpp
+++ b/src/Services/EventActionService.cpp
@@ -191,3 +191,36 @@ void EventActionService::executeAction(uint16_t eventID) {
 		}
 	}
 }
+
+void EventActionService::execute(const Message &message) {
+	switch (message.messageType) {
+		case 1:
+			addEventActionDefinitions(message); // TC[19,1]
+			break;
+		case 2:
+			deleteEventActionDefinitions(message); // TC[19,2]
+			break;
+		case 3:
+			deleteAllEventActionDefinitions(message); // TC[19,3]
+			break;
+		case 4:
+			enableEventActionDefinitions(message); // TC[19,4]
+			break;
+		case 5:
+			disableEventActionDefinitions(message); // TC[19,5]
+			break;
+		case 6:
+			requestEventActionDefinitionStatus(message); // TC[19,6]
+			break;
+		case 8:
+			enableEventActionFunction(message); // TC[19,8]
+			break;
+		case 9:
+			disableEventActionFunction(message); // TC[19,9]
+			break;
+		default:
+			ErrorHandler::reportInternalError(ErrorHandler::UnknownMessageType);
+			break;
+	}
+}
+
diff --git a/src/Services/EventReportService.cpp b/src/Services/EventReportService.cpp
index f537f32988fe319ffb79f46f5985656f09868241..d036ba0a81054e2f468a71afef0230270c76d404 100644
--- a/src/Services/EventReportService.cpp
+++ b/src/Services/EventReportService.cpp
@@ -130,3 +130,17 @@ void EventReportService::listOfDisabledEventsReport() {
 
 	storeMessage(report);
 }
+
+void EventReportService::execute(const Message &message) {
+	switch (message.messageType) {
+		case 5: enableReportGeneration(message); // TC[5,5]
+			break;
+		case 6: disableReportGeneration(message); // TC[5,6]
+			break;
+		case 7: requestListOfDisabledEvents(message); // TC[5,7]
+			break;
+		default:
+			ErrorHandler::reportInternalError(ErrorHandler::UnknownMessageType);
+			break;
+	}
+}
\ No newline at end of file
diff --git a/src/Services/FunctionManagementService.cpp b/src/Services/FunctionManagementService.cpp
index 8dcc602792b45199d17bf95e53330905ebcfaab0..47b1406f1d275f9d95c16af675bb95b6fbf96ff9 100644
--- a/src/Services/FunctionManagementService.cpp
+++ b/src/Services/FunctionManagementService.cpp
@@ -50,3 +50,14 @@ void FunctionManagementService::include(String<FUNC_NAME_LENGTH> funcName, void(
 		ErrorHandler::reportInternalError(ErrorHandler::InternalErrorType::FunctionMapFull);
 	}
 }
+
+void FunctionManagementService::execute(Message &message) {
+	switch (message.messageType) {
+		case 1:
+			call(message); // TC[8,1]
+			break;
+		default:
+			ErrorHandler::reportInternalError(ErrorHandler::UnknownMessageType);
+			break;
+	}
+}
diff --git a/src/Services/MemoryManagementService.cpp b/src/Services/MemoryManagementService.cpp
index c29c8fc1fc6a60efda6386a10d20c733d7ad78b2..6bbb7f7c8389a12f1477f56cee88f9424505f114 100644
--- a/src/Services/MemoryManagementService.cpp
+++ b/src/Services/MemoryManagementService.cpp
@@ -230,3 +230,20 @@ inline bool MemoryManagementService::dataValidator(const uint8_t *data, uint16_t
                                                    uint16_t length) {
 	return (checksum == CRCHelper::calculateCRC(data, length));
 }
+
+void MemoryManagementService::RawDataMemoryManagement::execute(Message &message) {
+	switch (message.messageType) {
+		case 2:
+			loadRawData(message); // TC[6,2]
+			break;
+		case 5:
+			dumpRawData(message); // TC[6,5]
+			break;
+		case 9:
+			checkRawData(message); // TC[6,9]
+			break;
+		default:
+			ErrorHandler::reportInternalError(ErrorHandler::UnknownMessageType);
+			break;
+	}
+}
diff --git a/src/Services/ParameterService.cpp b/src/Services/ParameterService.cpp
index b32fa5b589adf76d9910c7fd3ca1c3aa33803f38..b193d0754ec3468657564ab8a489130b9d5c4eca 100644
--- a/src/Services/ParameterService.cpp
+++ b/src/Services/ParameterService.cpp
@@ -119,3 +119,16 @@ uint16_t ParameterService::numOfValidIds(Message idMsg) {
 
 	return validIds;
 }
+
+void ParameterService::execute(Message  &message) {
+	switch (message.messageType) {
+		case 1:
+			reportParameterIds(message); // TC[20,1]
+			break;
+		case 3:
+			setParameterIds(message); // TC[20,3]
+		default:
+			ErrorHandler::reportInternalError(ErrorHandler::UnknownMessageType);
+			break;
+	}
+}
diff --git a/src/Services/RequestVerificationService.cpp b/src/Services/RequestVerificationService.cpp
index 465b1c5635ed2ac2164433cf282defa377e7b838..733dd0babd3dcceeda6e62a805ede5b2d68f3e0d 100644
--- a/src/Services/RequestVerificationService.cpp
+++ b/src/Services/RequestVerificationService.cpp
@@ -151,40 +151,3 @@ RequestVerificationService::failRoutingVerification(const Message &request,
 
 	storeMessage(report);
 }
-
-// TODO: This function should not be here. These are TM messages, but `execute` should accept a
-// TC message.
-void RequestVerificationService::execute(const Message &message) {
-	switch (message.messageType) {
-		case 1:
-			successAcceptanceVerification(message);
-			break;
-		//case 2:
-			//failAcceptanceVerification(message);
-			//break;
-		case 3:
-			successStartExecutionVerification(message);
-			break;
-		//case 4:
-			//failStartExecutionVerification(message);
-			//break;
-		//case 5:
-			//successProgressExecutionVerification(message);
-			//break;
-		//case 6:
-			//failProgressExecutionVerification(message);
-			//break;
-		case 7:
-			successCompletionExecutionVerification(message);
-			break;
-		//case 8:
-			//failCompletionExecutionVerification(message);
-			//break;
-		//case 10:
-			//failRoutingVerification(message);
-			//break;
-		default:
-			ErrorHandler::reportInternalError(ErrorHandler::UnknownMessageType);
-			break;
-	}
-}
diff --git a/src/Services/TestService.cpp b/src/Services/TestService.cpp
index 224c2614d6a29742bb57162e1d96669bdb3ffa21..74085e4e464401beed0df0a856e6e812f77690ce 100644
--- a/src/Services/TestService.cpp
+++ b/src/Services/TestService.cpp
@@ -27,9 +27,7 @@ void TestService::execute(Message &message) {
 			onBoardConnection(message);
 			break;
 		default:
-			// cout is very bad for embedded systems
-			std::cout << "Error: There is not such a message type in ST[17] test";
-			assert(false);
+			ErrorHandler::reportInternalError(ErrorHandler::UnknownMessageType);
 			break;
 	}
 }
diff --git a/src/Services/TimeBasedSchedulingService.cpp b/src/Services/TimeBasedSchedulingService.cpp
index a4b74861f91167a5dbbcd942daa51405e66265d5..d88dd52d640fe498133800c1410106469f6f5088 100644
--- a/src/Services/TimeBasedSchedulingService.cpp
+++ b/src/Services/TimeBasedSchedulingService.cpp
@@ -281,3 +281,29 @@ void TimeBasedSchedulingService::summaryReportActivitiesByID(Message &request) {
 	}
 	storeMessage(report); // Save the report
 }
+
+void TimeBasedSchedulingService::execute(Message &message) {
+	switch (message.messageType) {
+		case 1:
+			enableScheduleExecution(message); // TC[11,1]
+			break;
+		case 2:
+			disableScheduleExecution(message); // TC[11,2]
+			break;
+		case 3:
+			resetSchedule(message); // TC[11,3]
+			break;
+		case 4:
+			insertActivities(message); // TC[11,4]
+			break;
+		case 15:
+			timeShiftActivitiesByID(message); // TC[11,15]
+			break;
+		case 16:
+			detailReportAllActivities(message); // TC[11,16]
+			break;
+		default:
+			ErrorHandler::reportInternalError(ErrorHandler::UnknownMessageType);
+			break;
+	}
+}
diff --git a/src/Services/TimeManagementService.cpp b/src/Services/TimeManagementService.cpp
index c6f922953ba4b434dd8a2b6461f5eab05d435aea..2d1a5a63263418d598eda6c75a55ed08d5e64d73 100644
--- a/src/Services/TimeManagementService.cpp
+++ b/src/Services/TimeManagementService.cpp
@@ -25,3 +25,14 @@ TimeAndDate TimeManagementService::cdsTimeRequest(Message &message) {
 
 	return timeInfo;
 }
+
+void TimeManagementService::execute(Message &message) {
+	switch (message.messageType) {
+		case 128:
+			cdsTimeRequest(message); // TC[9,128]
+			break;
+		default:
+			ErrorHandler::reportInternalError(ErrorHandler::UnknownMessageType);
+			break;
+	}
+}