diff --git a/inc/Services/RealTimeForwardingControlService.hpp b/inc/Services/RealTimeForwardingControlService.hpp
index ef95db113b718c1ba2880b2b9fdde26422476b11..58e0b30a776b682accce40c6197d1eac44c8018a 100644
--- a/inc/Services/RealTimeForwardingControlService.hpp
+++ b/inc/Services/RealTimeForwardingControlService.hpp
@@ -66,6 +66,16 @@ public:
 	ForwardControlConfiguration::EventReportBlocking eventReportBlockingConfiguration;
 
 private:
+	/**
+	 * Adds all report types of the specified application process definition, to the application process configuration.
+	 */
+	void addAllReportsOfApplication(uint8_t applicationID);
+
+	/**
+	 * Adds all report types of the specified service type, to the application process configuration.
+	 */
+	 void addAllReportsOfService(uint8_t applicationID, uint8_t serviceType);
+
 	/**
 	 * Counts the number of service types, stored for the specified application process.
 	 */
diff --git a/src/Services/RealTimeForwardingControlService.cpp b/src/Services/RealTimeForwardingControlService.cpp
index 3e9c0ebf589c17199c0712130424eb201daa66a6..55c1971e097b232b12ffde6fb91d4937cfdcebdc 100644
--- a/src/Services/RealTimeForwardingControlService.cpp
+++ b/src/Services/RealTimeForwardingControlService.cpp
@@ -1,6 +1,21 @@
 #include <iostream>
 #include "Services/RealTimeForwardingControlService.hpp"
 
+void RealTimeForwardingControlService::addAllReportsOfApplication(uint8_t applicationID) {
+	for (auto& service : allMessageTypes.messagesOfService) {
+		uint8_t serviceType = service.first;
+		for (auto message : service.second) {
+			applicationProcessConfiguration.definitions[std::make_pair(applicationID, serviceType)].push_back(message);
+		}
+	}
+}
+
+void RealTimeForwardingControlService::addAllReportsOfService(uint8_t applicationID, uint8_t serviceType) {
+	for (auto& messageType : allMessageTypes.messagesOfService[serviceType]) {
+		applicationProcessConfiguration.definitions[std::make_pair(applicationID, serviceType)].push_back(messageType);
+	}
+}
+
 uint8_t RealTimeForwardingControlService::countServicesOfApplication(uint8_t applicationID) {
 	uint8_t serviceCounter = 0;
 	for (auto& definition : applicationProcessConfiguration.definitions) {
@@ -48,7 +63,7 @@ bool RealTimeForwardingControlService::allServiceTypesAllowed(Message& request,
 
 bool RealTimeForwardingControlService::maxServiceTypesReached(Message& request, uint8_t applicationID) {
 	if (countServicesOfApplication(applicationID) >= ECSSMaxServiceTypeDefinitions) {
-//		std::cout<<"err22\n";
+		//		std::cout<<"err22\n";
 		ErrorHandler::reportError(request, ErrorHandler::ExecutionStartErrorType::MaxServiceTypesReached);
 		return true;
 	}
@@ -66,9 +81,9 @@ bool RealTimeForwardingControlService::checkService(Message& request, uint8_t ap
 
 bool RealTimeForwardingControlService::allReportTypesAllowed(Message& request, uint8_t applicationID,
                                                              uint8_t serviceType) {
-//	std::cout<<"num mess= "<<static_cast<int>(countReportsOfService(applicationID, serviceType))<<"\n";
+	//	std::cout<<"num mess= "<<static_cast<int>(countReportsOfService(applicationID, serviceType))<<"\n";
 	if (countReportsOfService(applicationID, serviceType) >= allMessageTypes.messagesOfService[serviceType].size()) {
-//		std::cout<<"err23\n";
+		//		std::cout<<"err23\n";
 		ErrorHandler::reportError(request, ErrorHandler::ExecutionStartErrorType::AllReportTypesAlreadyAllowed);
 		return true;
 	}
@@ -104,46 +119,46 @@ bool RealTimeForwardingControlService::reportExistsInAppProcessConfiguration(uin
 void RealTimeForwardingControlService::addReportTypesToAppProcessConfiguration(Message& request) {
 	request.assertTC(ServiceType, MessageType::AddReportTypesToAppProcessConfiguration);
 	uint8_t numOfApplications = request.readUint8();
-//	std::cout << static_cast<int>(numOfApplications) << "\n";
+	//	std::cout << static_cast<int>(numOfApplications) << "\n";
 
 	for (uint8_t i = 0; i < numOfApplications; i++) {
 		uint8_t applicationID = request.readUint8();
 		uint8_t numOfServices = request.readUint8();
-//		std::cout << "app= " << static_cast<int>(applicationID) << "\n";
+		//		std::cout << "app= " << static_cast<int>(applicationID) << "\n";
 
 		if (not checkApplicationOfAppProcessConfig(request, applicationID, numOfServices)) {
-//			std::cout << "err1\n";
+			//			std::cout << "err1\n";
 			continue;
 		}
 
-		//		if (numOfServices == 0) {
-		//			applicationProcessConfiguration.definitions[applicationID].clear();
-		//			continue;
-		//		}
+		if (numOfServices == 0) {
+			addAllReportsOfApplication(applicationID);
+			continue;
+		}
 
 		for (uint8_t j = 0; j < numOfServices; j++) {
 			// todo: check if service type is valid.
 			uint8_t serviceType = request.readUint8();
 			uint8_t numOfMessages = request.readUint8();
-//			std::cout << "serv= " << static_cast<int>(serviceType) << "\n";
-//			std::cout << "size= " << static_cast<int>(countServicesOfApplication(applicationID)) << "\n";
+			//			std::cout << "serv= " << static_cast<int>(serviceType) << "\n";
+			//			std::cout << "size= " << static_cast<int>(countServicesOfApplication(applicationID)) << "\n";
 
 			if (not checkService(request, applicationID, serviceType, numOfMessages)) {
-//				std::cout << "err2\n";
+				//				std::cout << "err2\n";
 				continue;
 			}
 
-			//			if (numOfMessages == 0) {
-			//				applicationProcessConfiguration.definitions[applicationID][serviceType].clear();
-			//				continue;
-			//			}
+			if (numOfMessages == 0) {
+				addAllReportsOfService(applicationID, serviceType);
+				continue;
+			}
 
 			for (uint8_t k = 0; k < numOfMessages; k++) {
 				uint8_t messageType = request.readUint8();
-//				std::cout << "mess= " << static_cast<int>(messageType) << "\n";
+				//				std::cout << "mess= " << static_cast<int>(messageType) << "\n";
 
 				if (not checkMessage(request, applicationID, serviceType, messageType)) {
-//					std::cout << "err3\n";
+					//					std::cout << "err3\n";
 					continue;
 				}
 				// todo: check if message type is valid.
diff --git a/test/Services/RealTimeForwardingControl.cpp b/test/Services/RealTimeForwardingControl.cpp
index ffb6f702f9459f74cc0cb26c53a2a26140f24946..35e258590566dd3c69e1ab488bdae572305461e1 100644
--- a/test/Services/RealTimeForwardingControl.cpp
+++ b/test/Services/RealTimeForwardingControl.cpp
@@ -118,7 +118,7 @@ void validInvalidAllReportsOfService(Message& request) {
 
 	for (uint8_t i = 0; i < numOfApplications; i++) {
 		request.appendUint8(applications2[i]);
-		uint8_t numOfServicesPerApp = (i == 0) ? 17 : 2;
+		uint8_t numOfServicesPerApp = (i == 0) ? 12 : 2;
 		uint8_t* servicesToPick = (i == 0) ? redundantServices : services;
 		request.appendUint8(numOfServicesPerApp);
 
@@ -437,107 +437,118 @@ TEST_CASE("Add report types to the Application Process Configuration") {
 		Services.reset();
 	}
 
-	//	SECTION("Valid addition of all report types of a specified service type") {
-	//		Message request(RealTimeForwardingControlService::ServiceType,
-	//		                RealTimeForwardingControlService::MessageType::AddReportTypesToAppProcessConfiguration,
-	//		                Message::TC, 1);
-	//		uint8_t applicationID1 = 1;
-	//		realTimeForwarding.controlledApplications.push_back(applicationID1);
-	//		validAllReportsOfService(request);
-	//
-	//		MessageParser::execute(request);
-	//
-	//		CHECK(ServiceTests::count() == 0);
-	//		auto& applicationProcesses = realTimeForwarding.applicationProcessConfiguration.definitions;
-	//		REQUIRE(applicationProcesses[applicationID1].size() == 2);
-	//		for (auto serviceType : services) {
-	//			REQUIRE(applicationProcesses[applicationID1].find(serviceType) !=
-	//			        applicationProcesses[applicationID1].end());
-	//			REQUIRE(applicationProcesses[applicationID1][serviceType].empty());
-	//		}
-	//
-	//		resetAppProcessConfiguration();
-	//		ServiceTests::reset();
-	//		Services.reset();
-	//	}
-	//
-	//	SECTION("Addition of all report types of a service type, combined with invalid requests") {
-	//		Message request(RealTimeForwardingControlService::ServiceType,
-	//		                RealTimeForwardingControlService::MessageType::AddReportTypesToAppProcessConfiguration,
-	//		                Message::TC, 1);
-	//		uint8_t applicationID1 = 1;
-	//		uint8_t applicationID2 = 2;
-	//		realTimeForwarding.controlledApplications.push_back(applicationID1);
-	//		realTimeForwarding.controlledApplications.push_back(applicationID2);
-	//		validInvalidAllReportsOfService(request);
-	//
-	//		MessageParser::execute(request);
-	//
-	//		CHECK(ServiceTests::count() == 3);
-	//		CHECK(ServiceTests::countThrownErrors(ErrorHandler::ExecutionStartErrorType::NotControlledApplication) ==
-	// 1); 		CHECK(ServiceTests::countThrownErrors(ErrorHandler::ExecutionStartErrorType::MaxServiceTypesReached) ==
-	// 2);
-	//
-	//		auto& applicationProcesses = realTimeForwarding.applicationProcessConfiguration.definitions;
-	//		REQUIRE(applicationProcesses.size() == 2);
-	//		REQUIRE(applicationProcesses[applicationID1].size() == 15);
-	//		REQUIRE(applicationProcesses[applicationID2].size() == 2);
-	//
-	//		for (auto& serviceType : applicationProcesses[applicationID1]) {
-	//			REQUIRE(serviceType.second.empty());
-	//		}
-	//		for (auto& serviceType : applicationProcesses[applicationID2]) {
-	//			REQUIRE(serviceType.second.empty());
-	//		}
-	//
-	//		resetAppProcessConfiguration();
-	//		ServiceTests::reset();
-	//		Services.reset();
-	//	}
-	//
-	//	SECTION("Valid addition of all report types of an application process") {
-	//		Message request(RealTimeForwardingControlService::ServiceType,
-	//		                RealTimeForwardingControlService::MessageType::AddReportTypesToAppProcessConfiguration,
-	//		                Message::TC, 1);
-	//		uint8_t applicationID1 = 1;
-	//		realTimeForwarding.controlledApplications.push_back(applicationID1);
-	//		validAllReportsOfApp(request);
-	//
-	//		MessageParser::execute(request);
-	//
-	//		CHECK(ServiceTests::count() == 0);
-	//		auto& applicationProcesses = realTimeForwarding.applicationProcessConfiguration.definitions;
-	//		REQUIRE(applicationProcesses[applicationID1].empty());
-	//
-	//		resetAppProcessConfiguration();
-	//		ServiceTests::reset();
-	//		Services.reset();
-	//	}
-	//
-	//	SECTION("Addition of all report types of an application process, combined with invalid request") {
-	//		Message request(RealTimeForwardingControlService::ServiceType,
-	//		                RealTimeForwardingControlService::MessageType::AddReportTypesToAppProcessConfiguration,
-	//		                Message::TC, 1);
-	//		uint8_t applicationID1 = 1;
-	//		uint8_t applicationID2 = 2;
-	//		realTimeForwarding.controlledApplications.push_back(applicationID1);
-	//		realTimeForwarding.controlledApplications.push_back(applicationID2);
-	//		validInvalidAllReportsOfApp(request);
-	//
-	//		MessageParser::execute(request);
-	//
-	//		CHECK(ServiceTests::count() == 1);
-	//		CHECK(ServiceTests::countThrownErrors(ErrorHandler::ExecutionStartErrorType::NotControlledApplication) ==
-	// 1); 		auto& applicationProcesses = realTimeForwarding.applicationProcessConfiguration.definitions;
-	//
-	//		REQUIRE(applicationProcesses.find(applicationID1) != applicationProcesses.end());
-	//		REQUIRE(applicationProcesses.find(applicationID2) != applicationProcesses.end());
-	//		REQUIRE(applicationProcesses.find(3) == applicationProcesses.end());
-	//		REQUIRE(applicationProcesses[applicationID1].empty());
-	//		REQUIRE(applicationProcesses[applicationID2].empty());
-	//
-	//		resetAppProcessConfiguration();
-	//		ServiceTests::reset();
-	//		Services.reset();
-	//	}
+	SECTION("Valid addition of all report types of a specified service type") {
+		Message request(RealTimeForwardingControlService::ServiceType,
+		                RealTimeForwardingControlService::MessageType::AddReportTypesToAppProcessConfiguration,
+		                Message::TC, 1);
+		uint8_t applicationID1 = 1;
+		realTimeForwarding.controlledApplications.push_back(applicationID1);
+		validAllReportsOfService(request);
+
+		MessageParser::execute(request);
+
+		CHECK(ServiceTests::count() == 0);
+		auto& applicationProcesses = realTimeForwarding.applicationProcessConfiguration.definitions;
+		for (auto serviceType : services) {
+			REQUIRE(applicationProcesses[std::make_pair(applicationID1, serviceType)].size() ==
+			        realTimeForwarding.allMessageTypes.messagesOfService[serviceType].size());
+		}
+
+		resetAppProcessConfiguration();
+		ServiceTests::reset();
+		Services.reset();
+	}
+
+	SECTION("Addition of all report types of a service type, combined with invalid requests") {
+		Message request(RealTimeForwardingControlService::ServiceType,
+		                RealTimeForwardingControlService::MessageType::AddReportTypesToAppProcessConfiguration,
+		                Message::TC, 1);
+		uint8_t applicationID1 = 1;
+		uint8_t applicationID2 = 2;
+		realTimeForwarding.controlledApplications.push_back(applicationID1);
+		realTimeForwarding.controlledApplications.push_back(applicationID2);
+		validInvalidAllReportsOfService(request);
+
+		MessageParser::execute(request);
+
+		CHECK(ServiceTests::count() == 3);
+		CHECK(ServiceTests::countThrownErrors(ErrorHandler::ExecutionStartErrorType::NotControlledApplication) == 1);
+		CHECK(ServiceTests::countThrownErrors(ErrorHandler::ExecutionStartErrorType::MaxServiceTypesReached) == 2);
+
+		auto& definitions = realTimeForwarding.applicationProcessConfiguration.definitions;
+		REQUIRE(definitions.size() == 12);
+
+		int cnt1 = 0;
+		int cnt2 = 0;
+		for (auto& pair : definitions) {
+			if (pair.first.first == applicationID1) {
+				cnt1++;
+			} else if (pair.first.first == applicationID2) {
+				cnt2++;
+			}
+		}
+		REQUIRE(cnt1 == 10);
+		REQUIRE(cnt2 == 2);
+
+		for (auto& serviceType : allServices) {
+			REQUIRE(definitions[std::make_pair(applicationID1, serviceType)].size() ==
+			        realTimeForwarding.allMessageTypes.messagesOfService[serviceType].size());
+		}
+		for (auto& serviceType : services) {
+			REQUIRE(definitions[std::make_pair(applicationID2, serviceType)].size() ==
+			        realTimeForwarding.allMessageTypes.messagesOfService[serviceType].size());
+		}
+
+		resetAppProcessConfiguration();
+		ServiceTests::reset();
+		Services.reset();
+	}
+
+	SECTION("Valid addition of all report types of an application process") {
+		Message request(RealTimeForwardingControlService::ServiceType,
+		                RealTimeForwardingControlService::MessageType::AddReportTypesToAppProcessConfiguration,
+		                Message::TC, 1);
+		uint8_t applicationID1 = 1;
+		realTimeForwarding.controlledApplications.push_back(applicationID1);
+		validAllReportsOfApp(request);
+
+		MessageParser::execute(request);
+
+		CHECK(ServiceTests::count() == 0);
+		auto& definitions = realTimeForwarding.applicationProcessConfiguration.definitions;
+		REQUIRE(definitions.size() == ECSSMaxServiceTypeDefinitions);
+
+		for (auto serviceType : allServices) {
+			REQUIRE(std::equal(definitions[std::make_pair(applicationID1, serviceType)].begin(),
+			                   definitions[std::make_pair(applicationID1, serviceType)].end(),
+			                   realTimeForwarding.allMessageTypes.messagesOfService[serviceType].begin()));
+		}
+
+		resetAppProcessConfiguration();
+		ServiceTests::reset();
+		Services.reset();
+	}
+
+	SECTION("Addition of all report types of an application process, combined with invalid request") {
+		Message request(RealTimeForwardingControlService::ServiceType,
+		                RealTimeForwardingControlService::MessageType::AddReportTypesToAppProcessConfiguration,
+		                Message::TC, 1);
+		uint8_t applicationID1 = 1;
+		uint8_t applicationID2 = 2;
+		realTimeForwarding.controlledApplications.push_back(applicationID1);
+		realTimeForwarding.controlledApplications.push_back(applicationID2);
+		validInvalidAllReportsOfApp(request);
+
+		MessageParser::execute(request);
+
+		CHECK(ServiceTests::count() == 1);
+		CHECK(ServiceTests::countThrownErrors(ErrorHandler::ExecutionStartErrorType::NotControlledApplication) == 1);
+		auto& definitions = realTimeForwarding.applicationProcessConfiguration.definitions;
+
+		REQUIRE(definitions.size() == 2 * ECSSMaxServiceTypeDefinitions);
+
+		resetAppProcessConfiguration();
+		ServiceTests::reset();
+		Services.reset();
+	}
 }