diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index cd614ec84b1ff8a6e88ca7ba5eb23177142c50bf..919311472de56505bbdf066cf7b50eb815d2714f 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -74,7 +74,7 @@ module OneM2M_Functions {
 		/**
 		 * @desc Ports mapping and default behaviour activation for Config 02
 		 */
-		function f_cf02Up() runs on AeSimu {
+		function f_cf02Up(in CseTypeID p_cseType := int2) runs on AeSimu {
 				
 			// Variables
 			vc_config := e_cf02;
@@ -101,12 +101,13 @@ module OneM2M_Functions {
 		/**
 			@desc Ports mapping and default behaviour activation for Config 2 on the CSE1
 		*/
-		function f_cf02UpCse1() runs on CseSimu {
+		function f_cf02UpCse1(in CseTypeID p_cseType := int2) runs on CseSimu {
 			
 			// Variables
 			var PrimitiveContent v_cSEBaseResource;
 			vc_config := e_cf02;
 			vc_testSystemRole := e_cse;		
+			vc_cseType := p_cseType;
 			
 			// Map
 			map(self:mccPort, system:mccPort);
@@ -123,12 +124,13 @@ module OneM2M_Functions {
 		/**
 		 * @desc Ports mapping and default behaviour activation for Config 02
 		 */
-		function f_cf02UpCseSimuMaster() runs on CseSimu {
+		function f_cf02UpCseSimuMaster(in CseTypeID p_cseType := int2) runs on CseSimu {
 				
 			// Variables
 			var PrimitiveContent v_cSEBaseResource;
 			vc_config := e_cf02CseSimuMaster;
-			vc_testSystemRole := e_cse;		
+			vc_testSystemRole := e_cse;	
+			vc_cseType := p_cseType;
 			vc_ae1 := AeSimu.create("AE1") alive;
 				
 			// Map
@@ -152,11 +154,11 @@ module OneM2M_Functions {
 		/**
 			@desc Ports mapping and default behaviour activation for Config 2 on the AE1
 		*/
-		function f_cf02UpAe1() runs on AeSimu {
+		function f_cf02UpAe1(in CseTypeID p_cseType := int2) runs on AeSimu {
 			
 			// Variables
 			vc_config := e_cf02CseSimuMaster;	
-			vc_testSystemRole := e_ae;		
+			vc_testSystemRole := e_ae;	
 			
 			// Map
 			map(self:mcaPort, system:mcaPort);
@@ -170,12 +172,13 @@ module OneM2M_Functions {
 		/**
 		 * @desc Ports mapping and default behaviour activation for Config 03
 		 */
-		function f_cf03Up() runs on CseSimu {
+		function f_cf03Up(in CseTypeID p_cseType := int2) runs on CseSimu {
 		
 			// Variables
 			var PrimitiveContent v_cSEBaseResource;
 			vc_config := e_cf03;
-			vc_testSystemRole := e_cse;		
+			vc_testSystemRole := e_cse;	
+			vc_cseType := p_cseType;	
 			
 			// Map
 			map(self:mcaPortIn, system:mcaPortIn);//TODO To be consistent, we should use mcaPortIn for AE testing
@@ -200,13 +203,13 @@ module OneM2M_Functions {
 		/**
 		 * @desc Ports mapping and default behaviour activation for Config 04
 		 */
-		function f_cf04Up() runs on CseSimu {
+		function f_cf04Up(in CseTypeID p_cseType := int2) runs on CseSimu {
 
 			// Variables
 			var PrimitiveContent v_cSEBaseResource;
 			vc_config := e_cf04;
 			vc_testSystemRole := e_cse;	
-			
+			vc_cseType := p_cseType;			
 	
 			// Map
 			map(self:mccPort, system:mccPort);
@@ -1649,7 +1652,7 @@ module OneM2M_Functions {
 				
 					f_checkCseSimuStatus();
 	
-				} //end f_cse_resourceAnnouncementHandler
+				} //end f_cse_announcementProcedure_createHandler
 			
 				/**
 				 * @desc Message exchange for the announcement of resources
@@ -1692,7 +1695,7 @@ module OneM2M_Functions {
 				
 					return v_resourceIndex;
 	
-				} //end f_cse_announceResource	
+				} //end f_cse_announcementProcedure_announceResource	
 				
 				/**
 				 * @desc Handling message exchange for the AE Annc update
@@ -1737,6 +1740,52 @@ module OneM2M_Functions {
 
 				} //end f_cse_notifyProcedure_updateHandler	
 				
+				/**
+				 * @desc Handling of announcement of resources
+				 * @param p_from Expected originator of the request primitive
+				 * @param p_to Expected receiver of the request primitive
+				 * @verdict 
+				 */
+				 //TODO To finalize this function
+				function f_cse_announcementProcedure_deleteHandler() runs on CseSimu {
+					// Local variables
+					var ResponsePrimitive v_responsePrimitive;
+					var template Notification v_notificationRequest := mw_contentNotification_any;	 
+
+					//Activate defaults when running on a PTC
+					f_cse_activateDefaults_cse1();
+					
+					//Preparation of Notification response to be sent
+					v_responsePrimitive := valueof(m_responseNotification(int2002, omit));
+
+					tc_ac.start;
+					alt {
+						[] mccPortIn.receive(mw_request(mw_notifyNotification(v_notificationRequest))) -> value vc_request {
+							tc_ac.stop;
+							setverdict(pass, __SCOPE__ & ":INFO: Notification received");
+							//TODO Delete the resource of the local list
+						}
+						[] mccPortIn.receive{
+							tc_ac.stop;
+							setverdict(fail, __SCOPE__ & ":ERROR: unexpected message received");
+							stop;
+						}
+						[] tc_ac.timeout {
+							setverdict(fail, __SCOPE__ & ":ERROR:  No notification received");
+							stop;
+						}
+					}
+		
+					v_responsePrimitive.requestIdentifier := vc_request.primitive.requestPrimitive.requestIdentifier;
+					if(getverdict == pass) {
+						mccPortIn.send(m_httpResponse(v_responsePrimitive));
+					} else {
+						v_responsePrimitive.responseStatusCode := int4000; 
+						mccPortIn.send(m_httpResponse(v_responsePrimitive));
+					}
+
+				} //end f_cse_announcementProcedure_deleteHandler
+				
 			}//end of group AnnouncementFunctions
 			
 			/**
@@ -1969,11 +2018,7 @@ module OneM2M_Functions {
 					v_myResource.cSEBase.cSE_ID := PX_CSE1_ID;
 					v_myResource.cSEBase.supportedResourceType := PX_CSE1_SRT;
 					v_myResource.cSEBase.pointOfAccess := {f_getAnnouncementTargetPoA(PX_PROTOCOL_BINDING, PX_CSE1_ADDRESS, "")};
-					if (PX_MN_CSE){
-						v_myResource.cSEBase.cseType := int1;	//Tester is an IN-CSE
-					}else if (PX_IN_CSE){
-						v_myResource.cSEBase.cseType := int2;	//Tester is a MN-CSE
-					}
+					v_myResource.cSEBase.cseType := vc_cseType;
 					    
 				}else if(p_resourceType == int16 and ispresent(p_resource)) {			//RemoteCSE
 					if(ischosen(p_resource.remoteCSE)){
diff --git a/LibOneM2M/OneM2M_TestSystem.ttcn b/LibOneM2M/OneM2M_TestSystem.ttcn
index 223b9fdd45942755553b26b571304448b9b0d3de..c6018d32a327344c373d5485cb9b443f1b27d8a4 100644
--- a/LibOneM2M/OneM2M_TestSystem.ttcn
+++ b/LibOneM2M/OneM2M_TestSystem.ttcn
@@ -65,11 +65,14 @@ module OneM2M_TestSystem {
 		var integer vc_remoteCseIndex := -1;
 		var integer vc_localRemoteCseIndex := -1;
 		var integer vc_cSEBaseIndex := -1;	//Index of the CSEBase resource of the Tester inside vc_localResourcesList
+		var CseTypeID vc_cseType;			//cseType of the simulated CSE. IN = 1; MN = 2
 	};
 	
-	type component InCseSimu extends CseSimu {}
+	type component InCseSimu extends CseSimu {
+	}
 	
-	type component MnCseSimu extends CseSimu {}
+	type component MnCseSimu extends CseSimu {
+	}
 			
 	type component CseSystem {
 		port OneM2MPort mcaPort;
diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn
index 51466f6ae624323dc5a4db82f84ae62b5e5315b6..a2a9aa4385749eb4bc60f642def9a6b697eaa3b6 100644
--- a/OneM2M_PermutationFunctions.ttcn
+++ b/OneM2M_PermutationFunctions.ttcn
@@ -6345,7 +6345,7 @@ module OneM2M_PermutationFunctions {
 					// Test adapter configuration
 			
 					//Register the CSE
-					vc_cse1.start(f_cse_registrationRemoteCse(mw_createRemoteCSE));	
+					vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSEBase));
 					vc_cse1.done;
 					
 					//Preamble
@@ -6395,19 +6395,18 @@ module OneM2M_PermutationFunctions {
 				function f_CSE_ANNC_CRE_001(ResourceType p_resourceType,template RequestPrimitive p_createRequestAnnc, in template RequestPrimitive p_requestCreatePrimitive := omit) runs on AeSimu {
 				  //Local variables
 				  var MsgIn v_response;
-				  var RequestPrimitive v_request;
-				  var integer v_parentIndex := -1;
 				  var integer v_aeIndex := -1;
 				  var integer v_resourceIndex;
 				  var ResponsePrimitive v_responsePrimitive;
 				  var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit);
+				  v_create.primitiveContent.aE.announceTo := {PX_CSE_ID};
 				  //Test control
 
 				  //Test component configuration
 				  f_cf02Up();
 
 				  //Register the CSE
-				  vc_cse1.start(f_cse_registrationRemoteCse(mw_createRemoteCSE));	
+				  vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSEBase));	
 				  vc_cse1.done;
 
 				  //Preamble
@@ -6415,10 +6414,9 @@ module OneM2M_PermutationFunctions {
 				  v_aeIndex := f_cse_createResource(int2,v_create);
 				  vc_cse1.done;
 
-				  v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestCreatePrimitive, v_parentIndex);
-
 				  vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc));	
-				  mcaPort.send(m_request(v_request));
+				  f_cse_createResource(p_resourceType, p_requestCreatePrimitive, v_aeIndex);
+				  vc_cse1.done;
 
 				  //Postamble
 				  f_cse_postamble_deleteResources();
@@ -6485,7 +6483,7 @@ module OneM2M_PermutationFunctions {
 					// Test adapter configuration
 
 					//Register the CSE
-					vc_cse1.start(f_cse_registrationRemoteCse(mw_createRemoteCSE));	
+					vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSEBase));	
 					vc_cse1.done;
 	
 					//Preamble
@@ -6535,6 +6533,7 @@ module OneM2M_PermutationFunctions {
 					var integer v_aEAnncIndex := -1;
 					var ResponsePrimitive v_responsePrimitive;
 					var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit);
+					v_create.primitiveContent.aE.announceTo := {PX_CSE_ID};
    
 					// Test control
 
@@ -6543,7 +6542,7 @@ module OneM2M_PermutationFunctions {
 
 					// Test adapter configuration
 					// Register the CSE
- 				    f_cse_registrationRemoteCse(mw_createRemoteCSE);	
+					f_cse_registerRemoteCse(m_createRemoteCSEBase);	
 					
 					//Preamble
 					f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -));
@@ -6591,6 +6590,7 @@ module OneM2M_PermutationFunctions {
 					var integer v_remoteCSEAnncIndex := -1;
 					var ResponsePrimitive v_responsePrimitive;
 					var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit);
+					v_create.primitiveContent.aE.announceTo := {PX_CSE_ID};
    
 					// Test control
 
@@ -6599,7 +6599,7 @@ module OneM2M_PermutationFunctions {
 
 					// Test adapter configuration
 					// Register the CSE
-					f_cse_registrationRemoteCse(mw_createRemoteCSE);	
+					f_cse_registerRemoteCse(m_createRemoteCSEBase);	
 	
 					//Preamble
 					f_cse_announcementProcedure_createHandler(mw_createRemoteCSEAnnc(-, -, -));
@@ -6647,7 +6647,7 @@ module OneM2M_PermutationFunctions {
 					var integer v_remoteCSEAnncIndex := -1;
 					var ResponsePrimitive v_responsePrimitive;
 					var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit);
-   
+					v_create.primitiveContent.aE.announceTo := {PX_CSE_ID};
 					// Test control
 
 					// Test component configuration
@@ -6655,7 +6655,7 @@ module OneM2M_PermutationFunctions {
 
 					// Test adapter configuration
 					// Register the CSE
-					f_cse_registrationRemoteCse(mw_createRemoteCSE);	
+					f_cse_registerRemoteCse(m_createRemoteCSEBase);	
 
 					//Preamble
 					f_cse_announcementProcedure_createHandler(mw_createRemoteCSEAnnc(-, -, -));
@@ -6694,6 +6694,131 @@ module OneM2M_PermutationFunctions {
 				}//end f_CSE_ANNC_CRE_006
 				
 			} //end group Create
+			
+			group Delete{
+				
+				function f_CSE_ANNC_DEL_001(ResourceType p_resourceType,template RequestPrimitive p_createRequestAnnc, in template RequestPrimitive p_requestCreatePrimitive := omit) runs on AeSimu {
+					//Local variables
+					var RequestPrimitive v_request;
+				  	var integer v_aeIndex := -1;
+				  	var integer v_resourceIndex;
+				  	var ResponsePrimitive v_responsePrimitive;
+				  	var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit);
+				  	v_create.primitiveContent.aE.announceTo := {PX_CSE_ID};
+				  	//Test control
+
+				  	//Test component configuration
+				  	f_cf02Up();
+
+				  	//Register the CSE
+				  	vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSEBase));	
+				  	vc_cse1.done;
+
+				  	//Preamble
+				  	vc_cse1.start(f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -)));
+				  	v_aeIndex := f_cse_createResource(int2,v_create);
+				  	vc_cse1.done;
+
+				  	vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc));	
+					v_resourceIndex := f_cse_createResource(p_resourceType, p_requestCreatePrimitive, v_aeIndex);
+				  	vc_cse1.done;				  	
+				  	
+					vc_cse1.start(f_cse_announcementProcedure_deleteHandler());	
+					v_request := valueof(m_delete(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex)));
+					mcaPort.send(m_request(v_request));
+					vc_cse1.done;
+					
+					tc_ac.start;
+					alt {
+						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2002))) {
+							tc_ac.stop;
+							setverdict(pass, __SCOPE__ & ": Resource deleted successfully");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) {
+							tc_ac.stop;
+							setverdict(fail, __SCOPE__ & ": Wrong response status code in the response");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) {
+							tc_ac.stop;
+							setverdict(fail, __SCOPE__ & ": Error while deleting container resource using non-hierarchical addressing method");
+						}
+						[] tc_ac.timeout {
+							setverdict(fail, __SCOPE__ & ": No answer while deleting resource");
+						}
+					}
+					
+					//Check to see if the resource is present or not
+					if (f_isResourceNotPresent(v_aeIndex, f_getResourceName(vc_resourcesList[v_resourceIndex].resource))){
+						setverdict(pass, __SCOPE__ & ":INFO: Resource deleted");
+					}else {
+						setverdict(fail, __SCOPE__ & ":ERROR: Resource not deleted");
+					}
+					
+				  	//Postamble
+				  	f_cse_postamble_deleteResources();
+
+				  	// Tear down
+				  	f_cf02Down();
+				} //end f_CSE_ANNC_DEL_001
+			
+				function f_CSE_ANNC_DEL_002(ResourceType p_resourceType, template RequestPrimitive p_createRequestAnnc, in template RequestPrimitive p_requestCreatePrimitive := omit) runs on CseSimu {
+					// Local variables
+					var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+					var MsgIn v_request;
+					var integer v_parentIndex := -1;
+					var integer v_aeIndex := -1;
+					var integer v_resourceIndex;
+					var integer v_aEAnncIndex := -1;
+					var ResponsePrimitive v_responsePrimitive;
+					var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit);
+					v_create.primitiveContent.aE.announceTo := {PX_CSE_ID};
+   
+					// Test control
+
+					// Test component configuration
+					f_cf02UpCseSimuMaster();
+
+					// Test adapter configuration
+					// Register the CSE
+					f_cse_registerRemoteCse(m_createRemoteCSEBase);	
+	
+					//Preamble
+					v_ae1.start(f_cse_createResource(int2,v_create));
+					v_ae1.done;
+					f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -));					
+					
+					v_ae1.start(f_cse_createResource(p_resourceType, p_requestCreatePrimitive, vc_aeAuxIndex));
+					v_ae1.done;
+					f_cse_announcementProcedure_createHandler(p_createRequestAnnc);						
+	
+					// Test Body
+					v_ae1.start(f_cse_deleteResource(lengthof(vc_resourcesList)-1));
+					v_ae1.done;
+	
+					tc_ac.start;
+					alt {
+						[] mccPortIn.receive(mw_request(mw_delete(f_getResourceAddress(lengthof(vc_resourcesList)-1)))){
+							tc_ac.stop;
+							setverdict(pass, __SCOPE__ & ": Delete Request received successfully");
+						}
+						[] mccPortIn.receive {
+							tc_ac.stop;
+							setverdict(fail, __SCOPE__ & ": Error Delete request was not received");
+						}
+						[] tc_ac.timeout {
+							setverdict(fail, __SCOPE__ & ": No answer while waiting to receive Delete request");
+						}
+					 }
+
+					// Postamble
+					f_cse_postamble_deleteResourcesCSE();
+
+					// Tear down
+					f_cf02DownCseSimuMaster();
+
+				}//end f_CSE_ANNC_DEL_002
+			
+			}//end group Delete
 		
 		}// end group Announcement
 	
diff --git a/OneM2M_Testcases_CSE_Release_2.ttcn b/OneM2M_Testcases_CSE_Release_2.ttcn
index 28accb34dcbf702c27aa1c07411c69c8e7414727..7dd1d4c0cd57a04259840ef8b655991b91dcca3a 100644
--- a/OneM2M_Testcases_CSE_Release_2.ttcn
+++ b/OneM2M_Testcases_CSE_Release_2.ttcn
@@ -7102,7 +7102,90 @@ module OneM2M_Testcases_CSE_Release_2 {
 					}
 	
 				} //end group g_CSE_ANNC_CRE_006
-			}
+			}//end group Create
+			
+			group Delete{
+				
+				group g_CSE_ANNC_DEL_001{
+					
+					testcase TC_CSE_ANNC_DEL_001_ACP() runs on Tester system CseSystem {
+						// Local variables
+						var MnCseSimu v_cse1 := MnCseSimu.create("CSE1") alive;
+						var template RequestPrimitive v_createRequest := m_createAcpBase;
+						var template RequestPrimitive v_createRequestAnnc := mw_createAccessControlPolicyAnnc;
+  
+						v_createRequest.primitiveContent.accessControlPolicy.announceTo := {PX_CSE1_ID};
+  
+						v_cse1.start(f_CSE_ANNC_DEL_001(int1, v_createRequestAnnc, v_createRequest));//AccessControlPolicy
+						v_cse1.done;
+					}
+	
+					testcase TC_CSE_ANNC_DEL_001_CNT() runs on Tester system CseSystem {
+						// Local variables
+						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
+						var template RequestPrimitive v_createRequest := m_createContainerBase;
+						var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnncBase;
+  
+						v_createRequest.primitiveContent.container.announceTo := {PX_CSE1_ID};
+  
+						v_cse1.start(f_CSE_ANNC_DEL_001(int3, v_createRequestAnnc, v_createRequest));//Container
+						v_cse1.done;
+					}
+	
+					testcase TC_CSE_ANNC_DEL_001_GRP() runs on Tester system CseSystem {
+						// Local variables
+						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
+						var template RequestPrimitive v_createRequest := m_createGroupBase;
+						var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnncBase;
+  
+						v_createRequest.primitiveContent.group_.announceTo := {PX_CSE1_ID};
+  
+						v_cse1.start(f_CSE_ANNC_DEL_001(int9, v_createRequestAnnc, v_createRequest));//Group
+						v_cse1.done;
+					}
+
+				}// end group g_CSE_ANNC_DEL_001
+				
+				group g_CSE_ANNC_DEL_002{
+					
+					testcase TC_CSE_ANNC_DEL_002_ACP() runs on Tester system CseSystem {
+						// Local variables
+						var MnCseSimu v_cse1 := MnCseSimu.create("CSE1") alive;
+						var template RequestPrimitive v_createRequest := m_createAcpBase;
+						var template RequestPrimitive v_createRequestAnnc := mw_createAccessControlPolicyAnnc;
+  
+						v_createRequest.primitiveContent.accessControlPolicy.announceTo := {PX_CSE1_ID};
+  
+						v_cse1.start(f_CSE_ANNC_DEL_002(int1, v_createRequestAnnc, v_createRequest));//AccessControlPolicy
+						v_cse1.done;
+					}
+					
+					testcase TC_CSE_ANNC_DEL_002_CNT() runs on Tester system CseSystem {
+						// Local variables
+						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
+						var template RequestPrimitive v_createRequest := m_createContainerBase;
+						var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnncBase;
+  
+						v_createRequest.primitiveContent.container.announceTo := {PX_CSE1_ID};
+  
+						v_cse1.start(f_CSE_ANNC_DEL_002(int3, v_createRequestAnnc, v_createRequest));//Container
+						v_cse1.done;
+					}
+					
+					testcase TC_CSE_ANNC_DEL_002_GRP() runs on Tester system CseSystem {
+						// Local variables
+						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
+						var template RequestPrimitive v_createRequest := m_createGroupBase;
+						var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnncBase;
+  
+						v_createRequest.primitiveContent.group_.announceTo := {PX_CSE1_ID};
+  
+						v_cse1.start(f_CSE_ANNC_DEL_002(int9, v_createRequestAnnc, v_createRequest));//Group
+						v_cse1.done;
+					}
+	
+				}// end group g_CSE_ANNC_DEL_002
+			}//end group Delete
 		}//end group Announcement
 	
 	}//end group CSE