diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index a3b972ffe78fdbcd0d37914329f35ecfa6f8d0c5..f5c3f0b2d170364767b41f67bdc98d1bd6d81413 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -2686,7 +2686,7 @@ module OneM2M_Functions {
 							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive);
 							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
-						[] mccPortIn.receive(mw_request(?)) -> value vc_request {
+						[] mccPortIn.receive(mw_request(mw_update)) -> value vc_request {
 							setverdict(fail, __SCOPE__ & ":ERROR:  Request received with unexpected parameters");
 							v_responsePrimitive := valueof(m_responsePrimitive(int4000,vc_request.primitive.requestPrimitive.requestIdentifier));
 							f_send(e_mccPortIn, m_response(v_responsePrimitive));
@@ -2727,7 +2727,7 @@ module OneM2M_Functions {
 							f_processDeleteRequestPrimitive(v_request.primitive.requestPrimitive);
 							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
-						[] mccPortIn.receive(mw_request(?)) -> value v_request {
+						[] mccPortIn.receive(mw_request(mw_delete())) -> value v_request {
 							setverdict(fail, __SCOPE__ & ":ERROR:  Request received with unexpected parameters");
 							v_responsePrimitive := valueof(m_responsePrimitive(int4000,v_request.primitive.requestPrimitive.requestIdentifier));
 							f_send(e_mccPortIn, m_response(v_responsePrimitive));
@@ -3510,6 +3510,12 @@ module OneM2M_Functions {
 						v_myResource.container.stateTag := 0;
 						v_myResource.container.currentNrOfInstances := 0;
 						v_myResource.container.currentByteSize := 0;
+						if(not(ispresent(p_resource.container.maxByteSize))) {
+							v_myResource.container.maxByteSize := 10000;
+						}
+						if(not(ispresent(p_resource.container.maxNrOfInstances))) {
+							v_myResource.container.maxNrOfInstances := 10;
+						}
 					}
 										
 				} else if(p_resourceType == int4 and ispresent(p_resource)) { //ContentInstance
@@ -3851,11 +3857,31 @@ module OneM2M_Functions {
 					if(ispresent(p_resource.accessControlPolicy.announcedAttribute)) {
 						vc_localResourcesList[p_localResourceIndex].resource.accessControlPolicy.announcedAttribute := p_resource.accessControlPolicy.announcedAttribute;
 					}
+				} else if(ischosen(vc_localResourcesList[p_localResourceIndex].resource.containerAnnc) and (ischosen(p_resource.containerAnnc))) {//ContainerAnnc
+					if(ispresent(p_resource.containerAnnc.expirationTime)) {
+						vc_localResourcesList[p_localResourceIndex].resource.containerAnnc.expirationTime := p_resource.containerAnnc.expirationTime;
+					}
+					if(ispresent(p_resource.containerAnnc.labels)) {
+						vc_localResourcesList[p_localResourceIndex].resource.containerAnnc.labels := p_resource.containerAnnc.labels;
+					}
+					if(ispresent(p_resource.containerAnnc.dynamicAuthorizationConsultationIDs)) {
+						vc_localResourcesList[p_localResourceIndex].resource.containerAnnc.dynamicAuthorizationConsultationIDs := p_resource.containerAnnc.dynamicAuthorizationConsultationIDs;
+					}
+					if(ispresent(p_resource.containerAnnc.maxNrOfInstances)) {
+						vc_localResourcesList[p_localResourceIndex].resource.containerAnnc.maxNrOfInstances := p_resource.containerAnnc.maxNrOfInstances;
+					}
+					if(ispresent(p_resource.containerAnnc.maxByteSize)) {
+						vc_localResourcesList[p_localResourceIndex].resource.containerAnnc.maxByteSize := p_resource.containerAnnc.maxByteSize;
+					}
+					if(ispresent(p_resource.containerAnnc.maxInstanceAge)) {
+						vc_localResourcesList[p_localResourceIndex].resource.containerAnnc.maxInstanceAge := p_resource.containerAnnc.maxInstanceAge;
+					}
+
 				}
 			  } //End of function	
 			
 			/**
-			 * @desc Creation of a resource using CseSimu
+			 * @desc Creation of a resource using CseSimu. In case of announced resource, the original resource is created locally first.
 			 * @param p_resourceType Resource type of the resource to be created
 			 * @param p_requestPrimitive CREATE request primitive for the resource to be created
 			 * @param p_parentIndex Internal resource index which indicates the parent of the resource to be created
@@ -3872,13 +3898,19 @@ module OneM2M_Functions {
 				f_cse_activateDefaults_cse1();		
 					
 				//Create original resource locally if resource type is an announced variant
-				if(p_resourceType == int10002) {
+				if (p_resourceType == int10001) {
+					v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentAccessControlPolicy(m_contentCreateAcp), -, int1);
+				} else if(p_resourceType == int10002) {
 					v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentAe(m_contentCreateAe(omit, -, PX_TS_AE1.appId, omit)), -, int2);
-					p_requestPrimitive.primitiveContent := f_setLink(valueof(p_requestPrimitive.primitiveContent), f_getLocalResourceAddress(v_originalResourceIndex));
 				} else if (p_resourceType == int10003) {
 					v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentContainer(m_contentCreateContainer), -, int3);
-					p_requestPrimitive.primitiveContent := f_setLink(valueof(p_requestPrimitive.primitiveContent), f_getLocalResourceAddress(v_originalResourceIndex));
+				} else if (p_resourceType == int10009) {
+					v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentGroup(m_contentCreateGroup(1, {"NotInitialized"}, omit, -, -, -, -, -)), -, int9);
+				} else if (p_resourceType == int10029) {
+					v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentTimeSeries(m_contentCreateTimeSeries), -, int29);
 				}
+				p_requestPrimitive.primitiveContent := f_setLink(valueof(p_requestPrimitive.primitiveContent), f_getLocalResourceAddress(v_originalResourceIndex, -, e_spRelative));
+				p_requestPrimitive.primitiveContent := f_setExpirationTime(valueof(p_requestPrimitive.primitiveContent), vc_localResourcesList[v_originalResourceIndex].resource);
 				//TODO Add other resource types		
 				
 					
diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn
index 9567380e2fabfe183b620c19b5d10687e31909c9..2db909902fdb0b354ff46719421721acbe5c7981 100644
--- a/OneM2M_PermutationFunctions.ttcn
+++ b/OneM2M_PermutationFunctions.ttcn
@@ -9755,18 +9755,20 @@ module OneM2M_PermutationFunctions {
 							v_resourceIndex := f_cse_createResource(int3, v_create, v_aeIndex);
 							f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
 							v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestCreatePrimitive, v_resourceIndex);
-					  	} else if (p_resourceType == int30) {
+							//Retrieve the parent resource index
+							v_parentIndex := f_getLatestLocalResourceIndex(vc_cse1);
+						} else if (p_resourceType == int30) {
 							v_create := m_createTimeSeriesBase;
 							v_create.primitiveContent.timeSeries.announceTo := {PX_TS_CSE1.cseId};
 							vc_cse1.start(f_cse_announcementProcedure_createHandler(mw_createTimeSeriesAnnc(), -, v_parentIndex));
 							v_resourceIndex := f_cse_createResource(int29, v_create, v_aeIndex);
 							f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
 							v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestCreatePrimitive, v_resourceIndex);
-					  	} else {
+							//Retrieve the parent resource index
+							v_parentIndex := f_getLatestLocalResourceIndex(vc_cse1);
+						} else {
 					  		v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestCreatePrimitive, v_aeIndex);
 						}
-						//Retrieve the parent resource index
-						v_parentIndex := f_getLatestLocalResourceIndex(vc_cse1);
 						
 					  	v_responsePrimitive.responseStatusCode := int2001;
 					}
@@ -9916,7 +9918,7 @@ module OneM2M_PermutationFunctions {
 					// Test Body
 					vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex));
 					
-					f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, v_aEAnncIndex);					
+					f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, -);					
 					
 					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
 
@@ -10096,7 +10098,7 @@ module OneM2M_PermutationFunctions {
 
 					// Test Body
 					vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex));
-					f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, v_aEAnncIndex);
+					f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, -);
 					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
 					
 					// Postamble
@@ -10133,7 +10135,7 @@ module OneM2M_PermutationFunctions {
 
 					// Test Body
 					vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex));
-					f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, v_aEAnncIndex);
+					f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, -);
 					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
 
 					// Postamble
@@ -10256,16 +10258,6 @@ module OneM2M_PermutationFunctions {
 
 					v_remoteCSEIndex := f_getLatestResourceIndex(vc_cse1);
 					
-					//Creating resource in Hosting CSE
-					vc_cse1.start(f_generateAndSetLocalResource(valueof(p_originalResource), v_cseBaseIndex, p_resourceType));
-					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
-					
-					v_originalResourceAddress := f_getLatestLocalResourceAddress(vc_cse1, -, e_spRelative);
-					
-					v_originalResourceIndex := f_getLatestLocalResource(vc_cse1);
-					
-					v_originalLocalResourceIndex := f_getLatestLocalResourceIndex(vc_cse1);
-					
 					v_aeIndex := f_cse_createResource(int2,v_createAE);
 					
 					v_acpIndex := f_cse_createResource(int1, v_createAcp, -); // AE child resource
@@ -10273,14 +10265,15 @@ module OneM2M_PermutationFunctions {
 					if((p_resourceType == int3) or (p_resourceType == int9) or (p_resourceType == int29)) {
 						p_createRequestAnnc := f_setAcpId(p_createRequestAnnc, {f_getResourceId(vc_resourcesList[v_acpIndex].resource)});
 					}
-					p_createRequestAnnc.primitiveContent := f_setLink(valueof(p_createRequestAnnc.primitiveContent), v_originalResourceAddress);
-					p_createRequestAnnc.primitiveContent := f_setExpirationTime(valueof(p_createRequestAnnc.primitiveContent), vc_resourcesList[v_originalResourceIndex].resource);
 					
+					//Creation of original resource locally and then announcement of it to IUT
 					vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(p_resourceType), p_createRequestAnnc, v_remoteCSEIndex));
 					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
 					
 					v_resourceAnncAddress := f_getLatestResourceAddress(vc_cse1, -, -);
 					v_resourceAnncIndex := f_getLatestResourceIndex(vc_cse1);
+					v_originalLocalResourceIndex := f_getLatestLocalResourceIndex(vc_cse1);
+					v_originalResourceIndex := f_getLatestLocalResource(vc_cse1);
 					
 					v_request := m_retrieve(v_resourceAnncAddress, f_getOriginator(v_aeIndex));
 					v_request.resultContent := int7;
@@ -10424,7 +10417,7 @@ module OneM2M_PermutationFunctions {
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ":INFO: Announcement deletion received");
 			
-							f_processDeleteRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex); 
+							f_processDeleteRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex); 
 							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
 						[] tc_ac.timeout {
@@ -10559,7 +10552,7 @@ module OneM2M_PermutationFunctions {
 
 					tc_ac.start;
 					alt {
-						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2004, p_updateResponse), {*, "announceAttribute", *})) -> value vc_response {
+						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2004, p_updateResponse))) -> value vc_response {
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ": Resource updated successfully");
 
@@ -10625,18 +10618,25 @@ module OneM2M_PermutationFunctions {
 
 					tc_ac.start;
 					alt {
+						[] mccPortIn.receive(mw_request(p_updateRequestAnnc, {p_nullFields[0].name})) -> value vc_request {
+							tc_ac.stop;
+							setverdict(pass, __SCOPE__ & ":INFO: Update for announced resource received");
+			
+							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex);
+							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
+						}
 						[] mccPortIn.receive(mw_request(p_updateRequestAnnc)) -> value vc_request {
 							tc_ac.stop;
-							setverdict(pass, __SCOPE__ & ":INFO: Announcement received");
+							setverdict(fail, __SCOPE__ & ":ERROR: Update for announced resource received but not deannouncing attribute");
 			
-							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex);
+							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex);
 							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
 						[] mccPortIn.receive(mw_request(mw_update)) -> value vc_request {
 							tc_ac.stop;
 							setverdict(fail, __SCOPE__ & ":ERROR: Unexpected update operation received");
 	
-							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex);
+							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex);
 							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
 						[] tc_ac.timeout {
@@ -10874,14 +10874,14 @@ module OneM2M_PermutationFunctions {
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ":INFO: Announcement received");
 			
-							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex);
+							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex);
 							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
 						[] mccPortIn.receive(mw_request(mw_update)) -> value vc_request {
 							tc_ac.stop;
 							setverdict(fail, __SCOPE__ & ":ERROR: Unexpected update operation received");
 	
-							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex);
+							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex);
 							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
 						[] tc_ac.timeout {
@@ -10935,14 +10935,14 @@ module OneM2M_PermutationFunctions {
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ":INFO: Announcement received");
 			
-							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex);
+							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex);
 							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
 						[] mccPortIn.receive(mw_request(mw_update)) -> value vc_request {
 							tc_ac.stop;
 							setverdict(fail, __SCOPE__ & ":ERROR: Unexpected update operation received");
 	
-							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex);
+							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex);
 							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
 						[] tc_ac.timeout {
@@ -10996,14 +10996,14 @@ module OneM2M_PermutationFunctions {
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ":INFO: Announcement received");
 			
-							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex);
+							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex);
 							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
 						[] mccPortIn.receive(mw_request(mw_update)) -> value vc_request {
 							tc_ac.stop;
 							setverdict(fail, __SCOPE__ & ":ERROR: Unexpected update operation received");
 	
-							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex);
+							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex);
 							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
 						[] tc_ac.timeout {
@@ -11055,14 +11055,21 @@ module OneM2M_PermutationFunctions {
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ":INFO: Announcement received");
 			
-							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex);
+							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex);
+							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
+						}
+						[] mccPortIn.receive(mw_request(p_updateRequestAnnc)) -> value vc_request {
+							tc_ac.stop;
+							setverdict(fail, __SCOPE__ & ":ERROR: Announcement received but not deannouncing attribute");
+	
+							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex);//Update function with expected index
 							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
 						[] mccPortIn.receive(mw_request(mw_update)) -> value vc_request {
 							tc_ac.stop;
 							setverdict(fail, __SCOPE__ & ":ERROR: Unexpected update operation received");
 	
-							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex);//Update function with expected index
+							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedResourceIndex);//Update function with expected index
 							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
 						[] tc_ac.timeout {
@@ -11115,7 +11122,7 @@ module OneM2M_PermutationFunctions {
 
 					tc_ac.start;
 					alt {
-						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2004, p_updateResponse), {"announcedAttribute"})) -> value vc_response {
+						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2004, p_updateResponse))) -> value vc_response {
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ": Resource updated successfully");
 
@@ -11179,7 +11186,7 @@ module OneM2M_PermutationFunctions {
 
 					tc_ac.start;
 					alt {
-						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2004, p_updateResponse), {"announceTo"})) -> value vc_response {
+						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2004, p_updateResponse))) -> value vc_response {
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ": Resource updated successfully");
 						}