diff --git a/OneM2M_Testcases_CSE_Release_3.ttcn b/OneM2M_Testcases_CSE_Release_3.ttcn
index 5f6a24866023defc02764ca0c42231b6e3bb323d..f1e5a1110679f2fe7eb5b75f1df5c8bfdee2bb48 100644
--- a/OneM2M_Testcases_CSE_Release_3.ttcn
+++ b/OneM2M_Testcases_CSE_Release_3.ttcn
@@ -7551,13 +7551,13 @@ module OneM2M_Testcases_CSE_Release_3 {
 					 */						
 					testcase TC_CSE_SEC_ROL_RET_001() runs on Tester system CseSystem {
 						//Local variables
-						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
 								
-						v_ae1.start(f_CSE_SEC_ROL_RET_001()); 	
-						v_ae1.done;																			
+						v_cse1.start(f_CSE_SEC_ROL_RET_001()); 	
+						v_cse1.done;																			
 					}	
 					
-					function f_CSE_SEC_ROL_RET_001() runs on AeSimu system CseSystem {
+					function f_CSE_SEC_ROL_RET_001() runs on CseSimu system CseSystem {
 						// Local variables
 						var MsgIn v_response;
 						var integer v_aeIndex := -1;
@@ -7570,29 +7570,29 @@ module OneM2M_Testcases_CSE_Release_3 {
 						}
 	
 						// Test component configuration
-						f_cf01Up();
+						f_cf04Up();
 	
 						// Test adapter configuration
 	
 						// Preamble 	
-						v_aeIndex := f_cse_preamble_registerAe();
+						vc_remoteCseIndex := f_cse_registerRemoteCse(m_createRemoteCSEBase);
 						v_targetResourceAddress := fx_assign_originatorRole(); 
 							
 						// Test Body
 						var RequestPrimitive v_retrieveRequest := valueof(m_retrieve(v_targetResourceAddress,f_getOriginator())); 	
-						f_send(e_mca_port, m_request(v_retrieveRequest));
+						f_send(e_mcc_port, m_request(v_retrieveRequest));
 
 						tc_ac.start;
 						alt {
-							[] mcaPort.receive(mw_response(mw_responsePrimitive(int2000))) {
+							[] mccPort.receive(mw_response(mw_responsePrimitive(int2000))) {
 								tc_ac.stop;
 								setverdict(pass, __SCOPE__ & ": Role resource retrieved");
 							}
-							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) {
+							[] mccPort.receive(mw_response(mw_responsePrimitiveOK)) {
 								tc_ac.stop;
 								setverdict(fail, __SCOPE__ & ": Wrong response status code in the response");
 							}
-							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) {
+							[] mccPort.receive(mw_response(mw_responsePrimitiveKO)) {
 								tc_ac.stop;
 								setverdict(fail, __SCOPE__ & ": Error while retrieving role resource");
 							}
@@ -7602,10 +7602,10 @@ module OneM2M_Testcases_CSE_Release_3 {
 						}	
 					
 						// Postamble
-						f_cse_postamble_deleteResources();
+						f_cse_postamble_deleteResourcesCSE();
 		
 						// Tear down
-						f_cf01Down();
+						f_cf04Down();
 
 					}//end f_CSE_SEC_ROL_RET_001	
 					
@@ -7616,13 +7616,13 @@ module OneM2M_Testcases_CSE_Release_3 {
 					 */						
 					testcase TC_CSE_SEC_ROL_RET_002() runs on Tester system CseSystem {
 						//Local variables
-						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
 								
-						v_ae1.start(f_CSE_SEC_ROL_RET_001()); 	
-						v_ae1.done;																			
+						v_cse1.start(f_CSE_SEC_ROL_RET_001()); 	
+						v_cse1.done;																					
 					}		
 					
-					function f_CSE_SEC_ROL_RET_002() runs on AeSimu system CseSystem {
+					function f_CSE_SEC_ROL_RET_002() runs on CseSimu system CseSystem {
 						
 						// Local variables
 						var MsgIn v_response;
@@ -7636,30 +7636,30 @@ module OneM2M_Testcases_CSE_Release_3 {
 						}
 	
 						// Test component configuration
-						f_cf01Up();
+						f_cf04Up();
 	
 						// Test adapter configuration
 	
 						// Preamble 	
-						v_aeIndex := f_cse_preamble_registerAe();
+						vc_remoteCseIndex := f_cse_registerRemoteCse(m_createRemoteCSEBase);
 						v_roleResourceAddress := fx_assign_originatorRole(); 
 						v_tokenResourceAddress := fx_assign_originatorToken(); 
 							
 						// Test Body
 						var RequestPrimitive v_retrieveRequest := valueof(m_retrieve(v_tokenResourceAddress,f_getOriginator())); 	
-						f_send(e_mca_port, m_request(v_retrieveRequest));
+						f_send(e_mcc_port, m_request(v_retrieveRequest));
 
 						tc_ac.start;
 						alt {
-							[] mcaPort.receive(mw_response(mw_responsePrimitive(int2000))) {
+							[] mccPort.receive(mw_response(mw_responsePrimitive(int2000))) {
 								tc_ac.stop;
 								setverdict(pass, __SCOPE__ & ": Token resource retrieved");
 							}
-							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) {
+							[] mccPort.receive(mw_response(mw_responsePrimitiveOK)) {
 								tc_ac.stop;
 								setverdict(fail, __SCOPE__ & ": Wrong response status code in the response");
 							}
-							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) {
+							[] mccPort.receive(mw_response(mw_responsePrimitiveKO)) {
 								tc_ac.stop;
 								setverdict(fail, __SCOPE__ & ": Error while retrieving token resource");
 							}
@@ -7669,10 +7669,10 @@ module OneM2M_Testcases_CSE_Release_3 {
 						}	
 					
 						// Postamble
-						f_cse_postamble_deleteResources();
+						f_cse_postamble_deleteResourcesCSE();
 		
 						// Tear down
-						f_cf01Down();
+						f_cf04Down();
 
 					}//end f_CSE_SEC_ROL_RET_001	
 					
@@ -7808,7 +7808,75 @@ module OneM2M_Testcases_CSE_Release_3 {
 						 // Tear down
 						 f_cf02DownCseSimuMaster();
 						
-					 } // end f_CSE_SEC_ROL_RET_003													
+					 } // end f_CSE_SEC_ROL_RET_003		
+
+
+					/**
+					 * @desc Check that the IUT returns the result of a requeston a resource protected by role based access control, when the appropriate credentials are provided in the request
+					 * 
+					 */								
+					testcase TC_CSE_SEC_ROL_RET_005() runs on Tester system CseSystem {
+						//Local variables
+						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+								
+						v_ae1.start(f_CSE_SEC_ROL_RET_005()); 	
+						v_ae1.done;																			
+					}
+				
+					function f_CSE_SEC_ROL_RET_005() runs on AeSimu system CseSystem {
+						// Local variables
+						var integer v_aeIndex := -1;
+						var XSD.ID v_tokenResourceID, v_roleResourceID;
+						var integer v_resourceIndex := -1;
+		    										   
+						// Test control
+						if(not(PICS_ROL_SUPPORT)) {
+							setverdict(inconc, __SCOPE__ & ": Role Based Access Control Procedure support is required to run this test case");
+							stop;
+						}
+	
+						// Test component configuration
+						f_cf01Up();
+	
+						// Test adapter configuration
+	
+						// Preamble 	
+						v_aeIndex := f_cse_preamble_registerAe();
+						v_resourceIndex := f_cse_createResource(int3, m_createContainerBase);
+						v_tokenResourceID := fx_assign_originatorToken(); 
+						v_roleResourceID := fx_assign_originatorRole(); 
+							
+						// Test Body
+						var RequestPrimitive v_retrieveRequest;
+						v_retrieveRequest := m_retrieve(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex));
+						v_retrieveRequest.roleIDs := {v_roleResourceID};
+						v_retrieveRequest.tokenIDs := {v_tokenResourceID};
+						f_send(e_mca_port, m_request(v_retrieveRequest));
+						
+						tc_ac.start;
+						alt {
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value vc_response {
+								tc_ac.stop;
+								setverdict(pass, __SCOPE__&":INFO: Resource retrieved successfuly");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value vc_response {
+								tc_ac.stop;
+								setverdict(inconc, __SCOPE__&":INFO: Error while retrieving resource");
+							}
+							[] tc_ac.timeout {
+								setverdict(inconc, __SCOPE__&":INFO: No answer while retrieving resource");
+							}
+						}	
+						
+						f_checkAeSimuStatus();
+					
+						// Postamble
+						f_cse_postamble_deleteResources();
+		
+						// Tear down
+						f_cf01Down();
+
+					}//end f_CSE_SEC_ROL_RET_005											
 	
 				}// end of group Retrieve