diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index d8a19ec4e2d984f94b45c056e4ad72744e0ee52d..5f7bd471514c17a34286db228c4f8652a2b55a6a 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -362,6 +362,28 @@ module OneM2M_Functions {
 			return v_request;
 	
 		}
+		
+		/**
+		 * @desc Getting last resourceIndex saved in the vc_resourcesList
+		 * @param p_tester Given component
+		 */
+		function f_getLatestResourceIndex(in Tester p_component) runs on Tester return integer {
+			var integer v_resourceIndex;
+
+			f_connectInfoPort(p_component);
+
+			p_component.start(f_sendLatestResourceIndex());
+			alt {
+				[]infoPort.receive(mw_resourceIndex) -> value v_resourceIndex{
+				}
+			}
+
+			p_component.done;
+			f_disconnectInfoPort(p_component);
+
+			return v_resourceIndex;
+
+		}
 							
 		/**
 		 * @desc Getting primitiveContent retrieved in an AeSimu component
@@ -452,6 +474,15 @@ module OneM2M_Functions {
 	
 		} 
 		
+		/**
+		 * @desc Sending of last resourceIndex saved in the vc_resourcesList
+		 */	
+		function f_sendLatestResourceIndex() runs on Tester {
+
+			infoPort.send(lengthof(vc_resourcesList)-1);
+		
+		} 
+		
 		/**
 		 * @desc Sending of last primitiveContent retrieved (vc_primitiveContentRetrievedResource) through InfoPort
 		 */	
@@ -486,14 +517,18 @@ module OneM2M_Functions {
 		function f_sendResource(in integer p_resourceIndex) runs on Tester {
 	
 			if(p_resourceIndex == -1) {
-				infoPort.send(vc_resourcesList[vc_aeAuxIndex]);  //TODO To send Ae or RemoteCSE depending on the component type
+				if(vc_testSystemRole == e_ae) {	
+					infoPort.send(vc_resourcesList[vc_aeAuxIndex]);
+				}else if(vc_testSystemRole == e_cse) {
+					infoPort.send(vc_resourcesList[vc_remoteCseIndex]);
+				}
 			} else {
 				infoPort.send(vc_resourcesList[p_resourceIndex]);
 			}
 				
 		} 	
 	
-	}// end of gropu InfoPortCommunication	
+	}// end of group InfoPortCommunication	
 	
 	group CseFunctions {
 	
@@ -998,12 +1033,21 @@ module OneM2M_Functions {
 							
 			/**
 			 * @desc Message exchange for the update of a resource
+			 * @param p_resourceType Resource type of the resource to be created
 			 * @param p_requestPrimitive UPDATE request primitive to be used
+			 * @param p_resourceIndex Internal resource index which indicates the resource to be updated	 
 			 * @verdict 
 			 */
-			function f_cse_updateResource(in RequestPrimitive p_requestPrimitive) runs on AeSimu {
-
-				mcaPort.send(m_request(p_requestPrimitive));
+			function f_cse_updateResource(in ResourceType p_resourceType, integer p_resourceIndex, template RequestPrimitive p_request) runs on AeSimu {
+				
+				var RequestPrimitive v_request;
+				
+				//Activate defaults when running on a PTC
+				f_cse_activateDefaults_ae();	
+				
+				v_request := f_getUpdateRequestPrimitive(p_resourceType, p_resourceIndex, p_request);
+					
+				mcaPort.send(m_request(v_request));
 				tc_ac.start;
 				alt {
 					[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value vc_response {
@@ -2850,9 +2894,9 @@ module OneM2M_Functions {
 			p_request.requestIdentifier := valueof(p_request.requestIdentifier) & f_rnd(1, 1000000);
 			
 			if(p_resourceType != int10002) {
-			p_request.from_ := f_getOriginator(p_resourceIndex);
-		
-			p_request.to_ := f_getResourceAddress(p_resourceIndex);
+				p_request.from_ := f_getOriginator(p_resourceIndex);
+			
+				p_request.to_ := f_getResourceAddress(p_resourceIndex);
 			} else {
 				p_request.from_ := PX_CSE1_ID & "/" & f_getResourceId(vc_resourcesList[p_resourceIndex].resource); 
 				
diff --git a/LibOneM2M/OneM2M_Ports.ttcn b/LibOneM2M/OneM2M_Ports.ttcn
index 76b80cefe389d569029331bd0661ec2025a6287e..e6b5192faa639894668ff615344f81e26b3676cc 100644
--- a/LibOneM2M/OneM2M_Ports.ttcn
+++ b/LibOneM2M/OneM2M_Ports.ttcn
@@ -47,9 +47,9 @@ module OneM2M_Ports {
 	 */
 	type port InfoPort message {
 		in
-			RequestPrimitive, ResponsePrimitive, PrimitiveContent, MyResource;
+			RequestPrimitive, ResponsePrimitive, PrimitiveContent, MyResource, integer;
 		out
-			RequestPrimitive, ResponsePrimitive, PrimitiveContent, MyResource;
+			RequestPrimitive, ResponsePrimitive, PrimitiveContent, MyResource, integer;
 	}
 
 
diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn
index 3f7a8c7830235f944c8a64e4e1bf67250b2dbcdb..fbda2032ef332e525abd4775cc371def4e056745 100644
--- a/LibOneM2M/OneM2M_Templates.ttcn
+++ b/LibOneM2M/OneM2M_Templates.ttcn
@@ -571,6 +571,12 @@ module OneM2M_Templates {
 				resourceType := int10002,
 				primitiveContent := {aEAnnc := m_contentUpdateAEAnnc}
 			};
+			
+			template (value) RequestPrimitive mw_updateContainerAnncBase modifies m_update:= {
+				requestIdentifier := testcasename() & "-m_updateContainerAnnc",
+				resourceType := int10003,
+				primitiveContent := {containerAnnc := m_contentUpdateContainerAnnc}
+			};
     	}//end group Update
     	
     	group Create {
@@ -2659,6 +2665,30 @@ module OneM2M_Templates {
 			e2eSecInfo := omit,
 			choice := omit
     	}
+    	
+		template (value) ContainerAnnc_optional m_contentUpdateContainerAnnc := {
+			resourceName := omit,
+			resourceType := omit,
+			resourceID := omit,
+			parentID := omit,
+			creationTime := omit,
+			lastModifiedTime := omit,
+			labels := omit,
+			accessControlPolicyIDs := omit,
+			expirationTime := omit,
+			link := omit,
+			dynamicAuthorizationConsultationIDs := omit,
+			stateTag := omit,
+			maxNrOfInstances := omit,
+			maxByteSize := omit,
+			maxInstanceAge := omit,
+			currentNrOfInstances := omit,
+			currentByteSize := omit,
+			locationID := omit,
+			ontologyRef := omit,
+			disableRetrieval := omit,
+			choice := omit
+		};
  		
 	}//end group ContentUpdate
 
@@ -4061,7 +4091,8 @@ module OneM2M_Templates {
     	
 		group InfoPortTemplates {
 		
-			template MyResource mw_resource := ?;		
+			template MyResource mw_resource := ?;	
+			template integer mw_resourceIndex := ?;	
 		
 		}//end group InfoPortTemplates
     	
diff --git a/LibOneM2M/OneM2M_TestSystem.ttcn b/LibOneM2M/OneM2M_TestSystem.ttcn
index c6018d32a327344c373d5485cb9b443f1b27d8a4..920cbb3da0a89f0d702be1ffd654542925e3ee0f 100644
--- a/LibOneM2M/OneM2M_TestSystem.ttcn
+++ b/LibOneM2M/OneM2M_TestSystem.ttcn
@@ -35,6 +35,7 @@ module OneM2M_TestSystem {
 		var MyResourcesList vc_resourcesList;
 		var IntegerList vc_resourcesIndexToBeDeleted := {};
 		var integer vc_aeAuxIndex := -1;//TODO To be removed
+		var integer vc_remoteCseIndex := -1;
 		var integer vc_acpAuxIndex := -1;
 		var AccessControlPolicy_optional vc_acpAux;
 		var MsgIn vc_request;
@@ -62,7 +63,6 @@ module OneM2M_TestSystem {
 		//global variables
 		var MyResourcesList vc_localResourcesList := {};
 		var AeSimu vc_ae1;//For CF02 when CseSimu is master
-		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
diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn
index af8ad22c515922f009c7ce7f7861ac1747b9a525..f5bb97074b007eade6a052933cf240becc333ff7 100644
--- a/OneM2M_PermutationFunctions.ttcn
+++ b/OneM2M_PermutationFunctions.ttcn
@@ -4904,8 +4904,7 @@ module OneM2M_PermutationFunctions {
                 		
 						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);
+						f_cse_updateResource(int1, vc_acpAuxIndex, v_updateRequest);
 						
 						//Adjustments for ACP resource type
 						if(p_resourceType == int1) {
@@ -5630,8 +5629,7 @@ module OneM2M_PermutationFunctions {
 							v_accessControlRule_1 := valueof(m_createAcr({ f_getOriginator(v_aeIndex), PX_SUPER_AE_ID}, int63));
 							v_setOfArcs.accessControlRule_list := {v_accessControlRule_1};
 							v_updateRequest := valueof(m_updateAcpPrivileges(v_setOfArcs, v_setOfArcs));
-							v_updateRequest := f_getUpdateRequestPrimitive(int1, v_acpIndex, v_updateRequest);
-							f_cse_updateResource(v_updateRequest);
+							f_cse_updateResource(int1, v_acpIndex, v_updateRequest);
 			
 							// Test Body
 							p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex);
@@ -5697,14 +5695,12 @@ module OneM2M_PermutationFunctions {
 							v_accessControlRule_1 := valueof(m_createAcr({f_getOriginator(v_aeIndex)}, int3)); // c_CR 
 							v_setOfArcs.accessControlRule_list := {v_accessControlRule_1};
 							v_updateRequest := valueof(m_updateAcpPrivileges(v_setOfArcs, -));
-							v_updateRequest := f_getUpdateRequestPrimitive(int1, v_acpIndex1, v_updateRequest);
-							f_cse_updateResource(v_updateRequest);
+							f_cse_updateResource(int1, v_acpIndex1, v_updateRequest);
 							
 							v_accessControlRule_1 := valueof(m_createAcr({f_getOriginator(v_aeIndex)}, int60)); // c_UDNDi  
 							v_setOfArcs.accessControlRule_list := {v_accessControlRule_1};
 							v_updateRequest := valueof(m_updateAcpPrivileges(v_setOfArcs, -));
-							v_updateRequest := f_getUpdateRequestPrimitive(int1, v_acpIndex2, v_updateRequest);
-							f_cse_updateResource(v_updateRequest);
+							f_cse_updateResource(int1, v_acpIndex2, v_updateRequest);
 	
 							// Test Body
 							p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex);
@@ -6319,8 +6315,7 @@ module OneM2M_PermutationFunctions {
 							v_accessControlRule_2 := valueof(m_createAcr({f_getOriginator(v_aeIndex)}, p_acor));
 							v_setOfArcs.accessControlRule_list := {v_accessControlRule_1, v_accessControlRule_2};
 							v_updateRequest := valueof(m_updateAcpPrivileges(v_setOfArcs, -));
-							v_updateRequest := f_getUpdateRequestPrimitive(int1, v_acpIndex, v_updateRequest);
-							f_cse_updateResource(v_updateRequest);
+							f_cse_updateResource(int1, v_acpIndex, v_updateRequest);
 							
 							// Test Body
 							v_request := f_getCreateRequestPrimitive(int3, p_requestPrimitive, v_containerIndex);
@@ -6984,6 +6979,272 @@ module OneM2M_PermutationFunctions {
 			 
 			} //end group Retrieve
 			
+			group Update{
+			
+				function f_CSE_ANNC_UPD_001(ResourceType p_resourceType, template RequestPrimitive p_requestCreatePrimitive, template RequestPrimitive p_createRequestAnnc, template RequestPrimitive p_requestUpdatePrimitive) runs on CseSimu {
+					// Local variables
+					var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+					var MsgIn v_request;
+					var RequestPrimitive v_requestUpdatePrimitive;
+					var integer v_parentIndex := -1;
+					var integer v_aeIndex := -1;
+					var integer v_resourceIndex;
+					var integer v_aEAnncIndex := -1;
+					var integer v_latestResourceIndex;
+					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));					
+					f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -));		
+					v_ae1.done;
+	
+					v_ae1.start(f_cse_createResource(p_resourceType, p_requestCreatePrimitive, vc_aeAuxIndex));
+					v_ae1.done;					
+		
+					v_latestResourceIndex := f_getLatestResourceIndex(v_ae1);
+	
+					// Test Body
+					v_ae1.start(f_cse_updateResource(p_resourceType, v_latestResourceIndex, p_requestUpdatePrimitive));
+	
+					tc_ac.start;
+					alt {
+						[] mccPortIn.receive(mw_request(p_createRequestAnnc)) -> value v_request {
+							tc_ac.stop;
+							setverdict(pass, __SCOPE__ & ":INFO: CREATE REQUEST received");
+				
+							if(match(v_request.primitive.requestPrimitive.to_, f_getLocalResourceAddress(lengthof(vc_localResourcesList)-1, e_hierarchical, e_spRelative)) or 
+							match(v_request.primitive.requestPrimitive.to_, f_getLocalResourceAddress(lengthof(vc_localResourcesList)-1, e_nonHierarchical, e_spRelative))) {
+								setverdict(pass, __SCOPE__ & ":matching ANNC_PARENT_RESOURCE_ADDRESS");     
+							} else {
+								setverdict(fail, __SCOPE__ & ":mis-matching ANNC_PARENT_RESOURCE_ADDRESS");
+							}
+							
+						}
+						[] tc_ac.timeout {
+							setverdict(fail, __SCOPE__ & ":ERROR:  No CREATE REQUEST received");
+						}
+					}
+					v_ae1.done;
+	
+					// Postamble
+					f_cse_postamble_deleteResourcesCSE();
+	
+					// Tear down
+					f_cf02DownCseSimuMaster();
+	
+				}//end f_CSE_ANNC_UPD_001
+	
+				function f_CSE_ANNC_UPD_002(ResourceType p_resourceType, template RequestPrimitive p_requestCreatePrimitive, template RequestPrimitive p_createRequestAnnc, template RequestPrimitive p_requestUpdatePrimitive) runs on CseSimu {
+					// Local variables
+					var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+					var MsgIn v_request;
+					var RequestPrimitive v_requestUpdatePrimitive;
+					var integer v_parentIndex := -1;
+					var integer v_aeIndex := -1;
+					var integer v_resourceIndex;
+					var integer v_aEAnncIndex := -1;
+					var integer v_latestResourceIndex;
+					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));					
+					f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -));		
+					v_ae1.done;
+	
+					v_ae1.start(f_cse_createResource(p_resourceType, p_requestCreatePrimitive, vc_aeAuxIndex));
+					f_cse_announcementProcedure_createHandler(p_createRequestAnnc);	
+					v_ae1.done;					
+	
+					v_latestResourceIndex := f_getLatestResourceIndex(v_ae1);
+	
+					// Test Body
+					v_ae1.start(f_cse_updateResource(p_resourceType, v_latestResourceIndex, p_requestUpdatePrimitive));
+	
+					tc_ac.start;
+					alt {
+						[] mccPortIn.receive(mw_request(mw_delete(f_getResourceAddress(v_latestResourceIndex)))){
+							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");
+						}
+					}
+					v_ae1.done;
+	
+					// Postamble
+					f_cse_postamble_deleteResourcesCSE();
+	
+					// Tear down
+					f_cf02DownCseSimuMaster();
+	
+				}//end f_CSE_ANNC_UPD_002
+	
+				function f_CSE_ANNC_UPD_003(ResourceType p_resourceType,template RequestPrimitive p_createRequestAnnc, in template RequestPrimitive p_requestCreatePrimitive := omit, template RequestPrimitive p_requestUpdatePrimitive) runs on AeSimu {
+					//Local variables
+					var MsgIn v_request;
+					var RequestPrimitive v_updateRequest;
+					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_updateRequest := f_getUpdateRequestPrimitive(p_resourceType, v_resourceIndex, p_requestUpdatePrimitive);
+					mcaPort.send(m_request(v_updateRequest));
+	
+					tc_ac.start;
+					alt {
+						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value v_request {
+							tc_ac.stop;
+							setverdict(pass, __SCOPE__ & ": Resource updated 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 updating container resource");
+						}
+						[] tc_ac.timeout {
+							setverdict(fail, __SCOPE__ & ": No answer while updating resource");
+						}
+					}
+		
+					vc_cse1.done;
+	
+					//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_UPD_003
+	
+				function f_CSE_ANNC_UPD_005(ResourceType p_resourceType, template RequestPrimitive p_requestCreatePrimitive, template RequestPrimitive p_createRequestAnnc, template RequestPrimitive p_requestUpdatePrimitive, template RequestPrimitive p_updateRequestAnnc) runs on CseSimu {
+					// Local variables
+					var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+					var MsgIn v_request;
+					var RequestPrimitive v_requestUpdatePrimitive;
+					var integer v_parentIndex := -1;
+					var integer v_aeIndex := -1;
+					var integer v_resourceIndex;
+					var integer v_aEAnncIndex := -1;
+					var integer v_latestResourceIndex;
+					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));					
+					f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -));		
+					v_ae1.done;
+	
+					v_ae1.start(f_cse_createResource(p_resourceType, p_requestCreatePrimitive, vc_aeAuxIndex));
+					f_cse_announcementProcedure_createHandler(p_createRequestAnnc);	
+					v_ae1.done;					
+	
+					v_latestResourceIndex := f_getLatestResourceIndex(v_ae1);
+					p_updateRequestAnnc.to_ := f_getLocalResourceAddress(lengthof(vc_localResourcesList)-1);
+	
+					// Test Body
+					v_ae1.start(f_cse_updateResource(p_resourceType, v_latestResourceIndex, p_requestUpdatePrimitive));
+	
+					tc_ac.start;
+					alt {
+						[] mccPortIn.receive(mw_request(p_updateRequestAnnc)) -> value v_request {
+							tc_ac.stop;
+							setverdict(pass, __SCOPE__ & ":INFO: Announcement received");
+			
+							v_responsePrimitive := valueof(m_responsePrimitive(int2004,v_request.primitive.requestPrimitive.requestIdentifier));
+							v_responsePrimitive.from_ := PX_CSE1_ID;
+							v_responsePrimitive.to_ := v_request.primitive.requestPrimitive.from_;
+							mccPortIn.send(m_response(v_responsePrimitive));			
+						}
+						[] tc_ac.timeout {
+							setverdict(fail, __SCOPE__ & ":ERROR:  No announcement received");
+						}
+					}
+					v_ae1.done;
+	
+					// Postamble
+					f_cse_postamble_deleteResourcesCSE();
+	
+					// Tear down
+					f_cf02DownCseSimuMaster();
+	
+				}//end f_CSE_ANNC_UPD_005
+	
+			}//end group Update
+			
 			group Delete{
 				
 				function f_CSE_ANNC_DEL_001(ResourceType p_resourceType,template RequestPrimitive p_createRequestAnnc, in template RequestPrimitive p_requestCreatePrimitive := omit) runs on AeSimu {
@@ -6993,6 +7254,7 @@ module OneM2M_PermutationFunctions {
 				  	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
 
@@ -7015,7 +7277,6 @@ module OneM2M_PermutationFunctions {
 					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 {
@@ -7029,13 +7290,15 @@ module OneM2M_PermutationFunctions {
 						}
 						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) {
 							tc_ac.stop;
-							setverdict(fail, __SCOPE__ & ": Error while deleting container resource using non-hierarchical addressing method");
+							setverdict(fail, __SCOPE__ & ": Error while deleting container resource");
 						}
 						[] tc_ac.timeout {
 							setverdict(fail, __SCOPE__ & ": No answer while deleting resource");
 						}
 					}
 					
+					vc_cse1.done;
+					
 					//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");
@@ -7056,10 +7319,11 @@ module OneM2M_PermutationFunctions {
 					var MsgIn v_request;
 					var integer v_parentIndex := -1;
 					var integer v_aeIndex := -1;
-					var integer v_resourceIndex;
+					var integer v_latestResourceIndex;
 					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
@@ -7082,11 +7346,13 @@ module OneM2M_PermutationFunctions {
 					v_ae1.done;					
 	
 					// Test Body
-					v_ae1.start(f_cse_deleteResource(lengthof(vc_resourcesList)-1));
+					v_latestResourceIndex := f_getLatestResourceIndex(v_ae1);
+					
+					v_ae1.start(f_cse_deleteResource(v_latestResourceIndex));
 	
 					tc_ac.start;
 					alt {
-						[] mccPortIn.receive(mw_request(mw_delete(f_getResourceAddress(lengthof(vc_resourcesList)-1)))){
+						[] mccPortIn.receive(mw_request(mw_delete(f_getResourceAddress(v_latestResourceIndex)))){
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ": Delete Request received successfully");
 						}
diff --git a/OneM2M_Testcases_CSE_Release_2.ttcn b/OneM2M_Testcases_CSE_Release_2.ttcn
index 744eb71fd3b26eefe738acafbde2ae823f796a05..001737af0beb4f63febd117ce2eb4f897c0a4a46 100644
--- a/OneM2M_Testcases_CSE_Release_2.ttcn
+++ b/OneM2M_Testcases_CSE_Release_2.ttcn
@@ -5977,14 +5977,12 @@ module OneM2M_Testcases_CSE_Release_2 {
 					vc_ae2.start(f_cse_notifyProcedure_aggregatedNoficationHandler(v_contentResponse, c_numberOfAggregatedNotification)); 
 
 					v_updateRequest.primitiveContent.aE.labels := v_labels_1;
-					v_request:= f_getUpdateRequestPrimitive(int2, v_aeIndex, v_updateRequest); // Update request 1
-					f_cse_updateResource(v_request);
+					f_cse_updateResource(int2, v_aeIndex, v_updateRequest);		// Update request 1
 					t_batchNotificationTimer.start;					
 					
 					v_updateRequest := m_updateAeBase;
 					v_updateRequest.primitiveContent.aE.appName := "MyAppName2"; 
-					v_request:= f_getUpdateRequestPrimitive(int2, v_aeIndex, v_updateRequest); // Update request 2
-					f_cse_updateResource(v_request);
+					f_cse_updateResource(int2, v_aeIndex, v_updateRequest);	// Update request 2
 
 					vc_ae2.done;
 					v_elapsedTime := t_batchNotificationTimer.read;
@@ -6202,8 +6200,7 @@ module OneM2M_Testcases_CSE_Release_2 {
 					// Test Body
 					vc_ae2.start(f_cse_notifyProcedure_representationHandler(v_contentResponse)); // check if the notification is well received and if its content matchs
 
-					v_request:= f_getUpdateRequestPrimitive(int2, v_aeIndex, v_updateRequest); // AE update request
-					f_cse_updateResource(v_request); // AE update
+					f_cse_updateResource(int2, v_aeIndex, v_updateRequest); // AE update request
 					
 					f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
 					
@@ -6284,8 +6281,7 @@ module OneM2M_Testcases_CSE_Release_2 {
 	
 					// Test Body
 					vc_ae2.start(f_cse_notifyProcedure_representationHandler(v_contentResponse)); // check if the notification is well received and if its content matchs
-					v_request:= f_getUpdateRequestPrimitive(int2, v_aeIndex, v_updateRequest); // AE update request
-					f_cse_updateResource(v_request); // AE update
+					f_cse_updateResource(int2, v_aeIndex, v_updateRequest); // AE update request
 					
 					f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
 
@@ -6437,16 +6433,13 @@ module OneM2M_Testcases_CSE_Release_2 {
 					vc_ae2.start(f_cse_notifyProcedure_aggregatedNoficationHandler(v_contentResponse, numberOfAggregatedNotification)); // check that no notification is received
 					
 					v_updateRequest.primitiveContent.aE.labels := v_labels_1;
-					v_request:= f_getUpdateRequestPrimitive(int2, v_aeIndex, v_updateRequest); // Update request 1
-					f_cse_updateResource(v_request);
+					f_cse_updateResource(int2, v_aeIndex, v_updateRequest); // Update request 1
 					
 					v_updateRequest.primitiveContent.aE.labels := v_labels_2; 
-					v_request:= f_getUpdateRequestPrimitive(int2, v_aeIndex, v_updateRequest); // Update request 2
-					f_cse_updateResource(v_request);
+					f_cse_updateResource(int2, v_aeIndex, v_updateRequest); // Update request 2
 					
 					v_updateRequest.primitiveContent.aE.labels := v_labels_3; 
-					v_request:= f_getUpdateRequestPrimitive(int2, v_aeIndex, v_updateRequest); // Update request 3
-					f_cse_updateResource(v_request);
+					f_cse_updateResource(int2, v_aeIndex, v_updateRequest); // Update request 3
 
 					f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
 
@@ -6506,16 +6499,13 @@ module OneM2M_Testcases_CSE_Release_2 {
 					vc_ae2.start(f_cse_notifyProcedure_representationHandler(v_contentResponse)); // check if the notification is well received and if its content matchs
             					
 					v_updateRequest.primitiveContent.aE.labels := v_labels_1; 
-					v_request:= f_getUpdateRequestPrimitive(int2, v_aeIndex, v_updateRequest); // Update request 1
-					f_cse_updateResource(v_request);
+					f_cse_updateResource(int2, v_aeIndex, v_updateRequest); // Update request 1
             					
 					v_updateRequest.primitiveContent.aE.labels := v_labels_2; 
-					v_request:= f_getUpdateRequestPrimitive(int2, v_aeIndex, v_updateRequest); // Update request 2
-					f_cse_updateResource(v_request);
+					f_cse_updateResource(int2, v_aeIndex, v_updateRequest); // Update request 2
             					
 					v_updateRequest.primitiveContent.aE.labels := v_labels_3; 
-					v_request:= f_getUpdateRequestPrimitive(int2, v_aeIndex, v_updateRequest); // Update request 3
-					f_cse_updateResource(v_request);
+					f_cse_updateResource(int2, v_aeIndex, v_updateRequest); // Update request 3
 					
 					f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
 
@@ -7278,6 +7268,200 @@ module OneM2M_Testcases_CSE_Release_2 {
 				
 			} //end group Retrieve
 			
+			group Update{
+
+				group g_CSE_ANNC_UPD_001{
+
+					testcase TC_CSE_ANNC_UPD_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;
+						var template RequestPrimitive v_updateRequest := m_updateAcpBase;	
+			
+						v_updateRequest.primitiveContent.accessControlPolicy.announceTo := {PX_CSE1_ID};					
+			
+						v_cse1.start(f_CSE_ANNC_UPD_001(int1, v_createRequest, v_createRequestAnnc, v_updateRequest));//AccessControlPolicy
+						v_cse1.done;
+					}
+
+					testcase TC_CSE_ANNC_UPD_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;
+						var template RequestPrimitive v_updateRequest := m_updateContainerBase;	
+			
+						v_updateRequest.primitiveContent.container.announceTo := {PX_CSE1_ID};
+  
+						v_cse1.start(f_CSE_ANNC_UPD_001(int3, v_createRequest, v_createRequestAnnc, v_updateRequest));//Container
+						v_cse1.done;
+					}
+
+					testcase TC_CSE_ANNC_UPD_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;
+						var template RequestPrimitive v_updateRequest := m_updateGroupBase;	
+			
+						v_updateRequest.primitiveContent.group_.announceTo := {PX_CSE1_ID};
+  
+						v_cse1.start(f_CSE_ANNC_UPD_001(int9, v_createRequest, v_createRequestAnnc, v_updateRequest));//Group
+						v_cse1.done;
+					}
+
+				}// end group g_CSE_ANNC_UPD_001
+	
+				group g_CSE_ANNC_UPD_002{
+
+					testcase TC_CSE_ANNC_UPD_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;
+						var template RequestPrimitive v_updateRequest := m_updateAcpBase;	
+
+						v_createRequest.primitiveContent.accessControlPolicy.announceTo := {PX_CSE1_ID};					
+
+						v_cse1.start(f_CSE_ANNC_UPD_002(int1, v_createRequest, v_createRequestAnnc, v_updateRequest));//AccessControlPolicy
+						v_cse1.done;
+					}
+
+					testcase TC_CSE_ANNC_UPD_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;
+						var template RequestPrimitive v_updateRequest := m_updateContainerBase;	
+
+						v_createRequest.primitiveContent.container.announceTo := {PX_CSE1_ID};
+  
+						v_cse1.start(f_CSE_ANNC_UPD_002(int3, v_createRequest, v_createRequestAnnc, v_updateRequest));//Container
+						v_cse1.done;
+					}
+
+					testcase TC_CSE_ANNC_UPD_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;
+						var template RequestPrimitive v_updateRequest := m_updateGroupBase;	
+
+						v_createRequest.primitiveContent.group_.announceTo := {PX_CSE1_ID};
+  
+						v_cse1.start(f_CSE_ANNC_UPD_002(int9, v_createRequest, v_createRequestAnnc, v_updateRequest));//Group
+						v_cse1.done;
+					}
+
+				}// end group g_CSE_ANNC_UPD_002
+	
+				group g_CSE_ANNC_UPD_003{
+
+					testcase TC_CSE_ANNC_UPD_003_ACP() runs on Tester system CseSystem {
+						// Local variables
+						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						var template RequestPrimitive v_createRequest := m_createAcpBase;
+						var template RequestPrimitive v_createRequestAnnc := mw_createAccessControlPolicyAnnc;
+						var template RequestPrimitive v_updateRequest := m_updateAcpBase;
+						var ResponsePrimitive v_responsePrimitive;	
+  
+						v_createRequest.primitiveContent.accessControlPolicy.announceTo := {PX_CSE1_ID};
+  
+						v_ae1.start(f_CSE_ANNC_UPD_003(int1, v_createRequestAnnc, v_createRequest, v_updateRequest));//AccessControlPolicy
+						v_ae1.done;
+			
+						if(getverdict == pass){
+							v_responsePrimitive := f_getResponsePrimitive(v_ae1);
+							if(ispresent(v_responsePrimitive.primitiveContent)) {
+								if(ischosen(v_responsePrimitive.primitiveContent.accessControlPolicy)) {
+									if(ispresent(v_responsePrimitive.primitiveContent.accessControlPolicy.announceTo)){
+										setverdict(fail, __SCOPE__ & ": Error: announceTo attribute is not set to NULL")
+									}
+								}
+							}
+				
+						}		
+				
+					}
+
+					testcase TC_CSE_ANNC_UPD_003_CNT() runs on Tester system CseSystem {
+						// Local variables
+						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						var template RequestPrimitive v_createRequest := m_createContainerBase;
+						var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnncBase;
+						var template RequestPrimitive v_updateRequest := m_updateContainerBase;	
+						var ResponsePrimitive v_responsePrimitive;	
+  
+						v_createRequest.primitiveContent.container.announceTo := {PX_CSE1_ID};
+  
+						v_ae1.start(f_CSE_ANNC_UPD_003(int3, v_createRequestAnnc, v_createRequest, v_updateRequest));//Container
+						v_ae1.done;
+			
+						if(getverdict == pass){
+							v_responsePrimitive := f_getResponsePrimitive(v_ae1);
+							if(ispresent(v_responsePrimitive.primitiveContent)) {
+								if(ischosen(v_responsePrimitive.primitiveContent.container)) {
+									if(ispresent(v_responsePrimitive.primitiveContent.container.announceTo)){
+										setverdict(fail, __SCOPE__ & ": Error: announceTo attribute is not set to NULL")
+									}
+								}
+							}
+
+						}	
+									
+					}
+
+					testcase TC_CSE_ANNC_UPD_003_GRP() runs on Tester system CseSystem {
+						// Local variables
+						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						var template RequestPrimitive v_createRequest := m_createGroupBase;
+						var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnncBase;
+						var template RequestPrimitive v_updateRequest := m_updateGroupBase;	
+						var ResponsePrimitive v_responsePrimitive;	
+  
+						v_createRequest.primitiveContent.group_.announceTo := {PX_CSE1_ID};
+  
+						v_ae1.start(f_CSE_ANNC_UPD_003(int9, v_createRequestAnnc, v_createRequest, v_updateRequest));//Group
+						v_ae1.done;
+			
+						if(getverdict == pass){
+							v_responsePrimitive := f_getResponsePrimitive(v_ae1);
+							if(ispresent(v_responsePrimitive.primitiveContent)) {
+								if(ischosen(v_responsePrimitive.primitiveContent.group_)) {
+									if(ispresent(v_responsePrimitive.primitiveContent.group_.announceTo)){
+										setverdict(fail, __SCOPE__ & ": Error: announceTo attribute is not set to NULL")
+									}
+								}
+							}
+
+						}	
+					}
+
+				}// end group g_CSE_ANNC_UPD_003
+	
+				group g_CSE_ANNC_UPD_005 {
+		
+					testcase TC_CSE_ANNC_UPD_005() 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;
+						var template RequestPrimitive v_updateRequest := m_updateContainerBase;
+						var template RequestPrimitive v_updateRequestAnnc := mw_updateContainerAnncBase;
+						var Labels v_labels_1 := {"VALUE_1"};	
+
+						v_createRequest.primitiveContent.container.announceTo := {PX_CSE1_ID};
+						v_createRequest.primitiveContent.container.labels := v_labels_1;
+  
+						v_cse1.start(f_CSE_ANNC_UPD_005(int3, v_createRequest, v_createRequestAnnc, v_updateRequest, v_updateRequestAnnc));//Container
+						v_cse1.done;
+
+					} //end TC_CSE_ANNC_CRE_001
+				} // end group g_CSE_ANNC_CRE_001
+	
+			}//end group Update
+			
 			group Delete{
 				
 				group g_CSE_ANNC_DEL_001{