diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index f2d9381698b9aff8668102e79c77a20dcbc256bf..ef908a33da04a5639e538b5c062b97f8874d9736 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -7,7 +7,7 @@
  *  
  *  @author     ETSI
  *  @version    $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_Functions.ttcn $
- *              $Id: OneM2M_Functions.ttcn 218 2017-02-07 09:36:53Z carres $
+ *              $Id: OneM2M_Functions.ttcn 224 2017-02-10 10:40:40Z reinaortega $
  *  @desc       Module containing functions for oneM2M
  *
  */
@@ -25,13 +25,15 @@ module OneM2M_Functions {
 	
 	
 	group ConfigFunctions {
+		
 		/**
 			@desc Ports mapping and default behaviour activation for Config 1
 		*/
 		function f_cf01Up() runs on CseTester {
 				
 			// Variables
-				
+			vc_config := e_cf01;	
+			
 			// Map
 			map(self:mcaPort, system:mcaPort);
 			map(self:acPort, system:acPort);
@@ -39,7 +41,7 @@ module OneM2M_Functions {
 			activate(a_cse_cf01());
 				
 			// Connect
-							
+						
 			//Initialze the IUT
 							
 		} // end f_cf01Up
@@ -47,6 +49,7 @@ module OneM2M_Functions {
 		function f_cf02Up() runs on CseTester {
 				
 			// Variables
+			vc_config := e_cf02;
 				
 			// Map
 			map(self:mcaPort, system:mcaPort);
@@ -56,7 +59,7 @@ module OneM2M_Functions {
 			activate(a_cse_cf02());
 				
 			// Connect
-							
+					
 			//Initialze the IUT
 							
 		} // end f_cf02Up
@@ -67,7 +70,8 @@ module OneM2M_Functions {
 		function f_cf03Up() runs on AeTester {
 		
 			// Variables
-		
+			vc_config := e_cf03;
+			
 			// Map
 			map(self:mcaPort, system:mcaPort);
 			map(self:acPort, system:acPort);
@@ -81,14 +85,27 @@ module OneM2M_Functions {
 		} // end f_cf03Up
 
 		/**
-		 * @desc Ports unmapping for Config 03
+		 * @desc Ports unmapping
+		 * @verdict 
 		 */
-		function f_cf03Down() runs on AeTester {
-			
-			unmap(self:mcaPort, system:mcaPort);
-			unmap(self:acPort, system:acPort);
+		function f_cfCseTesterDown() runs on CseTester {
+		
+			if(vc_config == e_cf01) {
+				f_cf01Down()
+			} else if (vc_config == e_cf02){
+				f_cf02Down()
+			} 
 		}
-				
+		/**
+		 * @desc Ports unmapping
+		 * @verdict 
+		 */
+		function f_cfAeTesterDown() runs on AeTester {
+		
+			if(vc_config == e_cf03) {
+				f_cf03Down()
+			} 
+		}			
 		/**
 		 * @desc Ports unmapping
 		 * @verdict 
@@ -97,16 +114,28 @@ module OneM2M_Functions {
 		
 			unmap(self:mcaPort, system:mcaPort);
 			unmap(self:acPort, system:acPort);
-			//stop;
+			stop;
 		}	
-			
+		/**
+		 * @desc Ports unmapping
+		 * @verdict 
+		 */
 		function f_cf02Down() runs on CseTester {
 		
 			unmap(self:mcaPort, system:mcaPort);
 			unmap(self:mccPort, system:mccPort);
 			unmap(self:acPort, system:acPort);
-			//stop;
+			stop;
 		}		
+		/**
+		 * @desc Ports unmapping for Config 03
+		 */
+		function f_cf03Down() runs on AeTester {
+			
+			unmap(self:mcaPort, system:mcaPort);
+			unmap(self:acPort, system:acPort);
+			stop;
+		}
 		
 	}//end group configFunctions
 	
@@ -180,6 +209,7 @@ module OneM2M_Functions {
 					}
 				}	
 				
+				f_checkCseTesterStatus();
 				return v_aeAuxIndex;
 			
 			}
@@ -249,6 +279,7 @@ module OneM2M_Functions {
 					}
 				}	
 				
+				f_checkCseTesterStatus();
 				return v_aeAuxIndex;
 			
 			}
@@ -296,11 +327,12 @@ module OneM2M_Functions {
 						
 						v_request := valueof(m_deleteRequest(v_resourceAddress));
 						
-						if(PX_FROM_IS_AE_ID){
-							if(ischosen(vc_resourcesList[vc_resourcesIndexToBeDeleted[i]].resource.any_1[0].AE_optional)) {	
-								v_request.from_ := vc_resourcesList[vc_resourcesIndexToBeDeleted[i]].resource.any_1[0].AE_optional.aE_ID;
-							}
-						}
+						//Not needed any longer: PX_SUPER_USER should be able to do all operations
+//						if(PX_FROM_IS_AE_ID){
+//							if(ischosen(vc_resourcesList[vc_resourcesIndexToBeDeleted[i]].resource.any_1[0].AE_optional)) {	
+//								v_request.from_ := vc_resourcesList[vc_resourcesIndexToBeDeleted[i]].resource.any_1[0].AE_optional.aE_ID;
+//							}
+//						}
 						
 						f_cse_deleteResource(v_request);
 						
@@ -376,6 +408,8 @@ module OneM2M_Functions {
 					}
 				}	
 				
+				f_checkCseTesterStatus();
+				
 				return v_resourceIndex;
 		
 			}
@@ -419,6 +453,8 @@ module OneM2M_Functions {
 						setverdict(inconc, "f_createAccessControlPolicy: No answer while creating resource type " & int2str(1));
 					}
 				}	
+				
+				f_checkCseTesterStatus();
 			
 				return v_acpAuxIndex;
 	
@@ -476,6 +512,9 @@ module OneM2M_Functions {
 						setverdict(inconc, testcasename() & ": No answer while updating resource");
 					}
 				}	
+				
+				f_checkCseTesterStatus();
+				
 			}// end f_cse_updateResource
 			
 			/**
@@ -542,6 +581,8 @@ module OneM2M_Functions {
 						setverdict(inconc, "f_updateAcpAuxResource: No answer while updating " & v_request.to_ & " resource" );
 					}
 				}		
+				
+				f_checkCseTesterStatus();
 			}   
 			
 		function f_subscriptionVerificationHandler(in XSD.ID p_creator, in ResponseStatusCode p_responseStatusCode := int2001) runs on CseTester {
@@ -803,7 +844,9 @@ module OneM2M_Functions {
 						setverdict(inconc, testcasename() & ": AE registration request not received");
 						stop;
 					}	     				   	
-				}    	
+				}    
+				
+				f_checkAeTesterStatus();	
     			
 				return v_resourceIndex;	
 			}	
@@ -1281,6 +1324,38 @@ module OneM2M_Functions {
 	
 	group CommonFunctions {
 		
+		
+		
+		/**
+		 * @desc Sending of an Adapter Control primitive
+		 * @param event Action to be performed by TA
+		 * @param data Corresponding information for the correct execution of the given action
+		 * @verdict 
+		 */
+		function f_checkCseTesterStatus() runs on CseTester {
+	
+			if (getverdict != pass) {
+				 f_cse_postamble_deleteResources();
+				 // Tear down
+				 f_cfCseTesterDown();
+			}
+		}
+		
+		/**
+		 * @desc Sending of an Adapter Control primitive
+		 * @param event Action to be performed by TA
+		 * @param data Corresponding information for the correct execution of the given action
+		 * @verdict 
+		 */
+		function f_checkAeTesterStatus() runs on AeTester {
+	
+			if (getverdict != pass) {
+				 //f_ae_postamble_deleteResources();
+				 // Tear down
+				 f_cfAeTesterDown();
+			}
+		}
+		
 		/**
 		 * @desc Sending of an Adapter Control primitive
 		 * @param event Action to be performed by TA
diff --git a/LibOneM2M/OneM2M_TestSystem.ttcn b/LibOneM2M/OneM2M_TestSystem.ttcn
index f59209c038383c07680854e37dafb59e1198ebca..6bac4baf1a19a804a68a14774c080ddbab71ff7a 100644
--- a/LibOneM2M/OneM2M_TestSystem.ttcn
+++ b/LibOneM2M/OneM2M_TestSystem.ttcn
@@ -7,13 +7,14 @@
  *  
  *  @author     ETSI
  *  @version    $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_TestSystem.ttcn $
- *              $Id: OneM2M_TestSystem.ttcn 202 2016-12-15 15:08:33Z reinaortega $
+ *              $Id: OneM2M_TestSystem.ttcn 224 2017-02-10 10:40:40Z reinaortega $
  *  @desc       Test System module for oneM2M
  *
  */
 module OneM2M_TestSystem {
 
 	import from OneM2M_Types all;
+	import from OneM2M_TypesAndValues all;
 	import from LibCommon_Time {modulepar all};
 	
 	/* Ports */
@@ -44,6 +45,7 @@ module OneM2M_TestSystem {
 		timer tc_ac := PX_TAC;
 		timer tc_wait;
 		//global variables
+		var Configurations vc_config;
 		var MyResourcesList vc_resourcesList;
 		var IntegerList vc_resourcesIndexToBeDeleted := {};
 	}
diff --git a/LibOneM2M/OneM2M_TypesAndValues.ttcn b/LibOneM2M/OneM2M_TypesAndValues.ttcn
index c51652e2f3d25402bc88a53eda431849e0b8a8ee..717a0b8b89e1f503a2c19e8441d9375f24d73b99 100644
--- a/LibOneM2M/OneM2M_TypesAndValues.ttcn
+++ b/LibOneM2M/OneM2M_TypesAndValues.ttcn
@@ -7,7 +7,7 @@
  *  
  *  @author     ETSI
  *  @version    $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_TypesAndValues.ttcn $
- *              $Id: OneM2M_TypesAndValues.ttcn 147 2016-10-25 07:52:22Z carres $
+ *              $Id: OneM2M_TypesAndValues.ttcn 224 2017-02-10 10:40:40Z reinaortega $
  *  @desc       Module containing types and values for oneM2M
  *
  */
@@ -92,5 +92,11 @@ module OneM2M_TypesAndValues {
 	type NhURI ParentID;
 	type record length(0 .. infinity) of RequestPrimitive RequestPrimitiveList;
 	type record length(1 .. infinity) of RequestPrimitiveList RequestPrimitiveMatrix;
+	
+	type enumerated Configurations {
+		e_cf01,
+		e_cf02,
+		e_cf03	
+	}
 } 
 // end of module
diff --git a/OneM2M_Testcases.ttcn b/OneM2M_Testcases.ttcn
index bd83eaa6522700d0be8a73a7eb578652d6beb1e9..c42057bd1e7da22fb34dac62c10a01c41cadba7a 100644
--- a/OneM2M_Testcases.ttcn
+++ b/OneM2M_Testcases.ttcn
@@ -7,7 +7,7 @@
  *  
  *  @author     ETSI
  *  @version    $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/OneM2M_Testcases.ttcn $
- *              $Id: OneM2M_Testcases.ttcn 218 2017-02-07 09:36:53Z carres $
+ *              $Id: OneM2M_Testcases.ttcn 224 2017-02-10 10:40:40Z reinaortega $
  *  @desc       Module containing test cases for oneM2M
  *
  */
@@ -127,9 +127,9 @@ module OneM2M_Testcases {
                 // Test component configuration
 				f_cf01Up();
                 
-				//Preambule
+				//Preamble
 				v_cseBaseIndex := f_cse_preamble_createServiceSubscribedAppRule({"C-AE-ID-STEM"});//c_CRUDNDi);
-	
+				
 				//Test Body
 				v_request := valueof(m_createAe(PX_APP_ID, omit, omit));	
 				
@@ -4113,6 +4113,10 @@ module OneM2M_Testcases {
 							p_createRequestPrimitive.primitiveContent.any_1[0].AccessControlPolicy_optional.selfPrivileges.accessControlRule_list := {v_accessControlRule_1,v_accessControlRule_2};
                 		} else {
 							f_setAcpId(p_createRequestPrimitive, {f_getResourceId(vc_resourcesList[v_acpAuxIndex].resource)});
+							v_setOfArcs.accessControlRule_list := {v_accessControlRule_1, v_accessControlRule_2};
+							v_updateRequest := valueof(m_updateAcpPrivileges(v_setOfArcs, -));
+							v_updateRequest := f_getUpdateRequestPrimitive(int1, vc_acpAuxIndex, v_updateRequest);
+							f_cse_updateResource(v_updateRequest);
                 		}
                 		
                 		//Creation of resource
@@ -7050,6 +7054,7 @@ module OneM2M_Testcases {
 
 					v_request := f_getCreateRequestPrimitive(int23, v_createRequest, v_resourceIndex);
 			
+					// Test Body
 					mcaPort.send(m_request(v_request));
 					tc_ac.start;
 					alt {
@@ -7103,7 +7108,8 @@ module OneM2M_Testcases {
 					v_contentInstanceResourceIndex := f_cse_createResource(int4, m_createContentInstance(f_getResourceAddress(v_aeIndex), "Random Value"), v_containerResourceIndex);//ContentInstance
 
 					v_request := f_getCreateRequestPrimitive(int23, v_createRequest, v_contentInstanceResourceIndex);
-
+					
+					// Test Body
 					mcaPort.send(m_request(v_request));
 					tc_ac.start;
 					alt {
@@ -7161,7 +7167,8 @@ module OneM2M_Testcases {
 					v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[v_acpAuxIndex].resource)}, -);//c_CRDNDi);
 				
 					v_request := f_getCreateRequestPrimitive(int23, v_createRequest, v_aeIndex);//Subscription 
-
+					
+					// Test Body
 					mcaPort.send(m_request(v_request));
 					tc_ac.start;
 					alt {
@@ -7214,7 +7221,7 @@ module OneM2M_Testcases {
 					v_request := f_getCreateRequestPrimitive(int23, v_createRequest, v_aeIndex);//Subscription 
 					//v_request.primitiveContent.any_1[0].Subscription_optional.notificationURI := {"Not Initialized"};
 					
-					
+					// Test Body
 					mcaPort.send(m_request(v_request));
 					tc_ac.start;
 					alt {
@@ -7271,7 +7278,8 @@ module OneM2M_Testcases {
 					v_request.primitiveContent.any_1[0].Subscription_optional.notificationURI := {f_getResourceAddress(v_ae2Index)};
 					
 					notifyHandler.start(f_subscriptionVerificationHandler(f_getResourceAddress(v_aeIndex), int4101));
-		
+					
+					// Test Body
 					mcaPort.send(m_request(v_request));
 					
 					tc_ac.start;
@@ -7329,7 +7337,8 @@ module OneM2M_Testcases {
 					v_request.primitiveContent.any_1[0].Subscription_optional.notificationURI := {f_getResourceAddress(v_ae2Index)};
 					
 					notifyHandler.start(f_subscriptionVerificationHandler(f_getResourceAddress(v_aeIndex), int5205));
-		
+					
+					// Test Body
 					mcaPort.send(m_request(v_request));
 					
 					tc_ac.start;