diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index 36926622b613d3e6d6c77dfeaee51a8afd3541ae..34c8c531fb9eabce5fb63c6282768c85b656b23e 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -29,7 +29,8 @@ module OneM2M_Functions {
 		function f_cf01Up(in boolean p_auxiliaryAe2Required := false) runs on AeSimu {
 			
 			// Variables
-			vc_config := e_cf01;	
+			vc_config := e_cf01;
+			vc_testSystemRole := e_ae;	
 			
 			// Map
 			map(self:mcaPort, system:mcaPort);
@@ -56,7 +57,8 @@ module OneM2M_Functions {
 		function f_cf01UpAe2() runs on AeSimu {
 			
 			// Variables
-			vc_config := e_cf01;	
+			vc_config := e_cf01;
+			vc_testSystemRole := e_ae;		
 			
 			// Map
 			map(self:mcaPort, system:mcaPort);
@@ -78,6 +80,7 @@ module OneM2M_Functions {
 				
 			// Variables
 			vc_config := e_cf02;
+			vc_testSystemRole := e_ae;	
 			vc_cse1 := CseSimu.create("CSE1") alive;
 				
 			// Map
@@ -100,7 +103,8 @@ module OneM2M_Functions {
 		function f_cf02UpCse1() runs on CseSimu {
 			
 			// Variables
-			vc_config := e_cf02;	
+			vc_config := e_cf02;
+			vc_testSystemRole := e_cse;		
 			
 			// Map
 			map(self:mccPort, system:mccPort);
@@ -121,6 +125,7 @@ module OneM2M_Functions {
 				
 			// Variables
 			vc_config := e_cf02;
+			vc_testSystemRole := e_cse;		
 			vc_ae1 := AeSimu.create("AE1") alive;
 				
 			// Map
@@ -145,6 +150,7 @@ module OneM2M_Functions {
 			
 			// Variables
 			vc_config := e_cf02;	
+			vc_testSystemRole := e_ae;		
 			
 			// Map
 			map(self:mcaPort, system:mcaPort);
@@ -164,6 +170,7 @@ module OneM2M_Functions {
 		
 			// Variables
 			vc_config := e_cf03;
+			vc_testSystemRole := e_cse;		
 			
 			// Map
 			map(self:mcaPort, system:mcaPort);//TODO To be consistent, we should use mcaPortIn for AE testing
@@ -185,6 +192,7 @@ module OneM2M_Functions {
 
 			// Variables
 			vc_config := e_cf04;
+			vc_testSystemRole := e_cse;		
 	
 			// Map
 			map(self:mccPort, system:mccPort);
@@ -2006,9 +2014,13 @@ module OneM2M_Functions {
 			
 			if(p_resourceType != int2) {
 				if(p_resourceType == int16) {
-					p_request.from_ := f_getOriginator(p_parentIndex, false);
-				} else {				
-					p_request.from_ := f_getOriginator(p_parentIndex);
+					p_request.from_ := PX_CSE1_ID;
+				} else {	
+					if(vc_testSystemRole == e_ae) {			
+						p_request.from_ := f_getOriginator(p_parentIndex);
+					} else {//vc_testSystemRole == e_cse
+						p_request.from_ := f_getOriginator(p_parentIndex, false);
+					}
 				}
 			}
 			p_request.to_ := f_getResourceAddress(p_parentIndex);
diff --git a/LibOneM2M/OneM2M_TestSystem.ttcn b/LibOneM2M/OneM2M_TestSystem.ttcn
index 76b0aa1ff006de292893b124c230e4c8463fc8e4..c3fc66f1548c2cab2d69d25892c6de28fa3add3a 100644
--- a/LibOneM2M/OneM2M_TestSystem.ttcn
+++ b/LibOneM2M/OneM2M_TestSystem.ttcn
@@ -31,6 +31,7 @@ module OneM2M_TestSystem {
 		timer tc_wait := PX_TWAIT;
 		//global variables
 		var Configurations vc_config;
+		var TestSystemRole vc_testSystemRole;
 		var MyResourcesList vc_resourcesList;
 		var IntegerList vc_resourcesIndexToBeDeleted := {};
 		var integer vc_aeAuxIndex;//TODO To be removed
diff --git a/LibOneM2M/OneM2M_Types.ttcn b/LibOneM2M/OneM2M_Types.ttcn
index 3b4354e8e2ba904e780750d4a7a3ad4dac309c6b..000bc30c660fbb4fc0038c53d32218b31eaa35ef 100644
--- a/LibOneM2M/OneM2M_Types.ttcn
+++ b/LibOneM2M/OneM2M_Types.ttcn
@@ -5597,6 +5597,11 @@ group OtherTypes {
 		e_cf03,
 		e_cf04
 	};
+	
+	type enumerated TestSystemRole {
+		e_cse,
+		e_ae
+	};
 		
 	type NhURI ParentID;