diff --git a/inc/ECSS_Definitions.hpp b/inc/ECSS_Definitions.hpp
index a0d125876a7da844ba21c99b2b8e59a14089779c..f5ea2b9417e28f4d65446f63de0510501d5dd47b 100644
--- a/inc/ECSS_Definitions.hpp
+++ b/inc/ECSS_Definitions.hpp
@@ -51,6 +51,11 @@
  */
 #define ECSS_TIME_MARGIN_FOR_ACTIVATION  60
 
+/**
+ * @brief Size of the multimap that holds every event-action definition
+ */
+#define ECSS_EVENT_ACTION_STRUCT_MAP_SIZE 256
+
 // todo: Define the maximum delta between the specified
 #define ECSS_MAX_DELTA_OF_RELEASE_TIME   60
 // release time and the actual release time
diff --git a/inc/Services/EventActionService.hpp b/inc/Services/EventActionService.hpp
index 890c7c07c012f216905ae8235deb964f94556e6b..b7e9b6d358f1f698b800fb384862e53986fa90c1 100644
--- a/inc/Services/EventActionService.hpp
+++ b/inc/Services/EventActionService.hpp
@@ -1,22 +1,21 @@
 #ifndef ECSS_SERVICES_EVENTACTIONSERVICE_HPP
 #define ECSS_SERVICES_EVENTACTIONSERVICE_HPP
 
-
-#define ECSS_EVENT_ACTION_STRUCT_ARRAY_SIZE 256
-
 #include "Service.hpp"
 #include "MessageParser.hpp"
 #include "etl/String.hpp"
 #include <Services/EventReportService.hpp>
-#include "etl/map.h"
+#include "etl/multimap.h"
 
 /**
  * Implementation of ST[19] event-action Service
  *
  * ECSS 8.19 && 6.19
  *
- * Note: Make sure the check the note in the addEventActionDefintion()
- *
+ * Note: Make sure the check the note in the addEventActionDefinition()
+ * Note: A third variable was added, the eventActionDefinitionID. This was added for the purpose of identifying
+ * various eventActionDefinitions that correspond to the same eventDefinitionID. The goal is to have multiple actions
+ * be executed when one event takes place. This defies the standard.
  * Note: The application ID was decided to be abolished as an identifier of the event-action
  * definition
  * IMPORTANT: Every event action definition ID should be different, regardless of the application ID
@@ -48,14 +47,15 @@ public:
 	struct EventActionDefinition {
 		// TODO: APID = 0 is the Ground Station APID. This should be changed
 		uint16_t applicationId = 0;
-		uint16_t eventDefinitionID = 65535;
+		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;
 	};
 
 	friend EventReportService;
 
-	etl::map<uint16_t, EventActionDefinition, ECSS_EVENT_ACTION_STRUCT_ARRAY_SIZE>
+	etl::multimap<uint16_t, EventActionDefinition, ECSS_EVENT_ACTION_STRUCT_MAP_SIZE>
 		eventActionDefinitionMap;
 
 	EventActionService() {
diff --git a/src/Services/EventActionService.cpp b/src/Services/EventActionService.cpp
index 697e2f2b2fbb3611d99572e365fc6bc51c429e7c..8cbcdf2dbfd1b88650f4727b45267e47ff8976e7 100644
--- a/src/Services/EventActionService.cpp
+++ b/src/Services/EventActionService.cpp
@@ -9,16 +9,18 @@ void EventActionService::addEventActionDefinitions(Message &message) {
 	message.resetRead();
 	uint16_t applicationID = message.readEnum16();
 	uint16_t eventDefinitionID = message.readEnum16();
+	uint16_t eventActionDefinitionID = message.readEnum16();
 	if (eventActionDefinitionMap.find(eventDefinitionID) == eventActionDefinitionMap.end()) {
-		if (message.dataSize - 4 > ECSS_TC_REQUEST_STRING_SIZE) {
+		if (message.dataSize - 6 > ECSS_TC_REQUEST_STRING_SIZE) {
 			ErrorHandler::reportInternalError(ErrorHandler::MessageTooLarge);
 		} else {
 			char data[ECSS_TC_REQUEST_STRING_SIZE];
-			message.readString(data, message.dataSize - 4);
+			message.readString(data, message.dataSize - 6);
 			EventActionDefinition temp;
 			temp.enabled = false;
 			temp.applicationId = applicationID;
 			temp.eventDefinitionID = eventDefinitionID;
+			temp.eventActionDefinitionID = eventActionDefinitionID;
 			temp.request = String<ECSS_TC_REQUEST_STRING_SIZE>(data);
 			eventActionDefinitionMap.insert(std::make_pair(eventDefinitionID, temp));
 		}