diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8caf2586e93d15c7539d6084ff9f32dc699067b1..d7e7ce9060182221334367f2fd3b2ddcdb34034d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -45,6 +45,7 @@ add_library(common OBJECT
         src/Helpers/Statistic.cpp
         src/Services/RealTimeForwardingControlService.cpp
         src/Helpers/PMONBase.cpp
+        src/Helpers/AllMessageTypes.cpp
         )
 
 # Specify the .cpp files for the executables
diff --git a/inc/ECSS_Definitions.hpp b/inc/ECSS_Definitions.hpp
index b17d891f8a8bf08c25931788df4631ee13529e8c..5c8ee8af2cdeb6aac81ae6e9f63cc733fa215ccd 100644
--- a/inc/ECSS_Definitions.hpp
+++ b/inc/ECSS_Definitions.hpp
@@ -174,6 +174,7 @@ inline const uint8_t ECSSMaxControlledApplicationProcesses = 5;
  * The max number of report type blocking definitions per service type definition in the application process
  * configuration
  * @see RealTimeForwardingControlService
+ * todo: must change when a service with more report types is implemented.
  */
 inline const uint8_t ECSSMaxReportTypeDefinitions = 20;
 
@@ -181,6 +182,7 @@ inline const uint8_t ECSSMaxReportTypeDefinitions = 20;
  * The max number of service type definitions per application process type definition in the application process
  * configuration
  * @see RealTimeForwardingControlService
+ * todo: must change when all 15 services are implemented.
  */
 inline const uint8_t ECSSMaxServiceTypeDefinitions = 10;
 
diff --git a/inc/Helpers/AllMessageTypes.hpp b/inc/Helpers/AllMessageTypes.hpp
index 6d7ca757e9cb9b3af89e55d6006a9186efebd330..760800565d653e2cc60470b1119889307fa496f2 100644
--- a/inc/Helpers/AllMessageTypes.hpp
+++ b/inc/Helpers/AllMessageTypes.hpp
@@ -18,62 +18,22 @@
  * todo: needs to be updated after the implementation of the remaining ecss services.
  */
 namespace AllMessageTypes {
-	etl::vector<uint8_t, 15> st01Messages = {RequestVerificationService::MessageType::FailedAcceptanceReport,
-	                                         RequestVerificationService::MessageType::FailedCompletionOfExecution,
-	                                         RequestVerificationService::MessageType::FailedProgressOfExecution,
-	                                         RequestVerificationService::MessageType::FailedRoutingReport,
-	                                         RequestVerificationService::MessageType::FailedStartOfExecution,
-	                                         RequestVerificationService::MessageType::SuccessfulAcceptanceReport,
-	                                         RequestVerificationService::MessageType::SuccessfulCompletionOfExecution,
-	                                         RequestVerificationService::MessageType::SuccessfulProgressOfExecution,
-	                                         RequestVerificationService::MessageType::SuccessfulStartOfExecution};
-
-	etl::vector<uint8_t, 15> st03Messages = {
-	    HousekeepingService::MessageType::DisablePeriodicHousekeepingParametersReport,
-	    HousekeepingService::MessageType::EnablePeriodicHousekeepingParametersReport,
-	    HousekeepingService::MessageType::GenerateOneShotHousekeepingReport,
-	    HousekeepingService::MessageType::HousekeepingParametersReport,
-	    HousekeepingService::MessageType::HousekeepingPeriodicPropertiesReport,
-	    HousekeepingService::MessageType::HousekeepingStructuresReport};
-
-	etl::vector<uint8_t, 15> st04Messages = {
-	    ParameterStatisticsService::MessageType::ParameterStatisticsDefinitionsReport,
-	    ParameterStatisticsService::MessageType::ParameterStatisticsReport,
-	};
-
-	etl::vector<uint8_t, 15> st05Messages = {EventReportService::MessageType::HighSeverityAnomalyReport,
-	                                         EventReportService::MessageType::DisabledListEventReport,
-	                                         EventReportService::MessageType::InformativeEventReport,
-	                                         EventReportService::MessageType::LowSeverityAnomalyReport,
-	                                         EventReportService::MessageType::MediumSeverityAnomalyReport};
-
-	etl::vector<uint8_t, 15> st06Messages = {MemoryManagementService::MessageType::CheckRawMemoryDataReport,
-	                                         MemoryManagementService::MessageType::DumpRawMemoryDataReport};
-
-	etl::vector<uint8_t, 15> st11Messages = {TimeBasedSchedulingService::MessageType::TimeBasedScheduledSummaryReport};
-
-	etl::vector<uint8_t, 15> st13Messages = {LargePacketTransferService::MessageType::FirstDownlinkPartReport,
-	                                         LargePacketTransferService::MessageType::InternalDownlinkPartReport,
-	                                         LargePacketTransferService::MessageType::LastDownlinkPartReport};
-
-	etl::vector<uint8_t, 15> st17Messages = {TestService::MessageType::AreYouAliveTestReport,
-	                                         TestService::MessageType::OnBoardConnectionTestReport};
-
-	etl::vector<uint8_t, 15> st19Messages = {EventActionService::MessageType::EventActionStatusReport};
-
-	etl::vector<uint8_t, 15> st20Messages = {ParameterService::MessageType::ParameterValuesReport};
-
-	etl::map<uint8_t, etl::vector<uint8_t, 15>, 100> messagesOfService = {
-	    {RequestVerificationService::ServiceType, st01Messages},
-	    {HousekeepingService::ServiceType, st03Messages},
-	    {ParameterStatisticsService::ServiceType, st04Messages},
-	    {EventReportService::ServiceType, st05Messages},
-	    {MemoryManagementService::ServiceType, st06Messages},
-	    {TimeBasedSchedulingService::ServiceType, st11Messages},
-	    {LargePacketTransferService::ServiceType, st13Messages},
-	    {TestService::ServiceType, st17Messages},
-	    {EventActionService::ServiceType, st19Messages},
-	    {ParameterService::ServiceType, st20Messages}};
+	extern etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st01Messages;
+	extern etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st03Messages;
+	extern etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st04Messages;
+	extern etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st05Messages;
+	extern etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st06Messages;
+	extern etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st11Messages;
+	extern etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st13Messages;
+	extern etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st17Messages;
+	extern etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st19Messages;
+	extern etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st20Messages;
+
+	/**
+	 * Map containing all the message types, per service. The key is the ServiceType and the value,
+	 * an etl vector containing the message types.
+	 */
+	extern etl::map<uint8_t, etl::vector<uint8_t, ECSSMaxReportTypeDefinitions>, ECSSMaxServiceTypeDefinitions> messagesOfService;
 
 } // namespace AllMessageTypes
 
diff --git a/src/Helpers/AllMessageTypes.cpp b/src/Helpers/AllMessageTypes.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..8fdb9d5b13ba42e4f1334bcda0a80f6e76b977db
--- /dev/null
+++ b/src/Helpers/AllMessageTypes.cpp
@@ -0,0 +1,61 @@
+#include "Helpers/AllMessageTypes.hpp"
+
+namespace AllMessageTypes {
+	etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st01Messages = {RequestVerificationService::MessageType::FailedAcceptanceReport,
+	                                                                   RequestVerificationService::MessageType::FailedCompletionOfExecution,
+	                                                                   RequestVerificationService::MessageType::FailedProgressOfExecution,
+	                                                                   RequestVerificationService::MessageType::FailedRoutingReport,
+	                                                                   RequestVerificationService::MessageType::FailedStartOfExecution,
+	                                                                   RequestVerificationService::MessageType::SuccessfulAcceptanceReport,
+	                                                                   RequestVerificationService::MessageType::SuccessfulCompletionOfExecution,
+	                                                                   RequestVerificationService::MessageType::SuccessfulProgressOfExecution,
+	                                                                   RequestVerificationService::MessageType::SuccessfulStartOfExecution};
+
+	etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st03Messages = {
+	    HousekeepingService::MessageType::DisablePeriodicHousekeepingParametersReport,
+	    HousekeepingService::MessageType::EnablePeriodicHousekeepingParametersReport,
+	    HousekeepingService::MessageType::GenerateOneShotHousekeepingReport,
+	    HousekeepingService::MessageType::HousekeepingParametersReport,
+	    HousekeepingService::MessageType::HousekeepingPeriodicPropertiesReport,
+	    HousekeepingService::MessageType::HousekeepingStructuresReport};
+
+	etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st04Messages = {
+	    ParameterStatisticsService::MessageType::ParameterStatisticsDefinitionsReport,
+	    ParameterStatisticsService::MessageType::ParameterStatisticsReport,
+	};
+
+	etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st05Messages = {EventReportService::MessageType::HighSeverityAnomalyReport,
+	                                                                   EventReportService::MessageType::DisabledListEventReport,
+	                                                                   EventReportService::MessageType::InformativeEventReport,
+	                                                                   EventReportService::MessageType::LowSeverityAnomalyReport,
+	                                                                   EventReportService::MessageType::MediumSeverityAnomalyReport};
+
+	etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st06Messages = {MemoryManagementService::MessageType::CheckRawMemoryDataReport,
+	                                                                   MemoryManagementService::MessageType::DumpRawMemoryDataReport};
+
+	etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st11Messages = {TimeBasedSchedulingService::MessageType::TimeBasedScheduledSummaryReport};
+
+	etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st13Messages = {LargePacketTransferService::MessageType::FirstDownlinkPartReport,
+	                                                                   LargePacketTransferService::MessageType::InternalDownlinkPartReport,
+	                                                                   LargePacketTransferService::MessageType::LastDownlinkPartReport};
+
+	etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st17Messages = {TestService::MessageType::AreYouAliveTestReport,
+	                                                                   TestService::MessageType::OnBoardConnectionTestReport};
+
+	etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st19Messages = {EventActionService::MessageType::EventActionStatusReport};
+
+	etl::vector<uint8_t, ECSSMaxReportTypeDefinitions> st20Messages = {ParameterService::MessageType::ParameterValuesReport};
+
+	etl::map<uint8_t, etl::vector<uint8_t, ECSSMaxReportTypeDefinitions>, ECSSMaxServiceTypeDefinitions> messagesOfService = {
+	    {RequestVerificationService::ServiceType, st01Messages},
+	    {HousekeepingService::ServiceType, st03Messages},
+	    {ParameterStatisticsService::ServiceType, st04Messages},
+	    {EventReportService::ServiceType, st05Messages},
+	    {MemoryManagementService::ServiceType, st06Messages},
+	    {TimeBasedSchedulingService::ServiceType, st11Messages},
+	    {LargePacketTransferService::ServiceType, st13Messages},
+	    {TestService::ServiceType, st17Messages},
+	    {EventActionService::ServiceType, st19Messages},
+	    {ParameterService::ServiceType, st20Messages}};
+
+} // namespace AllMessageTypes