diff --git a/inc/Services/EventActionService.hpp b/inc/Services/EventActionService.hpp
index 799ae996939bd4747c2fceb878d1c9dc05fdce60..53ef1a749fb46decdaaf54ba66fbda2b4974a78f 100644
--- a/inc/Services/EventActionService.hpp
+++ b/inc/Services/EventActionService.hpp
@@ -39,6 +39,21 @@ private:
 	void executeAction(uint16_t eventID);
 
 public:
+
+	inline static const uint8_t ServiceType = 19;
+
+	enum MessageType : uint8_t {
+		AddEventAction = 1,
+		DeleteEventAction = 2,
+		DeleteAllEventAction = 3,
+		EnableEventAction = 4,
+		DisableEventAction = 5,
+		ReportStatusOfEachEventAction = 6,
+		EventActionStatusReport = 7,
+		EnableEventActionFunction = 8,
+		DisableEventActionFunction = 9
+	};
+
 	struct EventActionDefinition {
 		// TODO: APID = 0 is the Ground Station APID. This should be changed
 		uint16_t applicationId = 0;
diff --git a/inc/Services/EventReportService.hpp b/inc/Services/EventReportService.hpp
index 376b35d4a5194cf56397c02dd1c606c6f7a96c15..81c34c46d9ac28de3bef8afe6e05aebfd9bcac34 100644
--- a/inc/Services/EventReportService.hpp
+++ b/inc/Services/EventReportService.hpp
@@ -20,6 +20,20 @@ private:
 	etl::bitset<numberOfEvents> stateOfEvents;
 
 public:
+
+	inline static const uint8_t ServiceType = 5;
+
+	enum MessageType : uint8_t {
+		InformativeEventReport = 1,
+		LowSeverityAnomalyReport = 2,
+		MediumSeverityAnomalyReport = 3,
+		HighSeverityAnomalyReport = 4,
+		EnableReportGenerationOfEvents = 5,
+		DisableReportGenerationOfEvents = 6,
+		ReportListOfDisabledEvent = 7,
+		DisabledListEventReport = 8,
+	};
+
 	// Variables that count the event reports per severity level
 	uint16_t lowSeverityReportCount;
 	uint16_t mediumSeverityReportCount;
diff --git a/inc/Services/FunctionManagementService.hpp b/inc/Services/FunctionManagementService.hpp
index 36f68d84ece877d7977d6f704a73f67337702d21..aa490fe8790f7c6a74470946d1e2f6d4d003d85d 100644
--- a/inc/Services/FunctionManagementService.hpp
+++ b/inc/Services/FunctionManagementService.hpp
@@ -59,6 +59,13 @@ class FunctionManagementService : public Service {
 	FunctionMap funcPtrIndex;
 
 public:
+
+	inline static const uint8_t ServiceType = 8;
+
+	enum MessageType : uint8_t {
+		PerformFunction = 1,
+	};
+
 	/**
 	 * Constructs the function pointer index with all the necessary functions at initialization time
 	 * These functions need to be in scope. Un-default when needed.
diff --git a/inc/Services/LargePacketTransferService.hpp b/inc/Services/LargePacketTransferService.hpp
index fe91522b0e50c5cc6007bdb0a247bb35ff584c7a..731412dbdeeb1f9a248b256184c1ef597f29d111 100644
--- a/inc/Services/LargePacketTransferService.hpp
+++ b/inc/Services/LargePacketTransferService.hpp
@@ -16,6 +16,16 @@
 
 class LargePacketTransferService : public Service {
 public:
+
+	inline static const uint8_t ServiceType = 13;
+
+
+	enum MessageType : uint8_t {
+		FirstDownlinkPartReport = 1,
+		InternalDownlinkPartReport = 2,
+		LastDownlinkPartReport = 3,
+	};
+
 	/**
 	 * Default constructor since only functions will be used.
 	 */
diff --git a/inc/Services/MemoryManagementService.hpp b/inc/Services/MemoryManagementService.hpp
index 95fca1ce82f975d26e14a87276a7b581bcab229e..6439bfa64f844603916c2d148b5d46899b7628c4 100644
--- a/inc/Services/MemoryManagementService.hpp
+++ b/inc/Services/MemoryManagementService.hpp
@@ -12,6 +12,17 @@
  */
 class MemoryManagementService : public Service {
 public:
+
+	inline static const uint8_t ServiceType = 6;
+
+	enum MessageType : uint8_t {
+		LoadRawMemoryDataAreas = 2,
+		DumpRawMemoryData = 5,
+		DumpRawMemoryDataReport = 6,
+		CheckRawMemoryData = 9,
+		CheckRawMemoryDataReport = 10,
+	};
+
 	// Memory type ID's
 	enum MemoryID {
 		DTCMRAM = 0,
diff --git a/inc/Services/ParameterService.hpp b/inc/Services/ParameterService.hpp
index f347f651b1dda1e1a8e7073f5d19528ffeba7f2e..45fd2fc59d7defed4c3d0faad6d65e62379c4712 100644
--- a/inc/Services/ParameterService.hpp
+++ b/inc/Services/ParameterService.hpp
@@ -24,6 +24,15 @@
  */
 class ParameterService : public Service {
 public:
+
+	inline static const uint8_t ServiceType = 20;
+
+	enum MessageType : uint8_t {
+		ReportParameterValues = 1,
+		ParameterValuesReport = 2,
+		SetParameterValues = 3,
+	};
+
 	ParameterService() = default;
 
 	/**
diff --git a/inc/Services/RequestVerificationService.hpp b/inc/Services/RequestVerificationService.hpp
index c790029a8bab4d463b86d19248b13e6be1ddf09b..c6ccd8720f2a8de05349959fe3caaffe097e3ffd 100644
--- a/inc/Services/RequestVerificationService.hpp
+++ b/inc/Services/RequestVerificationService.hpp
@@ -20,6 +20,21 @@
  */
 class RequestVerificationService : public Service {
 public:
+
+	inline static const uint8_t ServiceType = 1;
+
+	enum MessageType : uint8_t {
+		SuccessfulAcceptanceReport = 1,
+		FailedAcceptanceReport = 2,
+		SuccessfulStartOfExecution = 3,
+		FailedStartOfExecution = 4,
+		SuccessfulProgressOfExecution = 5,
+		FailedProgressOfExecution = 6,
+		SuccessfulCompletionOfExecution = 7,
+		FailedCompletionOfExecution = 8,
+		FailedRoutingReport = 10,
+	};
+
 	RequestVerificationService() {
 		serviceType = 1;
 	}
diff --git a/inc/Services/TestService.hpp b/inc/Services/TestService.hpp
index bb344af81f3b2447fc5c879a5fa5f45a25c84d2d..82156b23e558583afad4183acd92bdfba9f354b8 100644
--- a/inc/Services/TestService.hpp
+++ b/inc/Services/TestService.hpp
@@ -10,6 +10,17 @@
  */
 class TestService : public Service {
 public:
+
+
+	inline static const uint8_t ServiceType = 17;
+
+	enum MessageType : uint8_t {
+		AreYouAliveTest = 1,
+		AreYouAliveTestReport = 2,
+		OnBoardConnectionTest = 3,
+		OnBoardConnectionTestReport = 4,
+	};
+
 	TestService() {
 		serviceType = 17;
 	}
diff --git a/inc/Services/TimeBasedSchedulingService.hpp b/inc/Services/TimeBasedSchedulingService.hpp
index 575b03595e94158a5dae3b4e219d903ba608f942..5b8be4889b4ab1f7c5479dce7fe43ebfe41e786e 100644
--- a/inc/Services/TimeBasedSchedulingService.hpp
+++ b/inc/Services/TimeBasedSchedulingService.hpp
@@ -118,6 +118,28 @@ private:
 	friend struct ::unit_test::Tester;
 
 public:
+
+	/*
+* ST[11] TimeBased Scheduling Service and Sub-Service Macros, for readability purpose
+*/
+
+	inline static const uint8_t ServiceType = 11;
+
+	enum MessageType : uint8_t {
+		EnableTimeBasedScheduleExecutionFunction = 1,
+		DisableTimeBasedScheduleExecutionFunction = 2,
+		ResetTimeBasedSchedule = 3,
+		InsertActivities = 4,
+		DeleteActivitiesById = 5,
+		TimeShiftActivitiesById = 7,
+		DetailReportActivitiesById = 9,
+		TimeBasedScheduleReportById = 10,
+		ActivitiesSummaryReportById = 12,
+		TimeBasedScheduledSummaryReport = 13,
+		TimeShiftALlScheduledActivities = 15,
+		DetailReportAllScheduledActivities = 16,
+	};
+
 	/**
 	 * @brief Class constructor
 	 * @details Initializes the serviceType
diff --git a/inc/Services/TimeManagementService.hpp b/inc/Services/TimeManagementService.hpp
index 54617aaf1aaf10ae8308741b2ff459f16ba38b20..9083c7f8574c20c98f6ddffca8043f467f336312 100644
--- a/inc/Services/TimeManagementService.hpp
+++ b/inc/Services/TimeManagementService.hpp
@@ -30,6 +30,13 @@
 
 class TimeManagementService : public Service {
 public:
+
+	inline static const uint8_t ServiceType = 9;
+
+	enum MessageType : uint8_t {
+		CdsTimeReport = 3,
+	};
+
 	TimeManagementService() {
 		serviceType = 9;
 	}
diff --git a/src/Platform/x86/main.cpp b/src/Platform/x86/main.cpp
index 07e1f968d556647caa0db2e5b0e7b0c7ea41457c..a3cc0c9e403e5d635913ccbfc1afc8cd45d7eb9b 100644
--- a/src/Platform/x86/main.cpp
+++ b/src/Platform/x86/main.cpp
@@ -41,9 +41,9 @@ int main() {
 
 	// ST[17] test
 	TestService& testService = Services.testService;
-	Message receivedPacket = Message(17, 1, Message::TC, 1);
+	Message receivedPacket = Message(TestService::ServiceType, TestService::MessageType::AreYouAliveTest, Message::TC, 1);
 	testService.areYouAlive(receivedPacket);
-	receivedPacket = Message(17, 3, Message::TC, 1);
+	receivedPacket = Message(TestService::ServiceType, TestService::MessageType::OnBoardConnectionTest, Message::TC, 1);
 	receivedPacket.appendUint16(7);
 	testService.onBoardConnection(receivedPacket);
 
@@ -51,14 +51,14 @@ int main() {
 	ParameterService& paramService = Services.parameterManagement;
 
 	// Test code for reportParameter
-	Message sentPacket = Message(20, 1, Message::TC, 1); // application id is a dummy number (1)
+	Message sentPacket = Message(ParameterService::ServiceType, ParameterService::MessageType::ReportParameterValues, Message::TC, 1); // application id is a dummy number (1)
 	sentPacket.appendUint16(2); // number of contained IDs
 	sentPacket.appendUint16(0); // first ID
 	sentPacket.appendUint16(1); // second ID
 	paramService.reportParameters(sentPacket);
 
 	// Test code for setParameter
-	Message sentPacket2 = Message(20, 3, Message::TC, 1); // application id is a dummy number (1)
+	Message sentPacket2 = Message(ParameterService::ServiceType, ParameterService::MessageType::SetParameterValues, Message::TC, 1); // application id is a dummy number (1)
 	sentPacket2.appendUint16(2); // number of contained IDs
 	sentPacket2.appendUint16(0); // first parameter ID
 	sentPacket2.appendUint32(63238); // settings for first parameter
@@ -77,7 +77,7 @@ int main() {
 	*(pStr + 2) = 0;
 
 	MemoryManagementService& memMangService = Services.memoryManagement;
-	Message rcvPack = Message(6, 5, Message::TC, 1);
+	Message rcvPack = Message(MemoryManagementService::ServiceType, MemoryManagementService::MessageType::DumpRawMemoryData, Message::TC, 1);
 	rcvPack.appendEnum8(MemoryManagementService::MemoryID::EXTERNAL); // Memory ID
 	rcvPack.appendUint16(3); // Iteration count
 	rcvPack.appendUint64(reinterpret_cast<uint64_t>(string)); // Start address
@@ -90,7 +90,7 @@ int main() {
 	rcvPack.appendUint16(sizeof(yetAnotherStr) / sizeof(yetAnotherStr[0]));
 	memMangService.rawDataMemorySubservice.dumpRawData(rcvPack);
 
-	rcvPack = Message(6, 2, Message::TC, 1);
+	rcvPack = Message(MemoryManagementService::ServiceType, MemoryManagementService::MessageType::LoadRawMemoryDataAreas, Message::TC, 1);
 
 	uint8_t data[2] = {'h', 'R'};
 	rcvPack.appendEnum8(MemoryManagementService::MemoryID::EXTERNAL); // Memory ID
@@ -103,7 +103,7 @@ int main() {
 	rcvPack.appendBits(16, CRCHelper::calculateCRC(data, 1)); // Append the CRC value
 	memMangService.rawDataMemorySubservice.loadRawData(rcvPack);
 
-	rcvPack = Message(6, 9, Message::TC, 1);
+	rcvPack = Message(MemoryManagementService::ServiceType, MemoryManagementService::MessageType::CheckRawMemoryData, Message::TC, 1);
 
 	rcvPack.appendEnum8(MemoryManagementService::MemoryID::EXTERNAL); // Memory ID
 	rcvPack.appendUint16(2); // Iteration count
@@ -117,31 +117,33 @@ int main() {
 
 	RequestVerificationService& reqVerifService = Services.requestVerification;
 
-	Message receivedMessage = Message(1, 1, Message::TC, 3);
+	Message receivedMessage = Message(RequestVerificationService::ServiceType,
+		RequestVerificationService::MessageType::SuccessfulAcceptanceReport,
+		Message::TC, 3);
 	reqVerifService.successAcceptanceVerification(receivedMessage);
 
-	receivedMessage = Message(1, 2, Message::TC, 3);
+	receivedMessage = Message(RequestVerificationService::ServiceType, RequestVerificationService::MessageType::FailedAcceptanceReport, Message::TC, 3);
 	reqVerifService.failAcceptanceVerification(receivedMessage, ErrorHandler::UnknownAcceptanceError);
 
-	receivedMessage = Message(1, 3, Message::TC, 3);
+	receivedMessage = Message(RequestVerificationService::ServiceType, RequestVerificationService::MessageType::SuccessfulStartOfExecution, Message::TC, 3);
 	reqVerifService.successStartExecutionVerification(receivedMessage);
 
-	receivedMessage = Message(1, 4, Message::TC, 3);
+	receivedMessage = Message(RequestVerificationService::ServiceType, RequestVerificationService::MessageType::FailedStartOfExecution, Message::TC, 3);
 	reqVerifService.failStartExecutionVerification(receivedMessage, ErrorHandler::UnknownExecutionStartError);
 
-	receivedMessage = Message(1, 5, Message::TC, 3);
+	receivedMessage = Message(RequestVerificationService::ServiceType, RequestVerificationService::MessageType::SuccessfulProgressOfExecution, Message::TC, 3);
 	reqVerifService.successProgressExecutionVerification(receivedMessage, 0);
 
-	receivedMessage = Message(1, 6, Message::TC, 3);
+	receivedMessage = Message(RequestVerificationService::ServiceType, RequestVerificationService::MessageType::FailedProgressOfExecution, Message::TC, 3);
 	reqVerifService.failProgressExecutionVerification(receivedMessage, ErrorHandler::UnknownExecutionProgressError, 0);
 
-	receivedMessage = Message(1, 7, Message::TC, 3);
+	receivedMessage = Message(RequestVerificationService::ServiceType, RequestVerificationService::MessageType::SuccessfulCompletionOfExecution, Message::TC, 3);
 	reqVerifService.successCompletionExecutionVerification(receivedMessage);
 
-	receivedMessage = Message(1, 8, Message::TC, 3);
+	receivedMessage = Message(RequestVerificationService::ServiceType, RequestVerificationService::MessageType::FailedCompletionOfExecution, Message::TC, 3);
 	reqVerifService.failCompletionExecutionVerification(receivedMessage, ErrorHandler::UnknownExecutionCompletionError);
 
-	receivedMessage = Message(1, 10, Message::TC, 3);
+	receivedMessage = Message(RequestVerificationService::ServiceType, RequestVerificationService::MessageType::FailedRoutingReport, Message::TC, 3);
 	reqVerifService.failRoutingVerification(receivedMessage, ErrorHandler::UnknownRoutingError);
 
 	// ST[05] (5,1 to 5,4) test [works]
@@ -180,16 +182,16 @@ int main() {
 	EventReportService::Event eventIDs[] = {EventReportService::HighSeverityUnknownEvent,
 	                                        EventReportService::MediumSeverityUnknownEvent};
 	EventReportService::Event eventIDs2[] = {EventReportService::HighSeverityUnknownEvent};
-	Message eventMessage(5, 6, Message::TC, 1);
+	Message eventMessage(EventReportService::ServiceType, EventReportService::MessageType::DisableReportGenerationOfEvents, Message::TC, 1);
 	eventMessage.appendUint16(2);
 	eventMessage.appendEnum16(eventIDs[0]);
 	eventMessage.appendEnum16(eventIDs[1]);
 
-	Message eventMessage2(5, 5, Message::TC, 1);
+	Message eventMessage2(EventReportService::ServiceType, EventReportService::MessageType::EnableReportGenerationOfEvents, Message::TC, 1);
 	eventMessage2.appendUint16(1);
 	eventMessage2.appendEnum16(eventIDs2[0]);
 
-	Message eventMessage3(5, 7, Message::TC, 1);
+	Message eventMessage3(EventReportService::ServiceType, EventReportService::MessageType::ReportListOfDisabledEvent, Message::TC, 1);
 	eventReportService.disableReportGeneration(eventMessage);
 	eventReportService.listOfDisabledEventsReport();
 	eventReportService.enableReportGeneration(eventMessage2);
@@ -199,7 +201,7 @@ int main() {
 
 	EventActionService & eventActionService = Services.eventAction;
 
-	Message eventActionDefinition(19, 1, Message::TC, 1);
+	Message eventActionDefinition(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 1);
 	eventActionDefinition.appendEnum16(0);
 	eventActionDefinition.appendEnum16(2);
 	eventActionDefinition.appendEnum16(1);
@@ -207,7 +209,7 @@ int main() {
 	eventActionDefinition.appendString(TCdata);
 	eventActionService.addEventActionDefinitions(eventActionDefinition);
 
-	Message eventActionDefinition1(19, 1, Message::TC, 1);
+	Message eventActionDefinition1(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 1);
 	eventActionDefinition1.appendEnum16(0);
 	eventActionDefinition1.appendEnum16(2);
 	eventActionDefinition1.appendEnum16(1);
@@ -216,7 +218,7 @@ int main() {
 	std::cout << "After this message there should be a failed start of execution error \n";
 	eventActionService.addEventActionDefinitions(eventActionDefinition1);
 
-	Message eventActionDefinition2(19, 1, Message::TC, 1);
+	Message eventActionDefinition2(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 1);
 	eventActionDefinition2.appendEnum16(0);
 	eventActionDefinition2.appendEnum16(4);
 	eventActionDefinition2.appendEnum16(2);
@@ -224,7 +226,7 @@ int main() {
 	eventActionDefinition2.appendString(TCdata);
 	eventActionService.addEventActionDefinitions(eventActionDefinition2);
 
-	Message eventActionDefinition7(19, 1, Message::TC, 1);
+	Message eventActionDefinition7(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 1);
 	eventActionDefinition7.appendEnum16(0);
 	eventActionDefinition7.appendEnum16(4);
 	eventActionDefinition7.appendEnum16(4);
@@ -237,7 +239,7 @@ int main() {
 		std::cout << element.second.enabled;
 	}
 
-	Message eventActionDefinition5(19, 4, Message::TC, 1);
+	Message eventActionDefinition5(EventActionService::ServiceType, EventActionService::MessageType::EnableEventAction, Message::TC, 1);
 	eventActionDefinition5.appendUint16(3);
 	eventActionDefinition5.appendUint16(0);
 	eventActionDefinition5.appendUint16(2);
@@ -255,7 +257,7 @@ int main() {
 		std::cout << element.second.enabled;
 	}
 
-	Message eventActionDefinition3(19, 5, Message::TC, 1);
+	Message eventActionDefinition3(EventActionService::ServiceType, EventActionService::MessageType::DisableEventAction, Message::TC, 1);
 	eventActionDefinition3.appendUint16(3);
 	eventActionDefinition3.appendUint16(0);
 	eventActionDefinition3.appendUint16(2);
@@ -274,7 +276,7 @@ int main() {
 
 	eventActionService.enableEventActionDefinitions(eventActionDefinition5);
 
-	Message eventActionDefinition4(19, 2, Message::TC, 1);
+	Message eventActionDefinition4(EventActionService::ServiceType, EventActionService::MessageType::DeleteEventAction, Message::TC, 1);
 	eventActionDefinition4.appendUint16(1);
 	eventActionDefinition4.appendUint16(0);
 	eventActionDefinition4.appendUint16(2);
@@ -283,7 +285,7 @@ int main() {
 	std::cout << "After this message there should be a failed start of execution error \n";
 	eventActionService.deleteEventActionDefinitions(eventActionDefinition4);
 
-	Message eventActionDefinition6(19, 5, Message::TC, 1);
+	Message eventActionDefinition6(EventActionService::ServiceType, EventActionService::MessageType::DisableEventAction, Message::TC, 1);
 	eventActionDefinition6.appendUint16(1);
 	eventActionDefinition6.appendUint16(0);
 	eventActionDefinition6.appendUint16(2);
@@ -297,7 +299,8 @@ int main() {
 
 	LargePacketTransferService largePacketTransferService;
 	String<256> dataToTransfer = "12345678";
-	largePacketTransferService.firstDownlinkPartReport(1, 1, dataToTransfer);
+	largePacketTransferService.firstDownlinkPartReport(LargePacketTransferService::ServiceType,
+		LargePacketTransferService::MessageType::FirstDownlinkPartReport, dataToTransfer);
 
 	// ST[11] test
 	TimeBasedSchedulingService timeBasedSchedulingService;
@@ -305,7 +308,7 @@ int main() {
 	std::cout << "\n\nST[11] service is running";
 	std::cout << "\nCurrent time in seconds (UNIX epoch): " << currentTime << std::endl;
 
-	Message receivedMsg = Message(11, 1, Message::TC, 1);
+	Message receivedMsg = Message(TimeBasedSchedulingService::ServiceType, TimeBasedSchedulingService::MessageType::EnableTimeBasedScheduleExecutionFunction, Message::TC, 1);
 	Message testMessage1(6, 5, Message::TC, 1);
 	Message testMessage2(4, 5, Message::TC, 1);
 	testMessage1.appendUint16(4253); // Append dummy data
@@ -314,7 +317,7 @@ int main() {
 	timeBasedSchedulingService.enableScheduleExecution(receivedMsg); // Enable the schedule
 
 	// Insert activities in the schedule
-	receivedMsg = Message(11, 4, Message::TC, 1);
+	receivedMsg = Message(TimeBasedSchedulingService::ServiceType, TimeBasedSchedulingService::MessageType::InsertActivities, Message::TC, 1);
 	receivedMsg.appendUint16(2); // Total number of requests
 
 	receivedMsg.appendUint32(currentTime + 1556435U);
@@ -325,17 +328,17 @@ int main() {
 	timeBasedSchedulingService.insertActivities(receivedMsg);
 
 	// Time shift activities
-	receivedMsg = Message(11, 15, Message::TC, 1);
+	receivedMsg = Message(TimeBasedSchedulingService::ServiceType, TimeBasedSchedulingService::MessageType::TimeShiftALlScheduledActivities, Message::TC, 1);
 	receivedMsg.appendSint32(-6789);
 	timeBasedSchedulingService.timeShiftAllActivities(receivedMsg);
 	std::cout << "Activities should be time shifted by: " << -6789 << " seconds." << std::endl;
 
 	// Report the activities
-	receivedMsg = Message(11, 16, Message::TC, 1);
+	receivedMsg = Message(TimeBasedSchedulingService::ServiceType, TimeBasedSchedulingService::MessageType::DetailReportAllScheduledActivities, Message::TC, 1);
 	timeBasedSchedulingService.detailReportAllActivities(receivedMsg);
 
 	// Report the activities by ID
-	receivedMsg = Message(11, 12, Message::TC, 1);
+	receivedMsg = Message(TimeBasedSchedulingService::ServiceType, TimeBasedSchedulingService::MessageType::ActivitiesSummaryReportById, Message::TC, 1);
 	timeBasedSchedulingService.summaryReportActivitiesByID(receivedMsg);
 
 	LOG_NOTICE << "ECSS Services test complete";
diff --git a/src/Services/EventActionService.cpp b/src/Services/EventActionService.cpp
index b0f2f7e22f4157d7d9b239309b8095f108663d53..bc739f745f55942eec3787944eec99dd5e540809 100644
--- a/src/Services/EventActionService.cpp
+++ b/src/Services/EventActionService.cpp
@@ -8,7 +8,7 @@
 
 void EventActionService::addEventActionDefinitions(Message& message) {
 	// TC[19,1]
-	message.assertTC(19, 1);
+	message.assertTC(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction);
 	uint16_t applicationID = message.readEnum16();
 	uint16_t eventDefinitionID = message.readEnum16();
 	uint16_t eventActionDefinitionID = message.readEnum16();
@@ -40,7 +40,7 @@ void EventActionService::addEventActionDefinitions(Message& message) {
 }
 
 void EventActionService::deleteEventActionDefinitions(Message& message) {
-	message.assertTC(19, 2);
+	message.assertTC(EventActionService::ServiceType, EventActionService::MessageType::DeleteEventAction);
 	uint16_t numberOfEventActionDefinitions = message.readUint16();
 	bool definitionIDexists = false;
 	for (uint16_t i = 0; i < numberOfEventActionDefinitions; i++) {
@@ -70,7 +70,7 @@ void EventActionService::deleteEventActionDefinitions(Message& message) {
 
 void EventActionService::deleteAllEventActionDefinitions(Message& message) {
 	// TC[19,3]
-	message.assertTC(19, 3);
+	message.assertTC(EventActionService::ServiceType, EventActionService::MessageType::DeleteAllEventAction);
 
 	setEventActionFunctionStatus(false);
 	eventActionDefinitionMap.clear();
@@ -78,7 +78,7 @@ void EventActionService::deleteAllEventActionDefinitions(Message& message) {
 
 void EventActionService::enableEventActionDefinitions(Message& message) {
 	// TC[19,4]
-	message.assertTC(19, 4);
+	message.assertTC(EventActionService::ServiceType, EventActionService::MessageType::EnableEventAction);
 	uint16_t numberOfEventActionDefinitions = message.readUint16();
 	if (numberOfEventActionDefinitions != 0U) {
 		for (uint16_t i = 0; i < numberOfEventActionDefinitions; i++) {
@@ -111,7 +111,7 @@ void EventActionService::enableEventActionDefinitions(Message& message) {
 
 void EventActionService::disableEventActionDefinitions(Message& message) {
 	// TC[19,5]
-	message.assertTC(19, 5);
+	message.assertTC(EventActionService::ServiceType, EventActionService::MessageType::DisableEventAction);
 	uint16_t numberOfEventActionDefinitions = message.readUint16();
 	if (numberOfEventActionDefinitions != 0U) {
 		for (uint16_t i = 0; i < numberOfEventActionDefinitions; i++) {
@@ -143,14 +143,14 @@ void EventActionService::disableEventActionDefinitions(Message& message) {
 
 void EventActionService::requestEventActionDefinitionStatus(Message& message) {
 	// TC[19,6]
-	message.assertTC(19, 6);
+	message.assertTC(EventActionService::ServiceType, EventActionService::MessageType::ReportStatusOfEachEventAction);
 
 	eventActionStatusReport();
 }
 
 void EventActionService::eventActionStatusReport() {
 	// TM[19,7]
-	Message report = createTM(7);
+	Message report = createTM(EventActionStatusReport);
 	uint16_t count = eventActionDefinitionMap.size();
 	report.appendUint16(count);
 	for (const auto& element : eventActionDefinitionMap) {
@@ -164,14 +164,14 @@ void EventActionService::eventActionStatusReport() {
 
 void EventActionService::enableEventActionFunction(Message& message) {
 	// TC[19,8]
-	message.assertTC(19, 8);
+	message.assertTC(EventActionService::ServiceType, EventActionService::MessageType::EnableEventActionFunction);
 
 	setEventActionFunctionStatus(true);
 }
 
 void EventActionService::disableEventActionFunction(Message& message) {
 	// TC[19,9]
-	message.assertTC(19, 9);
+	message.assertTC(EventActionService::ServiceType, EventActionService::MessageType::DisableEventActionFunction);
 
 	setEventActionFunctionStatus(false);
 }
diff --git a/src/Services/EventReportService.cpp b/src/Services/EventReportService.cpp
index ce97f874a51aa795556b313e901448237c68c13b..cd4b46828ac5db7992aa44c5a8ee0bb4f7ad7bf6 100644
--- a/src/Services/EventReportService.cpp
+++ b/src/Services/EventReportService.cpp
@@ -12,7 +12,7 @@
 void EventReportService::informativeEventReport(Event eventID, const String<ECSS_EVENT_DATA_AUXILIARY_MAX_SIZE>& data) {
 	// TM[5,1]
 	if (stateOfEvents[static_cast<uint16_t>(eventID)]) {
-		Message report = createTM(1);
+		Message report = createTM(EventReportService::MessageType::InformativeEventReport);
 		report.appendEnum16(eventID);
 		report.appendString(data);
 		EventActionService eventActionService;
@@ -28,7 +28,7 @@ EventReportService::lowSeverityAnomalyReport(Event eventID, const String<ECSS_EV
 	// TM[5,2]
 	if (stateOfEvents[static_cast<uint16_t>(eventID)]) {
 		lowSeverityReportCount++;
-		Message report = createTM(2);
+		Message report = createTM(EventReportService::MessageType::LowSeverityAnomalyReport);
 		report.appendEnum16(eventID);
 		report.appendString(data);
 		lastLowSeverityReportID = static_cast<uint16_t>(eventID);
@@ -45,7 +45,7 @@ EventReportService::mediumSeverityAnomalyReport(Event eventID, const String<ECSS
 	// TM[5,3]
 	if (stateOfEvents[static_cast<uint16_t>(eventID)]) {
 		mediumSeverityReportCount++;
-		Message report = createTM(3);
+		Message report = createTM(EventReportService::MessageType::MediumSeverityAnomalyReport);
 		report.appendEnum16(eventID);
 		report.appendString(data);
 		lastMediumSeverityReportID = static_cast<uint16_t>(eventID);
@@ -62,7 +62,7 @@ EventReportService::highSeverityAnomalyReport(Event eventID, const String<ECSS_E
 	// TM[5,4]
 	if (stateOfEvents[static_cast<uint16_t>(eventID)]) {
 		highSeverityReportCount++;
-		Message report = createTM(4);
+		Message report = createTM(EventReportService::MessageType::HighSeverityAnomalyReport);
 		report.appendEnum16(eventID);
 		report.appendString(data);
 		lastHighSeverityReportID = static_cast<uint16_t>(eventID);
@@ -75,7 +75,7 @@ EventReportService::highSeverityAnomalyReport(Event eventID, const String<ECSS_E
 
 void EventReportService::enableReportGeneration(Message message) {
 	// TC[5,5]
-	message.assertTC(5, 5);
+	message.assertTC(EventReportService::ServiceType, EventReportService::MessageType::EnableReportGenerationOfEvents);
 
 	/**
 	 * @todo: Report an error if length > numberOfEvents
@@ -95,7 +95,7 @@ void EventReportService::enableReportGeneration(Message message) {
 
 void EventReportService::disableReportGeneration(Message message) {
 	// TC[5,6]
-	message.assertTC(5, 6);
+	message.assertTC(EventReportService::ServiceType, EventReportService::MessageType::DisableReportGenerationOfEvents);
 
 	/**
 	 * @todo: Report an error if length > numberOfEvents
@@ -115,14 +115,14 @@ void EventReportService::disableReportGeneration(Message message) {
 
 void EventReportService::requestListOfDisabledEvents(Message message) {
 	// TC[5,7]
-	message.assertTC(5, 7);
+	message.assertTC(EventReportService::ServiceType, EventReportService::MessageType::ReportListOfDisabledEvent);
 
 	listOfDisabledEventsReport();
 }
 
 void EventReportService::listOfDisabledEventsReport() {
 	// TM[5,8]
-	Message report = createTM(8);
+	Message report = createTM(EventReportService::MessageType::DisabledListEventReport);
 
 	uint16_t numberOfDisabledEvents = stateOfEvents.size() - stateOfEvents.count();
 	report.appendHalfword(numberOfDisabledEvents);
diff --git a/src/Services/FunctionManagementService.cpp b/src/Services/FunctionManagementService.cpp
index 5400f038bb6efb3193712b8a800881478c89a338..b8373faad304a93b4f53df6938e12358c110a69d 100644
--- a/src/Services/FunctionManagementService.cpp
+++ b/src/Services/FunctionManagementService.cpp
@@ -7,8 +7,10 @@ void FunctionManagementService::call(Message& msg) {
 	msg.resetRead();
 	ErrorHandler::assertRequest(msg.packetType == Message::TC, msg,
 	                            ErrorHandler::AcceptanceErrorType::UnacceptableMessage);
-	ErrorHandler::assertRequest(msg.messageType == 1, msg, ErrorHandler::AcceptanceErrorType::UnacceptableMessage);
-	ErrorHandler::assertRequest(msg.serviceType == 8, msg, ErrorHandler::AcceptanceErrorType::UnacceptableMessage);
+	ErrorHandler::assertRequest(msg.messageType == FunctionManagementService::MessageType::PerformFunction, msg,
+		ErrorHandler::AcceptanceErrorType::UnacceptableMessage);
+	ErrorHandler::assertRequest(msg.serviceType == FunctionManagementService::ServiceType, msg,
+		ErrorHandler::AcceptanceErrorType::UnacceptableMessage);
 
 	uint8_t funcName[ECSS_FUNCTION_NAME_LENGTH] = { 0 }; // the function's name
 	uint8_t funcArgs[ECSS_FUNCTION_MAX_ARG_LENGTH] = { 0 }; // arguments for the function
diff --git a/src/Services/LargePacketTransferService.cpp b/src/Services/LargePacketTransferService.cpp
index 38a0a666b533eb7f7123389a4ad08a7c67a903c9..b11aa16f41d02b70a97a2e245ee9cb9eb2e862a0 100644
--- a/src/Services/LargePacketTransferService.cpp
+++ b/src/Services/LargePacketTransferService.cpp
@@ -10,7 +10,7 @@ void LargePacketTransferService::firstDownlinkPartReport(uint16_t largeMessageTr
                                                          const String<ECSS_MAX_FIXED_OCTET_STRING_SIZE>& string) {
 	// TM[13,1]
 
-	Message report = createTM(1);
+	Message report = createTM(LargePacketTransferService::MessageType::FirstDownlinkPartReport);
 	report.appendUint16(largeMessageTransactionIdentifier); // large message transaction identifier
 	report.appendUint16(partSequenceNumber); // part sequence number
 	report.appendOctetString(string); // fixed octet-string
@@ -21,7 +21,7 @@ void LargePacketTransferService::intermediateDownlinkPartReport(
     uint16_t largeMessageTransactionIdentifier, uint16_t partSequenceNumber,
     const String<ECSS_MAX_FIXED_OCTET_STRING_SIZE>& string) {
 	// TM[13,2]
-	Message report = createTM(2);
+	Message report = createTM(LargePacketTransferService::MessageType::InternalDownlinkPartReport);
 	report.appendUint16(largeMessageTransactionIdentifier); // large message transaction identifier
 	report.appendUint16(partSequenceNumber); // part sequence number
 	report.appendOctetString(string); // fixed octet-string
@@ -32,7 +32,7 @@ void LargePacketTransferService::lastDownlinkPartReport(uint16_t largeMessageTra
                                                         uint16_t partSequenceNumber,
                                                         const String<ECSS_MAX_FIXED_OCTET_STRING_SIZE>& string) {
 	// TM[13,3]
-	Message report = createTM(3);
+	Message report = createTM(LargePacketTransferService::MessageType::LastDownlinkPartReport);
 	report.appendUint16(largeMessageTransactionIdentifier); // large message transaction identifier
 	report.appendUint16(partSequenceNumber); // part sequence number
 	report.appendOctetString(string); // fixed octet-string
diff --git a/src/Services/MemoryManagementService.cpp b/src/Services/MemoryManagementService.cpp
index e14fce311ad01d1d9f7a2d3cfd46476c52042f41..b0c28944629f5ce69f8867792f8bd1cee67ff2fc 100644
--- a/src/Services/MemoryManagementService.cpp
+++ b/src/Services/MemoryManagementService.cpp
@@ -7,7 +7,7 @@
 
 // Define the constructors for the classes
 MemoryManagementService::MemoryManagementService() : rawDataMemorySubservice(*this) {
-	serviceType = 6;
+	serviceType = MemoryManagementService::ServiceType;
 }
 
 MemoryManagementService::RawDataMemoryManagement::RawDataMemoryManagement(MemoryManagementService& parent)
@@ -24,7 +24,7 @@ void MemoryManagementService::RawDataMemoryManagement::loadRawData(Message& requ
 	 * @todo Add failure reporting
 	 */
 	// Check if we have the correct packet
-	request.assertTC(6, 2);
+	request.assertTC(MemoryManagementService::ServiceType, MemoryManagementService::MessageType::LoadRawMemoryDataAreas);
 
 	// Read the memory ID from the request
 	auto memoryID = MemoryManagementService::MemoryID(request.readEnum8());
@@ -74,10 +74,10 @@ void MemoryManagementService::RawDataMemoryManagement::loadRawData(Message& requ
 
 void MemoryManagementService::RawDataMemoryManagement::dumpRawData(Message& request) {
 	// Check if we have the correct packet
-	request.assertTC(6, 5);
+	request.assertTC(MemoryManagementService::ServiceType, MemoryManagementService::MessageType::DumpRawMemoryData);
 
 	// Create the report message object of telemetry message subtype 6
-	Message report = mainService.createTM(6);
+	Message report = mainService.createTM(MemoryManagementService::MessageType::DumpRawMemoryDataReport);
 	uint8_t memoryID = request.readEnum8(); // Read the memory ID from the request
 
 	// Check for a valid memory ID first
@@ -121,10 +121,10 @@ void MemoryManagementService::RawDataMemoryManagement::dumpRawData(Message& requ
 
 void MemoryManagementService::RawDataMemoryManagement::checkRawData(Message& request) {
 	// Check if we have the correct packet
-	request.assertTC(6, 9);
+	request.assertTC(MemoryManagementService::ServiceType, MemoryManagementService::MessageType::CheckRawMemoryData);
 
 	// Create the report message object of telemetry message subtype 10
-	Message report = mainService.createTM(10);
+	Message report = mainService.createTM(MemoryManagementService::MessageType::CheckRawMemoryDataReport);
 	uint8_t memoryID = request.readEnum8(); // Read the memory ID from the request
 
 	if (mainService.memoryIdValidator(MemoryManagementService::MemoryID(memoryID))) {
diff --git a/src/Services/ParameterService.cpp b/src/Services/ParameterService.cpp
index 3557f0ed7c66133dd50d075d6760649d97a4c7ef..f951d42af3f991f6eb39c6d1073502c384100ebb 100644
--- a/src/Services/ParameterService.cpp
+++ b/src/Services/ParameterService.cpp
@@ -6,13 +6,13 @@
 
 void ParameterService::reportParameters(Message& paramIds) {
 	// TM[20,2]
-	Message parameterReport(20, 2, Message::TM, 1);
+	Message parameterReport(ParameterService::ServiceType, ParameterService::MessageType::ParameterValuesReport, Message::TM, 1);
 
 	ErrorHandler::assertRequest(paramIds.packetType == Message::TC, paramIds,
 	                            ErrorHandler::AcceptanceErrorType::UnacceptableMessage);
-	ErrorHandler::assertRequest(paramIds.messageType == 1, paramIds,
+	ErrorHandler::assertRequest(paramIds.messageType == ParameterService::MessageType::ReportParameterValues, paramIds,
 	                            ErrorHandler::AcceptanceErrorType::UnacceptableMessage);
-	ErrorHandler::assertRequest(paramIds.serviceType == 20, paramIds,
+	ErrorHandler::assertRequest(paramIds.serviceType == ParameterService::ServiceType, paramIds,
 	                            ErrorHandler::AcceptanceErrorType::UnacceptableMessage);
 
 	uint16_t numOfIds = paramIds.readUint16();
@@ -43,9 +43,9 @@ void ParameterService::setParameters(Message& newParamValues) {
 
 	ErrorHandler::assertRequest(newParamValues.packetType == Message::TC, newParamValues,
 	                            ErrorHandler::AcceptanceErrorType::UnacceptableMessage);
-	ErrorHandler::assertRequest(newParamValues.messageType == 3, newParamValues,
+	ErrorHandler::assertRequest(newParamValues.messageType == ParameterService::MessageType::SetParameterValues, newParamValues,
 	                            ErrorHandler::AcceptanceErrorType::UnacceptableMessage);
-	ErrorHandler::assertRequest(newParamValues.serviceType == 20, newParamValues,
+	ErrorHandler::assertRequest(newParamValues.serviceType == ParameterService::ServiceType, newParamValues,
 	                            ErrorHandler::AcceptanceErrorType::UnacceptableMessage);
 
 	uint16_t numOfIds = newParamValues.readUint16();
diff --git a/src/Services/RequestVerificationService.cpp b/src/Services/RequestVerificationService.cpp
index 56bcdf07e3d72f9334f9f82c6cb81c98e7f546e0..2cd658a8ecfd11e62d63b577e1db839d32340989 100644
--- a/src/Services/RequestVerificationService.cpp
+++ b/src/Services/RequestVerificationService.cpp
@@ -6,7 +6,7 @@
 void RequestVerificationService::successAcceptanceVerification(const Message& request) {
 	// TM[1,1] successful acceptance verification report
 
-	Message report = createTM(1);
+	Message report = createTM(RequestVerificationService::MessageType::SuccessfulAcceptanceReport);
 
 	report.appendEnumerated(3, CCSDS_PACKET_VERSION); // packet version number
 	report.appendEnumerated(1, request.packetType); // packet type
@@ -22,7 +22,7 @@ void RequestVerificationService::failAcceptanceVerification(const Message& reque
                                                             ErrorHandler::AcceptanceErrorType errorCode) {
 	// TM[1,2] failed acceptance verification report
 
-	Message report = createTM(2);
+	Message report = createTM(RequestVerificationService::MessageType::FailedAcceptanceReport);
 
 	report.appendEnumerated(3, CCSDS_PACKET_VERSION); // packet version number
 	report.appendEnumerated(1, request.packetType); // packet type
@@ -38,7 +38,7 @@ void RequestVerificationService::failAcceptanceVerification(const Message& reque
 void RequestVerificationService::successStartExecutionVerification(const Message& request) {
 	// TM[1,3] successful start of execution verification report
 
-	Message report = createTM(3);
+	Message report = createTM(RequestVerificationService::MessageType::SuccessfulStartOfExecution);
 
 	report.appendEnumerated(3, CCSDS_PACKET_VERSION); // packet version number
 	report.appendEnumerated(1, request.packetType); // packet type
@@ -54,7 +54,7 @@ void RequestVerificationService::failStartExecutionVerification(const Message& r
                                                                 ErrorHandler::ExecutionStartErrorType errorCode) {
 	// TM[1,4] failed start of execution verification report
 
-	Message report = createTM(4);
+	Message report = createTM(RequestVerificationService::MessageType::FailedStartOfExecution);
 
 	report.appendEnumerated(3, CCSDS_PACKET_VERSION); // packet version number
 	report.appendEnumerated(1, request.packetType); // packet type
@@ -70,7 +70,7 @@ void RequestVerificationService::failStartExecutionVerification(const Message& r
 void RequestVerificationService::successProgressExecutionVerification(const Message& request, uint8_t stepID) {
 	// TM[1,5] successful progress of execution verification report
 
-	Message report = createTM(5);
+	Message report = createTM(RequestVerificationService::MessageType::SuccessfulProgressOfExecution);
 
 	report.appendEnumerated(3, CCSDS_PACKET_VERSION); // packet version number
 	report.appendEnumerated(1, request.packetType); // packet type
@@ -88,7 +88,7 @@ void RequestVerificationService::failProgressExecutionVerification(const Message
                                                                    uint8_t stepID) {
 	// TM[1,6] failed progress of execution verification report
 
-	Message report = createTM(6);
+	Message report = createTM(RequestVerificationService::MessageType::FailedProgressOfExecution);
 
 	report.appendEnumerated(3, CCSDS_PACKET_VERSION); // packet version number
 	report.appendEnumerated(1, request.packetType); // packet type
@@ -105,7 +105,7 @@ void RequestVerificationService::failProgressExecutionVerification(const Message
 void RequestVerificationService::successCompletionExecutionVerification(const Message& request) {
 	// TM[1,7] successful completion of execution verification report
 
-	Message report = createTM(7);
+	Message report = createTM(RequestVerificationService::MessageType::SuccessfulCompletionOfExecution);
 
 	report.appendEnumerated(3, CCSDS_PACKET_VERSION); // packet version number
 	report.appendEnumerated(1, request.packetType); // packet type
@@ -121,7 +121,7 @@ void RequestVerificationService::failCompletionExecutionVerification(
     const Message& request, ErrorHandler::ExecutionCompletionErrorType errorCode) {
 	// TM[1,8] failed completion of execution verification report
 
-	Message report = createTM(8);
+	Message report = createTM(RequestVerificationService::MessageType::FailedCompletionOfExecution);
 
 	report.appendEnumerated(3, CCSDS_PACKET_VERSION); // packet version number
 	report.appendEnumerated(1, request.packetType); // packet type
@@ -138,7 +138,7 @@ void RequestVerificationService::failRoutingVerification(const Message& request,
                                                          ErrorHandler::RoutingErrorType errorCode) {
 	// TM[1,10] failed routing verification report
 
-	Message report = createTM(10);
+	Message report = createTM(RequestVerificationService::MessageType::FailedRoutingReport);
 
 	report.appendEnumerated(3, CCSDS_PACKET_VERSION); // packet version number
 	report.appendEnumerated(1, request.packetType); // packet type
diff --git a/src/Services/TestService.cpp b/src/Services/TestService.cpp
index 53a42b10a2ee0644be2c610ac09ba05a0e5ae110..f7f3966ee5f38c5c3206355e86f7ea1de4929125 100644
--- a/src/Services/TestService.cpp
+++ b/src/Services/TestService.cpp
@@ -4,17 +4,17 @@
 #include "Services/TestService.hpp"
 
 void TestService::areYouAlive(Message& request) {
-	request.assertTC(17, 1);
+	request.assertTC(TestService::ServiceType, TestService::MessageType::AreYouAliveTest);
 	// TM[17,2] are-you-alive connection test report
-	Message report = createTM(2);
+	Message report = createTM(TestService::MessageType::AreYouAliveTestReport);
 
 	storeMessage(report);
 }
 
 void TestService::onBoardConnection(Message& request) {
-	request.assertTC(17, 3);
+	request.assertTC(TestService::ServiceType, TestService::MessageType::OnBoardConnectionTest);
 	// TM[17,4] on-board connection test report
-	Message report = createTM(4);
+	Message report = createTM(TestService::MessageType::OnBoardConnectionTestReport);
 
 	report.appendUint16(request.readUint16());
 	// just print it on the screen
diff --git a/src/Services/TimeBasedSchedulingService.cpp b/src/Services/TimeBasedSchedulingService.cpp
index b88e04ec06ee58b32a282269b6d7ac610a0d3d9c..11ddea8504d6ca4c43d20c52920bd69eac300696 100644
--- a/src/Services/TimeBasedSchedulingService.cpp
+++ b/src/Services/TimeBasedSchedulingService.cpp
@@ -4,29 +4,29 @@
 #include "Services/TimeBasedSchedulingService.hpp"
 
 TimeBasedSchedulingService::TimeBasedSchedulingService() {
-	serviceType = 11;
+	serviceType = TimeBasedSchedulingService::ServiceType;
 }
 
 void TimeBasedSchedulingService::enableScheduleExecution(Message& request) {
 	// Check if the correct packet is being processed
-	assert(request.serviceType == 11);
-	assert(request.messageType == 1);
+	assert(request.serviceType == TimeBasedSchedulingService::ServiceType);
+	assert(request.messageType == TimeBasedSchedulingService::MessageType::EnableTimeBasedScheduleExecutionFunction);
 
 	executionFunctionStatus = true; // Enable the service
 }
 
 void TimeBasedSchedulingService::disableScheduleExecution(Message& request) {
 	// Check if the correct packet is being processed
-	assert(request.serviceType == 11);
-	assert(request.messageType == 2);
+	assert(request.serviceType == TimeBasedSchedulingService::ServiceType);
+	assert(request.messageType == TimeBasedSchedulingService::MessageType::DisableTimeBasedScheduleExecutionFunction);
 
 	executionFunctionStatus = false; // Disable the service
 }
 
 void TimeBasedSchedulingService::resetSchedule(Message& request) {
 	// Check if the correct packet is being processed
-	assert(request.serviceType == 11);
-	assert(request.messageType == 3);
+	assert(request.serviceType == TimeBasedSchedulingService::ServiceType);
+	assert(request.messageType == TimeBasedSchedulingService::MessageType::ResetTimeBasedSchedule);
 
 	executionFunctionStatus = false; // Disable the service
 	scheduledActivities.clear(); // Delete all scheduled activities
@@ -35,8 +35,8 @@ void TimeBasedSchedulingService::resetSchedule(Message& request) {
 
 void TimeBasedSchedulingService::insertActivities(Message& request) {
 	// Check if the correct packet is being processed
-	assert(request.serviceType == 11);
-	assert(request.messageType == 4);
+	assert(request.serviceType == TimeBasedSchedulingService::ServiceType);
+	assert(request.messageType == TimeBasedSchedulingService::MessageType::InsertActivities);
 
 	// todo: Get the sub-schedule ID if they are implemented
 	uint16_t iterationCount = request.readUint16(); // Get the iteration count, (N)
@@ -71,8 +71,8 @@ void TimeBasedSchedulingService::insertActivities(Message& request) {
 
 void TimeBasedSchedulingService::timeShiftAllActivities(Message& request) {
 	// Check if the correct packet is being processed
-	assert(request.serviceType == 11);
-	assert(request.messageType == 15);
+	assert(request.serviceType == TimeBasedSchedulingService::ServiceType);
+	assert(request.messageType == TimeBasedSchedulingService::MessageType::TimeShiftALlScheduledActivities);
 
 	uint32_t current_time = TimeGetter::getSeconds(); // Get the current system time
 
@@ -96,8 +96,8 @@ void TimeBasedSchedulingService::timeShiftAllActivities(Message& request) {
 
 void TimeBasedSchedulingService::timeShiftActivitiesByID(Message& request) {
 	// Check if the correct packet is being processed
-	assert(request.serviceType == 11);
-	assert(request.messageType == 7);
+	assert(request.serviceType == TimeBasedSchedulingService::ServiceType);
+	assert(request.messageType == TimeBasedSchedulingService::MessageType::TimeShiftActivitiesById);
 
 	uint32_t current_time = TimeGetter::getSeconds(); // Get the current system time
 
@@ -133,8 +133,8 @@ void TimeBasedSchedulingService::timeShiftActivitiesByID(Message& request) {
 
 void TimeBasedSchedulingService::deleteActivitiesByID(Message& request) {
 	// Check if the correct packet is being processed
-	assert(request.serviceType == 11);
-	assert(request.messageType == 5);
+	assert(request.serviceType == TimeBasedSchedulingService::ServiceType);
+	assert(request.messageType == TimeBasedSchedulingService::MessageType::DeleteActivitiesById);
 
 	uint16_t iterationCount = request.readUint16(); // Get the iteration count, (N)
 	while (iterationCount-- != 0) {
@@ -160,11 +160,11 @@ void TimeBasedSchedulingService::deleteActivitiesByID(Message& request) {
 
 void TimeBasedSchedulingService::detailReportAllActivities(Message& request) {
 	// Check if the correct packet is being processed
-	assert(request.serviceType == 11);
-	assert(request.messageType == 16);
+	assert(request.serviceType == TimeBasedSchedulingService::ServiceType);
+	assert(request.messageType == TimeBasedSchedulingService::MessageType::DetailReportAllScheduledActivities);
 
 	// Create the report message object of telemetry message subtype 10 for each activity
-	Message report = createTM(10);
+	Message report = createTM(TimeBasedSchedulingService::MessageType::TimeBasedScheduleReportById);
 	report.appendUint16(static_cast<uint16_t>(scheduledActivities.size()));
 
 	for (auto& activity : scheduledActivities) {
@@ -178,11 +178,11 @@ void TimeBasedSchedulingService::detailReportAllActivities(Message& request) {
 
 void TimeBasedSchedulingService::detailReportActivitiesByID(Message& request) {
 	// Check if the correct packet is being processed
-	assert(request.serviceType == 11);
-	assert(request.messageType == 9);
+	assert(request.serviceType == TimeBasedSchedulingService::ServiceType);
+	assert(request.messageType == TimeBasedSchedulingService::MessageType::DetailReportActivitiesById);
 
 	// Create the report message object of telemetry message subtype 10 for each activity
-	Message report = createTM(10);
+	Message report = createTM(TimeBasedSchedulingService::MessageType::TimeBasedScheduleReportById);
 	etl::list<ScheduledActivity, ECSS_MAX_NUMBER_OF_TIME_SCHED_ACTIVITIES> matchedActivities;
 
 	uint16_t iterationCount = request.readUint16(); // Get the iteration count, (N)
@@ -219,11 +219,11 @@ void TimeBasedSchedulingService::detailReportActivitiesByID(Message& request) {
 
 void TimeBasedSchedulingService::summaryReportActivitiesByID(Message& request) {
 	// Check if the correct packet is being processed
-	assert(request.serviceType == 11);
-	assert(request.messageType == 12);
+	assert(request.serviceType == TimeBasedSchedulingService::ServiceType);
+	assert(request.messageType == TimeBasedSchedulingService::MessageType::ActivitiesSummaryReportById);
 
 	// Create the report message object of telemetry message subtype 13 for each activity
-	Message report = createTM(13);
+	Message report = createTM(TimeBasedSchedulingService::MessageType::TimeBasedScheduledSummaryReport);
 	etl::list<ScheduledActivity, ECSS_MAX_NUMBER_OF_TIME_SCHED_ACTIVITIES> matchedActivities;
 
 	uint16_t iterationCount = request.readUint16(); // Get the iteration count, (N)
diff --git a/src/Services/TimeManagementService.cpp b/src/Services/TimeManagementService.cpp
index d12061958917c080c0bda02b9aae15f839b4fec7..f4e6a361407a36d59ead19d5f61020eeadd1b922 100644
--- a/src/Services/TimeManagementService.cpp
+++ b/src/Services/TimeManagementService.cpp
@@ -6,7 +6,7 @@
 void TimeManagementService::cdsTimeReport(TimeAndDate& TimeInfo) {
 	// TM[9,3] CDS time report
 
-	Message timeReport = createTM(3);
+	Message timeReport = createTM(TimeManagementService::MessageType::CdsTimeReport);
 
 	uint64_t timeFormat = TimeHelper::generateCDSTimeFormat(TimeInfo);
 
@@ -18,7 +18,7 @@ void TimeManagementService::cdsTimeReport(TimeAndDate& TimeInfo) {
 
 TimeAndDate TimeManagementService::cdsTimeRequest(Message& message) {
 	// TC[9,128] CDS time request
-	message.assertTC(9, 128);
+	message.assertTC(TimeManagementService::ServiceType, 128);
 
 	// check if we have the correct size of the data. The size should be 6 (48 bits)
 	ErrorHandler::assertRequest(message.dataSize == 6, message, ErrorHandler::AcceptanceErrorType::UnacceptableMessage);
diff --git a/test/ErrorHandler.cpp b/test/ErrorHandler.cpp
index 804657b3d95151ab4f2be4cdd98293d08df614e1..cf1006f932bf0bfe557998daf7d2fb8e89a575ce 100644
--- a/test/ErrorHandler.cpp
+++ b/test/ErrorHandler.cpp
@@ -1,6 +1,7 @@
 #include <catch2/catch.hpp>
 #include <ErrorHandler.hpp>
 #include "Services/ServiceTests.hpp"
+#include "Services/RequestVerificationService.hpp"
 
 TEST_CASE("Error: Failed Acceptance", "[errors]") {
 	Message failedMessage(38, 32, Message::TC, 47);
@@ -11,8 +12,8 @@ TEST_CASE("Error: Failed Acceptance", "[errors]") {
 	Message report = ServiceTests::get(0);
 
 	// Check that a TM[1,2] message was returned
-	CHECK(report.serviceType == 1);
-	CHECK(report.messageType == 2);
+	CHECK(report.serviceType == RequestVerificationService::ServiceType);
+	CHECK(report.messageType == RequestVerificationService::MessageType::FailedAcceptanceReport);
 	CHECK(report.packetType == Message::TM);
 	REQUIRE(report.dataSize == 6);
 
@@ -34,8 +35,8 @@ TEST_CASE("Error: Failed Execution Start", "[errors]") {
 	Message report = ServiceTests::get(0);
 
 	// Check that a TM[1,3] message was returned
-	CHECK(report.serviceType == 1);
-	CHECK(report.messageType == 4);
+	CHECK(report.serviceType == RequestVerificationService::ServiceType);
+	CHECK(report.messageType == RequestVerificationService::MessageType::FailedStartOfExecution);
 	CHECK(report.packetType == Message::TM);
 	REQUIRE(report.dataSize == 6);
 
@@ -57,8 +58,8 @@ TEST_CASE("Error: Failed Execution Progress", "[errors]") {
 	Message report = ServiceTests::get(0);
 
 	// Check that a TM[1,6] message was returned
-	CHECK(report.serviceType == 1);
-	CHECK(report.messageType == 6);
+	CHECK(report.serviceType == RequestVerificationService::ServiceType);
+	CHECK(report.messageType == RequestVerificationService::MessageType::FailedProgressOfExecution);
 	CHECK(report.packetType == Message::TM);
 	REQUIRE(report.dataSize == 7);
 
@@ -81,8 +82,8 @@ TEST_CASE("Error: Failed Execution Completion", "[errors]") {
 	Message report = ServiceTests::get(0);
 
 	// Check that a TM[1,8] message was returned
-	CHECK(report.serviceType == 1);
-	CHECK(report.messageType == 8);
+	CHECK(report.serviceType == RequestVerificationService::ServiceType);
+	CHECK(report.messageType == RequestVerificationService::MessageType::FailedCompletionOfExecution);
 	CHECK(report.packetType == Message::TM);
 	REQUIRE(report.dataSize == 6);
 
@@ -104,8 +105,8 @@ TEST_CASE("Error: Failed Routing", "[errors]") {
 	Message report = ServiceTests::get(0);
 
 	// Check that a TM[1,8] message was returned
-	CHECK(report.serviceType == 1);
-	CHECK(report.messageType == 10);
+	CHECK(report.serviceType == RequestVerificationService::ServiceType);
+	CHECK(report.messageType == RequestVerificationService::MessageType::FailedRoutingReport);
 	CHECK(report.packetType == Message::TM);
 	REQUIRE(report.dataSize == 6);
 
diff --git a/test/Message.cpp b/test/Message.cpp
index a13c29e2b7b59298188b77042069ac60b83af8f8..8d356b6eafc9ea886067d3c84b5c73f6dcf041e1 100644
--- a/test/Message.cpp
+++ b/test/Message.cpp
@@ -1,11 +1,12 @@
 #include <catch2/catch.hpp>
 #include <Message.hpp>
 #include <ServicePool.hpp>
+#include "Services/EventReportService.hpp"
 
 TEST_CASE("Message is usable", "[message]") {
-	Message message(5, 17, Message::TC, 3);
+	Message message(EventReportService::ServiceType, 17, Message::TC, 3);
 
-	REQUIRE(message.serviceType == 5);
+	REQUIRE(message.serviceType == EventReportService::ServiceType);
 	REQUIRE(message.messageType == 17);
 	REQUIRE(message.packetType == Message::TC);
 	REQUIRE(message.applicationId == 3);
diff --git a/test/Services/EventActionService.cpp b/test/Services/EventActionService.cpp
index 1931fc56dcee2120c7b0db8f5c3ad23716490195..0d26065c77360f45dca03f13f0f1fe842064aa2c 100644
--- a/test/Services/EventActionService.cpp
+++ b/test/Services/EventActionService.cpp
@@ -9,9 +9,9 @@
 EventActionService& eventActionService = Services.eventAction;
 
 TEST_CASE("Add event-action definitions TC[19,1]", "[service][st19]") {
-
+	
 	// Add a message that is too large to check for the corresponding error
-	Message message(19, 1, Message::TC, 0);
+	Message message(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 0);
 	message.appendEnum16(0);
 	message.appendEnum16(1);
 	message.appendEnum16(1);
@@ -23,7 +23,7 @@ TEST_CASE("Add event-action definitions TC[19,1]", "[service][st19]") {
 	CHECK(ServiceTests::countErrors() == 1);
 
 	// Add an event-action definition to check if the values are inserted correctly
-	Message message1(19, 1, Message::TC, 0);
+	Message message1(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 0);
 	message1.appendEnum16(0);
 	message1.appendEnum16(2);
 	message1.appendEnum16(1);
@@ -37,7 +37,7 @@ TEST_CASE("Add event-action definitions TC[19,1]", "[service][st19]") {
 	CHECK(eventActionService.eventActionDefinitionMap.lower_bound(2)->second.request.compare(data) == 0);
 
 	// Add a second event-action definition
-	Message message2(19, 1, Message::TC, 0);
+	Message message2(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 0);
 	message2.appendEnum16(1);
 	message2.appendEnum16(3);
 	message2.appendEnum16(1);
@@ -51,7 +51,7 @@ TEST_CASE("Add event-action definitions TC[19,1]", "[service][st19]") {
 	CHECK(eventActionService.eventActionDefinitionMap.lower_bound(3)->second.request.compare(data) == 0);
 
 	// Adding the same message to check for error
-	Message message3(19, 1, Message::TC, 0);
+	Message message3(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 0);
 	message3.appendEnum16(1);
 	message3.appendEnum16(3);
 	message3.appendEnum16(1);
@@ -65,7 +65,7 @@ TEST_CASE("Add event-action definitions TC[19,1]", "[service][st19]") {
 TEST_CASE("Delete event-action definitions TC[19,2]", "[service][st19]") {
 
 	// Add messages for the purpose of deleting them
-	Message message0(19, 1, Message::TC, 0);
+	Message message0(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 0);
 	message0.appendEnum16(1);
 	message0.appendEnum16(0);
 	message0.appendEnum16(1);
@@ -73,7 +73,7 @@ TEST_CASE("Delete event-action definitions TC[19,2]", "[service][st19]") {
 	message0.appendString(data);
 	MessageParser::execute(message0);
 
-	Message message1(19, 1, Message::TC, 0);
+	Message message1(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 0);
 	message1.appendEnum16(1);
 	message1.appendEnum16(1);
 	message1.appendEnum16(1);
@@ -81,7 +81,7 @@ TEST_CASE("Delete event-action definitions TC[19,2]", "[service][st19]") {
 	message1.appendString(data);
 	MessageParser::execute(message1);
 
-	Message message2(19, 1, Message::TC, 0);
+	Message message2(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 0);
 	message2.appendEnum16(1);
 	message2.appendEnum16(2);
 	message2.appendEnum16(1);
@@ -89,7 +89,7 @@ TEST_CASE("Delete event-action definitions TC[19,2]", "[service][st19]") {
 	message2.appendString(data);
 	MessageParser::execute(message2);
 
-	Message message5(19, 2, Message::TC, 0);
+	Message message5(EventActionService::ServiceType, EventActionService::MessageType::DeleteEventAction, Message::TC, 0);
 	message5.appendUint16(1);
 	message5.appendEnum16(1);
 	message5.appendEnum16(2);
@@ -111,14 +111,14 @@ TEST_CASE("Delete event-action definitions TC[19,2]", "[service][st19]") {
 	CHECK(eventActionService.eventActionDefinitionMap.find(2) == eventActionService.eventActionDefinitionMap.end());
 
 	// Enabling a definition to check for errors in the case of an attempt to delete it
-	Message message8(19, 4, Message::TC, 0);
+	Message message8(EventActionService::ServiceType, EventActionService::MessageType::EnableEventAction, Message::TC, 0);
 	message8.appendUint16(1);
 	message8.appendEnum16(1);
 	message8.appendEnum16(1);
 	message8.appendEnum16(1);
 	MessageParser::execute(message8);
 
-	Message message6(19, 2, Message::TC, 0);
+	Message message6(EventActionService::ServiceType, EventActionService::MessageType::DeleteEventAction, Message::TC, 0);
 	message6.appendUint16(1);
 	message6.appendEnum16(1);
 	message6.appendEnum16(1);
@@ -130,7 +130,7 @@ TEST_CASE("Delete event-action definitions TC[19,2]", "[service][st19]") {
 	CHECK(ServiceTests::countErrors() == 1);
 
 	// Checking for errors in the case of an unknown definition
-	Message message7(19, 2, Message::TC, 0);
+	Message message7(EventActionService::ServiceType, EventActionService::MessageType::DeleteEventAction, Message::TC, 0);
 	message7.appendUint16(1);
 	message7.appendEnum16(1);
 	message7.appendEnum16(10);
@@ -140,7 +140,7 @@ TEST_CASE("Delete event-action definitions TC[19,2]", "[service][st19]") {
 	CHECK(ServiceTests::thrownError(ErrorHandler::EventActionUnknownEventDefinitionError));
 	CHECK(ServiceTests::countErrors() == 2);
 
-	Message message9(19, 2, Message::TC, 0);
+	Message message9(EventActionService::ServiceType, EventActionService::MessageType::DeleteEventAction, Message::TC, 0);
 	message9.appendUint16(1);
 	message9.appendEnum16(1);
 	message9.appendEnum16(1);
@@ -154,7 +154,7 @@ TEST_CASE("Delete event-action definitions TC[19,2]", "[service][st19]") {
 TEST_CASE("Delete all event-action definitions TC[19,3]", "[service][st19]") {
 
 	// Adding event action definitions to delete them later
-	Message message0(19, 1, Message::TC, 0);
+	Message message0(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 0);
 	message0.appendEnum16(1);
 	message0.appendEnum16(0);
 	message0.appendEnum16(1);
@@ -162,7 +162,7 @@ TEST_CASE("Delete all event-action definitions TC[19,3]", "[service][st19]") {
 	message0.appendString(data);
 	MessageParser::execute(message0);
 
-	Message message1(19, 1, Message::TC, 0);
+	Message message1(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 0);
 	message1.appendEnum16(1);
 	message1.appendEnum16(1);
 	message1.appendEnum16(1);
@@ -170,7 +170,7 @@ TEST_CASE("Delete all event-action definitions TC[19,3]", "[service][st19]") {
 	message1.appendString(data);
 	MessageParser::execute(message1);
 
-	Message message2(19, 1, Message::TC, 0);
+	Message message2(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 0);
 	message2.appendEnum16(1);
 	message2.appendEnum16(2);
 	message2.appendEnum16(1);
@@ -178,7 +178,7 @@ TEST_CASE("Delete all event-action definitions TC[19,3]", "[service][st19]") {
 	message2.appendString(data);
 	MessageParser::execute(message2);
 
-	Message message3(19, 1, Message::TC, 0);
+	Message message3(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 0);
 	message3.appendEnum16(1);
 	message3.appendEnum16(3);
 	message3.appendEnum16(1);
@@ -186,7 +186,7 @@ TEST_CASE("Delete all event-action definitions TC[19,3]", "[service][st19]") {
 	message3.appendString(data);
 	MessageParser::execute(message3);
 
-	Message message4(19, 1, Message::TC, 0);
+	Message message4(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 0);
 	message4.appendEnum16(1);
 	message4.appendEnum16(4);
 	message4.appendEnum16(1);
@@ -194,7 +194,7 @@ TEST_CASE("Delete all event-action definitions TC[19,3]", "[service][st19]") {
 	message4.appendString(data);
 	MessageParser::execute(message4);
 
-	Message message(19, 3, Message::TC, 0);
+	Message message(EventActionService::ServiceType, EventActionService::MessageType::DeleteAllEventAction, Message::TC, 0);
 	MessageParser::execute(message);
 
 	// Checking the content of the map
@@ -206,7 +206,7 @@ TEST_CASE("Delete all event-action definitions TC[19,3]", "[service][st19]") {
 TEST_CASE("Enable event-action definitions TC[19,4]", "[service][st19]") {
 
 	// Adding event action definitions to enable them
-	Message message0(19, 1, Message::TC, 0);
+	Message message0(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 0);
 	message0.appendEnum16(1);
 	message0.appendEnum16(0);
 	message0.appendEnum16(1);
@@ -214,7 +214,7 @@ TEST_CASE("Enable event-action definitions TC[19,4]", "[service][st19]") {
 	message0.appendString(data);
 	MessageParser::execute(message0);
 
-	Message message1(19, 1, Message::TC, 0);
+	Message message1(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 0);
 	message1.appendEnum16(1);
 	message1.appendEnum16(1);
 	message1.appendEnum16(1);
@@ -227,7 +227,7 @@ TEST_CASE("Enable event-action definitions TC[19,4]", "[service][st19]") {
 	CHECK(eventActionService.eventActionDefinitionMap.lower_bound(1)->second.enabled == 0);
 
 	// Creating a message to enable the previous messages
-	Message message3(19, 4, Message::TC, 0);
+	Message message3(EventActionService::ServiceType, EventActionService::MessageType::EnableEventAction, Message::TC, 0);
 	message3.appendUint16(2);
 	message3.appendEnum16(1);
 	message3.appendEnum16(0);
@@ -242,7 +242,7 @@ TEST_CASE("Enable event-action definitions TC[19,4]", "[service][st19]") {
 	CHECK(eventActionService.eventActionDefinitionMap.lower_bound(1)->second.enabled == 1);
 
 	// Checking for errors in the case of an attempt to enable an unknown definition
-	Message message7(19, 4, Message::TC, 0);
+	Message message7(EventActionService::ServiceType, EventActionService::MessageType::EnableEventAction, Message::TC, 0);
 	message7.appendUint16(1);
 	message7.appendEnum16(1);
 	message7.appendEnum16(6);
@@ -252,7 +252,7 @@ TEST_CASE("Enable event-action definitions TC[19,4]", "[service][st19]") {
 	CHECK(ServiceTests::countErrors() == 1);
 
 	// Checking for errors in the case of an attempt to enable an unknown definition
-	Message message8(19, 4, Message::TC, 0);
+	Message message8(EventActionService::ServiceType, EventActionService::MessageType::EnableEventAction, Message::TC, 0);
 	message8.appendUint16(1);
 	message8.appendEnum16(1);
 	message8.appendEnum16(1);
@@ -266,7 +266,7 @@ TEST_CASE("Enable event-action definitions TC[19,4]", "[service][st19]") {
 TEST_CASE("Disable event-action definitions TC[19,5]", "[service][st19]") {
 
 	// Adding event action definitions to enable them
-	Message message0(19, 1, Message::TC, 0);
+	Message message0(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 0);
 	message0.appendEnum16(1);
 	message0.appendEnum16(0);
 	message0.appendEnum16(1);
@@ -274,7 +274,7 @@ TEST_CASE("Disable event-action definitions TC[19,5]", "[service][st19]") {
 	message0.appendString(data);
 	MessageParser::execute(message0);
 
-	Message message1(19, 1, Message::TC, 0);
+	Message message1(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 0);
 	message1.appendEnum16(1);
 	message1.appendEnum16(1);
 	message1.appendEnum16(1);
@@ -287,7 +287,7 @@ TEST_CASE("Disable event-action definitions TC[19,5]", "[service][st19]") {
 	CHECK(eventActionService.eventActionDefinitionMap.lower_bound(1)->second.enabled == 0);
 
 	// Creating a message to enable the previous messages
-	Message message3(19, 4, Message::TC, 0);
+	Message message3(EventActionService::ServiceType, EventActionService::MessageType::EnableEventAction, Message::TC, 0);
 	message3.appendUint16(2);
 	message3.appendEnum16(1);
 	message3.appendEnum16(0);
@@ -302,7 +302,7 @@ TEST_CASE("Disable event-action definitions TC[19,5]", "[service][st19]") {
 	CHECK(eventActionService.eventActionDefinitionMap.lower_bound(1)->second.enabled == 1);
 
 	// Creating a message to enable the previous messages
-	Message message4(19, 5, Message::TC, 0);
+	Message message4(EventActionService::ServiceType, EventActionService::MessageType::DisableEventAction, Message::TC, 0);
 	message4.appendUint16(2);
 	message4.appendEnum16(1);
 	message4.appendEnum16(0);
@@ -317,7 +317,7 @@ TEST_CASE("Disable event-action definitions TC[19,5]", "[service][st19]") {
 	CHECK(eventActionService.eventActionDefinitionMap.lower_bound(1)->second.enabled == 0);
 
 	// Checking for errors in the case of an attempt to enable an unknown definition
-	Message message7(19, 5, Message::TC, 0);
+	Message message7(EventActionService::ServiceType, EventActionService::MessageType::DisableEventAction, Message::TC, 0);
 	message7.appendUint16(1);
 	message7.appendEnum16(1);
 	message7.appendEnum16(6);
@@ -327,7 +327,7 @@ TEST_CASE("Disable event-action definitions TC[19,5]", "[service][st19]") {
 	CHECK(ServiceTests::countErrors() == 1);
 
 	// Checking for errors in the case of an attempt to enable an unknown definition
-	Message message8(19, 5, Message::TC, 0);
+	Message message8(EventActionService::ServiceType, EventActionService::MessageType::DisableEventAction, Message::TC, 0);
 	message8.appendUint16(1);
 	message8.appendEnum16(1);
 	message8.appendEnum16(1);
@@ -341,7 +341,7 @@ TEST_CASE("Disable event-action definitions TC[19,5]", "[service][st19]") {
 TEST_CASE("Request event-action definition status TC[19,6]", "[service][st19]") {
 
 	// Creating a request for a report on the event action definitions
-	Message message(19, 6, Message::TC, 0);
+	Message message(EventActionService::ServiceType, EventActionService::MessageType::ReportStatusOfEachEventAction, Message::TC, 0);
 	MessageParser::execute(message);
 	REQUIRE(ServiceTests::hasOneMessage());
 
@@ -353,7 +353,7 @@ TEST_CASE("Request event-action definition status TC[19,6]", "[service][st19]")
 TEST_CASE("Event-action status report TM[19,7]", "[service][st19]") {
 
 	// Adding event-action definitions to report them
-	Message message0(19, 1, Message::TC, 0);
+	Message message0(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 0);
 	message0.appendEnum16(1);
 	message0.appendEnum16(0);
 	message0.appendEnum16(1);
@@ -361,7 +361,7 @@ TEST_CASE("Event-action status report TM[19,7]", "[service][st19]") {
 	message0.appendString(data);
 	MessageParser::execute(message0);
 
-	Message message1(19, 1, Message::TC, 0);
+	Message message1(EventActionService::ServiceType, EventActionService::MessageType::AddEventAction, Message::TC, 0);
 	message1.appendEnum16(1);
 	message1.appendEnum16(2);
 	message1.appendEnum16(1);
@@ -370,7 +370,7 @@ TEST_CASE("Event-action status report TM[19,7]", "[service][st19]") {
 	MessageParser::execute(message1);
 
 	// Enablilng one of the two
-	Message message2(19, 4, Message::TC, 0);
+	Message message2(EventActionService::ServiceType, EventActionService::MessageType::EnableEventAction, Message::TC, 0);
 	message2.appendUint16(1);
 	message2.appendEnum16(1);
 	message2.appendEnum16(0);
@@ -397,7 +397,7 @@ TEST_CASE("Enable event-action function TC[19,8]", "[service][st19]") {
 
 	// A message to enable event action function
 
-	Message message(19, 8, Message::TC, 0);
+	Message message(EventActionService::ServiceType, EventActionService::MessageType::EnableEventActionFunction, Message::TC, 0);
 	eventActionService.enableEventActionFunction(message);
 	CHECK(eventActionService.getEventActionFunctionStatus());
 }
@@ -405,7 +405,7 @@ TEST_CASE("Enable event-action function TC[19,8]", "[service][st19]") {
 TEST_CASE("Disable event-action function TC[19,9]", "[service][st19]") {
 
 	// A message to disable event action function
-	Message message(19, 9, Message::TC, 0);
+	Message message(EventActionService::ServiceType, EventActionService::MessageType::DisableEventActionFunction, Message::TC, 0);
 	eventActionService.disableEventActionFunction(message);
 	CHECK(eventActionService.getEventActionFunctionStatus() == false);
 }
diff --git a/test/Services/EventReportService.cpp b/test/Services/EventReportService.cpp
index ab3ae8aae4249a44656cdd7a6599c5ee5723727f..6d1e1ebef7c7c5e73df9f1b1f0b5f9710a0c7fe1 100644
--- a/test/Services/EventReportService.cpp
+++ b/test/Services/EventReportService.cpp
@@ -14,8 +14,8 @@ TEST_CASE("Informative Event Report TM[5,1]", "[service][st05]") {
 
 	Message report = ServiceTests::get(0);
 	// Checks for the data-members of the report Message created
-	CHECK(report.serviceType == 5);
-	CHECK(report.messageType == 1);
+	CHECK(report.serviceType == EventReportService::ServiceType);
+	CHECK(report.messageType == EventReportService::MessageType::InformativeEventReport);
 	CHECK(report.packetType == Message::TM); // packet type(TM = 0, TC = 1)
 	REQUIRE(report.dataSize == 12);
 	// Check for the value that is stored in <<data>> array(data-member of object response)
@@ -32,8 +32,8 @@ TEST_CASE("Low Severity Anomaly Report TM[5,2]", "[service][st05]") {
 
 	Message report = ServiceTests::get(0);
 	// Checks for the data-members of the report Message created
-	CHECK(report.serviceType == 5);
-	CHECK(report.messageType == 2);
+	CHECK(report.serviceType == EventReportService::ServiceType);
+	CHECK(report.messageType == EventReportService::MessageType::LowSeverityAnomalyReport);
 	CHECK(report.packetType == Message::TM); // packet type(TM = 0, TC = 1)
 	REQUIRE(report.dataSize == 12);
 	// Check for the value that is stored in <<data>> array(data-member of object response)
@@ -50,8 +50,8 @@ TEST_CASE("Medium Severity Anomaly Report TM[5,3]", "[service][st05]") {
 
 	Message report = ServiceTests::get(0);
 	// Checks for the data-members of the report Message created
-	CHECK(report.serviceType == 5);
-	CHECK(report.messageType == 3);
+	CHECK(report.serviceType == EventReportService::ServiceType);
+	CHECK(report.messageType == EventReportService::MessageType::MediumSeverityAnomalyReport);
 	CHECK(report.packetType == Message::TM); // packet type(TM = 0, TC = 1)
 	REQUIRE(report.dataSize == 12);
 	// Check for the value that is stored in <<data>> array(data-member of object response)
@@ -68,8 +68,8 @@ TEST_CASE("High Severity Anomaly Report TM[5,4]", "[service][st05]") {
 
 	Message report = ServiceTests::get(0);
 	// Checks for the data-members of the report Message created
-	CHECK(report.serviceType == 5);
-	CHECK(report.messageType == 4);
+	CHECK(report.serviceType == EventReportService::ServiceType);
+	CHECK(report.messageType == EventReportService::MessageType::HighSeverityAnomalyReport);
 	CHECK(report.packetType == Message::TM); // packet type(TM = 0, TC = 1)
 	REQUIRE(report.dataSize == 12);
 	// Check for the value that is stored in <<data>> array(data-member of object response)
@@ -82,7 +82,7 @@ TEST_CASE("Enable Report Generation TC[5,5]", "[service][st05]") {
 	eventReportService.getStateOfEvents().reset();
 	EventReportService::Event eventID[] = {EventReportService::AssertionFail,
 	                                       EventReportService::LowSeverityUnknownEvent};
-	Message message(5, 5, Message::TC, 1);
+	Message message(EventReportService::ServiceType, EventReportService::MessageType::EnableReportGenerationOfEvents, Message::TC, 1);
 	message.appendUint16(2);
 	message.appendEnum16(eventID[0]);
 	message.appendEnum16(eventID[1]);
@@ -94,7 +94,7 @@ TEST_CASE("Enable Report Generation TC[5,5]", "[service][st05]") {
 TEST_CASE("Disable Report Generation TC[5,6]", "[service][st05]") {
 	EventReportService::Event eventID[] = {EventReportService::InformativeUnknownEvent,
 	                                       EventReportService::MediumSeverityUnknownEvent};
-	Message message(5, 6, Message::TC, 1);
+	Message message(EventReportService::ServiceType, EventReportService::MessageType::DisableReportGenerationOfEvents, Message::TC, 1);
 	message.appendUint16(2);
 	message.appendEnum16(eventID[0]);
 	message.appendEnum16(eventID[1]);
@@ -108,18 +108,18 @@ TEST_CASE("Disable Report Generation TC[5,6]", "[service][st05]") {
 }
 
 TEST_CASE("Request list of disabled events TC[5,7]", "[service][st05]") {
-	Message message(5, 7, Message::TC, 1);
+	Message message(EventReportService::ServiceType, EventReportService::MessageType::ReportListOfDisabledEvent, Message::TC, 1);
 	MessageParser::execute(message);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message report = ServiceTests::get(0);
 	// Check if there is message of type 8 created
-	CHECK(report.messageType == 8);
+	CHECK(report.messageType == EventReportService::MessageType::DisabledListEventReport);
 }
 
 TEST_CASE("List of Disabled Events Report TM[5,8]", "[service][st05]") {
 	EventReportService::Event eventID[] = {EventReportService::MCUStart, EventReportService::HighSeverityUnknownEvent};
-	Message message(5, 6, Message::TC, 1);
+	Message message(EventReportService::ServiceType, EventReportService::MessageType::DisableReportGenerationOfEvents, Message::TC, 1);
 	message.appendUint16(2);
 	message.appendEnum16(eventID[0]);
 	message.appendEnum16(eventID[1]);
@@ -130,8 +130,8 @@ TEST_CASE("List of Disabled Events Report TM[5,8]", "[service][st05]") {
 
 	Message report = ServiceTests::get(0);
 	// Check for the data-members of the report Message created
-	CHECK(report.serviceType == 5);
-	CHECK(report.messageType == 8);
+	CHECK(report.serviceType == EventReportService::ServiceType);
+	CHECK(report.messageType == EventReportService::MessageType::DisabledListEventReport);
 	CHECK(report.packetType == Message::TM); // packet type(TM = 0, TC = 1)
 	REQUIRE(report.dataSize == 6);
 	// Check for the information stored in report
@@ -142,7 +142,7 @@ TEST_CASE("List of Disabled Events Report TM[5,8]", "[service][st05]") {
 
 TEST_CASE("List of observables 6.5.6", "[service][st05]") {
 	EventReportService::Event eventID[] = {EventReportService::HighSeverityUnknownEvent};
-	Message message(5, 6, Message::TC, 1);
+	Message message(EventReportService::ServiceType, EventReportService::MessageType::DisableReportGenerationOfEvents, Message::TC, 1);
 	message.appendUint16(1);
 	message.appendEnum16(eventID[0]);
 	MessageParser::execute(message);
diff --git a/test/Services/FunctionManagementService.cpp b/test/Services/FunctionManagementService.cpp
index a793c3e9035ed37eb4aa9351d235fe1774f866a6..aae11b01a91bb5608833bcff2fb889b091442cd4 100644
--- a/test/Services/FunctionManagementService.cpp
+++ b/test/Services/FunctionManagementService.cpp
@@ -1,5 +1,6 @@
 #include "catch2/catch.hpp"
 #include "Services/FunctionManagementService.hpp"
+#include "Services/RequestVerificationService.hpp"
 #include "ServicePool.hpp"
 #include "ServiceTests.hpp"
 #include <iostream>
@@ -18,7 +19,8 @@ TEST_CASE("ST[08] - Call Tests") {
 		globalVariable = 10;
 
 		fms.include(String<ECSS_FUNCTION_NAME_LENGTH>("test"), &test);
-		Message msg(8, 1, Message::TC, 1);
+		Message msg(FunctionManagementService::ServiceType, FunctionManagementService::MessageType::PerformFunction,
+			Message::TC, 1);
 
 		msg.appendFixedString(String<ECSS_FUNCTION_NAME_LENGTH>("test"));
 		msg.appendByte(199);
@@ -33,12 +35,12 @@ TEST_CASE("ST[08] - Call Tests") {
 		globalVariable = 10;
 
 		fms.include(String<ECSS_FUNCTION_NAME_LENGTH>("test"), &test);
-		Message msg(8, 1, Message::TC, 1);
+		Message msg(FunctionManagementService::ServiceType, FunctionManagementService::MessageType::PerformFunction, Message::TC, 1);
 		msg.appendFixedString(String<ECSS_FUNCTION_NAME_LENGTH>("t3st"));
 		MessageParser::execute(msg);
 
-		CHECK(ServiceTests::get(0).messageType == 4);
-		CHECK(ServiceTests::get(0).serviceType == 1);
+		CHECK(ServiceTests::get(0).messageType == RequestVerificationService::MessageType::FailedStartOfExecution);
+		CHECK(ServiceTests::get(0).serviceType == RequestVerificationService::ServiceType);
 		CHECK(ServiceTests::countErrors() == 1);
 		CHECK(globalVariable == 10);
 	}
@@ -48,14 +50,14 @@ TEST_CASE("ST[08] - Call Tests") {
 		globalVariable = 10;
 
 		fms.include(String<ECSS_FUNCTION_NAME_LENGTH>("test"), &test);
-		Message msg(8, 1, Message::TC, 1);
+		Message msg(FunctionManagementService::ServiceType, FunctionManagementService::MessageType::PerformFunction, Message::TC, 1);
 		msg.appendFixedString(String<ECSS_FUNCTION_NAME_LENGTH>("test"));
 		msg.appendString(String<65>
 		    ("eqrhjweghjhwqgthjkrghthjkdsfhgsdfhjsdjsfdhgkjdfsghfjdgkdfsgdfgsgd"));
 		MessageParser::execute(msg);
 
-		CHECK(ServiceTests::get(0).messageType == 4);
-		CHECK(ServiceTests::get(0).serviceType == 1);
+		CHECK(ServiceTests::get(0).messageType == RequestVerificationService::MessageType::FailedStartOfExecution);
+		CHECK(ServiceTests::get(0).serviceType == RequestVerificationService::ServiceType);
 		CHECK(ServiceTests::countErrors() == 1);
 		CHECK(globalVariable == 10);
 	}
diff --git a/test/Services/LargePacketTransferService.cpp b/test/Services/LargePacketTransferService.cpp
index be5c9fdf9baf89153f22b32e9f15f29e6dee67b3..889cb40b12276fed597a818c8ef0ca287367bc14 100644
--- a/test/Services/LargePacketTransferService.cpp
+++ b/test/Services/LargePacketTransferService.cpp
@@ -13,8 +13,8 @@ TEST_CASE("First Downlink Part Report TM[13,1]", "[service][st13]") {
 	lPT.firstDownlinkPartReport(1, 1, string);
 	REQUIRE(ServiceTests::hasOneMessage());
 	Message report = ServiceTests::get(0);
-	CHECK(report.messageType == 1);
-	CHECK(report.serviceType == 13);
+	CHECK(report.messageType == LargePacketTransferService::MessageType::FirstDownlinkPartReport);
+	CHECK(report.serviceType == LargePacketTransferService::ServiceType);
 	CHECK(report.readUint16() == 1);
 	CHECK(report.readUint16() == 1);
 	uint8_t string2[ECSS_MAX_FIXED_OCTET_STRING_SIZE];
@@ -28,8 +28,8 @@ TEST_CASE("Intermediate Downlink Part Report TM[13,2]", "[service][st13]") {
 	lPT.intermediateDownlinkPartReport(1, 1, string);
 	REQUIRE(ServiceTests::hasOneMessage());
 	Message report = ServiceTests::get(0);
-	CHECK(report.messageType == 2);
-	CHECK(report.serviceType == 13);
+	CHECK(report.messageType == LargePacketTransferService::MessageType::InternalDownlinkPartReport);
+	CHECK(report.serviceType == LargePacketTransferService::ServiceType);
 	CHECK(report.readUint16() == 1);
 	CHECK(report.readUint16() == 1);
 	uint8_t string2[ECSS_MAX_FIXED_OCTET_STRING_SIZE];
@@ -43,8 +43,8 @@ TEST_CASE("Last Downlink Part Report TM[13,3]", "[service][st13]") {
 	lPT.lastDownlinkPartReport(1, 1, string);
 	REQUIRE(ServiceTests::hasOneMessage());
 	Message report = ServiceTests::get(0);
-	CHECK(report.messageType == 3);
-	CHECK(report.serviceType == 13);
+	CHECK(report.messageType == LargePacketTransferService::MessageType::LastDownlinkPartReport);
+	CHECK(report.serviceType == LargePacketTransferService::ServiceType);
 	CHECK(report.readUint16() == 1);
 	CHECK(report.readUint16() == 1);
 	uint8_t string2[ECSS_MAX_FIXED_OCTET_STRING_SIZE];
diff --git a/test/Services/MemoryManagementService.cpp b/test/Services/MemoryManagementService.cpp
index 0d07c04e0a9dbfb720314244c55757bb6d2a44a7..eba53b9e1e38f64149fd046ca2508d430255f734 100644
--- a/test/Services/MemoryManagementService.cpp
+++ b/test/Services/MemoryManagementService.cpp
@@ -14,7 +14,7 @@ TEST_CASE("TC[6,2]", "[service][st06]") {
 	*(pStr + 2) = '\0';
 	uint8_t data[2] = {'h', 'R'};
 
-	Message receivedPacket = Message(6, 2, Message::TC, 1);
+	Message receivedPacket = Message(MemoryManagementService::ServiceType, MemoryManagementService::MessageType::LoadRawMemoryDataAreas, Message::TC, 1);
 	receivedPacket.appendEnum8(MemoryManagementService::MemoryID::EXTERNAL); // Memory ID
 	receivedPacket.appendUint16(2); // Iteration count
 	receivedPacket.appendUint64(reinterpret_cast<uint64_t>(pStr)); // Start address
@@ -38,7 +38,7 @@ TEST_CASE("TC[6,5]", "[service][st06]") {
 	uint8_t checkString[ECSS_MAX_STRING_SIZE];
 	uint16_t readSize = 0, checksum = 0;
 
-	Message receivedPacket = Message(6, 5, Message::TC, 1);
+	Message receivedPacket = Message(MemoryManagementService::ServiceType, MemoryManagementService::MessageType::DumpRawMemoryData, Message::TC, 1);
 	receivedPacket.appendEnum8(MemoryManagementService::MemoryID::EXTERNAL); // Memory ID
 	receivedPacket.appendUint16(3); // Iteration count (Equal to 3 test strings)
 	receivedPacket.appendUint64(reinterpret_cast<uint64_t>(testString_1)); // Start address
@@ -53,8 +53,8 @@ TEST_CASE("TC[6,5]", "[service][st06]") {
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
-	CHECK(response.serviceType == 6);
-	CHECK(response.messageType == 6);
+	CHECK(response.serviceType == MemoryManagementService::ServiceType);
+	CHECK(response.messageType == MemoryManagementService::MessageType::DumpRawMemoryDataReport);
 	REQUIRE(response.dataSize == 55);
 
 	CHECK(response.readEnum8() == MemoryManagementService::MemoryID::EXTERNAL);
@@ -99,7 +99,7 @@ TEST_CASE("TC[6,9]", "[service][st06]") {
 	uint8_t testString_2[8] = "SecStrT";
 	uint16_t readSize = 0, checksum = 0;
 
-	Message receivedPacket = Message(6, 9, Message::TC, 1);
+	Message receivedPacket = Message(MemoryManagementService::ServiceType, MemoryManagementService::MessageType::CheckRawMemoryData, Message::TC, 1);
 	receivedPacket.appendEnum8(MemoryManagementService::MemoryID::EXTERNAL); // Memory ID
 	receivedPacket.appendUint16(2); // Iteration count
 	receivedPacket.appendUint64(reinterpret_cast<uint64_t>(testString_1)); // Start address
@@ -111,8 +111,8 @@ TEST_CASE("TC[6,9]", "[service][st06]") {
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
-	CHECK(response.serviceType == 6);
-	CHECK(response.messageType == 10);
+	CHECK(response.serviceType == MemoryManagementService::ServiceType);
+	CHECK(response.messageType == MemoryManagementService::MessageType::CheckRawMemoryDataReport);
 	REQUIRE(response.dataSize == 27);
 
 	CHECK(response.readEnum8() == MemoryManagementService::MemoryID::EXTERNAL);
diff --git a/test/Services/Parameter.cpp b/test/Services/Parameter.cpp
index 6cf629ee627eb1ced39be89518618663425e0240..3a9b8efec4994e60d7b21a473df4c50c2a7e3787 100644
--- a/test/Services/Parameter.cpp
+++ b/test/Services/Parameter.cpp
@@ -1,10 +1,11 @@
 #include "catch2/catch.hpp"
 #include "Services/Parameter.hpp"
+#include "Services/ParameterService.hpp"
 #include "Message.hpp"
 
 TEST_CASE("Parameter Append") {
 	SECTION("Check correct appending") {
-		Message request = Message(20, 1, Message::TC, 1);
+		Message request = Message(ParameterService::ServiceType, ParameterService::MessageType::ReportParameterValues, Message::TC, 1);
 		Parameter<uint8_t> parameter1 = Parameter<uint8_t>(1);
 		Parameter<uint16_t> parameter2 = Parameter<uint16_t>(500);
 		Parameter<uint32_t> parameter3 = Parameter<uint32_t>(70000);
@@ -21,7 +22,7 @@ TEST_CASE("Parameter Append") {
 
 TEST_CASE("Parameter Set") {
 	SECTION("Check correct setting") {
-		Message request = Message(20, 1, Message::TC, 1);
+		Message request = Message(ParameterService::ServiceType, ParameterService::MessageType::ReportParameterValues, Message::TC, 1);
 		Parameter<uint8_t> parameter1 = Parameter<uint8_t>(1);
 		Parameter<uint16_t> parameter2 = Parameter<uint16_t>(500);
 		Parameter<uint32_t> parameter3 = Parameter<uint32_t>(70000);
diff --git a/test/Services/ParameterService.cpp b/test/Services/ParameterService.cpp
index f29143633e2b692fb55226330627831f094044bc..fa408e094b5241d14157c55a4eac3ea3f9f816f4 100644
--- a/test/Services/ParameterService.cpp
+++ b/test/Services/ParameterService.cpp
@@ -1,6 +1,7 @@
 #include "catch2/catch.hpp"
 #include "Message.hpp"
 #include "ServiceTests.hpp"
+#include "Services/ParameterService.hpp"
 
 static void resetParameterValues() {
 	systemParameters.parameter1.setValue(3);
@@ -10,7 +11,7 @@ static void resetParameterValues() {
 
 TEST_CASE("Parameter Report Subservice") {
 	SECTION("All requested parameters invalid") {
-		Message request = Message(20, 1, Message::TC, 1);
+		Message request = Message(ParameterService::ServiceType, ParameterService::MessageType::ReportParameterValues, Message::TC, 1);
 		request.appendUint16(3);
 		request.appendUint16(54432);
 		request.appendUint16(60000);
@@ -21,8 +22,8 @@ TEST_CASE("Parameter Report Subservice") {
 		CHECK(ServiceTests::count() == 4);
 
 		Message report = ServiceTests::get(3);
-		CHECK(report.serviceType == 20);
-		CHECK(report.messageType == 2);
+		CHECK(report.serviceType == ParameterService::ServiceType);
+		CHECK(report.messageType == ParameterService::MessageType::ParameterValuesReport);
 		CHECK(report.readUint16() == 0);  // the message shall be empty
 
 		ServiceTests::reset();
@@ -30,7 +31,7 @@ TEST_CASE("Parameter Report Subservice") {
 	}
 
 	SECTION("Some requested parameters invalid") {
-		Message request = Message(20, 1, Message::TC, 1);
+		Message request = Message(ParameterService::ServiceType, ParameterService::MessageType::ReportParameterValues, Message::TC, 1);
 		request.appendUint16(3);
 		request.appendUint16(1);
 		request.appendUint16(10000);
@@ -41,8 +42,8 @@ TEST_CASE("Parameter Report Subservice") {
 		CHECK(ServiceTests::count() == 2);
 
 		Message report = ServiceTests::get(1);
-		CHECK(report.serviceType == 20);
-		CHECK(report.messageType == 2);
+		CHECK(report.serviceType == ParameterService::ServiceType);
+		CHECK(report.messageType == ParameterService::MessageType::ParameterValuesReport);
 		CHECK(report.readUint16() == 2);
 		CHECK(report.readUint16() == 1);
 		CHECK(report.readUint16() == 7);
@@ -54,7 +55,7 @@ TEST_CASE("Parameter Report Subservice") {
 	}
 
 	SECTION("Parameters are of different types") {
-		Message request = Message(20, 1, Message::TC, 1);
+		Message request = Message(ParameterService::ServiceType, ParameterService::MessageType::ReportParameterValues, Message::TC, 1);
 		request.appendUint16(3);
 		request.appendUint16(0);
 		request.appendUint16(1);
@@ -63,8 +64,8 @@ TEST_CASE("Parameter Report Subservice") {
 		MessageParser::execute(request);
 
 		Message report = ServiceTests::get(0);
-		CHECK(report.serviceType == 20);
-		CHECK(report.messageType == 2);
+		CHECK(report.serviceType == ParameterService::ServiceType);
+		CHECK(report.messageType == ParameterService::MessageType::ParameterValuesReport);
 		CHECK(report.readUint16() == 3);
 		CHECK(report.readUint16() == 0);
 		CHECK(report.readUint8() == 3);
@@ -80,7 +81,7 @@ TEST_CASE("Parameter Report Subservice") {
 
 TEST_CASE("Parameter Setting Subservice") {
 	SECTION("All parameter IDs are invalid") {
-		Message request = Message(20, 3, Message::TC, 1);
+		Message request = Message(ParameterService::ServiceType, ParameterService::MessageType::SetParameterValues, Message::TC, 1);
 		request.appendUint16(3);
 		request.appendUint16(54432);
 		request.appendUint16(1);
@@ -102,7 +103,7 @@ TEST_CASE("Parameter Setting Subservice") {
 	}
 
 	SECTION("The last parameter ID is invalid") {
-		Message request = Message(20, 3, Message::TC, 1);
+		Message request = Message(ParameterService::ServiceType, ParameterService::MessageType::SetParameterValues, Message::TC, 1);
 		request.appendUint16(3);
 		request.appendUint16(0);
 		request.appendUint8(1);
@@ -126,7 +127,7 @@ TEST_CASE("Parameter Setting Subservice") {
 	}
 
 	SECTION("The middle parameter ID is invalid") {
-		Message request = Message(20, 3, Message::TC, 1);
+		Message request = Message(ParameterService::ServiceType, ParameterService::MessageType::SetParameterValues, Message::TC, 1);
 		request.appendUint16(3);
 		request.appendUint16(0);
 		request.appendUint8(1);
@@ -150,7 +151,7 @@ TEST_CASE("Parameter Setting Subservice") {
 	}
 
 	SECTION("All IDs are valid") {
-		Message request = Message(20, 3, Message::TC, 1);
+		Message request = Message(ParameterService::ServiceType, ParameterService::MessageType::SetParameterValues, Message::TC, 1);
 		request.appendUint16(3);
 		request.appendUint16(0);
 		request.appendUint8(1);
diff --git a/test/Services/RequestVerificationService.cpp b/test/Services/RequestVerificationService.cpp
index df0ea7e26c31c971b940c391f453d9908fa15696..caa88329ad13c6a32bf5fae65be6774cd768997e 100644
--- a/test/Services/RequestVerificationService.cpp
+++ b/test/Services/RequestVerificationService.cpp
@@ -6,14 +6,14 @@
 RequestVerificationService& reqVerifService = Services.requestVerification;
 
 TEST_CASE("TM[1,1]", "[service][st01]") {
-	Message receivedMessage = Message(1, 1, Message::TC, 3);
+	Message receivedMessage = Message(RequestVerificationService::ServiceType, RequestVerificationService::MessageType::SuccessfulAcceptanceReport, Message::TC, 3);
 	reqVerifService.successAcceptanceVerification(receivedMessage);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
 	// Checks for the data-members of the object response
-	CHECK(response.serviceType == 1);
-	CHECK(response.messageType == 1);
+	CHECK(response.serviceType == RequestVerificationService::ServiceType);
+	CHECK(response.messageType ==  RequestVerificationService::MessageType::SuccessfulAcceptanceReport);
 	CHECK(response.packetType == Message::TM); // packet type
 	CHECK(response.applicationId == 0);
 	REQUIRE(response.dataSize == 4); // dataSize is the number of bytes of data array
@@ -27,14 +27,14 @@ TEST_CASE("TM[1,1]", "[service][st01]") {
 }
 
 TEST_CASE("TM[1,2]", "[service][st01]") {
-	Message receivedMessage = Message(1, 2, Message::TC, 3);
+	Message receivedMessage = Message(RequestVerificationService::ServiceType, RequestVerificationService::MessageType::FailedAcceptanceReport, Message::TC, 3);
 	reqVerifService.failAcceptanceVerification(receivedMessage, ErrorHandler::UnknownAcceptanceError);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
 	// Checks for the data-members of the object response
-	CHECK(response.serviceType == 1);
-	CHECK(response.messageType == 2);
+	CHECK(response.serviceType == RequestVerificationService::ServiceType);
+	CHECK(response.messageType ==  RequestVerificationService::MessageType::FailedAcceptanceReport);
 	CHECK(response.packetType == Message::TM); // packet type
 	CHECK(response.applicationId == 0);
 	REQUIRE(response.dataSize == 6); // dataSize is the number of bytes of data array
@@ -49,14 +49,14 @@ TEST_CASE("TM[1,2]", "[service][st01]") {
 }
 
 TEST_CASE("TM[1,3]", "[service][st01]") {
-	Message receivedMessage = Message(1, 3, Message::TC, 3);
+	Message receivedMessage = Message(RequestVerificationService::ServiceType, RequestVerificationService::MessageType::SuccessfulStartOfExecution, Message::TC, 3);
 	reqVerifService.successStartExecutionVerification(receivedMessage);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
 	// Checks for the data-members of the object response
-	CHECK(response.serviceType == 1);
-	CHECK(response.messageType == 3);
+	CHECK(response.serviceType == RequestVerificationService::ServiceType);
+	CHECK(response.messageType ==  RequestVerificationService::MessageType::SuccessfulStartOfExecution);
 	CHECK(response.packetType == Message::TM); // packet type
 	CHECK(response.applicationId == 0);
 	REQUIRE(response.dataSize == 4); // dataSize is the number of bytes of data array
@@ -70,14 +70,14 @@ TEST_CASE("TM[1,3]", "[service][st01]") {
 }
 
 TEST_CASE("TM[1,4]", "[service][st01]") {
-	Message receivedMessage = Message(1, 2, Message::TC, 3);
+	Message receivedMessage = Message(RequestVerificationService::ServiceType, RequestVerificationService::MessageType::FailedAcceptanceReport, Message::TC, 3);
 	reqVerifService.failStartExecutionVerification(receivedMessage, ErrorHandler::UnknownExecutionStartError);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
 	// Checks for the data-members of the object response
-	CHECK(response.serviceType == 1);
-	CHECK(response.messageType == 4);
+	CHECK(response.serviceType == RequestVerificationService::ServiceType);
+	CHECK(response.messageType ==  RequestVerificationService::MessageType::FailedStartOfExecution);
 	CHECK(response.packetType == Message::TM); // packet type
 	CHECK(response.applicationId == 0);
 	REQUIRE(response.dataSize == 6); // dataSize is the number of bytes of data array
@@ -92,14 +92,14 @@ TEST_CASE("TM[1,4]", "[service][st01]") {
 }
 
 TEST_CASE("TM[1,5]", "[service][st01]") {
-	Message receivedMessage = Message(1, 5, Message::TC, 3);
+	Message receivedMessage = Message(RequestVerificationService::ServiceType, RequestVerificationService::MessageType::SuccessfulProgressOfExecution, Message::TC, 3);
 	reqVerifService.successProgressExecutionVerification(receivedMessage, 0);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
 	// Checks for the data-members of the object response
-	CHECK(response.serviceType == 1);
-	CHECK(response.messageType == 5);
+	CHECK(response.serviceType == RequestVerificationService::ServiceType);
+	CHECK(response.messageType ==  RequestVerificationService::MessageType::SuccessfulProgressOfExecution);
 	CHECK(response.packetType == Message::TM); // packet type
 	CHECK(response.applicationId == 0);
 	REQUIRE(response.dataSize == 5); // dataSize is the number of bytes of data array
@@ -114,14 +114,14 @@ TEST_CASE("TM[1,5]", "[service][st01]") {
 }
 
 TEST_CASE("TM[1,6]", "[service][st01]") {
-	Message receivedMessage = Message(1, 5, Message::TC, 3);
+	Message receivedMessage = Message(RequestVerificationService::ServiceType, RequestVerificationService::MessageType::SuccessfulProgressOfExecution, Message::TC, 3);
 	reqVerifService.failProgressExecutionVerification(receivedMessage, ErrorHandler::UnknownExecutionProgressError, 0);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
 	// Checks for the data-members of the object response
-	CHECK(response.serviceType == 1);
-	CHECK(response.messageType == 6);
+	CHECK(response.serviceType == RequestVerificationService::ServiceType);
+	CHECK(response.messageType ==  RequestVerificationService::MessageType::FailedProgressOfExecution);
 	CHECK(response.packetType == Message::TM); // packet type
 	CHECK(response.applicationId == 0);
 	REQUIRE(response.dataSize == 7); // dataSize is the number of bytes of data array
@@ -137,14 +137,14 @@ TEST_CASE("TM[1,6]", "[service][st01]") {
 }
 
 TEST_CASE("TM[1,7]", "[service][st01]") {
-	Message receivedMessage = Message(1, 7, Message::TC, 3);
+	Message receivedMessage = Message(RequestVerificationService::ServiceType, RequestVerificationService::MessageType::SuccessfulCompletionOfExecution, Message::TC, 3);
 	reqVerifService.successCompletionExecutionVerification(receivedMessage);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
 	// Checks for the data-members of the object response
-	CHECK(response.serviceType == 1);
-	CHECK(response.messageType == 7);
+	CHECK(response.serviceType == RequestVerificationService::ServiceType);
+	CHECK(response.messageType ==  RequestVerificationService::MessageType::SuccessfulCompletionOfExecution);
 	CHECK(response.packetType == Message::TM); // packet type
 	CHECK(response.applicationId == 0);
 	REQUIRE(response.dataSize == 4); // dataSize is the number of bytes of data array
@@ -158,13 +158,13 @@ TEST_CASE("TM[1,7]", "[service][st01]") {
 }
 
 TEST_CASE("TM[1,8]", "[service][st01]") {
-	Message receivedMessage = Message(1, 8, Message::TC, 3);
+	Message receivedMessage = Message(RequestVerificationService::ServiceType, RequestVerificationService::MessageType::FailedCompletionOfExecution, Message::TC, 3);
 	reqVerifService.failCompletionExecutionVerification(receivedMessage, ErrorHandler::UnknownExecutionCompletionError);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
-	CHECK(response.serviceType == 1);
-	CHECK(response.messageType == 8);
+	CHECK(response.serviceType == RequestVerificationService::ServiceType);
+	CHECK(response.messageType ==  RequestVerificationService::MessageType::FailedCompletionOfExecution);
 	CHECK(response.packetType == Message::TM); // packet type
 	CHECK(response.applicationId == 0);
 	REQUIRE(response.dataSize == 6); // dataSize is the number of bytes of data array
@@ -179,14 +179,14 @@ TEST_CASE("TM[1,8]", "[service][st01]") {
 }
 
 TEST_CASE("TM[1,10]", "[service][st01]") {
-	Message receivedMessage = Message(1, 10, Message::TC, 3);
+	Message receivedMessage = Message(RequestVerificationService::ServiceType, RequestVerificationService::MessageType::FailedRoutingReport, Message::TC, 3);
 	reqVerifService.failRoutingVerification(receivedMessage, ErrorHandler::UnknownRoutingError);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
 	// Checks for the data-members of the object response
-	CHECK(response.serviceType == 1);
-	CHECK(response.messageType == 10);
+	CHECK(response.serviceType == RequestVerificationService::ServiceType);
+	CHECK(response.messageType ==  RequestVerificationService::MessageType::FailedRoutingReport);
 	CHECK(response.packetType == Message::TM); // packet type
 	CHECK(response.applicationId == 0);
 	REQUIRE(response.dataSize == 6); // dataSize is the number of bytes of data array
diff --git a/test/Services/TestService.cpp b/test/Services/TestService.cpp
index b58e5b902ce0a9677deeb49004f66cbb9aafeefb..7fb18f85a7c52fad0349ce9fbde5011736b13d7e 100644
--- a/test/Services/TestService.cpp
+++ b/test/Services/TestService.cpp
@@ -6,25 +6,25 @@
 TestService& testService = Services.testService;
 
 TEST_CASE("TM[17,1]", "[service][st17]") {
-	Message receivedPacket = Message(17, 1, Message::TC, 1);
+	Message receivedPacket = Message(TestService::ServiceType, TestService::MessageType::AreYouAliveTest, Message::TC, 1);
 	MessageParser::execute(receivedPacket);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
-	CHECK(response.serviceType == 17);
-	CHECK(response.messageType == 2);
+	CHECK(response.serviceType == TestService::ServiceType);
+	CHECK(response.messageType == TestService::MessageType::AreYouAliveTestReport);
 	REQUIRE(response.dataSize == 0);
 }
 
 TEST_CASE("TM[17,3]", "[service][st17]") {
-	Message receivedPacket = Message(17, 3, Message::TC, 1);
+	Message receivedPacket = Message(TestService::ServiceType, TestService::MessageType::OnBoardConnectionTest, Message::TC, 1);
 	receivedPacket.appendEnum16(40);
 	MessageParser::execute(receivedPacket);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
-	CHECK(response.serviceType == 17);
-	CHECK(response.messageType == 4);
+	CHECK(response.serviceType == TestService::ServiceType);
+	CHECK(response.messageType == TestService::MessageType::OnBoardConnectionTestReport);
 	REQUIRE(response.dataSize == 2);
 	CHECK(response.readEnum16() == 40);
 }
diff --git a/test/Services/TimeBasedSchedulingService.cpp b/test/Services/TimeBasedSchedulingService.cpp
index e74ff765734bd695d8c0a8930f36158d5e2d4b20..420deabfb606e9dfa2fb01e794387aecb05f112c 100644
--- a/test/Services/TimeBasedSchedulingService.cpp
+++ b/test/Services/TimeBasedSchedulingService.cpp
@@ -65,7 +65,7 @@ auto activityInsertion(TimeBasedSchedulingService& timeService) {
 		messagesPopulated = true; // Indicate initialized test messages
 	}
 
-	Message receivedMessage(11, 4, Message::TC, 1);
+	Message receivedMessage(TimeBasedSchedulingService::ServiceType, TimeBasedSchedulingService::MessageType::InsertActivities, Message::TC, 1);
 	receivedMessage.appendUint16(4); // Total number of requests
 
 	// Test activity 1
@@ -95,7 +95,7 @@ TimeBasedSchedulingService & timeBasedService = Services.timeBasedScheduling;
 
 TEST_CASE("TC[11,1] Enable Schedule Execution", "[service][st11]") {
 	Services.reset();
-	Message receivedMessage(11, 1, Message::TC, 1);
+	Message receivedMessage(TimeBasedSchedulingService::ServiceType, TimeBasedSchedulingService::MessageType::EnableTimeBasedScheduleExecutionFunction, Message::TC, 1);
 
 	MessageParser::execute(receivedMessage);//timeService.enableScheduleExecution(receivedMessage);
 	CHECK(unit_test::Tester::executionFunctionStatus(timeBasedService));
@@ -103,7 +103,7 @@ TEST_CASE("TC[11,1] Enable Schedule Execution", "[service][st11]") {
 
 TEST_CASE("TC[11,2] Disable Schedule Execution", "[service][st11]") {
 	Services.reset();
-	Message receivedMessage(11, 2, Message::TC, 1);
+	Message receivedMessage(TimeBasedSchedulingService::ServiceType, TimeBasedSchedulingService::MessageType::DisableTimeBasedScheduleExecutionFunction, Message::TC, 1);
 
 	MessageParser::execute(receivedMessage);//timeService.disableScheduleExecution(receivedMessage);
 	CHECK(not unit_test::Tester::executionFunctionStatus(timeBasedService));
@@ -125,7 +125,7 @@ TEST_CASE("TC[11,4] Activity Insertion", "[service][st11]") {
 	REQUIRE(testMessage4.bytesEqualWith(scheduledActivities.at(3)->request));
 
 	SECTION("Error throw test") {
-		Message receivedMessage(11, 4, Message::TC, 1);
+		Message receivedMessage(TimeBasedSchedulingService::ServiceType, TimeBasedSchedulingService::MessageType::InsertActivities, Message::TC, 1);
 		receivedMessage.appendUint16(1); // Total number of requests
 
 		receivedMessage.appendUint32(currentTime - 15564350);
@@ -137,7 +137,7 @@ TEST_CASE("TC[11,4] Activity Insertion", "[service][st11]") {
 
 TEST_CASE("TC[11,15] Time shift all scheduled activities", "[service][st11]") {
 	Services.reset();
-	Message receivedMessage(11, 15, Message::TC, 1);
+	Message receivedMessage(TimeBasedSchedulingService::ServiceType, TimeBasedSchedulingService::MessageType::TimeShiftALlScheduledActivities, Message::TC, 1);
 
 	auto scheduledActivities = activityInsertion(timeBasedService);
 	const int32_t timeShift = 6789;
@@ -178,7 +178,7 @@ TEST_CASE("TC[11,15] Time shift all scheduled activities", "[service][st11]") {
 
 TEST_CASE("TC[11,7] Time shift activities by ID", "[service][st11]") {
 	Services.reset();
-	Message receivedMessage(11, 7, Message::TC, 1);
+	Message receivedMessage(TimeBasedSchedulingService::ServiceType, TimeBasedSchedulingService::MessageType::TimeShiftActivitiesById, Message::TC, 1);
 
 	auto scheduledActivities = activityInsertion(timeBasedService);
 	scheduledActivities.at(2)->requestID.applicationID = 4; // Append a dummy application ID
@@ -241,7 +241,7 @@ TEST_CASE("TC[11,7] Time shift activities by ID", "[service][st11]") {
 
 TEST_CASE("TC[11,9] Detail report scheduled activities by ID", "[service][st11]") {
 	Services.reset();
-	Message receivedMessage(11, 9, Message::TC, 1);
+	Message receivedMessage(TimeBasedSchedulingService::ServiceType, TimeBasedSchedulingService::MessageType::DetailReportActivitiesById, Message::TC, 1);
 
 	auto scheduledActivities = activityInsertion(timeBasedService);
 
@@ -300,7 +300,7 @@ TEST_CASE("TC[11,9] Detail report scheduled activities by ID", "[service][st11]"
 
 TEST_CASE("TC[11,12] Summary report scheduled activities by ID", "[service][st11]") {
 	Services.reset();
-	Message receivedMessage(11, 12, Message::TC, 1);
+	Message receivedMessage(TimeBasedSchedulingService::ServiceType, TimeBasedSchedulingService::MessageType::ActivitiesSummaryReportById, Message::TC, 1);
 
 	auto scheduledActivities = activityInsertion(timeBasedService);
 
@@ -362,7 +362,7 @@ TEST_CASE("TC[11,16] Detail report all scheduled activities", "[service][st11]")
 	Services.reset();
 	auto scheduledActivities = activityInsertion(timeBasedService);
 
-	Message receivedMessage(11, 16, Message::TC, 1);
+	Message receivedMessage(TimeBasedSchedulingService::ServiceType, TimeBasedSchedulingService::MessageType::DetailReportAllScheduledActivities, Message::TC, 1);
 	timeBasedService.detailReportAllActivities(receivedMessage);
 	REQUIRE(ServiceTests::hasOneMessage());
 
@@ -388,7 +388,7 @@ TEST_CASE("TC[11,16] Detail report all scheduled activities", "[service][st11]")
 
 TEST_CASE("TC[11,5] Activity deletion by ID", "[service][st11]") {
 	Services.reset();
-	Message receivedMessage(11, 5, Message::TC, 1);
+	Message receivedMessage(TimeBasedSchedulingService::ServiceType, TimeBasedSchedulingService::MessageType::DeleteActivitiesById, Message::TC, 1);
 
 	auto scheduledActivities = activityInsertion(timeBasedService);
 
@@ -426,7 +426,7 @@ TEST_CASE("TC[11,3] Reset schedule", "[service][st11]") {
 	Services.reset();
 	activityInsertion(timeBasedService);
 
-	Message receivedMessage(11, 3, Message::TC, 1);
+	Message receivedMessage(TimeBasedSchedulingService::ServiceType, TimeBasedSchedulingService::MessageType::ResetTimeBasedSchedule, Message::TC, 1);
 
 	timeBasedService.resetSchedule(receivedMessage);
 	auto scheduledActivities = unit_test::Tester::scheduledActivities(timeBasedService); // Get the new list
diff --git a/test/Services/TimeManagementService.cpp b/test/Services/TimeManagementService.cpp
index f196f8ebc4b5968f87a101bb3f9eea9cabeabc21..da62d828dcef9ace5b3e2c6d4ab83748884cd8f4 100644
--- a/test/Services/TimeManagementService.cpp
+++ b/test/Services/TimeManagementService.cpp
@@ -23,13 +23,13 @@ TEST_CASE("TM[9,3]", "[service][st09]") {
 
 	timeService.cdsTimeReport(TimeInfo);
 	Message response = ServiceTests::get(0);
-	CHECK(response.serviceType == 9);
-	CHECK(response.messageType == 3);
+	CHECK(response.serviceType == TimeManagementService::ServiceType);
+	CHECK(response.messageType == TimeManagementService::MessageType::CdsTimeReport);
 	CHECK(response.packetType == Message::TM);
 	CHECK(response.readHalfword() == static_cast<uint16_t>(timeFormat >> 32));
 	CHECK(response.readWord() == static_cast<uint32_t>(timeFormat));
 
-	Message message = Message(9, 128, Message::TC, 3);
+	Message message = Message(TimeManagementService::ServiceType, 128, Message::TC, 3);
 	message.appendHalfword(static_cast<uint16_t>(timeFormat >> 32));
 	message.appendWord(static_cast<uint32_t>(timeFormat));
 
@@ -58,13 +58,13 @@ TEST_CASE("TM[9,3]", "[service][st09]") {
 
 	timeService.cdsTimeReport(TimeInfo);
 	response = ServiceTests::get(1);
-	CHECK(response.serviceType == 9);
-	CHECK(response.messageType == 3);
+	CHECK(response.serviceType == TimeManagementService::ServiceType);
+	CHECK(response.messageType == TimeManagementService::MessageType::CdsTimeReport);
 	CHECK(response.packetType == Message::TM);
 	CHECK(response.readHalfword() == static_cast<uint16_t>(timeFormat >> 32));
 	CHECK(response.readWord() == static_cast<uint32_t>(timeFormat));
 
-	message = Message(9, 128, Message::TC, 3);
+	message = Message(TimeManagementService::ServiceType, 128, Message::TC, 3);
 	message.appendHalfword(static_cast<uint16_t>(timeFormat >> 32));
 	message.appendWord(static_cast<uint32_t>(timeFormat));