diff --git a/inc/ECSS_Definitions.hpp b/inc/ECSS_Definitions.hpp
index 24c490d77bb42b615960788e50d9c0ad8f4d22c8..27ba18b7cdc0c72d611993b0b38aba4a4a77c745 100644
--- a/inc/ECSS_Definitions.hpp
+++ b/inc/ECSS_Definitions.hpp
@@ -232,5 +232,11 @@ inline struct {
  */
 inline const uint8_t ECSSMaxMonitoringDefinitions = 4;
 
+/**
+ * 6.18.2.2 The applicationId that is assigned on the specific device that runs these Services.
+ * In the ECSS-E-ST-70-41C the application ID is also referred as application process.
+ */
+inline const uint16_t ApplicationId = 1;
+
 /** @} */
 #endif // ECSS_SERVICES_ECSS_DEFINITIONS_H
diff --git a/inc/Message.hpp b/inc/Message.hpp
index 39f3ced9559551cb8abfaa14676bea1601415fe0..360867b90b18cc9cc6fbca5d1ca78f33a8d95007 100644
--- a/inc/Message.hpp
+++ b/inc/Message.hpp
@@ -89,7 +89,7 @@ public:
 	 */
 	uint16_t applicationId;
 
-	// 7.4.3.1b
+	//> 7.4.3.1b
 	uint16_t messageTypeCounter = 0;
 
 	// 7.4.1, as defined in CCSDS 133.0-B-1
@@ -233,6 +233,7 @@ public:
 
 public:
 	Message(uint8_t serviceType, uint8_t messageType, PacketType packetType, uint16_t applicationId);
+	Message(uint8_t serviceType, uint8_t messageType, Message::PacketType packetType);
 
 	/**
 	 * Adds a single-byte boolean value to the end of the message
diff --git a/inc/Service.hpp b/inc/Service.hpp
index 53bf0bae49366814e9e8bff2a0d1436abbb877c8..b7ffbab71f5e843ac38a12cb5107a742d71239d2 100644
--- a/inc/Service.hpp
+++ b/inc/Service.hpp
@@ -4,8 +4,6 @@
 #include <cstdint>
 #include "Message.hpp"
 
-class ServicePool;
-
 /**
  * @defgroup Services Services
  * ECSS Services implementations, as defined in ECSS-E-ST-70-41C. These services receive TC Messages, and output TM
@@ -35,10 +33,9 @@ protected:
 	 * @param messageType The ID of the message type, as specified in the standard. For example,
 	 *                    the TC[17,3] message has `messageType = 3`.
 	 * @todo See if the Message must be returned by reference
-	 * @todo Set the application ID to the current application
 	 */
 	Message createTM(uint8_t messageType) {
-		return Message(serviceType, messageType, Message::TM, 0);
+		return Message(serviceType, messageType, Message::TM);
 	}
 
 	/**
diff --git a/inc/ServicePool.hpp b/inc/ServicePool.hpp
index b93a7dbae7cdc3a439c5da17694f06fc08064ff3..080a39718f38f9a5f9faee3d2ece4956b524d7c3 100644
--- a/inc/ServicePool.hpp
+++ b/inc/ServicePool.hpp
@@ -31,7 +31,6 @@ class ServicePool {
 	 * the number of the service, while the least significant 8 bits are the number of the Message. The value is the
 	 * counter of each MessageType.
 	 */
-
 	etl::map<uint16_t, uint16_t, ECSSTotalMessageTypes> messageTypeCounter;
 
 	/**
@@ -100,6 +99,7 @@ public:
 	TimeBasedSchedulingService timeBasedScheduling;
 #endif
 
+
 	/**
 	 * The default ServicePool constructor
 	 */
diff --git a/inc/Services/DummyService.hpp b/inc/Services/DummyService.hpp
index 605825d70ab1e015a075713643126d8b382ab15d..039828ffa340614c3a2626aad02e40429a12dcbc 100644
--- a/inc/Services/DummyService.hpp
+++ b/inc/Services/DummyService.hpp
@@ -20,12 +20,16 @@ public:
 		LogString = 128,
 	};
 
+	DummyService() {
+		serviceType = ServiceType;
+	}
+
 	/**
      * Send data as a part of a custom ECSS Message
      * Creates a TM[128, 128]
      */
 	void logAsECSSMessage(const etl::string<LOGGER_MAX_MESSAGE_SIZE>& data) {
-		Message log(ServiceType, MessageType::LogString, Message::TM, 1);
+		Message log = createTM(MessageType::LogString);
 		log.appendString(data);
 		storeMessage(log);
 	}
diff --git a/inc/Services/EventActionService.hpp b/inc/Services/EventActionService.hpp
index 6ed438d8f07834d475c6ada312d2c3ec8d1555d8..b9c33870abc8d89c1404c461228d006b449859d8 100644
--- a/inc/Services/EventActionService.hpp
+++ b/inc/Services/EventActionService.hpp
@@ -2,8 +2,8 @@
 #define ECSS_SERVICES_EVENTACTIONSERVICE_HPP
 
 #include "Service.hpp"
-#include "etl/String.hpp"
 #include "Services/EventReportService.hpp"
+#include "etl/String.hpp"
 #include "etl/multimap.h"
 
 /**
@@ -39,7 +39,6 @@ private:
 	void executeAction(uint16_t eventID);
 
 public:
-
 	inline static const uint8_t ServiceType = 19;
 
 	enum MessageType : uint8_t {
@@ -56,8 +55,8 @@ public:
 
 	struct EventActionDefinition {
 		// TODO: APID = 0 is the Ground Station APID. This should be changed
-		uint16_t applicationId = 0;
-		uint16_t eventDefinitionID = 65535; // The ID of the event that might take place
+		uint16_t applicationId = ApplicationId;
+		uint16_t eventDefinitionID = 65535;   // The ID of the event that might take place
 		uint16_t eventActionDefinitionID = 0; // The ID of the event-action
 		String<64> request = "";
 		bool enabled = false;
@@ -66,10 +65,10 @@ public:
 	friend EventReportService;
 
 	etl::multimap<uint16_t, EventActionDefinition, ECSSEventActionStructMapSize>
-		eventActionDefinitionMap;
+	    eventActionDefinitionMap;
 
 	EventActionService() {
-		serviceType = 19;
+		serviceType = ServiceType;
 		eventActionFunctionStatus = true;
 	}
 
diff --git a/inc/Services/EventReportService.hpp b/inc/Services/EventReportService.hpp
index 839dff8bc3ca013acee789fbb9ad257b730fa18e..f58dbeaecbe66c68a661b257aa1e3d94845b3ff7 100644
--- a/inc/Services/EventReportService.hpp
+++ b/inc/Services/EventReportService.hpp
@@ -1,8 +1,8 @@
 #ifndef ECSS_SERVICES_EVENTREPORTSERVICE_HPP
 #define ECSS_SERVICES_EVENTREPORTSERVICE_HPP
 
-#include "Service.hpp"
 #include <etl/bitset.h>
+#include "Service.hpp"
 
 /**
  * Implementation of ST[05] event reporting service
@@ -20,7 +20,6 @@ private:
 	etl::bitset<numberOfEvents> stateOfEvents;
 
 public:
-
 	inline static const uint8_t ServiceType = 5;
 
 	enum MessageType : uint8_t {
@@ -52,7 +51,7 @@ public:
 
 	EventReportService() {
 		stateOfEvents.set();
-		serviceType = 5;
+		serviceType = ServiceType;
 		lowSeverityReportCount = 0;
 		mediumSeverityReportCount = 0;
 		highSeverityReportCount = 0;
diff --git a/inc/Services/FunctionManagementService.hpp b/inc/Services/FunctionManagementService.hpp
index 4dd0922560dc4d550045ade585dc3b5d4e2dd942..422f98dd6b790bd0a21bc110d35e33b19d3efa2b 100644
--- a/inc/Services/FunctionManagementService.hpp
+++ b/inc/Services/FunctionManagementService.hpp
@@ -45,7 +45,9 @@ public:
 	 * Constructs the function pointer index with all the necessary functions at initialization time
 	 * These functions need to be in scope. Un-default when needed.
 	 */
-	FunctionManagementService() = default;
+	FunctionManagementService() {
+		serviceType = ServiceType;
+	}
 
 	/**
 	 * Calls the function described in the TC[8,1] message *msg*, passing the arguments contained
diff --git a/inc/Services/HousekeepingService.hpp b/inc/Services/HousekeepingService.hpp
index 2336f094e8e15a0afee5f28927502541494fee86..08f475240428b172ea6509edaa94145733e66295 100644
--- a/inc/Services/HousekeepingService.hpp
+++ b/inc/Services/HousekeepingService.hpp
@@ -1,11 +1,11 @@
 #ifndef ECSS_SERVICES_HOUSEKEEPINGSERVICE_HPP
 #define ECSS_SERVICES_HOUSEKEEPINGSERVICE_HPP
 
-#include "etl/map.h"
 #include "ECSS_Definitions.hpp"
-#include "Service.hpp"
 #include "ErrorHandler.hpp"
 #include "Helpers/HousekeepingStructure.hpp"
+#include "Service.hpp"
+#include "etl/map.h"
 
 /**
  * Implementation of the ST[03] Housekeeping Reporting Service. The job of the Housekeeping Service is to store
@@ -31,11 +31,11 @@ private:
 	static bool existsInVector(const etl::vector<uint16_t, ECSSMaxSimplyCommutatedParameters>& ids,
 	                           uint16_t parameterId);
 
-    /**
+	/**
      * Initializes Housekeeping Structures with the Parameters found in the obc-software.
      * The function definition is also found in the obc-software repo.
      */
-    void initializeHousekeepingStructures();
+	void initializeHousekeepingStructures();
 
 public:
 	inline static const uint8_t ServiceType = 3;
@@ -60,9 +60,10 @@ public:
 		HousekeepingPeriodicPropertiesReport = 35,
 	};
 
-    HousekeepingService() {
-        initializeHousekeepingStructures();
-    };
+	HousekeepingService() {
+		serviceType = ServiceType;
+		initializeHousekeepingStructures();
+	};
 
 	/**
 	 * Implementation of TC[3,1]. Request to create a housekeeping parameters report structure.
diff --git a/inc/Services/LargePacketTransferService.hpp b/inc/Services/LargePacketTransferService.hpp
index a3ef0a2770c0a745d80d31283f0ecb925bd10b98..3f14695fb19b0aa25edef4d0405fa21184e4c502 100644
--- a/inc/Services/LargePacketTransferService.hpp
+++ b/inc/Services/LargePacketTransferService.hpp
@@ -1,8 +1,8 @@
 #ifndef ECSS_SERVICES_LARGEPACKETTRANSFERSERVICE_HPP
 #define ECSS_SERVICES_LARGEPACKETTRANSFERSERVICE_HPP
 
-#include "Service.hpp"
 #include <etl/String.hpp>
+#include "Service.hpp"
 
 /**
  * Implementation of the ST[13] large packet transfer service
@@ -16,7 +16,6 @@
 
 class LargePacketTransferService : public Service {
 public:
-
 	inline static const uint8_t ServiceType = 13;
 
 
@@ -30,11 +29,11 @@ public:
 	 * Default constructor since only functions will be used.
 	 */
 	LargePacketTransferService() {
-		serviceType = 13;
+		serviceType = ServiceType;
 	}
 
 	/**
-	 * Function that handles the first part of the download report
+	 * TM[13,1] Function that handles the first part of the download report
 	 * @param largeMessageTransactionIdentifier The identifier of the large packet
 	 * @param partSequenceNumber The identifier of the part of the large packet
 	 * @param string The data contained in this part of the large packet
@@ -43,7 +42,7 @@ public:
 	                             const String<ECSSMaxFixedOctetStringSize>& string);
 
 	/**
-	 * Function that handles the n-2 parts of tbe n-part download report
+	 * TM[13,2] Function that handles the n-2 parts of tbe n-part download report
 	 * @param largeMessageTransactionIdentifier The identifier of the large packet
 	 * @param partSequenceNumber The identifier of the part of the large packet
 	 * @param string The data contained in this part of the large packet
@@ -52,7 +51,7 @@ public:
 	                                    const String<ECSSMaxFixedOctetStringSize>& string);
 
 	/**
-	 * Function that handles the last part of the download report
+	 * TM[13,3] Function that handles the last part of the download report
 	 * @param largeMessageTransactionIdentifier The identifier of the large packet
 	 * @param partSequenceNumber The identifier of the part of the large packet
 	 * @param string The data contained in this part of the large packet
@@ -64,20 +63,20 @@ public:
 	// a composeECSS function ready, I just return the given string.
 	// @TODO: Modify these functions properly
 	/**
-	 * Function that handles the first part of the uplink request
+	 * TC[13,9] Function that handles the first part of the uplink request
 	 * @param string This will change when these function will be modified
 	 */
 	String<ECSSMaxFixedOctetStringSize> firstUplinkPart(const String<ECSSMaxFixedOctetStringSize>& string);
 
 	/**
-	 * Function that handles the n-2 parts of tbe n-part uplink request
+	 * TC[13,10] Function that handles the n-2 parts of the n-part uplink request
 	 * @param string This will change when these function will be modified
 	 */
 	String<ECSSMaxFixedOctetStringSize>
 	intermediateUplinkPart(const String<ECSSMaxFixedOctetStringSize>& string);
 
 	/**
-	 * Function that handles the last part of the uplink request
+	 * TC[13,11] Function that handles the last part of the uplink request
 	 * @param string This will change when these function will be modified
 	 */
 	String<ECSSMaxFixedOctetStringSize> lastUplinkPart(const String<ECSSMaxFixedOctetStringSize>& string);
diff --git a/inc/Services/OnBoardMonitoringService.hpp b/inc/Services/OnBoardMonitoringService.hpp
index 1ef954f2f6f4356436047b1909bc75dcd95d45b4..6af64f36094d4ddd577ba813b1a92da81d464c59 100644
--- a/inc/Services/OnBoardMonitoringService.hpp
+++ b/inc/Services/OnBoardMonitoringService.hpp
@@ -40,6 +40,11 @@ public:
 		ReportStatusOfParameterMonitoringDefinition = 13,
 		ParameterMonitoringDefinitionStatusReport = 14
 	};
+
+	OnBoardMonitoringService() {
+		serviceType = ServiceType;
+	}
+
 	/**
 	 * The maximum time between two transition reports.
 	 * Measured in "on-board parameter minimum sampling interval" units (see 5.4.3.2c in ECSS-E-ST-70-41C).
diff --git a/inc/Services/ParameterService.hpp b/inc/Services/ParameterService.hpp
index 437bd395ad06cffe0a97ef1d2959d4f2c531ee2f..9ee75040c04d06d71ec4c9571c65e5e58df8bf98 100644
--- a/inc/Services/ParameterService.hpp
+++ b/inc/Services/ParameterService.hpp
@@ -3,9 +3,9 @@
 
 #include <optional>
 #include "ECSS_Definitions.hpp"
-#include "Service.hpp"
 #include "ErrorHandler.hpp"
 #include "Helpers/Parameter.hpp"
+#include "Service.hpp"
 #include "etl/map.h"
 
 /**
@@ -57,6 +57,7 @@ public:
 	 * by calling \fn initializeParametersArray
 	 */
 	ParameterService() {
+		serviceType = ServiceType;
 		initializeParameterMap();
 	}
 
diff --git a/inc/Services/RealTimeForwardingControlService.hpp b/inc/Services/RealTimeForwardingControlService.hpp
index 5e42edbeadf9da26029f9b8d5fb5bd357d135a65..a34997a90fcd75cac73f1ea390a903edae4118d6 100644
--- a/inc/Services/RealTimeForwardingControlService.hpp
+++ b/inc/Services/RealTimeForwardingControlService.hpp
@@ -17,7 +17,7 @@
  *
  * @author Konstantinos Petridis <petridkon@gmail.com>
  */
-class RealTimeForwardingControlService {
+class RealTimeForwardingControlService : Service {
 public:
 	inline static const uint8_t ServiceType = 14;
 
@@ -25,7 +25,9 @@ public:
 		AddReportTypesToAppProcessConfiguration = 1,
 	};
 
-	RealTimeForwardingControlService() = default;
+	RealTimeForwardingControlService() {
+		serviceType = ServiceType;
+	}
 
 	/**
 	 * Contains the Application IDs, controlled by the Service.
diff --git a/inc/Services/RequestVerificationService.hpp b/inc/Services/RequestVerificationService.hpp
index c6ccd8720f2a8de05349959fe3caaffe097e3ffd..08c00834cc68bbc5897a57474d5cce7976653263 100644
--- a/inc/Services/RequestVerificationService.hpp
+++ b/inc/Services/RequestVerificationService.hpp
@@ -1,10 +1,10 @@
 #ifndef ECSS_SERVICES_REQUESTVERIFICATIONSERVICE_HPP
 #define ECSS_SERVICES_REQUESTVERIFICATIONSERVICE_HPP
 
-#include "Service.hpp"
-#include "Message.hpp"
-#include "ErrorHandler.hpp"
 #include "ECSS_Definitions.hpp"
+#include "ErrorHandler.hpp"
+#include "Message.hpp"
+#include "Service.hpp"
 
 /**
  * Implementation of the ST[01] request verification service
@@ -20,7 +20,6 @@
  */
 class RequestVerificationService : public Service {
 public:
-
 	inline static const uint8_t ServiceType = 1;
 
 	enum MessageType : uint8_t {
@@ -36,7 +35,7 @@ public:
 	};
 
 	RequestVerificationService() {
-		serviceType = 1;
+		serviceType = ServiceType;
 	}
 
 	/**
@@ -133,7 +132,7 @@ public:
 	 * telecommand packet that failed the routing
 	 * @param errorCode The cause of creating this type of report
  	 */
-	void failRoutingVerification(const Message &request, ErrorHandler::RoutingErrorType errorCode);
+	void failRoutingVerification(const Message& request, ErrorHandler::RoutingErrorType errorCode);
 };
 
 #endif // ECSS_SERVICES_REQUESTVERIFICATIONSERVICE_HPP
diff --git a/inc/Services/StorageAndRetrievalService.hpp b/inc/Services/StorageAndRetrievalService.hpp
index 95142327f8d73d2e272de7cd5d192dec4252d33d..0387c8ff87c76fd9b42a00b215915144809ea9fe 100644
--- a/inc/Services/StorageAndRetrievalService.hpp
+++ b/inc/Services/StorageAndRetrievalService.hpp
@@ -206,7 +206,9 @@ public:
 		ChangeVirtualChannel = 28
 	};
 
-	StorageAndRetrievalService() = default;
+	StorageAndRetrievalService() {
+		serviceType = ServiceType;
+	}
 
 	/**
 	 * Adds new packet store into packet stores.
diff --git a/inc/Services/TestService.hpp b/inc/Services/TestService.hpp
index af37e9ff9ae5a409482d9cd0a0ed311b0f95fb88..63e3fbc258f4f4c51b95b4775ef84aceb5bfb1dc 100644
--- a/inc/Services/TestService.hpp
+++ b/inc/Services/TestService.hpp
@@ -20,7 +20,7 @@ public:
 	};
 
 	TestService() {
-		serviceType = 17;
+		serviceType = ServiceType;
 	}
 
 	/**
@@ -41,7 +41,6 @@ public:
 
 	/**
 	 * TM[17,4] on-board connection test report to show that the MCU is connected to the on-board
-	 * @param applicationProcessId
 	 */
 	void onBoardConnectionReport(uint16_t applicationProcessId);
 
diff --git a/inc/Services/TimeBasedSchedulingService.hpp b/inc/Services/TimeBasedSchedulingService.hpp
index efdc72bf7e9a8cec75784b76079721278cc824c4..d8b9c467469c39666762062434995415d4a6044c 100644
--- a/inc/Services/TimeBasedSchedulingService.hpp
+++ b/inc/Services/TimeBasedSchedulingService.hpp
@@ -46,11 +46,11 @@ class TimeBasedSchedulingService : public Service {
 private:
 	/**
 	 * @brief Indicator of the schedule execution
-	 *
+	 * True indicates "enabled" and False "disabled" state
 	 * @details The schedule execution indicator will be updated by the process that is running
 	 * the time scheduling service.
 	 */
-	bool executionFunctionStatus = false; // True indicates "enabled" and False "disabled" state
+	bool executionFunctionStatus = false;
 
 	/**
 	 * @brief Request identifier of the received packet
diff --git a/src/Message.cpp b/src/Message.cpp
index 4733fb914066ac246daa9adb216f60914997c669..c5846604e3b495d27ad98b85670635a739525c0d 100644
--- a/src/Message.cpp
+++ b/src/Message.cpp
@@ -1,13 +1,17 @@
 #include "Message.hpp"
 #include <ErrorHandler.hpp>
 #include <MessageParser.hpp>
-#include <ServicePool.hpp>
 #include <cstring>
+#include "ServicePool.hpp"
 #include "macros.hpp"
 
-Message::Message(uint8_t serviceType, uint8_t messageType, Message::PacketType packetType, uint16_t applicationId)
+
+Message::Message(uint8_t serviceType, uint8_t messageType, PacketType packetType, uint16_t applicationId)
     : serviceType(serviceType), messageType(messageType), packetType(packetType), applicationId(applicationId) {}
 
+Message::Message(uint8_t serviceType, uint8_t messageType, PacketType packetType)
+    : serviceType(serviceType), messageType(messageType), packetType(packetType), applicationId(ApplicationId) {}
+
 void Message::appendBits(uint8_t numBits, uint16_t data) {
 	// TODO: Add assertion that data does not contain 1s outside of numBits bits
 	ASSERT_INTERNAL(numBits <= 16, ErrorHandler::TooManyBitsAppend);
@@ -174,7 +178,7 @@ void Message::appendString(const etl::istring& string) {
 void Message::appendFixedString(const etl::istring& string) {
 	ASSERT_INTERNAL((dataSize + string.max_size()) < ECSSMaxMessageSize, ErrorHandler::MessageTooLarge);
 	std::copy(string.data(), string.data() + string.size(), data + dataSize);
-	(void)memset(data + dataSize + string.size(), 0, string.max_size() - string.size());
+	(void) memset(data + dataSize + string.size(), 0, string.max_size() - string.size());
 	dataSize += string.max_size();
 }
 
diff --git a/src/Services/HousekeepingService.cpp b/src/Services/HousekeepingService.cpp
index 35beaa2ab3163197ebd778e805a408c739beeaea..ac6167814c6d8aa4a39b5b706041dd39ae1c7165 100644
--- a/src/Services/HousekeepingService.cpp
+++ b/src/Services/HousekeepingService.cpp
@@ -98,14 +98,14 @@ void HousekeepingService::housekeepingStructureReport(uint8_t structIdToReport)
 		ErrorHandler::reportInternalError(ErrorHandler::InternalErrorType::NonExistentHousekeeping);
 		return;
 	}
-	Message structReport(ServiceType, MessageType::HousekeepingStructuresReport, Message::TM, 1);
+	Message structReport = createTM(MessageType::HousekeepingStructuresReport);
 	structReport.appendUint8(structIdToReport);
 
 	structReport.appendBoolean(housekeepingStructure->second.periodicGenerationActionStatus);
 	structReport.appendUint32(housekeepingStructure->second.collectionInterval);
 	structReport.appendUint16(housekeepingStructure->second.simplyCommutatedParameterIds.size());
 
-	for (auto parameterId : housekeepingStructure->second.simplyCommutatedParameterIds) {
+	for (auto parameterId: housekeepingStructure->second.simplyCommutatedParameterIds) {
 		structReport.appendUint16(parameterId);
 	}
 	storeMessage(structReport);
@@ -116,10 +116,10 @@ void HousekeepingService::housekeepingParametersReport(uint8_t structureId) {
 		ErrorHandler::reportInternalError(ErrorHandler::InternalErrorType::NonExistentHousekeeping);
 		return;
 	}
-	Message housekeepingReport(ServiceType, MessageType::HousekeepingParametersReport, Message::TM, 1);
+	Message housekeepingReport = createTM(MessageType::HousekeepingParametersReport);
 
 	housekeepingReport.appendUint8(structureId);
-	for (auto id : housekeepingStructures.at(structureId).simplyCommutatedParameterIds) {
+	for (auto id: housekeepingStructures.at(structureId).simplyCommutatedParameterIds) {
 		if (auto parameter = Services.parameterManagement.getParameter(id)) {
 			parameter->get().appendValueToMessage(housekeepingReport);
 		}
@@ -201,7 +201,7 @@ void HousekeepingService::reportHousekeepingPeriodicProperties(Message& request)
 			numOfValidIds++;
 		}
 	}
-	Message periodicPropertiesReport(ServiceType, MessageType::HousekeepingPeriodicPropertiesReport, Message::TM, 1);
+	Message periodicPropertiesReport = createTM(MessageType::HousekeepingPeriodicPropertiesReport);
 	periodicPropertiesReport.appendUint8(numOfValidIds);
 	request.resetRead();
 	request.readUint8();
@@ -262,25 +262,25 @@ bool HousekeepingService::existsInVector(const etl::vector<uint16_t, ECSSMaxSimp
 
 uint32_t
 HousekeepingService::reportPendingStructures(uint32_t currentTime, uint32_t previousTime, uint32_t expectedDelay) {
-    uint32_t nextCollection = std::numeric_limits<uint32_t>::max();
-
-    for (auto &housekeepingStructure: housekeepingStructures) {
-        if (housekeepingStructure.second.collectionInterval == 0) {
-            housekeepingParametersReport(housekeepingStructure.second.structureId);
-            nextCollection = 0;
-            continue;
-        }
-        if (currentTime != 0 and (currentTime % housekeepingStructure.second.collectionInterval == 0 or
-                                  (previousTime + expectedDelay) % housekeepingStructure.second.collectionInterval ==
-                                  0)) {
-            housekeepingParametersReport(housekeepingStructure.second.structureId);
-        }
-        uint32_t structureTimeToCollection = housekeepingStructure.second.collectionInterval -
-                                             currentTime % housekeepingStructure.second.collectionInterval;
-        if (nextCollection > structureTimeToCollection) {
-            nextCollection = structureTimeToCollection;
-        }
-    }
-
-    return nextCollection;
+	uint32_t nextCollection = std::numeric_limits<uint32_t>::max();
+
+	for (auto& housekeepingStructure: housekeepingStructures) {
+		if (housekeepingStructure.second.collectionInterval == 0) {
+			housekeepingParametersReport(housekeepingStructure.second.structureId);
+			nextCollection = 0;
+			continue;
+		}
+		if (currentTime != 0 and (currentTime % housekeepingStructure.second.collectionInterval == 0 or
+		                          (previousTime + expectedDelay) % housekeepingStructure.second.collectionInterval ==
+		                              0)) {
+			housekeepingParametersReport(housekeepingStructure.second.structureId);
+		}
+		uint32_t structureTimeToCollection = housekeepingStructure.second.collectionInterval -
+		                                     currentTime % housekeepingStructure.second.collectionInterval;
+		if (nextCollection > structureTimeToCollection) {
+			nextCollection = structureTimeToCollection;
+		}
+	}
+
+	return nextCollection;
 }
diff --git a/src/Services/LargePacketTransferService.cpp b/src/Services/LargePacketTransferService.cpp
index 03bebbcd4d9df1b8df3b39d6552bcfb174420a80..b96c03aed3d886f475a08d27daeb90839f5a7975 100644
--- a/src/Services/LargePacketTransferService.cpp
+++ b/src/Services/LargePacketTransferService.cpp
@@ -2,58 +2,52 @@
 #ifdef SERVICE_LARGEPACKET
 
 #include <Services/LargePacketTransferService.hpp>
-#include "Message.hpp"
 #include <etl/String.hpp>
+#include "Message.hpp"
 
 void LargePacketTransferService::firstDownlinkPartReport(uint16_t largeMessageTransactionIdentifier,
                                                          uint16_t partSequenceNumber,
                                                          const String<ECSSMaxFixedOctetStringSize>& string) {
-	// TM[13,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
+	report.appendUint16(partSequenceNumber);                // part sequence number
+	report.appendOctetString(string);                       // fixed octet-string
 	storeMessage(report);
 }
 
 void LargePacketTransferService::intermediateDownlinkPartReport(
     uint16_t largeMessageTransactionIdentifier, uint16_t partSequenceNumber,
     const String<ECSSMaxFixedOctetStringSize>& string) {
-	// TM[13,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
+	report.appendUint16(partSequenceNumber);                // part sequence number
+	report.appendOctetString(string);                       // fixed octet-string
 	storeMessage(report);
 }
 
 void LargePacketTransferService::lastDownlinkPartReport(uint16_t largeMessageTransactionIdentifier,
                                                         uint16_t partSequenceNumber,
                                                         const String<ECSSMaxFixedOctetStringSize>& string) {
-	// TM[13,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
+	report.appendUint16(partSequenceNumber);                // part sequence number
+	report.appendOctetString(string);                       // fixed octet-string
 	storeMessage(report);
 }
 
 String<ECSSMaxFixedOctetStringSize>
 LargePacketTransferService::firstUplinkPart(const String<ECSSMaxFixedOctetStringSize>& string) {
-	// TC[13,9]
 	return string;
 }
 
 String<ECSSMaxFixedOctetStringSize>
 LargePacketTransferService::intermediateUplinkPart(const String<ECSSMaxFixedOctetStringSize>& string) {
-	// TC[13,10]
 	return string;
 }
 
 String<ECSSMaxFixedOctetStringSize>
 LargePacketTransferService::lastUplinkPart(const String<ECSSMaxFixedOctetStringSize>& string) {
-	// TC[13, 11]
 	return string;
 }
 
@@ -61,19 +55,19 @@ void LargePacketTransferService::split(Message& message, uint16_t largeMessageTr
 	//TODO: Should this be uint32?
 	uint16_t size = message.dataSize;
 	uint16_t positionCounter = 0;
-	uint16_t parts = (size/ECSSMaxFixedOctetStringSize) + 1;
+	uint16_t parts = (size / ECSSMaxFixedOctetStringSize) + 1;
 	String<ECSSMaxFixedOctetStringSize> stringPart("");
 	uint8_t dataPart[ECSSMaxFixedOctetStringSize];
 
-	for (uint16_t i = 0; i < ECSSMaxFixedOctetStringSize; i++){
+	for (uint16_t i = 0; i < ECSSMaxFixedOctetStringSize; i++) {
 		dataPart[i] = message.data[positionCounter];
 		positionCounter++;
 	}
 	stringPart = dataPart;
 	firstDownlinkPartReport(largeMessageTransactionIdentifier, 0, stringPart);
 
-	for (uint16_t part = 1; part < (parts - 1U); part++){
-		for (uint16_t i = 0; i < ECSSMaxFixedOctetStringSize; i++){
+	for (uint16_t part = 1; part < (parts - 1U); part++) {
+		for (uint16_t i = 0; i < ECSSMaxFixedOctetStringSize; i++) {
 			dataPart[i] = message.data[positionCounter];
 			positionCounter++;
 		}
@@ -81,8 +75,8 @@ void LargePacketTransferService::split(Message& message, uint16_t largeMessageTr
 		intermediateDownlinkPartReport(largeMessageTransactionIdentifier, part, stringPart);
 	}
 
-	for (uint16_t i = 0; i < ECSSMaxFixedOctetStringSize; i++){
-		if (message.dataSize == positionCounter){
+	for (uint16_t i = 0; i < ECSSMaxFixedOctetStringSize; i++) {
+		if (message.dataSize == positionCounter) {
 			dataPart[i] = 0; // To prevent from filling the rest of the String with garbage info
 		}
 		dataPart[i] = message.data[positionCounter];
diff --git a/src/Services/MemoryManagementService.cpp b/src/Services/MemoryManagementService.cpp
index db821cbfb7a531045774856682d0ef72576179d6..c754aebf16b29be62b83db7f3092180be5f88c1c 100644
--- a/src/Services/MemoryManagementService.cpp
+++ b/src/Services/MemoryManagementService.cpp
@@ -1,11 +1,10 @@
 #include "ECSS_Configuration.hpp"
 #ifdef SERVICE_MEMORY
 
-#include "Services/MemoryManagementService.hpp"
 #include <cerrno>
 #include <etl/String.hpp>
+#include "Services/MemoryManagementService.hpp"
 
-// Define the constructors for the classes
 MemoryManagementService::MemoryManagementService() : rawDataMemorySubservice(*this) {
 	serviceType = MemoryManagementService::ServiceType;
 }
@@ -13,7 +12,6 @@ MemoryManagementService::MemoryManagementService() : rawDataMemorySubservice(*th
 MemoryManagementService::RawDataMemoryManagement::RawDataMemoryManagement(MemoryManagementService& parent)
     : mainService(parent) {}
 
-// Function declarations for the raw data memory management subservice
 void MemoryManagementService::RawDataMemoryManagement::loadRawData(Message& request) {
 	/**
 	 * Bear in mind that there is currently no error checking for invalid parameters.
@@ -23,27 +21,21 @@ void MemoryManagementService::RawDataMemoryManagement::loadRawData(Message& requ
 	 * @todo Add error checking and reporting for the parameters
 	 * @todo Add failure reporting
 	 */
-	// Check if we have the correct packet
 	request.assertTC(MemoryManagementService::ServiceType, MemoryManagementService::MessageType::LoadRawMemoryDataAreas);
-
-	// Read the memory ID from the request
 	auto memoryID = MemoryManagementService::MemoryID(request.readEnum8());
 
-	// Check for a valid memory ID first
 	if (mainService.memoryIdValidator(MemoryManagementService::MemoryID(memoryID))) {
-		// Variable declaration
-		uint8_t readData[ECSSMaxStringSize]; // Preallocate the array
-		uint16_t iterationCount = request.readUint16(); // Get the iteration count
+		uint8_t readData[ECSSMaxStringSize];
+		uint16_t iterationCount = request.readUint16();
 
 		if (memoryID == MemoryManagementService::MemoryID::FLASH) {
-			// todo: Define FLASH specific access code when we transfer to embedded
+			// TODO: Define FLASH specific access code when we transfer to embedded
 		} else {
 			for (std::size_t j = 0; j < iterationCount; j++) {
-				uint64_t startAddress = request.readUint64(); // Start address of the memory
-				uint16_t dataLength = request.readOctetString(readData); // Data length to load
-				uint16_t checksum = request.readBits(16); // Get the CRC checksum from the message
+				uint64_t startAddress = request.readUint64();
+				uint16_t dataLength = request.readOctetString(readData);
+				uint16_t checksum = request.readBits(16);
 
-				// Continue only if the checksum passes
 				if (mainService.dataValidator(readData, checksum, dataLength)) {
 					if (mainService.addressValidator(memoryID, startAddress) &&
 					    mainService.addressValidator(memoryID, startAddress + dataLength)) {
@@ -51,7 +43,6 @@ void MemoryManagementService::RawDataMemoryManagement::loadRawData(Message& requ
 							*(reinterpret_cast<uint8_t*>(startAddress) + i) = readData[i];
 						}
 
-						// Read the loaded data for checksum validation and perform a check
 						for (std::size_t i = 0; i < dataLength; i++) {
 							readData[i] = *(reinterpret_cast<uint8_t*>(startAddress) + i);
 						}
@@ -63,109 +54,91 @@ void MemoryManagementService::RawDataMemoryManagement::loadRawData(Message& requ
 					}
 				} else {
 					ErrorHandler::reportError(request, ErrorHandler::ChecksumFailed);
-					continue; // Continue to the next command
+					continue;
 				}
 			}
 		}
 	} else {
-		// todo: Send a failed start of execution
+		// TODO: Send a failed start of execution
 	}
 }
 
 void MemoryManagementService::RawDataMemoryManagement::dumpRawData(Message& request) {
-	// Check if we have the correct packet
 	request.assertTC(MemoryManagementService::ServiceType, MemoryManagementService::MessageType::DumpRawMemoryData);
 
-	// Create the report message object of telemetry message subtype 6
 	Message report = mainService.createTM(MemoryManagementService::MessageType::DumpRawMemoryDataReport);
-	uint8_t memoryID = request.readEnum8(); // Read the memory ID from the request
+	uint8_t memoryID = request.readEnum8();
 
-	// Check for a valid memory ID first
 	if (mainService.memoryIdValidator(MemoryManagementService::MemoryID(memoryID))) {
-		// Variable declaration
-		uint8_t readData[ECSSMaxStringSize]; // Preallocate the array
-		uint16_t iterationCount = request.readUint16(); // Get the iteration count
+		uint8_t readData[ECSSMaxStringSize];
+		uint16_t iterationCount = request.readUint16();
 
-		// Append the data to report message
-		report.appendEnum8(memoryID); // Memory ID
-		report.appendUint16(iterationCount); // Iteration count
+		report.appendEnum8(memoryID);
+		report.appendUint16(iterationCount);
 
-		// Iterate N times, as specified in the command message
 		for (std::size_t j = 0; j < iterationCount; j++) {
-			uint64_t startAddress = request.readUint64(); // Data length to read
-			uint16_t readLength = request.readUint16(); // Start address for the memory read
+			uint64_t startAddress = request.readUint64();
+			uint16_t readLength = request.readUint16();
 
-			// Read memory data, an octet at a time, checking for a valid address first
 			if (mainService.addressValidator(MemoryManagementService::MemoryID(memoryID), startAddress) &&
 			    mainService.addressValidator(MemoryManagementService::MemoryID(memoryID), startAddress + readLength)) {
 				for (std::size_t i = 0; i < readLength; i++) {
 					readData[i] = *(reinterpret_cast<uint8_t*>(startAddress) + i);
 				}
 
-				// This part is repeated N-times (N = iteration count)
-				report.appendUint64(startAddress); // Start address
-				report.appendOctetString(String<1024>(readData, readLength)); // Save the
-				// read data
+				report.appendUint64(startAddress);
+				report.appendOctetString(String<1024>(readData, readLength));
 				report.appendBits(16, CRCHelper::calculateCRC(readData, readLength));
 			} else {
 				ErrorHandler::reportError(request, ErrorHandler::AddressOutOfRange);
 			}
 		}
 
-		mainService.storeMessage(report); // Save the report message
-		request.resetRead(); // Reset the reading count
+		mainService.storeMessage(report);
+		request.resetRead();
 	} else {
-		// todo: Send a failed start of execution
+		// TODO: Send a failed start of execution
 	}
 }
 
 void MemoryManagementService::RawDataMemoryManagement::checkRawData(Message& request) {
-	// Check if we have the correct packet
 	request.assertTC(MemoryManagementService::ServiceType, MemoryManagementService::MessageType::CheckRawMemoryData);
 
-	// Create the report message object of telemetry message subtype 10
 	Message report = mainService.createTM(MemoryManagementService::MessageType::CheckRawMemoryDataReport);
-	uint8_t memoryID = request.readEnum8(); // Read the memory ID from the request
+	uint8_t memoryID = request.readEnum8();
 
 	if (mainService.memoryIdValidator(MemoryManagementService::MemoryID(memoryID))) {
-		// Variable declaration
-		uint8_t readData[ECSSMaxStringSize]; // Preallocate the array
-		uint16_t iterationCount = request.readUint16(); // Get the iteration count
+		uint8_t readData[ECSSMaxStringSize];
+		uint16_t iterationCount = request.readUint16();
 
-		// Append the data to report message
-		report.appendEnum8(memoryID); // Memory ID
-		report.appendUint16(iterationCount); // Iteration count
+		report.appendEnum8(memoryID);
+		report.appendUint16(iterationCount);
 
-		// Iterate N times, as specified in the command message
 		for (std::size_t j = 0; j < iterationCount; j++) {
-			uint64_t startAddress = request.readUint64(); // Data length to read
-			uint16_t readLength = request.readUint16(); // Start address for the memory read
+			uint64_t startAddress = request.readUint64();
+			uint16_t readLength = request.readUint16();
 
-			// Check whether the first and the last addresses are within the limits
 			if (mainService.addressValidator(MemoryManagementService::MemoryID(memoryID), startAddress) &&
 			    mainService.addressValidator(MemoryManagementService::MemoryID(memoryID), startAddress + readLength)) {
-				// Read memory data and save them for checksum calculation
 				for (std::size_t i = 0; i < readLength; i++) {
 					readData[i] = *(reinterpret_cast<uint8_t*>(startAddress) + i);
 				}
 
-				// This part is repeated N-times (N = iteration count)
-				report.appendUint64(startAddress); // Start address
-				report.appendUint16(readLength); // Save the read data
-				report.appendBits(16, CRCHelper::calculateCRC(readData, readLength)); // Append CRC
+				report.appendUint64(startAddress);
+				report.appendUint16(readLength);
+				report.appendBits(16, CRCHelper::calculateCRC(readData, readLength));
 			} else {
 				ErrorHandler::reportError(request, ErrorHandler::AddressOutOfRange);
 			}
 		}
 
-		mainService.storeMessage(report); // Save the report message
-		request.resetRead(); // Reset the reading count
+		mainService.storeMessage(report);
+		request.resetRead();
 	} else {
-		// todo: Send a failed start of execution report
+		// TODO: Send a failed start of execution report
 	}
 }
 
-// Private function declaration section
 bool MemoryManagementService::addressValidator(MemoryManagementService::MemoryID memId, uint64_t address) {
 	bool validIndicator = false;
 
@@ -202,7 +175,7 @@ bool MemoryManagementService::addressValidator(MemoryManagementService::MemoryID
 			break;
 
 		default:
-			validIndicator = true; // todo: Implemented so addresses from PC can be read. Remove.
+			validIndicator = true; // TODO: Implemented so addresses from PC can be read. Remove.
 			break;
 	}
 
diff --git a/src/Services/ParameterService.cpp b/src/Services/ParameterService.cpp
index 417debf669c2e5d6bad761917138a21850e57611..140eca27bd2cab150f357e06419488aa0e3bad00 100644
--- a/src/Services/ParameterService.cpp
+++ b/src/Services/ParameterService.cpp
@@ -1,21 +1,14 @@
 #include "ECSS_Configuration.hpp"
 #ifdef SERVICE_PARAMETER
 
-#include "Services/ParameterService.hpp"
 #include "Helpers/Parameter.hpp"
+#include "Services/ParameterService.hpp"
 
 
 void ParameterService::reportParameters(Message& paramIds) {
-	// TM[20,2]
-	Message parameterReport(ParameterService::ServiceType, ParameterService::MessageType::ParameterValuesReport,
-	                        Message::TM, 1);
 
-	ErrorHandler::assertRequest(paramIds.packetType == Message::TC, paramIds,
-	                            ErrorHandler::AcceptanceErrorType::UnacceptableMessage);
-	ErrorHandler::assertRequest(paramIds.messageType == ParameterService::MessageType::ReportParameterValues, paramIds,
-	                            ErrorHandler::AcceptanceErrorType::UnacceptableMessage);
-	ErrorHandler::assertRequest(paramIds.serviceType == ParameterService::ServiceType, paramIds,
-	                            ErrorHandler::AcceptanceErrorType::UnacceptableMessage);
+	paramIds.assertTC(ServiceType, ReportParameterValues);
+	Message parameterReport = createTM(ParameterValuesReport);
 
 	uint16_t numOfIds = paramIds.readUint16();
 	uint16_t numberOfValidIds = 0;
@@ -42,12 +35,7 @@ void ParameterService::reportParameters(Message& paramIds) {
 }
 
 void ParameterService::setParameters(Message& newParamValues) {
-	ErrorHandler::assertRequest(newParamValues.packetType == Message::TC, newParamValues,
-	                            ErrorHandler::AcceptanceErrorType::UnacceptableMessage);
-	ErrorHandler::assertRequest(newParamValues.messageType == ParameterService::MessageType::SetParameterValues,
-	                            newParamValues, ErrorHandler::AcceptanceErrorType::UnacceptableMessage);
-	ErrorHandler::assertRequest(newParamValues.serviceType == ParameterService::ServiceType, newParamValues,
-	                            ErrorHandler::AcceptanceErrorType::UnacceptableMessage);
+	newParamValues.assertTC(ServiceType, MessageType::SetParameterValues);
 
 	uint16_t numOfIds = newParamValues.readUint16();
 
diff --git a/src/Services/ParameterStatisticsService.cpp b/src/Services/ParameterStatisticsService.cpp
index c490c91a90fcc09bdb605b8c8d77e3447abe48e0..45982157bfd7faf096da411dc932c670c3296cfd 100644
--- a/src/Services/ParameterStatisticsService.cpp
+++ b/src/Services/ParameterStatisticsService.cpp
@@ -3,7 +3,9 @@
 #include "ServicePool.hpp"
 #include "Services/ParameterStatisticsService.hpp"
 
-ParameterStatisticsService::ParameterStatisticsService() : evaluationStartTime(TimeGetter::getCurrentTimeCustomCUC()) {}
+ParameterStatisticsService::ParameterStatisticsService() : evaluationStartTime(TimeGetter::getCurrentTimeCustomCUC()) {
+	serviceType = ServiceType;
+}
 
 void ParameterStatisticsService::reportParameterStatistics(Message& request) {
 	request.assertTC(ServiceType, MessageType::ReportParameterStatistics);
@@ -20,7 +22,7 @@ void ParameterStatisticsService::reportParameterStatistics(Message& request) {
 }
 
 void ParameterStatisticsService::parameterStatisticsReport() {
-	Message report(ServiceType, MessageType::ParameterStatisticsReport, Message::TM, 1);
+	Message report = createTM(ParameterStatisticsReport);
 	report.append(evaluationStartTime);
 	auto evaluationStopTime = TimeGetter::getCurrentTimeCustomCUC();
 	report.append(evaluationStopTime);
@@ -156,7 +158,7 @@ void ParameterStatisticsService::reportStatisticsDefinitions(Message& request) {
 }
 
 void ParameterStatisticsService::statisticsDefinitionsReport() {
-	Message definitionsReport(ServiceType, MessageType::ParameterStatisticsDefinitionsReport, Message::TM, 1);
+	Message definitionsReport = createTM(ParameterStatisticsDefinitionsReport);
 
 	uint16_t currentReportingInterval = 0;
 	if (periodicStatisticsReportingStatus) {
diff --git a/src/Services/StorageAndRetrievalService.cpp b/src/Services/StorageAndRetrievalService.cpp
index 23f06f48b380f5359ed367787e32a95a057ab27c..0f83c10ddc46e969d04e940c5a2ee2e98d9b260e 100644
--- a/src/Services/StorageAndRetrievalService.cpp
+++ b/src/Services/StorageAndRetrievalService.cpp
@@ -334,7 +334,7 @@ void StorageAndRetrievalService::deletePacketStoreContent(Message& request) {
 void StorageAndRetrievalService::packetStoreContentSummaryReport(Message& request) {
 	request.assertTC(ServiceType, MessageType::ReportContentSummaryOfPacketStores);
 
-	Message report(ServiceType, MessageType::PacketStoreContentSummaryReport, Message::TM, 1);
+	Message report = createTM(PacketStoreContentSummaryReport);
 	uint16_t numOfPacketStores = request.readUint16();
 
 	if (numOfPacketStores == 0) {
@@ -479,7 +479,7 @@ void StorageAndRetrievalService::abortByTimeRangeRetrieval(Message& request) {
 void StorageAndRetrievalService::packetStoresStatusReport(Message& request) {
 	request.assertTC(ServiceType, MessageType::ReportStatusOfPacketStores);
 
-	Message report(ServiceType, MessageType::PacketStoresStatusReport, Message::TM, 1);
+	Message report = createTM(PacketStoresStatusReport);
 	report.appendUint16(packetStores.size());
 	for (auto& packetStore : packetStores) {
 		auto packetStoreId = packetStore.first;
@@ -593,8 +593,8 @@ void StorageAndRetrievalService::deletePacketStores(Message& request) {
 
 void StorageAndRetrievalService::packetStoreConfigurationReport(Message& request) {
 	request.assertTC(ServiceType, MessageType::ReportConfigurationOfPacketStores);
+	Message report = createTM(PacketStoreConfigurationReport);
 
-	Message report(ServiceType, MessageType::PacketStoreConfigurationReport, Message::TM, 1);
 	report.appendUint16(packetStores.size());
 	for (auto& packetStore : packetStores) {
 		auto packetStoreId = packetStore.first;
diff --git a/src/Services/TestService.cpp b/src/Services/TestService.cpp
index d85d020696acd840788e02e9f331a97cf65519ac..4e5622dbd9beaaa9093562c24145bd23ae6fd765 100644
--- a/src/Services/TestService.cpp
+++ b/src/Services/TestService.cpp
@@ -1,6 +1,7 @@
 #include "ECSS_Configuration.hpp"
 #ifdef SERVICE_TEST
 
+#include "ServicePool.hpp"
 #include "Services/TestService.hpp"
 
 void TestService::areYouAlive(Message& request) {
diff --git a/src/Services/TimeBasedSchedulingService.cpp b/src/Services/TimeBasedSchedulingService.cpp
index 967adcddf52ca263123b40f9cb2b3535c511931c..50e0c3919ca8b5976a4269bc83c0ec746900d857 100644
--- a/src/Services/TimeBasedSchedulingService.cpp
+++ b/src/Services/TimeBasedSchedulingService.cpp
@@ -9,7 +9,9 @@ TimeBasedSchedulingService::TimeBasedSchedulingService() {
 
 Time::CustomCUC_t TimeBasedSchedulingService::executeScheduledActivity(Time::CustomCUC_t currentTime) {
 	if (currentTime >= scheduledActivities.front().requestReleaseTime && !scheduledActivities.empty()) {
-		MessageParser::execute(scheduledActivities.front().request);
+		if (scheduledActivities.front().requestID.applicationID == ApplicationId) {
+			MessageParser::execute(scheduledActivities.front().request);
+		}
 		scheduledActivities.pop_front();
 	}
 
diff --git a/test/Services/ParameterService.cpp b/test/Services/ParameterService.cpp
index fc3a480372f546a6eafa0245d30e53fd82a1d02c..fc80719b56751228fb6bfdf20658fbdf8ca1ff95 100644
--- a/test/Services/ParameterService.cpp
+++ b/test/Services/ParameterService.cpp
@@ -13,7 +13,7 @@ static void resetParameterValues() {
 TEST_CASE("Parameter Report Subservice") {
 	SECTION("All requested parameters invalid") {
 		Message request = Message(ParameterService::ServiceType, ParameterService::MessageType::ReportParameterValues,
-		                          Message::TC, 1);
+		                          Message::TC, ApplicationId);
 		request.appendUint16(3);
 		request.appendUint16(54432);
 		request.appendUint16(60000);
diff --git a/test/Services/RequestVerificationService.cpp b/test/Services/RequestVerificationService.cpp
index 8a46ee6386861653076c6eb4872d5fa51fa77da9..99e11ed9530281f06092805bb605575432c8ea9f 100644
--- a/test/Services/RequestVerificationService.cpp
+++ b/test/Services/RequestVerificationService.cpp
@@ -15,7 +15,7 @@ TEST_CASE("TM[1,1]", "[service][st01]") {
 	CHECK(response.serviceType == RequestVerificationService::ServiceType);
 	CHECK(response.messageType == RequestVerificationService::MessageType::SuccessfulAcceptanceReport);
 	CHECK(response.packetType == Message::TM); // packet type
-	CHECK(response.applicationId == 0);
+	CHECK(response.applicationId == ApplicationId);
 	REQUIRE(response.dataSize == 4); // dataSize is the number of bytes of data array
 	// Check for the value that is stored in <<data>> array(data-member of object response)
 	CHECK(response.readEnumerated(3) == CCSDSPacketVersion); // packet version number
@@ -36,7 +36,7 @@ TEST_CASE("TM[1,2]", "[service][st01]") {
 	CHECK(response.serviceType == RequestVerificationService::ServiceType);
 	CHECK(response.messageType == RequestVerificationService::MessageType::FailedAcceptanceReport);
 	CHECK(response.packetType == Message::TM); // packet type
-	CHECK(response.applicationId == 0);
+	CHECK(response.applicationId == ApplicationId);
 	REQUIRE(response.dataSize == 6); // dataSize is the number of bytes of data array
 	// Check for the value that is stored in <<data>> array(data-member of object response)
 	CHECK(response.readEnumerated(3) == CCSDSPacketVersion);              // packet version number
@@ -58,7 +58,7 @@ TEST_CASE("TM[1,3]", "[service][st01]") {
 	CHECK(response.serviceType == RequestVerificationService::ServiceType);
 	CHECK(response.messageType == RequestVerificationService::MessageType::SuccessfulStartOfExecution);
 	CHECK(response.packetType == Message::TM); // packet type
-	CHECK(response.applicationId == 0);
+	CHECK(response.applicationId == ApplicationId);
 	REQUIRE(response.dataSize == 4); // dataSize is the number of bytes of data array
 	// Check for the value that is stored in <<data>> array(data-member of object response)
 	CHECK(response.readEnumerated(3) == CCSDSPacketVersion); // packet version number
@@ -79,7 +79,7 @@ TEST_CASE("TM[1,4]", "[service][st01]") {
 	CHECK(response.serviceType == RequestVerificationService::ServiceType);
 	CHECK(response.messageType == RequestVerificationService::MessageType::FailedStartOfExecution);
 	CHECK(response.packetType == Message::TM); // packet type
-	CHECK(response.applicationId == 0);
+	CHECK(response.applicationId == ApplicationId);
 	REQUIRE(response.dataSize == 6); // dataSize is the number of bytes of data array
 	// Check for the value that is stored in <<data>> array(data-member of object response)
 	CHECK(response.readEnumerated(3) == CCSDSPacketVersion);                  // packet version number
@@ -101,7 +101,7 @@ TEST_CASE("TM[1,5]", "[service][st01]") {
 	CHECK(response.serviceType == RequestVerificationService::ServiceType);
 	CHECK(response.messageType == RequestVerificationService::MessageType::SuccessfulProgressOfExecution);
 	CHECK(response.packetType == Message::TM); // packet type
-	CHECK(response.applicationId == 0);
+	CHECK(response.applicationId == ApplicationId);
 	REQUIRE(response.dataSize == 5); // dataSize is the number of bytes of data array
 	// Check for the value that is stored in <<data>> array(data-member of object response)
 	CHECK(response.readEnumerated(3) == CCSDSPacketVersion); // packet version number
@@ -123,7 +123,7 @@ TEST_CASE("TM[1,6]", "[service][st01]") {
 	CHECK(response.serviceType == RequestVerificationService::ServiceType);
 	CHECK(response.messageType == RequestVerificationService::MessageType::FailedProgressOfExecution);
 	CHECK(response.packetType == Message::TM); // packet type
-	CHECK(response.applicationId == 0);
+	CHECK(response.applicationId == ApplicationId);
 	REQUIRE(response.dataSize == 7); // dataSize is the number of bytes of data array
 	// Check for the value that is stored in <<data>> array(data-member of object response)
 	CHECK(response.readEnumerated(3) == CCSDSPacketVersion); // packet version number
@@ -146,7 +146,7 @@ TEST_CASE("TM[1,7]", "[service][st01]") {
 	CHECK(response.serviceType == RequestVerificationService::ServiceType);
 	CHECK(response.messageType == RequestVerificationService::MessageType::SuccessfulCompletionOfExecution);
 	CHECK(response.packetType == Message::TM); // packet type
-	CHECK(response.applicationId == 0);
+	CHECK(response.applicationId == ApplicationId);
 	REQUIRE(response.dataSize == 4); // dataSize is the number of bytes of data array
 	// Check for the value that is stored in <<data>> array(data-member of object response)
 	CHECK(response.readEnumerated(3) == CCSDSPacketVersion); // packet version number
@@ -166,7 +166,7 @@ TEST_CASE("TM[1,8]", "[service][st01]") {
 	CHECK(response.serviceType == RequestVerificationService::ServiceType);
 	CHECK(response.messageType == RequestVerificationService::MessageType::FailedCompletionOfExecution);
 	CHECK(response.packetType == Message::TM); // packet type
-	CHECK(response.applicationId == 0);
+	CHECK(response.applicationId == ApplicationId);
 	REQUIRE(response.dataSize == 6); // dataSize is the number of bytes of data array
 	// Check for the value that is stored in <<data>> array(data-member of object response)
 	CHECK(response.readEnumerated(3) == CCSDSPacketVersion);                       // packet version number
@@ -188,7 +188,7 @@ TEST_CASE("TM[1,10]", "[service][st01]") {
 	CHECK(response.serviceType == RequestVerificationService::ServiceType);
 	CHECK(response.messageType == RequestVerificationService::MessageType::FailedRoutingReport);
 	CHECK(response.packetType == Message::TM); // packet type
-	CHECK(response.applicationId == 0);
+	CHECK(response.applicationId == ApplicationId);
 	REQUIRE(response.dataSize == 6); // dataSize is the number of bytes of data array
 	// Check for the value that is stored in <<data>> array(data-member of object response)
 	CHECK(response.readEnumerated(3) == CCSDSPacketVersion);           // packet version number
diff --git a/test/Services/TestService.cpp b/test/Services/TestService.cpp
index 3a772b2872aa60090f89bc5478d46eae6afb9f4f..caee8703e9874cfc4b6dafa4007ab5f4c325c9a3 100644
--- a/test/Services/TestService.cpp
+++ b/test/Services/TestService.cpp
@@ -27,7 +27,7 @@ TEST_CASE("TM[17,2]", "[service][st17]") {
 
 TEST_CASE("TC[17,3]", "[service][st17]") {
 	Message receivedPacket = Message(TestService::ServiceType, TestService::MessageType::OnBoardConnectionTest, Message::TC, 1);
-	receivedPacket.appendEnum16(40);
+	receivedPacket.appendEnum16(ApplicationId);
 	MessageParser::execute(receivedPacket);
 	REQUIRE(ServiceTests::hasOneMessage());
 
@@ -35,7 +35,7 @@ TEST_CASE("TC[17,3]", "[service][st17]") {
 	CHECK(response.serviceType == TestService::ServiceType);
 	CHECK(response.messageType == TestService::MessageType::OnBoardConnectionTestReport);
 	REQUIRE(response.dataSize == 2);
-	CHECK(response.readEnum16() == 40);
+	CHECK(response.readEnum16() == ApplicationId);
 }
 
 TEST_CASE("TM[17,4]", "[service][st17]") {