From 7a95f7d693426a02dffcaabef652d6deb0c41ffc Mon Sep 17 00:00:00 2001
From: reinaortega <miguelangel.reinaortega@etsi.org>
Date: Mon, 10 Feb 2020 18:00:38 +0100
Subject: [PATCH] Review of ANNC_UPD group + fix #75 + fix #77 + fix #94

Signed-off-by: reinaortega <miguelangel.reinaortega@etsi.org>
---
 LibOneM2M/OneM2M_Functions.ttcn      | 238 +++++--
 LibOneM2M/OneM2M_Templates.ttcn      |  92 +--
 LibOneM2M/OneM2M_TypesAndValues.ttcn |   1 +
 OneM2M_PermutationFunctions.ttcn     | 886 ++++++++++++++-------------
 OneM2M_Testcases_CSE_Release_3.ttcn  | 185 +++---
 5 files changed, 780 insertions(+), 622 deletions(-)

diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index a37d0c8..c830f4b 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -2540,7 +2540,7 @@ module OneM2M_Functions {
 				 * @param p_expectedResourceIndex Expected target parent resource of the announcemnet
 				 * @verdict 
 				 */
-				function f_cse_announcementProcedure_createHandler(template RequestPrimitive p_requestprimitive := ?, in ResponseStatusCode p_responseStatusCode := int2001, in integer p_expectedParentResourceIndex := vc_localRemoteCseIndex) runs on CseSimu return integer{
+				function f_cse_announcementProcedure_createHandler(template RequestPrimitive p_requestprimitive := mw_createAnnc, in ResponseStatusCode p_responseStatusCode := int2001, in integer p_expectedParentResourceIndex := vc_localRemoteCseIndex) runs on CseSimu return integer{
 					// Local variables
 					var integer v_announcedResourceIndex;
 				
@@ -2553,8 +2553,11 @@ module OneM2M_Functions {
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ":INFO: Expected Announcement received");
 							v_announcedResourceIndex := f_processCreateRequestPrimitive(vc_request.primitive.requestPrimitive, p_responseStatusCode, p_expectedParentResourceIndex);
-							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));			
-									}	
+							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
+							if(getverdict == inconc) {
+								setverdict(fail, __SCOPE__ & ":ERROR: Wrong target resource address");
+							}		
+						}	
 						[] mccPortIn.receive(mw_request(?)) -> value vc_request {
 							tc_ac.stop;
 							setverdict(fail, __SCOPE__ & ":ERROR:  Request received with unexpected parameters");
@@ -2623,7 +2626,6 @@ module OneM2M_Functions {
 				function f_cse_announcementProcedure_updateHandler(template  RequestPrimitive p_requestprimitive := mw_update, in ResponseStatusCode p_responseStatusCode := int2004, template(omit) integer p_expectedResourceIndex := omit) runs on CseSimu {
 
 					// Local variables
-					var MsgIn v_request;
 					var integer v_parentIndex := vc_localRemoteCseIndex;
 					var integer v_announcedResourceIndex;
 					var ResponsePrimitive v_responsePrimitive;
@@ -2634,16 +2636,16 @@ module OneM2M_Functions {
 					
 					tc_ac.start;
 					alt {
-						[] mccPortIn.receive(mw_request(p_requestprimitive)) -> value v_request {
+						[] mccPortIn.receive(mw_request(p_requestprimitive)) -> value vc_request {
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ":INFO: Expected UPDATE Announcement received");
 	
-							f_processUpdateRequestPrimitive(v_request.primitive.requestPrimitive);
+							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive);
 							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
-						[] mccPortIn.receive(mw_request(?)) -> value v_request {
+						[] mccPortIn.receive(mw_request(?)) -> value vc_request {
 							setverdict(fail, __SCOPE__ & ":ERROR:  Request received with unexpected parameters");
-							v_responsePrimitive := valueof(m_responsePrimitive(int4000,v_request.primitive.requestPrimitive.requestIdentifier));
+							v_responsePrimitive := valueof(m_responsePrimitive(int4000,vc_request.primitive.requestPrimitive.requestIdentifier));
 							f_send(e_mccPortIn, m_response(v_responsePrimitive));
 						}
 						[] tc_ac.timeout {
@@ -3366,6 +3368,40 @@ module OneM2M_Functions {
 						v_myResource.contentInstanceAnnc.creationTime := fx_generateTimestamp();
 						v_myResource.contentInstanceAnnc.lastModifiedTime := v_myResource.contentInstanceAnnc.creationTime;
 					}
+				} else if(p_resourceType == int10029 and ispresent(p_resource)) { //TimeSeriesAnnc
+					if(ischosen(p_resource.timeSeriesAnnc)){
+						v_myResource.timeSeriesAnnc := valueof(p_resource.timeSeriesAnnc);
+						v_myResource.timeSeriesAnnc.resourceID := "tsA" & int2str(v_resourceIndex);
+						if(not(ispresent(p_resource.timeSeriesAnnc.resourceName))) {
+							v_myResource.timeSeriesAnnc.resourceName := "timeSeriesAnnc" & int2str(v_resourceIndex);
+						}
+						v_myResource.timeSeriesAnnc.resourceType := p_resourceType;
+						v_myResource.timeSeriesAnnc.parentID := f_getResourceId(vc_localResourcesList[p_parentIndex].resource);
+						v_myResource.timeSeriesAnnc.creationTime := fx_generateTimestamp();
+						v_myResource.timeSeriesAnnc.lastModifiedTime := v_myResource.timeSeriesAnnc.creationTime;											
+						if(not(ispresent(p_resource.timeSeriesAnnc.expirationTime))) {
+							v_myResource.timeSeriesAnnc.expirationTime := "20301231T012345";
+						}
+					}				
+				} else if(p_resourceType == int10030 and ispresent(p_resource)) { //TimeSeriesInstanceAnnc
+					if(ischosen(p_resource.timeSeriesInstanceAnnc)){
+						v_myResource.timeSeriesInstanceAnnc := valueof(p_resource.timeSeriesInstanceAnnc);
+						v_myResource.timeSeriesInstanceAnnc.resourceID := "tsiA" & int2str(v_resourceIndex);
+						if(not(ispresent(p_resource.timeSeriesInstanceAnnc.resourceName))) {
+							v_myResource.timeSeriesInstanceAnnc.resourceName := "timeSeriesInstanceAnnc" & int2str(v_resourceIndex);
+						}
+						v_myResource.timeSeriesInstanceAnnc.resourceType := p_resourceType;
+						v_myResource.timeSeriesInstanceAnnc.parentID := f_getResourceId(vc_localResourcesList[p_parentIndex].resource);
+						v_myResource.timeSeriesInstanceAnnc.creationTime := fx_generateTimestamp();
+						v_myResource.timeSeriesInstanceAnnc.lastModifiedTime := v_myResource.timeSeriesInstanceAnnc.creationTime;											
+						if(not(ispresent(p_resource.timeSeriesInstanceAnnc.expirationTime))) {
+							v_myResource.timeSeriesInstanceAnnc.expirationTime := "20301231T012345";
+						}
+						v_myResource.timeSeriesInstanceAnnc.contentSize := lengthof(v_myResource.timeSeriesInstanceAnnc.content);
+						if(not(ispresent(p_resource.timeSeriesInstanceAnnc.sequenceNr))) {
+							v_myResource.timeSeriesInstanceAnnc.sequenceNr := 1;
+						}
+					}				
 				} else if (p_resourceType == int1 and ispresent (p_resource)) { //Acp Resource
 				   if(ischosen (p_resource.accessControlPolicy)){
 						v_myResource.accessControlPolicy := valueof(p_resource.accessControlPolicy);
@@ -4598,7 +4634,7 @@ module OneM2M_Functions {
 			p_request.requestIdentifier := valueof(p_request.requestIdentifier) & f_rnd(1, 1000000);
 			
 			if((p_resourceType != int2)) {
-				if(p_resourceType == int16) {
+				if((p_resourceType == int16) or (p_resourceType == int10016)) {
 					p_request.from_ := PX_TS_CSE1.cseId;
 				} else {	
 					p_request.from_ := f_getOriginator(p_parentIndex, vc_testSystemRole);
@@ -4784,9 +4820,6 @@ module OneM2M_Functions {
 			if(ischosen(p_contentResource.container)) {
 				return f_resourceIdCleaner(p_contentResource.container.resourceID);
 			}
-			if(ischosen(p_contentResource.containerAnnc)) {
-				return f_resourceIdCleaner(p_contentResource.containerAnnc.resourceID);
-			}
 			if(ischosen(p_contentResource.contentInstance)) {
 				return f_resourceIdCleaner(p_contentResource.contentInstance.resourceID);
 			}
@@ -4805,9 +4838,6 @@ module OneM2M_Functions {
 			if(ischosen(p_contentResource.aE)) {
 				return f_resourceIdCleaner(p_contentResource.aE.resourceID);
 			}
-			if(ischosen(p_contentResource.aEAnnc)) {
-				return f_resourceIdCleaner(p_contentResource.aEAnnc.resourceID);
-			}
 			if(ischosen(p_contentResource.serviceSubscribedAppRule)) {
 				return f_resourceIdCleaner(p_contentResource.serviceSubscribedAppRule.resourceID);
 			}
@@ -4829,7 +4859,41 @@ module OneM2M_Functions {
 			if(ischosen(p_contentResource.statsCollect)) {
 				return f_resourceIdCleaner(p_contentResource.statsCollect.resourceID);
 			}
-
+			if(ischosen(p_contentResource.timeSeries)) {
+				return p_contentResource.timeSeries.resourceID;
+			}	
+			if(ischosen(p_contentResource.timeSeriesInstance)) {
+				return p_contentResource.timeSeriesInstance.resourceID;
+			}
+			//Announced resources
+			if(ischosen(p_contentResource.accessControlPolicyAnnc)) {
+				return f_resourceIdCleaner(p_contentResource.accessControlPolicyAnnc.resourceID);
+			}
+			if(ischosen(p_contentResource.aEAnnc)) {
+				return f_resourceIdCleaner(p_contentResource.aEAnnc.resourceID);
+			}
+			if(ischosen(p_contentResource.containerAnnc)) {
+				return f_resourceIdCleaner(p_contentResource.containerAnnc.resourceID);
+			}
+			if(ischosen(p_contentResource.contentInstanceAnnc)) {
+				return f_resourceIdCleaner(p_contentResource.contentInstanceAnnc.resourceID);
+			}
+			if(ischosen(p_contentResource.groupAnnc)) {
+				return f_resourceIdCleaner(p_contentResource.groupAnnc.resourceID);
+			}
+			if(ischosen(p_contentResource.scheduleAnnc)) {
+				return f_resourceIdCleaner(p_contentResource.scheduleAnnc.resourceID);
+			}
+			if(ischosen(p_contentResource.remoteCSEAnnc)) {
+				return f_resourceIdCleaner(p_contentResource.remoteCSEAnnc.resourceID);
+			}
+			if(ischosen(p_contentResource.timeSeriesAnnc)) {
+				return p_contentResource.timeSeriesAnnc.resourceID;
+			}	
+			if(ischosen(p_contentResource.timeSeriesInstanceAnnc)) {
+				return p_contentResource.timeSeriesInstanceAnnc.resourceID;
+			}
+			
 			log(__SCOPE__&":WARNING: Primitive Content Kind not implemented");
 			
 			return "resourceIDNotFound";
@@ -4847,21 +4911,12 @@ module OneM2M_Functions {
 			if(ischosen(p_contentResource.accessControlPolicy)) {
 				return p_contentResource.accessControlPolicy.resourceName;
 			}
-			if(ischosen(p_contentResource.accessControlPolicyAnnc)) {
-				return p_contentResource.accessControlPolicyAnnc.resourceName;
-			}
 			if(ischosen(p_contentResource.container)) {
 				return p_contentResource.container.resourceName;
 			}
-			if(ischosen(p_contentResource.containerAnnc)) {
-				return p_contentResource.containerAnnc.resourceName;
-			}
 			if(ischosen(p_contentResource.contentInstance)) {
 				return p_contentResource.contentInstance.resourceName;
 			}
-			if(ischosen(p_contentResource.contentInstanceAnnc)) {
-				return p_contentResource.contentInstanceAnnc.resourceName;
-			}
 			if(ischosen(p_contentResource.schedule)) {
 				return p_contentResource.schedule.resourceName;
 			}
@@ -4874,15 +4929,9 @@ module OneM2M_Functions {
 			if(ischosen(p_contentResource.group_)) {
 				return p_contentResource.group_.resourceName;
 			}
-			if(ischosen(p_contentResource.groupAnnc)) {
-				return p_contentResource.groupAnnc.resourceName;
-			}
 			if(ischosen(p_contentResource.aE)) {
 				return p_contentResource.aE.resourceName;
 			}
-			if(ischosen(p_contentResource.aEAnnc)) {
-				return p_contentResource.aEAnnc.resourceName;
-			}
 			if(ischosen(p_contentResource.serviceSubscribedAppRule)) {
 				return p_contentResource.serviceSubscribedAppRule.resourceName;
 			}
@@ -4916,6 +4965,32 @@ module OneM2M_Functions {
 			if(ischosen(p_contentResource.timeSeriesInstance)) {
 				return p_contentResource.timeSeriesInstance.resourceName;
 			}
+			//Announced resources
+			if(ischosen(p_contentResource.accessControlPolicyAnnc)) {
+				return p_contentResource.accessControlPolicyAnnc.resourceName;
+			}
+			if(ischosen(p_contentResource.aEAnnc)) {
+				return p_contentResource.aEAnnc.resourceName;
+			}
+			if(ischosen(p_contentResource.containerAnnc)) {
+				return p_contentResource.containerAnnc.resourceName;
+			}
+			if(ischosen(p_contentResource.contentInstanceAnnc)) {
+				return p_contentResource.contentInstanceAnnc.resourceName;
+			}
+			if(ischosen(p_contentResource.groupAnnc)) {
+				return p_contentResource.groupAnnc.resourceName;
+			}
+			if(ischosen(p_contentResource.remoteCSEAnnc)) {
+				return p_contentResource.remoteCSEAnnc.resourceName;
+			}
+			if(ischosen(p_contentResource.timeSeriesAnnc)) {
+				return p_contentResource.timeSeriesAnnc.resourceName;
+			}	
+			if(ischosen(p_contentResource.timeSeriesInstanceAnnc)) {
+				return p_contentResource.timeSeriesInstanceAnnc.resourceName;
+			}
+		
 			log(__SCOPE__&":WARNING: Primitive Content Kind not implemented");
 			
 			return "resourceNameNotFound";
@@ -4948,11 +5023,13 @@ module OneM2M_Functions {
  					}	
 				} else if (ischosen(vc_resourcesList[p_targetResourceIndex].resource.remoteCSE)) {
 					return vc_resourcesList[p_targetResourceIndex].resource.remoteCSE.cSE_ID; 
+				} else if (ischosen(vc_resourcesList[p_targetResourceIndex].resource.remoteCSEAnnc)) {
+					return PX_TS_CSE1.cseId;//To double check 
 				} else {
-					return f_getOriginator(vc_resourcesList[p_targetResourceIndex].parentIndex);
+					return f_getOriginator(vc_resourcesList[p_targetResourceIndex].parentIndex, p_testSystemRole);
 				}
 			} else {
-				return f_getOriginator(vc_resourcesList[p_targetResourceIndex].parentIndex);
+				return f_getOriginator(vc_resourcesList[p_targetResourceIndex].parentIndex, p_testSystemRole);
 			}
 		}
 		
@@ -4996,6 +5073,23 @@ module OneM2M_Functions {
 			
 		}
 		
+		/**
+		 * @desc Return of an attributeList from an attributeAux list
+		 * @param p_attributeAuxList Source attributeAuxList
+		 * @return AttributeList
+		 */
+		function f_getAttributeList(in AttributeAux_list p_attributeAuxList) return AttributeList_1 {
+			var AttributeList_1 v_attributeList;
+			var integer i;
+			
+			for (i:=0; i < lengthof(p_attributeAuxList); i := i + 1){
+				v_attributeList[i] := p_attributeAuxList[i].name; 	
+			}
+					
+			return v_attributeList;
+			
+		}
+		
 		/**
 		 * @desc Resolution of the announcement target CSE PoA
 		 * @param p_protocolBinding	Protocol Binding
@@ -6391,13 +6485,13 @@ module OneM2M_Functions {
 					}	
 				}
 				if(p_responseStatusCode == int2001) {
-				setverdict(pass, __SCOPE__&":INFO: Resource created successfuly");
-				v_localResource := f_generateLocalResource(p_request.primitiveContent, v_parentIndex, p_request.resourceType);
-				v_localResourceIndex := f_setLocalResource(v_localResource, p_request.resourceType, v_parentIndex);
-				vc_response.primitive.responsePrimitive.primitiveContent := vc_localResourcesList[v_localResourceIndex].resource;
+					setverdict(pass, __SCOPE__&":INFO: Resource created successfuly");
+					v_localResource := f_generateLocalResource(p_request.primitiveContent, v_parentIndex, p_request.resourceType);
+					v_localResourceIndex := f_setLocalResource(v_localResource, p_request.resourceType, v_parentIndex);
+					vc_response.primitive.responsePrimitive.primitiveContent := vc_localResourcesList[v_localResourceIndex].resource;
 				} else {
 					setverdict(pass, __SCOPE__&":INFO: Resource creation rejected");
-			}
+				}
 			}
 			vc_response.primitive.responsePrimitive.from_ := PX_TS_CSE1.cseId;
 			vc_response.primitive.responsePrimitive.to_ := p_request.from_;
@@ -6409,23 +6503,31 @@ module OneM2M_Functions {
 		 * @desc   Proccessing of the UPDATE request primitive
 		 * @param  p_request          Request primitive to be processed
 		 */
-		function f_processUpdateRequestPrimitive(in RequestPrimitive p_request, in ResponseStatusCode p_responseStatusCode := int2004) runs on CseSimu return integer {			
+		function f_processUpdateRequestPrimitive(in RequestPrimitive p_request, in ResponseStatusCode p_responseStatusCode := int2004, template(omit) integer p_expectedTargetResourceIndex := omit) runs on CseSimu return integer {			
 			var integer v_targetLocalResourceIndex := -1;
 				
 			v_targetLocalResourceIndex := f_getLocalResourceIndex(p_request.to_);
+			vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,p_request.requestIdentifier));
 			if(v_targetLocalResourceIndex == -1) {
 				setverdict(inconc,__SCOPE__&": ERROR: Target resource not found");
-				vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(int4004,p_request.requestIdentifier));
-		
+				vc_response.primitive.responsePrimitive.responseStatusCode := int4004;
 			} else {
-				vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,p_request.requestIdentifier));
-				if(p_responseStatusCode == int2001) {
-				setverdict(pass, __SCOPE__&":INFO: Resource updated successfuly");
-				f_updateLocalResource(v_targetLocalResourceIndex, p_request.primitiveContent);
-				vc_response.primitive.responsePrimitive.primitiveContent := vc_localResourcesList[v_targetLocalResourceIndex].resource;
+				if(isvalue(p_expectedTargetResourceIndex)){
+					if(valueof(p_expectedTargetResourceIndex) != v_targetLocalResourceIndex){
+						setverdict(inconc, __SCOPE__ & ":ERROR: Unexpected Target Resource Address");
+						vc_response.primitive.responsePrimitive.responseStatusCode := int4000;
+						return v_targetLocalResourceIndex;
+					} else {
+						setverdict(pass, __SCOPE__ & ":INFO: Expected Target Resource Address");
+					}	
+				}
+				if(p_responseStatusCode == int2004) {
+					setverdict(pass, __SCOPE__&":INFO: Resource updated successfuly");
+					f_updateLocalResource(v_targetLocalResourceIndex, p_request.primitiveContent);
+					vc_response.primitive.responsePrimitive.primitiveContent := vc_localResourcesList[v_targetLocalResourceIndex].resource;
 				} else {
 					setverdict(pass, __SCOPE__&":INFO: Resource update rejected");
-			}
+				}
 			}
 			vc_response.primitive.responsePrimitive.from_ := PX_TS_CSE1.cseId;
 			vc_response.primitive.responsePrimitive.to_ := p_request.from_;
@@ -6437,20 +6539,30 @@ module OneM2M_Functions {
 		 * @desc   Proccessing of the RETRIEVE request primitive
 		 * @param  p_request          Request primitive to be processed
 		 */
-		function f_processRetrieveRequestPrimitive(in RequestPrimitive p_request, in ResponseStatusCode p_responseStatusCode := int2000) runs on CseSimu return integer {			
+		function f_processRetrieveRequestPrimitive(in RequestPrimitive p_request, in ResponseStatusCode p_responseStatusCode := int2000, template(omit) integer p_expectedTargetResourceIndex := omit) runs on CseSimu return integer {			
 			var integer v_targetLocalResourceIndex := -1;
 				
 			v_targetLocalResourceIndex := f_getLocalResourceIndex(p_request.to_);
+			vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,p_request.requestIdentifier));
 			if(v_targetLocalResourceIndex == -1) {
 				setverdict(inconc,__SCOPE__&": ERROR: Target resource not found");
-				vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(int4004,p_request.requestIdentifier));
-		
+				vc_response.primitive.responsePrimitive.responseStatusCode := int4004;
 			} else {
-				setverdict(pass, __SCOPE__&":INFO: Resource retrieved successfuly");
-				vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,p_request.requestIdentifier));
+				if(isvalue(p_expectedTargetResourceIndex)){
+					if(valueof(p_expectedTargetResourceIndex) != v_targetLocalResourceIndex){
+						setverdict(inconc, __SCOPE__ & ":ERROR: Unexpected Target Resource Address");
+						vc_response.primitive.responsePrimitive.responseStatusCode := int4000;
+						return v_targetLocalResourceIndex;
+					} else {
+						setverdict(pass, __SCOPE__ & ":INFO: Expected Target Resource Address");
+					}	
+				}
 				if(p_responseStatusCode == int2000) {
-				vc_response.primitive.responsePrimitive.primitiveContent := vc_localResourcesList[v_targetLocalResourceIndex].resource;
-			}
+					setverdict(pass, __SCOPE__&":INFO: Resource retrieved successfuly");
+					vc_response.primitive.responsePrimitive.primitiveContent := vc_localResourcesList[v_targetLocalResourceIndex].resource;
+				} else {
+					setverdict(pass, __SCOPE__&":INFO: Resource retrieve rejected");
+				}
 			}
 			vc_response.primitive.responsePrimitive.from_ := PX_TS_CSE1.cseId;
 			vc_response.primitive.responsePrimitive.to_ := p_request.from_;
@@ -6462,18 +6574,26 @@ module OneM2M_Functions {
 		 * @desc   Proccessing of the DELETE request primitive
 		 * @param  p_request          Request primitive to be processed
 		 */
-		function f_processDeleteRequestPrimitive(in RequestPrimitive p_request, in ResponseStatusCode p_responseStatusCode := int2002) runs on CseSimu return integer {			
+		function f_processDeleteRequestPrimitive(in RequestPrimitive p_request, in ResponseStatusCode p_responseStatusCode := int2002, template(omit) integer p_expectedTargetResourceIndex := omit) runs on CseSimu return integer {			
 			var integer v_targetLocalResourceIndex := -1;
 				
 			v_targetLocalResourceIndex := f_getLocalResourceIndex(p_request.to_);
+			vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,p_request.requestIdentifier));
 			if(v_targetLocalResourceIndex == -1) {
 				setverdict(inconc,__SCOPE__&": ERROR: Target resource not found");
-				vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(int4004,p_request.requestIdentifier));
-		
+				vc_response.primitive.responsePrimitive.responseStatusCode := int4004;
 			} else {
-				vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,p_request.requestIdentifier));
+				if(isvalue(p_expectedTargetResourceIndex)){
+					if(valueof(p_expectedTargetResourceIndex) != v_targetLocalResourceIndex){
+						setverdict(inconc, __SCOPE__ & ":ERROR: Unexpected Target Resource Address");
+						vc_response.primitive.responsePrimitive.responseStatusCode := int4000;
+						return v_targetLocalResourceIndex;
+					} else {
+						setverdict(pass, __SCOPE__ & ":INFO: Expected Target Resource Address");
+					}	
+				}
 				if(p_responseStatusCode == int2002) {
-				setverdict(pass, __SCOPE__&":INFO: Resource deleted successfuly");
+					setverdict(pass, __SCOPE__&":INFO: Resource deleted successfuly");
 				} else {
 					setverdict(pass, __SCOPE__&":INFO: Resource deletion rejected");
 			}
diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn
index a98b9fe..650ae80 100644
--- a/LibOneM2M/OneM2M_Templates.ttcn
+++ b/LibOneM2M/OneM2M_Templates.ttcn
@@ -75,7 +75,7 @@ module OneM2M_Templates {
 			forcedFields := p_forcedFields
 		};
 		
-		template MsgIn mw_request(in template  RequestPrimitive p_requestPrimitive, template AttributeList_1 p_nullFields := *) := {
+		template MsgIn mw_request(in template (present) RequestPrimitive p_requestPrimitive, template AttributeList_1 p_nullFields := *) := {
 			primitive := { requestPrimitive := p_requestPrimitive}, 
 			nullFields := p_nullFields
 		};
@@ -598,7 +598,6 @@ module OneM2M_Templates {
 			 * @desc Reception template for update Ae resource
 			 */
 			template RequestPrimitive mw_updateAe(template XSD.ID p_from := *, template XSD.ID p_to := ?) modifies mw_update := {
-				resourceType := int2,
 				primitiveContent:= {aE := ?}
 			};
 			 
@@ -715,13 +714,11 @@ module OneM2M_Templates {
 			 * @desc Reception template for update remoteCSE resource
 			 */
 			template RequestPrimitive mw_updateRemoteCSE(template XSD.ID p_from := *, template XSD.ID p_to := ?) modifies mw_update := {
-				resourceType := int16,
 				primitiveContent:= {remoteCSE := ?}
 			};
 			       	
 			template (value) RequestPrimitive m_updateAEAnncBase modifies m_update:= {
 				requestIdentifier := testcasename() & "-m_updateAEAnnc",
-				resourceType := int10002,
 				primitiveContent := {aEAnnc := m_contentUpdateAEAnnc}
 			};
 			
@@ -733,7 +730,6 @@ module OneM2M_Templates {
 			 * @desc Base Reception template for update ContainerAnnc
 			 */
 			template RequestPrimitive mw_updateContainerAnnc(template XSD.ID p_from := *, template XSD.ID p_to := ?) modifies mw_update := {
-				resourceType := int10003,
 				primitiveContent := {containerAnnc := ?}
 			}; 
 			
@@ -741,7 +737,6 @@ module OneM2M_Templates {
 			 * @desc Base Reception template for update GroupAnnc
 			 */
 			template RequestPrimitive mw_updateGroupAnnc(template XSD.ID p_from := *, template XSD.ID p_to := ?) modifies mw_update := {
-				resourceType := int10009,
 				primitiveContent := {groupAnnc := ?}
 			}; 
 			
@@ -749,7 +744,6 @@ module OneM2M_Templates {
 			 * @desc Base Reception template for update AccessControlPolicyAnnc
 			 */
 			template RequestPrimitive mw_updateAccessControlPolicyAnnc(template XSD.ID p_from := *, template XSD.ID p_to := ?) modifies mw_update := {
-				resourceType := int10001,
 				primitiveContent := {accessControlPolicyAnnc := ?}
 			}; 	
 			
@@ -773,7 +767,6 @@ module OneM2M_Templates {
 			 * @desc Base Reception template for update TimeSeriesAnnc
 			 */
 			template RequestPrimitive mw_updateTimeSeriesAnnc(template XSD.ID p_from := *, template XSD.ID p_to := ?) modifies mw_update := {
-				resourceType := int10029,
 				primitiveContent := {timeSeriesAnnc := ?}
 			}; 
 			
@@ -863,37 +856,8 @@ module OneM2M_Templates {
 			/**
 			 * @desc Base Reception template for create operation for announced resources
 			 */
-			template RequestPrimitive mw_createAnnc(template XSD.ID p_from := ?, template XSD.ID p_to := ?) := {
-				operation := int1,
-				to_ := p_to,
-				from_ := p_from,
-				requestIdentifier := ?,
-				resourceType := ?,
-				primitiveContent := ?,
-				roleIDs := *,
-				originatingTimestamp := *,
-				requestExpirationTimestamp := *,
-				resultExpirationTimestamp := *,
-				operationExecutionTime := *,
-				responseType := *,
-				resultPersistence := *,
-				resultContent := *,
-				eventCategory := *,
-				deliveryAggregation := *,
-				groupRequestIdentifier := *,
-				filterCriteria := *,
-				desiredIdentifierResultType := *,
-				tokens := *,
-				tokenIDs := *,
-				localTokenIDs := *,
-				tokenRequestIndicator := *,
-				groupRequestTargetMembers := *,
-				authorSignIndicator := *,
-				authorSigns := *,
-				authorRelIndicator := *,
-				semanticQueryIndicator := *,
-				releaseVersionIndicator := ?,
-				vendorInformation := *
+			template RequestPrimitive mw_createAnnc(template XSD.ID p_from := ?, template XSD.ID p_to := ?) modifies mw_create := {
+				resourceType := (int10001,int10002,int10003,int10004,int10009,int10010,int10013,int10014,int10016,int10018,int10024,int10028,int10029,int10030,int10034,int10038,int10039,int10040,int10041,int10042)
 			}
 			
 			/**
@@ -1093,6 +1057,15 @@ module OneM2M_Templates {
 				primitiveContent := {remoteCSE := mw_contentCreateRemoteCSEBase}
 			};
 			
+			/**
+			 * @desc Base CREATE request primitive for remoteCSEAnnc resource
+			 */
+			template (value) RequestPrimitive m_createRemoteCSEAnncBase modifies m_create := {
+				requestIdentifier := testcasename() & "-m_createRemoteCSE",
+				resourceType := int10016,
+				primitiveContent := {remoteCSEAnnc := m_contentCreateRemoteCSEAnnc}
+			};			
+			
 			/**
 			 * @desc CREATE request primitive for Container resource wiht no resourceName provided
 			 */
@@ -3544,6 +3517,39 @@ module OneM2M_Templates {
 			activityPatternElements := omit,//O
 			choice := omit//O
 		};
+
+		/**
+		 * @desc Base primitiveContent for CREATE operation for RemoteCSEAnnc resource
+		 * @param p_name Resource name
+		 */
+		template (value) RemoteCSEAnnc_optional m_contentCreateRemoteCSEAnnc := {
+			resourceName := omit,//NA NP
+			resourceType := omit,//NA NP
+			resourceID := omit,//NA NP
+			parentID := omit,//NA NP
+			creationTime := omit,//NA NP
+			lastModifiedTime := omit,//NA NP
+			labels := omit,//MA O
+			accessControlPolicyIDs := omit,//MA O
+			expirationTime := "29991231T235959",//MA M
+			link := "NotInitialized",//M
+			dynamicAuthorizationConsultationIDs := omit,//OA O 
+			cseType := omit,//OA O
+			pointOfAccess := omit,//OA O
+			cSEBase := omit,//OA O
+			cSE_ID := omit,//OA O
+			requestReachability := false,//OA O
+			nodeLink := omit,//OA O
+			contentSerialization := omit,//OA O
+			e2eSecInfo := omit,//MA M
+			descendantCSEs := omit,//OA O
+			supportedReleaseVersions := {"3"}, //MA M
+			multicastCapability := omit,//OA O
+			externalGroupID := omit,//OA O
+			triggerEnable := omit,//OA O
+			activityPatternElements := omit,//OA O
+			choice := omit//OA O
+		};
 		
 		/**
 		* @desc Base reception template of primitiveContent for CREATE operation for ContainerAnnc resource
@@ -3910,7 +3916,7 @@ module OneM2M_Templates {
 			labels := omit,//O
 			accessControlPolicyIDs := omit,//O
 			expirationTime := omit,//O
-			link := omit,//M TODO Put the right value
+			link := "NotInitialized",//M
 			dynamicAuthorizationConsultationIDs := omit, //O
 			maxNrOfInstances := omit,//O
 			maxByteSize := omit,//O
@@ -3941,7 +3947,7 @@ module OneM2M_Templates {
 			labels := *,//MA
 			accessControlPolicyIDs := ?,//MA
 			expirationTime := ?,//MA M
-			link := omit, //O NA
+			link := ?, //M NA
 			dynamicAuthorizationConsultationIDs := *, //OA			
 			maxNrOfInstances := *,//O OA		
 			maxByteSize := *,//O OA	
@@ -3970,8 +3976,8 @@ module OneM2M_Templates {
 			creationTime := omit,//NA M
 			lastModifiedTime := omit,//NA M
 			labels := *,//MA
-			expirationTime := omit,//NA M
-			link := omit, //O NA
+			expirationTime := ?,//MA M To be double checked SDS-2019-0668R01
+			link := ?, //M NA
 			dataGenerationTime := *,//M OA
 			content := *,//M OA
 			sequenceNr := *,//O OA
diff --git a/LibOneM2M/OneM2M_TypesAndValues.ttcn b/LibOneM2M/OneM2M_TypesAndValues.ttcn
index dd36e53..20b5205 100644
--- a/LibOneM2M/OneM2M_TypesAndValues.ttcn
+++ b/LibOneM2M/OneM2M_TypesAndValues.ttcn
@@ -30,6 +30,7 @@ module OneM2M_TypesAndValues {
 	const XSD.String c_defaultContainerAnncResourceName := "MyContainerAnncResource";
 	const XSD.String c_defaultDeliveryResourceName := "MyDeliveryResource";
 	const XSD.String c_defaultRemoteCSEResourceName := "MyRemoteCSEResource";
+	const XSD.String c_defaultRemoteCSEAnncResourceName := "MyRemoteCSEAnncResource";
 	const XSD.String c_defaultMgmtObjResourceName := "MyMgmtObjResource";
 	const XSD.String c_defaultMgmtCmdResourceName := "MyMgmtCmdResource";
 	const XSD.String c_defaultAeResourceName := "MyAeResource";
diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn
index e74cd57..f644675 100644
--- a/OneM2M_PermutationFunctions.ttcn
+++ b/OneM2M_PermutationFunctions.ttcn
@@ -8684,6 +8684,9 @@ module OneM2M_PermutationFunctions {
 					
 					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
 					
+					//Retrieve the AEAnnc resource index
+					v_parentIndex := f_getLatestLocalResourceIndex(vc_cse1);
+					
 					// Test Body
 					if (ispresent (p_requestUpdatePrimitive)) {
 						v_resourceIndex := f_cse_createResource(p_resourceType, p_requestCreatePrimitive, v_aeIndex);
@@ -8693,19 +8696,27 @@ module OneM2M_PermutationFunctions {
 						if (p_resourceType == int4) {
 							v_create := m_createContainerBase;
 							v_create.primitiveContent.container.announceTo := {PX_TS_CSE1.cseId};
-							vc_cse1.start(f_cse_announcementProcedure_createHandler(mw_createContainerAnnc()));
+							vc_cse1.start(f_cse_announcementProcedure_createHandler(mw_createContainerAnnc(), -, v_parentIndex));//Do not commit
 							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) {
+							v_create := m_createTimeSeriesBase;
+							v_create.primitiveContent.timeSeries.announceTo := {PX_TS_CSE1.cseId};
+							vc_cse1.start(f_cse_announcementProcedure_createHandler(mw_createTimeSeriesAnnc(), -, v_parentIndex));//Do not commit
+							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 {
 					  		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;
 					}
 					
-					//Retrieve the parent resource index
-					v_AEAnncResourceIndex := f_getLatestLocalResourceIndex(vc_cse1);
-					vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, v_AEAnncResourceIndex));	
+					vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, v_parentIndex));//Do not commit - parent is always remoteCSE	
 					f_send(e_mcaPort, m_request(v_request));
 
 					tc_ac.start;
@@ -9352,65 +9363,65 @@ module OneM2M_PermutationFunctions {
 			
 				function f_CSE_ANNC_UPD_001(ResourceType p_resourceType, template RequestPrimitive p_requestCreatePrimitive, template RequestPrimitive p_createRequestAnnc, template RequestPrimitive p_requestUpdatePrimitive) runs on CseSimu system CseSystem {
 					// 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_aEAnncIndex := -1;
 					var integer v_aeIndex := -1;
-					var integer v_latestResourceIndex;
+					var integer v_resourceIndex := -1;
 					var ResponsePrimitive v_responsePrimitive;
 					var template RequestPrimitive v_create := m_createAe(PX_TS_AE1.appId, omit, omit);
 		
-					v_create.primitiveContent.aE.announceTo := {PX_CSE_ID};
+					v_create.primitiveContent.aE.announceTo := {PX_TS_CSE1.cseId};
 	   
 					//Test control
 	
 					// Test component configuration
 					f_cf02UpCseSimuMaster();
-	
+					
 					// Test adapter configuration
 					// Register the CSE
-					f_cse_registerRemoteCse(m_createRemoteCSEBase);	
-	
+					f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, {f_getCompletePoA()}));
+					
 					//Preamble
-	
-					v_ae1.start(f_cse_createResource(int2,v_create));					
-					f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -));		
-					v_ae1.done;
+					vc_ae1.start(f_cse_createResource(int2,v_create));
+					v_aEAnncIndex := f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -));
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
 					
-					v_aeIndex:= f_getLatestResourceIndex(v_ae1);
+					v_aeIndex := f_getLatestResourceIndex(vc_ae1);
 					
-					v_ae1.start(f_cse_createResource(p_resourceType, p_requestCreatePrimitive, v_aeIndex));
-					v_ae1.done;					
-		
-					v_latestResourceIndex := f_getLatestResourceIndex(v_ae1);
-	
 					// Test Body
-					v_ae1.start(f_cse_updateResource(p_resourceType, v_latestResourceIndex, p_requestUpdatePrimitive));
+					vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex));
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
+					v_resourceIndex := f_getLatestResourceIndex(vc_ae1);
 	
+					// Test Body
+					vc_ae1.start(f_cse_updateResource(p_resourceType, v_resourceIndex, p_requestUpdatePrimitive, -));
+					
 					tc_ac.start;
 					alt {
-						[] mccPortIn.receive(mw_request(p_createRequestAnnc)) -> value v_request {
+						[] mccPortIn.receive(mw_request(p_createRequestAnnc)) -> value vc_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");
-							}
-							
+							setverdict(pass, __SCOPE__ & ":INFO: Announcement creation received");
+			
+							f_processCreateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex);
+							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
+						}
+						[] mccPortIn.receive(mw_request(mw_createAnnc)) -> value vc_request {
+							tc_ac.stop;
+							setverdict(pass, __SCOPE__ & ":INFO: Unexpected creation received");
+			
+							f_processCreateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex);
+							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
 						[] tc_ac.timeout {
-							setverdict(fail, __SCOPE__ & ":ERROR:  No CREATE REQUEST received");
+							setverdict(fail, __SCOPE__ & ":ERROR:  No announcement received");
 						}
-					}
-					v_ae1.done;
-	
+					}	
+					
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+
 					// Postamble
 					f_cse_postamble_deleteResourcesCSE();
-	
+
 					// Tear down
 					f_cf02DownCseSimuMaster();
 	
@@ -9418,106 +9429,112 @@ module OneM2M_PermutationFunctions {
 	
 				function f_CSE_ANNC_UPD_002(ResourceType p_resourceType, template RequestPrimitive p_requestCreatePrimitive, template RequestPrimitive p_createRequestAnnc, template RequestPrimitive p_requestUpdatePrimitive, template (omit) AttributeAux_list p_nullFields := omit) runs on CseSimu system CseSystem {
 					// 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_announcedResourceIndex;
 					var integer v_aEAnncIndex := -1;
-					var integer v_latestResourceIndex;
-					var ResponsePrimitive v_responsePrimitive;
+					var integer v_resourceIndex := -1;
 					var template RequestPrimitive v_create := m_createAe(PX_TS_AE1.appId, omit, omit);
 		
-					v_create.primitiveContent.aE.announceTo := {PX_CSE_ID};
+					v_create.primitiveContent.aE.announceTo := {PX_TS_CSE1.cseId};
 	   
 					//Test control
 	
 					// Test component configuration
 					f_cf02UpCseSimuMaster();
-	
+					
 					// Test adapter configuration
 					// Register the CSE
-					f_cse_registerRemoteCse(m_createRemoteCSEBase);	
-	
+					f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, {f_getCompletePoA()}));
+					
 					//Preamble
-	
-					v_ae1.start(f_cse_createResource(int2,v_create));					
-					f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -));		
-					v_ae1.done;
-	
-					v_aeIndex:= f_getLatestResourceIndex(v_ae1);
+					vc_ae1.start(f_cse_createResource(int2,v_create));
+					v_aEAnncIndex := f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -));
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
 					
-					v_ae1.start(f_cse_createResource(p_resourceType, p_requestCreatePrimitive, v_aeIndex));
-					f_cse_announcementProcedure_createHandler(p_createRequestAnnc);	
-					v_ae1.done;					
-	
-					v_latestResourceIndex := f_getLatestResourceIndex(v_ae1);
+					v_aeIndex := f_getLatestResourceIndex(vc_ae1);
+					
+					vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex));
+					v_announcedResourceIndex := f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, vc_localRemoteCseIndex);					
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
+					v_resourceIndex := f_getLatestResourceIndex(vc_ae1);
 	
 					// Test Body
-					v_ae1.start(f_cse_updateResource(p_resourceType, v_latestResourceIndex, p_requestUpdatePrimitive));
-	
+					vc_ae1.start(f_cse_updateResource(p_resourceType, v_resourceIndex, p_requestUpdatePrimitive, p_nullFields));
+
 					tc_ac.start;
 					alt {
-						[] mccPortIn.receive(mw_request(mw_delete(f_getResourceAddress(v_latestResourceIndex)))){
+						[] mccPortIn.receive(mw_request(mw_delete)) -> value vc_request {
 							tc_ac.stop;
-							setverdict(pass, __SCOPE__ & ": Delete Request received successfully");
-						}
-						[] mccPortIn.receive {
-							tc_ac.stop;
-							setverdict(fail, __SCOPE__ & ": Error Delete request was not received");
+							setverdict(pass, __SCOPE__ & ":INFO: Announcement deletion received");
+			
+							f_processDeleteRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex); 
+							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
 						[] tc_ac.timeout {
-							setverdict(fail, __SCOPE__ & ": No answer while waiting to receive Delete request");
+							setverdict(fail, __SCOPE__ & ":ERROR:  No announcement received");
 						}
 					}
-					v_ae1.done;
-	
+
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
 					// 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, template (omit) AttributeAux_list p_nullFields := omit) runs on AeSimu system CseSystem {
 					//Local variables
 					var RequestPrimitive v_updateRequest;
 					var integer v_aeIndex := -1;
-					var integer v_resourceIndex;
-					var ResponsePrimitive v_responsePrimitive;
+					var integer v_aEAnncIndex := -1;
+					var integer v_resourceIndex := -1;
+					var integer v_announcedResourceIndex := -1;
+					var integer v_localRemoteCseIndex := -1;
 					var template RequestPrimitive v_create := m_createAe(PX_TS_AE1.appId, omit, omit);
 		
-					v_create.primitiveContent.aE.announceTo := {PX_CSE_ID};
+					v_create.primitiveContent.aE.announceTo := {PX_TS_CSE1.cseId};
+	   
 					//Test control
 	
 					//Test component configuration
 					f_cf02Up();
-	
-					//Register the CSE
-					vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSEBase));	
-					vc_cse1.done;
-	
+					
+					// Test adapter configuration
+					// Register the CSE
+					vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, {f_getCompletePoA()})));
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
+					v_localRemoteCseIndex := f_getLatestLocalResourceIndex(vc_cse1);
+					
 					//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;				  	
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
+					
+					v_aEAnncIndex := f_getLatestLocalResourceIndex(vc_cse1);
+					
+					// Test Body
+					vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, v_localRemoteCseIndex));
+					v_resourceIndex := f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex);					
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
+					
+					v_announcedResourceIndex := f_getLatestLocalResourceIndex(vc_cse1);
 	
-					vc_cse1.start(f_cse_announcementProcedure_deleteHandler());	
+					// Test Body
+					vc_cse1.start(f_cse_announcementProcedure_deleteHandler(-, -, v_announcedResourceIndex));
+
 					v_updateRequest := f_getUpdateRequestPrimitive(p_resourceType, v_resourceIndex, p_requestUpdatePrimitive);
 					f_send(e_mcaPort, m_request(v_updateRequest, p_nullFields));
-	
+
 					tc_ac.start;
 					alt {
 						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response {
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ": Resource updated successfully");
-				
+
 						}
 						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) {
 							tc_ac.stop;
@@ -9531,9 +9548,9 @@ module OneM2M_PermutationFunctions {
 							setverdict(fail, __SCOPE__ & ": No answer while updating resource");
 						}
 					}
-		
-					vc_cse1.done;
-	
+
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
+					
 					//Used to check that the resource has been updated
 					vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_resourceIndex);
 	
@@ -9542,110 +9559,143 @@ module OneM2M_PermutationFunctions {
 	
 					// Tear down
 					f_cf02Down();
+					
 				} //end f_CSE_ANNC_UPD_003
 				
-				function f_CSE_ANNC_UPD_004(ResourceType p_resourceType, template RequestPrimitive p_requestCreatePrimitive, template RequestPrimitive p_createRequestAnnc, template RequestPrimitive p_requestUpdatePrimitive) runs on CseSimu system CseSystem {
+				function f_CSE_ANNC_UPD_004(ResourceType p_resourceType, template RequestPrimitive p_requestCreatePrimitive, template RequestPrimitive p_createRequestAnnc, template RequestPrimitive p_requestUpdatePrimitive) runs on AeSimu system CseSystem {
 					// 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_announcedResourceIndex := -1;
 					var integer v_aEAnncIndex := -1;
-					var integer v_latestResourceIndex;
-					var ResponsePrimitive v_responsePrimitive;
+					var integer v_resourceIndex := -1;
+					var integer v_localRemoteCseIndex := -1;
+					var RequestPrimitive v_updateRequest;
 					var template RequestPrimitive v_create := m_createAe(PX_TS_AE1.appId, omit, omit);
 
-					v_create.primitiveContent.aE.announceTo := {PX_CSE_ID};
-   
+					v_create.primitiveContent.aE.announceTo := {PX_TS_CSE1.cseId};
+	   
 					//Test control
-
+	
 					// Test component configuration
-					f_cf02UpCseSimuMaster();
-
+					f_cf02Up();
+					
 					// Test adapter configuration
 					// Register the CSE
-					f_cse_registerRemoteCse(m_createRemoteCSEBase);	
-
+					vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, {f_getCompletePoA()})));
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
+					v_localRemoteCseIndex := f_getLatestLocalResourceIndex(vc_cse1);
+					
 					//Preamble
+					vc_cse1.start(f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -)));
+					v_aeIndex := f_cse_createResource(int2,v_create);
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); 
 					
-					v_ae1.start(f_cse_createResource(p_resourceType, p_requestCreatePrimitive, v_aeIndex));
-					v_ae1.done;					
+					v_aEAnncIndex := f_getLatestLocalResourceIndex(vc_cse1);
+					
+					// Test Body
+					v_resourceIndex := f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex);
+					
+					// Test Body
+					vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, v_localRemoteCseIndex));
 
-					v_latestResourceIndex := f_getLatestResourceIndex(v_ae1);
+					v_updateRequest := f_getUpdateRequestPrimitive(p_resourceType, v_resourceIndex, p_requestUpdatePrimitive);
+					f_send(e_mcaPort, m_request(v_updateRequest));
 
-					// Test Body
-					v_ae1.start(f_cse_updateResource(p_resourceType, v_latestResourceIndex, p_requestUpdatePrimitive));
-					v_ae1.done;
+					tc_ac.start;
+					alt {
+						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response {
+							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");
+						}
+					}
 
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1); 
+					
 					// Postamble
-					f_cse_postamble_deleteResourcesCSE();
+					f_cse_postamble_deleteResources();
 
 					// Tear down
-					f_cf02DownCseSimuMaster();
+					f_cf02Down();
 
 				}//end f_CSE_ANNC_UPD_004
 	
 				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, template (omit) AttributeAux_list p_nullFields := omit) runs on CseSimu system CseSystem {
 					// Local variables
-					var AeSimu v_ae1 := AeSimu.create("AE1") alive;
 					var RequestPrimitive v_requestUpdatePrimitive;
 					var integer v_parentIndex := -1;
 					var integer v_aeIndex := -1;
-					var integer v_latestResourceIndex;
+					var integer v_aEAnncIndex := -1;
+					var integer v_resourceIndex := -1;
+					var integer v_announcedResourceIndex := -1;
 					var ResponsePrimitive v_responsePrimitive;
 					var template RequestPrimitive v_create := m_createAe(PX_TS_AE1.appId, omit, omit);
 		
-					v_create.primitiveContent.aE.announceTo := {PX_CSE_ID};
+					v_create.primitiveContent.aE.announceTo := {PX_TS_CSE1.cseId};
 	   
 					//Test control
 	
 					// Test component configuration
 					f_cf02UpCseSimuMaster();
-	
+					
 					// Test adapter configuration
 					// Register the CSE
-					f_cse_registerRemoteCse(m_createRemoteCSEBase);	
-	
+					f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, {f_getCompletePoA()}));
+					
 					//Preamble
-	
-					v_ae1.start(f_cse_createResource(int2,v_create));					
-					f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -));		
-					v_ae1.done;
-	
-					v_aeIndex:= f_getLatestResourceIndex(v_ae1);
+					vc_ae1.start(f_cse_createResource(int2,v_create));
+					v_aEAnncIndex := f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -));
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
+					v_aeIndex := f_getLatestResourceIndex(vc_ae1);
 					
-					v_ae1.start(f_cse_createResource(p_resourceType, p_requestCreatePrimitive, v_aeIndex));
-					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, p_nullFields));
+					vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex));
+					v_announcedResourceIndex := f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, vc_localRemoteCseIndex);					
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
+					v_resourceIndex := f_getLatestResourceIndex(vc_ae1);
 	
+					// Test Body
+					vc_ae1.start(f_cse_updateResource(p_resourceType, v_resourceIndex, p_requestUpdatePrimitive, p_nullFields));
+
 					tc_ac.start;
 					alt {
 						[] mccPortIn.receive(mw_request(p_updateRequestAnnc)) -> value vc_request {
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ":INFO: Announcement received");
 			
-							v_responsePrimitive := valueof(m_responsePrimitive(int2004,vc_request.primitive.requestPrimitive.requestIdentifier));
-							v_responsePrimitive.from_ := PX_TS_CSE1.cseId;
-							v_responsePrimitive.to_ := vc_request.primitive.requestPrimitive.from_;
-							f_send(e_mccPortIn, m_response(v_responsePrimitive));			
+							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex);
+							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_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
 						[] tc_ac.timeout {
 							setverdict(fail, __SCOPE__ & ":ERROR:  No announcement received");
 						}
 					}
-					v_ae1.done;
-	
+
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
 					// Postamble
 					f_cse_postamble_deleteResourcesCSE();
-	
+
 					// Tear down
 					f_cf02DownCseSimuMaster();
 	
@@ -9653,54 +9703,60 @@ module OneM2M_PermutationFunctions {
 				
 				function f_CSE_ANNC_UPD_006(ResourceType p_resourceType, template RequestPrimitive p_requestCreatePrimitive, template RequestPrimitive p_createRequestAnnc, template RequestPrimitive p_requestUpdatePrimitive) runs on CseSimu system CseSystem {
 					// 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_resourceIndex := -1;
 					var integer v_aeIndex := -1;
-					var integer v_latestResourceIndex;
-					var ResponsePrimitive v_responsePrimitive;
+					var integer v_announcedRemoteCseIndex;
 					var template RequestPrimitive v_create := m_createAe(PX_TS_AE1.appId, omit, omit);
+					var template RequestPrimitive v_createRequestRemoteCseAnnc := m_createRemoteCSEAnncBase;
 
-					v_create.primitiveContent.aE.announceTo := {PX_CSE_ID};
-   
-					//Test control
-
+								//Test control
+	
 					// Test component configuration
 					f_cf02UpCseSimuMaster();
-
+					
 					// Test adapter configuration
-					// Register the CSE
-					f_cse_registerRemoteCse(m_createRemoteCSEBase);	
-
+					// Do not register the CSE
+					v_createRequestRemoteCseAnnc.primitiveContent := f_setLink(valueof(v_createRequestRemoteCseAnnc.primitiveContent), f_getLocalResourceAddress());
+					v_createRequestRemoteCseAnnc.primitiveContent.remoteCSEAnnc.pointOfAccess := {f_getCompletePoA()};
+					v_announcedRemoteCseIndex := f_cse_createResource_cseSimu(int10016, v_createRequestRemoteCseAnnc);
+					
 					//Preamble
-
-					v_ae1.start(f_cse_createResource(int2,v_create));					
-					f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -));		
-					v_ae1.done;
-
-					v_aeIndex:= f_getLatestResourceIndex(v_ae1);
+					vc_ae1.start(f_cse_createResource(int2,v_create));
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
+					v_aeIndex := f_getLatestResourceIndex(vc_ae1);
 					
-					v_ae1.start(f_cse_createResource(p_resourceType, p_requestCreatePrimitive, v_aeIndex));
-					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));
-
+					vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex));
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
+					v_resourceIndex := f_getLatestResourceIndex(vc_ae1);
+	
+					// Test Body
+					vc_ae1.start(f_cse_updateResource(p_resourceType, v_resourceIndex, p_requestUpdatePrimitive, -));
+					
 					tc_ac.start;
 					alt {
-						[] mccPortIn.receive(mw_request(p_createRequestAnnc)) -> value v_request {
+						[] mccPortIn.receive(mw_request(p_createRequestAnnc)) -> value vc_request {
 							tc_ac.stop;
-							setverdict(pass, __SCOPE__ & ":INFO: CREATE Request received");
+							setverdict(pass, __SCOPE__ & ":INFO: Announcement received");
+			
+							f_processCreateRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_announcedRemoteCseIndex);
+							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
+						}
+						[] mccPortIn.receive(mw_request(mw_create)) -> value vc_request {
+							tc_ac.stop;
+							setverdict(fail, __SCOPE__ & ":ERROR: Unexpected create operation received");
+	
+							f_processCreateRequestPrimitive(vc_request.primitive.requestPrimitive);
+							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
 						[] tc_ac.timeout {
-							setverdict(fail, __SCOPE__ & ":ERROR:  No CREATE request received");
+							setverdict(fail, __SCOPE__ & ":ERROR:  No announcement received");
 						}
 					}
-					v_ae1.done;
+					
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
 
 					// Postamble
 					f_cse_postamble_deleteResourcesCSE();
@@ -9712,54 +9768,57 @@ module OneM2M_PermutationFunctions {
 				
 				function f_CSE_ANNC_UPD_007(ResourceType p_resourceType, template RequestPrimitive p_requestCreatePrimitive, template RequestPrimitive p_createRequestAnnc, template RequestPrimitive p_requestUpdatePrimitive) runs on CseSimu system CseSystem {
 					// 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_latestResourceIndex;
+					var integer v_resourceIndex;
 					var ResponsePrimitive v_responsePrimitive;
 					var template RequestPrimitive v_create := m_createAe(PX_TS_AE1.appId, 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);	
-
+					f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, {f_getCompletePoA()}));
+					
 					//Preamble
-
-					v_ae1.start(f_cse_createResource(int2,v_create));					
-					f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -));		
-					v_ae1.done;
-
-					v_aeIndex:= f_getLatestResourceIndex(v_ae1);
+					vc_ae1.start(f_cse_createResource(int2,v_create));
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
+					v_aeIndex := f_getLatestResourceIndex(vc_ae1);
 					
-					v_ae1.start(f_cse_createResource(p_resourceType, p_requestCreatePrimitive, v_aeIndex));
-					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));
-
+					vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex));
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
+					v_resourceIndex := f_getLatestResourceIndex(vc_ae1);
+	
+					// Test Body
+					vc_ae1.start(f_cse_updateResource(p_resourceType, v_resourceIndex, p_requestUpdatePrimitive, -));
+					
 					tc_ac.start;
 					alt {
-						[] mccPortIn.receive(mw_request(p_createRequestAnnc)) -> value v_request {
+						[] mccPortIn.receive(mw_request(p_createRequestAnnc)) -> value vc_request {
+							tc_ac.stop;
+							setverdict(pass, __SCOPE__ & ":INFO: Announcement received");
+			
+							f_processCreateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex);
+							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
+						}
+						[] mccPortIn.receive(mw_request(mw_create)) -> value vc_request {
 							tc_ac.stop;
-							setverdict(pass, __SCOPE__ & ":INFO: CREATE Request received");
+							setverdict(fail, __SCOPE__ & ":ERROR: Unexpected create operation received");
+	
+							f_processCreateRequestPrimitive(vc_request.primitive.requestPrimitive);
+							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
 						[] tc_ac.timeout {
-							setverdict(fail, __SCOPE__ & ":ERROR:  No CREATE request received");
+							setverdict(fail, __SCOPE__ & ":ERROR:  No announcement received");
 						}
 					}
-					v_ae1.done;
+					
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
 
 					// Postamble
 					f_cse_postamble_deleteResourcesCSE();
@@ -9773,30 +9832,34 @@ module OneM2M_PermutationFunctions {
 					//Local variables
 					var RequestPrimitive v_updateRequest;
 					var integer v_aeIndex := -1;
-					var integer v_resourceIndex;
-					var ResponsePrimitive v_responsePrimitive;
+					var integer v_resourceIndex := -1;
+					var integer v_announcedResourceIndex := -1;
+					var integer v_localRemoteCseIndex := -1;
 					var template RequestPrimitive v_create := m_createAe(PX_TS_AE1.appId, 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;
-
+					
+					// Test adapter configuration
+					// Register the CSE
+					vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, {f_getCompletePoA()})));
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
+					v_localRemoteCseIndex := f_getLatestLocalResourceIndex(vc_cse1);
+					
 					//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_updateHandler());
+					
+					// Test Body
+					vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, v_localRemoteCseIndex));
+					v_resourceIndex := f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex);					
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
+					
+					v_announcedResourceIndex := f_getLatestLocalResourceIndex(vc_cse1);
+	
+					// Test Body
+					vc_cse1.start(f_cse_announcementProcedure_updateHandler(-, -, v_announcedResourceIndex));
 					v_updateRequest := f_getUpdateRequestPrimitive(p_resourceType, v_resourceIndex, p_requestUpdatePrimitive);
 					f_send(e_mcaPort, m_request(v_updateRequest));
 
@@ -9819,75 +9882,72 @@ module OneM2M_PermutationFunctions {
 							setverdict(fail, __SCOPE__ & ": No answer while updating resource");
 						}
 					}
-
-					vc_cse1.done;
-
+					
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
+					
 					//Used to check that the resource has been updated
 					vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_resourceIndex);
-
+	
 					//Postamble
 					f_cse_postamble_deleteResources();
-
+	
 					// Tear down
 					f_cf02Down();
+
 				} //end f_CSE_ANNC_UPD_008
 				
 				function f_CSE_ANNC_UPD_009(ResourceType p_resourceType, template RequestPrimitive p_requestCreatePrimitive, template RequestPrimitive p_createRequestAnnc, template RequestPrimitive p_requestUpdatePrimitive, template RequestPrimitive p_updateRequestAnnc) runs on CseSimu system CseSystem {
 					// 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_announcedResourceIndex := -1;
 					var integer v_aeIndex := -1;
-					var integer v_latestResourceIndex;
-					var ResponsePrimitive v_responsePrimitive;
+					var integer v_resourceIndex;
 					var template RequestPrimitive v_create := m_createAe(PX_TS_AE1.appId, 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);	
-
+					f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, {f_getCompletePoA()}));
+					
 					//Preamble
-
-					v_ae1.start(f_cse_createResource(int2,v_create));					
-					f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -));		
-					v_ae1.done;
-
-					v_aeIndex:= f_getLatestResourceIndex(v_ae1);
+					vc_ae1.start(f_cse_createResource(int2,v_create));
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
+					v_aeIndex := f_getLatestResourceIndex(vc_ae1);
 					
-					v_ae1.start(f_cse_createResource(p_resourceType, p_requestCreatePrimitive, v_aeIndex));
-					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));
-
+					vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex));
+					v_announcedResourceIndex := f_cse_announcementProcedure_createHandler(p_createRequestAnnc);	
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
+					v_resourceIndex := f_getLatestResourceIndex(vc_ae1);
+	
+					// Test Body
+					vc_ae1.start(f_cse_updateResource(p_resourceType, v_resourceIndex, p_requestUpdatePrimitive, -));
+					
 					tc_ac.start;
 					alt {
-						[] mccPortIn.receive(mw_request(p_updateRequestAnnc)) -> value v_request {
+						[] mccPortIn.receive(mw_request(p_updateRequestAnnc)) -> value vc_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_TS_CSE1.cseId;
-							v_responsePrimitive.to_ := v_request.primitive.requestPrimitive.from_;
-							f_send(e_mccPortIn, m_response(v_responsePrimitive));			
+							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex);
+							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_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
 						[] tc_ac.timeout {
 							setverdict(fail, __SCOPE__ & ":ERROR:  No announcement received");
 						}
 					}
-					v_ae1.done;
+
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
 
 					// Postamble
 					f_cse_postamble_deleteResourcesCSE();
@@ -9899,60 +9959,56 @@ module OneM2M_PermutationFunctions {
 				
 				function f_CSE_ANNC_UPD_010(ResourceType p_resourceType, template RequestPrimitive p_requestCreatePrimitive, template RequestPrimitive p_createRequestAnnc, template RequestPrimitive p_requestUpdatePrimitive, template RequestPrimitive p_updateRequestAnnc) runs on CseSimu system CseSystem {
 					// 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_announcedResourceIndex := -1;
 					var integer v_aeIndex := -1;
-					var integer v_latestResourceIndex;
-					var ResponsePrimitive v_responsePrimitive;
+					var integer v_resourceIndex;
 					var template RequestPrimitive v_create := m_createAe(PX_TS_AE1.appId, 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);	
-
+					f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, {f_getCompletePoA()}));
+					
 					//Preamble
-
-					v_ae1.start(f_cse_createResource(int2,v_create));					
-					f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -));		
-					v_ae1.done;
-
-					v_aeIndex:= f_getLatestResourceIndex(v_ae1);
+					vc_ae1.start(f_cse_createResource(int2,v_create));
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
+					v_aeIndex := f_getLatestResourceIndex(vc_ae1);
 					
-					v_ae1.start(f_cse_createResource(p_resourceType, p_requestCreatePrimitive, v_aeIndex));
-					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));
-
+					vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex));
+					v_announcedResourceIndex := f_cse_announcementProcedure_createHandler(p_createRequestAnnc);	
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
+					v_resourceIndex := f_getLatestResourceIndex(vc_ae1);
+	
+					// Test Body
+					vc_ae1.start(f_cse_updateResource(p_resourceType, v_resourceIndex, p_requestUpdatePrimitive, -));
+					
 					tc_ac.start;
 					alt {
-						[] mccPortIn.receive(mw_request(p_updateRequestAnnc)) -> value v_request {
+						[] mccPortIn.receive(mw_request(p_updateRequestAnnc)) -> value vc_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_TS_CSE1.cseId;
-							v_responsePrimitive.to_ := v_request.primitive.requestPrimitive.from_;
-							f_send(e_mccPortIn, m_response(v_responsePrimitive));			
+			
+							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex);
+							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_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
 						[] tc_ac.timeout {
 							setverdict(fail, __SCOPE__ & ":ERROR:  No announcement received");
 						}
 					}
-					v_ae1.done;
+
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
 
 					// Postamble
 					f_cse_postamble_deleteResourcesCSE();
@@ -9964,167 +10020,161 @@ module OneM2M_PermutationFunctions {
 				
 				function f_CSE_ANNC_UPD_011(ResourceType p_resourceType, template RequestPrimitive p_requestCreatePrimitive, template RequestPrimitive p_createRequestAnnc, template RequestPrimitive p_requestUpdatePrimitive, template RequestPrimitive p_updateRequestAnnc) runs on CseSimu system CseSystem {
 					// 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_announcedResourceIndex := -1;
 					var integer v_aeIndex := -1;
-					var integer v_latestResourceIndex;
-					var ResponsePrimitive v_responsePrimitive;
+					var integer v_resourceIndex;
 					var template RequestPrimitive v_create := m_createAe(PX_TS_AE1.appId, 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);	
-
+					f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, {f_getCompletePoA()}));
+					
 					//Preamble
-
-					v_ae1.start(f_cse_createResource(int2,v_create));					
-					f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -));		
-					v_ae1.done;
-
-					v_aeIndex:= f_getLatestResourceIndex(v_ae1);
+					vc_ae1.start(f_cse_createResource(int2,v_create));
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
+					v_aeIndex := f_getLatestResourceIndex(vc_ae1);
 					
-					v_ae1.start(f_cse_createResource(p_resourceType, p_requestCreatePrimitive, v_aeIndex));
-					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));
-
+					vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex));
+					v_announcedResourceIndex := f_cse_announcementProcedure_createHandler(p_createRequestAnnc);	
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
+					v_resourceIndex := f_getLatestResourceIndex(vc_ae1);
+	
+					// Test Body
+					vc_ae1.start(f_cse_updateResource(p_resourceType, v_resourceIndex, p_requestUpdatePrimitive, -));
+					
 					tc_ac.start;
 					alt {
-						[] mccPortIn.receive(mw_request(p_updateRequestAnnc)) -> value v_request {
+						[] mccPortIn.receive(mw_request(p_updateRequestAnnc)) -> value vc_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_TS_CSE1.cseId;
-							v_responsePrimitive.to_ := v_request.primitive.requestPrimitive.from_;
-							f_send(e_mccPortIn, m_response(v_responsePrimitive));			
+			
+							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex);
+							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_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
 						[] tc_ac.timeout {
 							setverdict(fail, __SCOPE__ & ":ERROR:  No announcement received");
 						}
 					}
-					v_ae1.done;
+
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
 
 					// Postamble
 					f_cse_postamble_deleteResourcesCSE();
 
-					// Tear down
-					f_cf02DownCseSimuMaster();
-
 				}//end f_CSE_ANNC_UPD_011
 				
-				function f_CSE_ANNC_UPD_012(ResourceType p_resourceType, template RequestPrimitive p_requestCreatePrimitive, template RequestPrimitive p_createRequestAnnc, template RequestPrimitive p_requestUpdatePrimitive, template RequestPrimitive p_updateRequestAnnc, template (omit) AttributeAux_list p_nullFields := omit) runs on CseSimu system CseSystem {
+				function f_CSE_ANNC_UPD_012(ResourceType p_resourceType, template RequestPrimitive p_requestCreatePrimitive, template RequestPrimitive p_createRequestAnnc, template RequestPrimitive p_requestUpdatePrimitive, template RequestPrimitive p_updateRequestAnnc, template (omit) AttributeAux_list p_nullFields := omit, template charstring p_attributeToDeannounce) runs on CseSimu system CseSystem {
+
 					// Local variables
-					var AeSimu v_ae1 := AeSimu.create("AE1") alive;
-					var RequestPrimitive v_requestUpdatePrimitive;
-					var integer v_parentIndex := -1;
+					var integer v_announcedResourceIndex := -1;
 					var integer v_aeIndex := -1;
-					var integer v_latestResourceIndex;
-					var ResponsePrimitive v_responsePrimitive;
+					var integer v_resourceIndex;
 					var template RequestPrimitive v_create := m_createAe(PX_TS_AE1.appId, 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);	
-
+					f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, {f_getCompletePoA()}));
+					
 					//Preamble
-
-					v_ae1.start(f_cse_createResource(int2,v_create));					
-					f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -));		
-					v_ae1.done;
-
-					v_aeIndex:= f_getLatestResourceIndex(v_ae1);
+					vc_ae1.start(f_cse_createResource(int2,v_create));
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
+					v_aeIndex := f_getLatestResourceIndex(vc_ae1);
 					
-					v_ae1.start(f_cse_createResource(p_resourceType, p_requestCreatePrimitive, v_aeIndex));
-					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, p_nullFields));
-
+					vc_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex));
+					v_announcedResourceIndex := f_cse_announcementProcedure_createHandler(p_createRequestAnnc);	
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
+					v_resourceIndex := f_getLatestResourceIndex(vc_ae1);
+	
+					// Test Body
+					vc_ae1.start(f_cse_updateResource(p_resourceType, v_resourceIndex, p_requestUpdatePrimitive, p_nullFields));
+					
 					tc_ac.start;
 					alt {
-						[] mccPortIn.receive(mw_request(p_updateRequestAnnc)) -> value vc_request {
+						[] mccPortIn.receive(mw_request(p_updateRequestAnnc, superset(p_attributeToDeannounce))) -> value vc_request {
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ":INFO: Announcement received");
-
-							v_responsePrimitive := valueof(m_responsePrimitive(int2004,vc_request.primitive.requestPrimitive.requestIdentifier));
-							v_responsePrimitive.from_ := PX_TS_CSE1.cseId;
-							v_responsePrimitive.to_ := vc_request.primitive.requestPrimitive.from_;
-							f_send(e_mccPortIn, m_response(v_responsePrimitive));			
+			
+							f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, -, vc_localRemoteCseIndex);
+							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_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
 						[] tc_ac.timeout {
 							setverdict(fail, __SCOPE__ & ":ERROR:  No announcement received");
 						}
 					}
-					v_ae1.done;
+
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
 
 					// Postamble
 					f_cse_postamble_deleteResourcesCSE();
-
-					// Tear down
-					f_cf02DownCseSimuMaster();
-
+					
 				}//end f_CSE_ANNC_UPD_012
 				
-				function f_CSE_ANNC_UPD_013(ResourceType p_resourceType,template RequestPrimitive p_createRequestAnnc, in template RequestPrimitive p_requestCreatePrimitive := omit, template RequestPrimitive p_requestUpdatePrimitive, template (omit) AttributeAux_list p_nullFields := omit) runs on AeSimu system CseSystem {
+				function f_CSE_ANNC_UPD_013(ResourceType p_resourceType,template RequestPrimitive p_createRequestAnnc, in template RequestPrimitive p_requestCreatePrimitive := omit, template RequestPrimitive p_requestUpdatePrimitive, template (omit) AttributeAux_list p_nullFields := omit, template PrimitiveContent p_updateResponse) runs on AeSimu system CseSystem {
 					//Local variables
 					var RequestPrimitive v_updateRequest;
 					var integer v_aeIndex := -1;
-					var integer v_resourceIndex;
+					var integer v_localRemoteCseIndex := -1;
+					var integer v_announcedResourceIndex := -1;
+					var integer v_resourceIndex := -1;
 					var ResponsePrimitive v_responsePrimitive;
 					var template RequestPrimitive v_create := m_createAe(PX_TS_AE1.appId, 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;
-
+					
+					// Test adapter configuration
+					// Register the CSE
+					vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, {f_getCompletePoA()})));
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
+					v_localRemoteCseIndex := f_getLatestLocalResourceIndex(vc_cse1);
+					
 					//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;				  	
+					
+					// Test Body
+					vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, v_localRemoteCseIndex));
+					v_resourceIndex := f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex);					
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
+					
+					v_announcedResourceIndex := f_getLatestLocalResourceIndex(vc_cse1);
+	
+					// Test Body
+					vc_cse1.start(f_cse_announcementProcedure_updateHandler(-, -, v_announcedResourceIndex));
 
-					vc_cse1.start(f_cse_announcementProcedure_updateHandler());
 					v_updateRequest := f_getUpdateRequestPrimitive(p_resourceType, v_resourceIndex, p_requestUpdatePrimitive);
 					f_send(e_mcaPort, m_request(v_updateRequest, p_nullFields));
 
 					tc_ac.start;
 					alt {
-						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response {
+						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2004, p_updateResponse), {"announcedAttribute"})) -> value vc_response {
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ": Resource updated successfully");
 
@@ -10142,53 +10192,54 @@ module OneM2M_PermutationFunctions {
 						}
 					}
 
-					vc_cse1.done;
-
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
+					
 					//Used to check that the resource has been updated
 					vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_resourceIndex);
-
+	
 					//Postamble
 					f_cse_postamble_deleteResources();
-
+	
 					// Tear down
 					f_cf02Down();
+
 				} //end f_CSE_ANNC_UPD_013
 				
-				function f_CSE_ANNC_UPD_014(ResourceType p_resourceType,template RequestPrimitive p_createRequestAnnc, in template RequestPrimitive p_requestCreatePrimitive := omit, template RequestPrimitive p_requestUpdatePrimitive) runs on AeSimu system CseSystem {
+				function f_CSE_ANNC_UPD_014(ResourceType p_resourceType,template RequestPrimitive p_createRequestAnnc, in template RequestPrimitive p_requestCreatePrimitive := omit, template RequestPrimitive p_requestUpdatePrimitive, template PrimitiveContent p_updateResponse) runs on AeSimu system CseSystem {
 					//Local variables
 					var RequestPrimitive v_updateRequest;
 					var integer v_aeIndex := -1;
-					var integer v_resourceIndex;
-					var integer v_AEAnncResourceIndex;
+					var integer v_resourceIndex := -1;
+					var integer v_localRemoteCseIndex := -1;
 					var ResponsePrimitive v_responsePrimitive;
 					var template RequestPrimitive v_create := m_createAe(PX_TS_AE1.appId, 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;
-
+					
+					// Test adapter configuration
+					// Register the CSE
+					vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, {f_getCompletePoA()})));
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
+					v_localRemoteCseIndex := f_getLatestLocalResourceIndex(vc_cse1);
+					
 					//Preamble
-					vc_cse1.start(f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -)));
 					v_aeIndex := f_cse_createResource(int2,v_create);
-					vc_cse1.done;
-	
-					v_resourceIndex := f_cse_createResource(p_resourceType, p_requestCreatePrimitive, v_aeIndex);
-						  	
-					//Retrieve the parent resource index
-					v_AEAnncResourceIndex := f_getLatestResourceIndex(vc_cse1);
-					vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc,int4000, v_AEAnncResourceIndex));
+					
+					// Test Body
+					v_resourceIndex := f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex);					
+					
+					// Test Body
+					vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc, int4000, v_localRemoteCseIndex));
+
 					v_updateRequest := f_getUpdateRequestPrimitive(p_resourceType, v_resourceIndex, p_requestUpdatePrimitive);
 					f_send(e_mcaPort, m_request(v_updateRequest));
 
 					tc_ac.start;
 					alt {
-						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response {
+						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2004, p_updateResponse), {"announceTo"})) -> value vc_response {
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ": Resource updated successfully");
 						}
@@ -10205,16 +10256,17 @@ module OneM2M_PermutationFunctions {
 						}
 					}
 
-					vc_cse1.done;
-
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
+					
 					//Used to check that the resource has been updated
 					vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_resourceIndex);
-
+	
 					//Postamble
 					f_cse_postamble_deleteResources();
-
+	
 					// Tear down
 					f_cf02Down();
+
 				} //end f_CSE_ANNC_UPD_014
 	
 			}//end group Update
diff --git a/OneM2M_Testcases_CSE_Release_3.ttcn b/OneM2M_Testcases_CSE_Release_3.ttcn
index 4dfd841..6a52a9c 100644
--- a/OneM2M_Testcases_CSE_Release_3.ttcn
+++ b/OneM2M_Testcases_CSE_Release_3.ttcn
@@ -10639,67 +10639,59 @@ module OneM2M_Testcases_CSE_Release_3 {
 					 */
 					testcase TC_CSE_ANNC_UPD_004_ACP() runs on Tester system CseSystem {
 						// Local variables
-						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
+						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;	
 
-						
 						v_updateRequest.primitiveContent.accessControlPolicy.announceTo := {PX_TS_CSE1.cseId};
-						v_updateRequest.primitiveContent.accessControlPolicy.announcedAttribute := {"ToBeDeleted"};
-						v_updateRequest.primitiveContent.accessControlPolicy.parentID := PX_TS_CSE1.cseId;			
-
-						v_cse1.start(f_CSE_ANNC_UPD_004(int1, v_createRequest, v_createRequestAnnc, v_updateRequest));//AccessControlPolicy
-						v_cse1.done;
+						v_updateRequest.primitiveContent.accessControlPolicy.announcedAttribute := {"pi"};
+						
+						v_ae1.start(f_CSE_ANNC_UPD_004(int1, v_createRequest, v_createRequestAnnc, v_updateRequest));//AccessControlPolicy
+						v_ae1.done;
 					}
 
 					testcase TC_CSE_ANNC_UPD_004_CNT() runs on Tester system CseSystem {
 						// Local variables
-						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
+						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
 						var template RequestPrimitive v_createRequest := m_createContainerBase;
 						var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnnc;
 						var template RequestPrimitive v_updateRequest := m_updateContainerBase;
 
-						
 						v_updateRequest.primitiveContent.container.announceTo := {PX_TS_CSE1.cseId};
-						v_updateRequest.primitiveContent.container.announcedAttribute := {"ToBeDeleted"};
-						v_updateRequest.primitiveContent.container.parentID := PX_TS_CSE1.cseId;
-  
-						v_cse1.start(f_CSE_ANNC_UPD_004(int3, v_createRequest, v_createRequestAnnc, v_updateRequest));//Container
-						v_cse1.done;
+						v_updateRequest.primitiveContent.container.announcedAttribute := {"pi"};
+						
+						v_ae1.start(f_CSE_ANNC_UPD_004(int3, v_createRequest, v_createRequestAnnc, v_updateRequest));//Container
+						v_ae1.done;
 					}
 
 					testcase TC_CSE_ANNC_UPD_004_GRP() runs on Tester system CseSystem {
 						// Local variables
-						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
+						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
 						var template RequestPrimitive v_createRequest := m_createGroupBase;
 						var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnnc;
 						var template RequestPrimitive v_updateRequest := m_updateGroupBase;	
 
 						
 						v_updateRequest.primitiveContent.group_.announceTo := {PX_TS_CSE1.cseId};
-						v_updateRequest.primitiveContent.group_.announcedAttribute := {"ToBeDeleted"};
-						v_updateRequest.primitiveContent.group_.parentID := PX_TS_CSE1.cseId;
-  
-						v_cse1.start(f_CSE_ANNC_UPD_004(int9, v_createRequest, v_createRequestAnnc, v_updateRequest));//Group
-						v_cse1.done;
+						v_updateRequest.primitiveContent.group_.announcedAttribute := {"pi"};
+						
+						v_ae1.start(f_CSE_ANNC_UPD_004(int9, v_createRequest, v_createRequestAnnc, v_updateRequest));//Group
+						v_ae1.done;
 					}
 					
 					testcase TC_CSE_ANNC_UPD_004_TS() runs on Tester system CseSystem {
 						// Local variables
-						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
+						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
 						var template RequestPrimitive v_createRequest := m_createTimeSeriesBase;
 						var template RequestPrimitive v_createRequestAnnc := mw_createTimeSeriesAnnc;
 						var template RequestPrimitive v_updateRequest := m_updateTimeSeriesBase;	
 						
-						
-						
 						v_updateRequest.primitiveContent.timeSeries.announceTo := {PX_TS_CSE1.cseId};
-						v_updateRequest.primitiveContent.timeSeries.announcedAttribute := {"ToBeDeleted"};
-						v_updateRequest.primitiveContent.timeSeries.parentID := PX_TS_CSE1.cseId;
-  
-						v_cse1.start(f_CSE_ANNC_UPD_004(int29, v_createRequest, v_createRequestAnnc, v_updateRequest));//TimeSeries
-						v_cse1.done;
+						v_updateRequest.primitiveContent.timeSeries.announcedAttribute := {"pi"};
+						
+						v_ae1.start(f_CSE_ANNC_UPD_004(int29, v_createRequest, v_createRequestAnnc, v_updateRequest));//TimeSeries
+						v_ae1.done;
 					}
 				} // end group g_CSE_ANNC_UPD_004
 	
@@ -10721,7 +10713,6 @@ module OneM2M_Testcases_CSE_Release_3 {
 						var AttributeAux_list v_nullFields;
 						var Labels v_labels_2 := {"To be deleted"};	
 
-						
 						v_createRequest.primitiveContent.container.announceTo := {PX_TS_CSE1.cseId};
 						v_createRequest.primitiveContent.container.labels := v_labels_1;
 						
@@ -10759,7 +10750,6 @@ module OneM2M_Testcases_CSE_Release_3 {
 						var template RequestPrimitive v_createRequestAnnc := mw_createAccessControlPolicyAnnc;
 						var template RequestPrimitive v_updateRequest := m_updateAcpBase;
 						
-						
 						v_updateRequest.primitiveContent.accessControlPolicy.announceTo := {PX_TS_CSE1.cseId};
 						
 						v_cse1.start(f_CSE_ANNC_UPD_006(int1, v_createRequest, v_createRequestAnnc, v_updateRequest));//AccessControlPolicy
@@ -10885,16 +10875,13 @@ module OneM2M_Testcases_CSE_Release_3 {
 						var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnnc;
 						var template RequestPrimitive v_updateRequest := m_updateContainerBase;	
 						var ResponsePrimitive v_responsePrimitive;	
-						var AttributeAux_list v_nullFields;
-						var ListOfNCNames v_announcedAttribute := {"ToBeDeleted"};
 						var PrimitiveContent v_primitiveContentRetrieveResource;
 						var XSD.NonNegativeInteger v_maxByteSize := 512;
   
 						
 						v_createRequest.primitiveContent.container.announceTo := {PX_TS_CSE1.cseId};
 						v_createRequest.primitiveContent.container.maxByteSize := v_maxByteSize;
-						v_createRequest.primitiveContent.container.announcedAttribute := v_announcedAttribute;
-
+						
 						v_updateRequest.primitiveContent.container.announcedAttribute := {"mbs"};
   
 						v_ae1.start(f_CSE_ANNC_UPD_008(int3, v_createRequestAnnc, v_createRequest, v_updateRequest));//Container
@@ -10932,17 +10919,14 @@ module OneM2M_Testcases_CSE_Release_3 {
 						var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnnc;
 						var template RequestPrimitive v_updateRequest := m_updateGroupBase;	
 						var ResponsePrimitive v_responsePrimitive;	
-						var AttributeAux_list v_nullFields;
-						var ListOfNCNames v_announcedAttribute := {"ToBeDeleted"};
 						var PrimitiveContent v_primitiveContentRetrieveResource;
-						var MemberType v_memberType := int3;
+						var XSD.NonNegativeInteger v_maxNrOfMembers := 1;
   
 						
 						v_createRequest.primitiveContent.group_.announceTo := {PX_TS_CSE1.cseId};
-						v_createRequest.primitiveContent.group_.memberType := v_memberType;
-						v_createRequest.primitiveContent.group_.announcedAttribute := v_announcedAttribute;
-
-						v_updateRequest.primitiveContent.group_.announcedAttribute := {"mt"};
+						v_createRequest.primitiveContent.group_.maxNrOfMembers := v_maxNrOfMembers;
+						
+						v_updateRequest.primitiveContent.group_.announcedAttribute := {"mnm"};
   
 						v_ae1.start(f_CSE_ANNC_UPD_008(int9, v_createRequestAnnc, v_createRequest, v_updateRequest));//Group
 						v_ae1.done;
@@ -10979,16 +10963,13 @@ module OneM2M_Testcases_CSE_Release_3 {
 						var template RequestPrimitive v_createRequestAnnc := mw_createTimeSeriesAnnc;
 						var template RequestPrimitive v_updateRequest := m_updateTimeSeriesBase;	
 						var ResponsePrimitive v_responsePrimitive;	
-						var AttributeAux_list v_nullFields;
-						var ListOfNCNames v_announcedAttribute := {"ToBeDeleted"};
 						var PrimitiveContent v_primitiveContentRetrieveResource;
 						var XSD.NonNegativeInteger v_maxByteSize := 512;
   
 						
 						v_createRequest.primitiveContent.timeSeries.announceTo := {PX_TS_CSE1.cseId};
 						v_createRequest.primitiveContent.timeSeries.maxByteSize := v_maxByteSize;
-						v_createRequest.primitiveContent.timeSeries.announcedAttribute := v_announcedAttribute;
-
+						
 						v_updateRequest.primitiveContent.timeSeries.announcedAttribute := {"mbs"};
   
 						v_ae1.start(f_CSE_ANNC_UPD_008(int29, v_createRequestAnnc, v_createRequest, v_updateRequest));//TimeSeries
@@ -11039,8 +11020,6 @@ module OneM2M_Testcases_CSE_Release_3 {
 						v_createRequest.primitiveContent.container.announceTo := {PX_TS_CSE1.cseId};
 						v_createRequest.primitiveContent.container.maxByteSize := v_maxByteSize;	
 						
-						v_createRequestAnnc.primitiveContent.containerAnnc.maxByteSize := v_maxByteSize;
-						
 						v_updateRequest.primitiveContent.container.announcedAttribute := {"mbs"};
 						
 						v_updateRequestAnnc.primitiveContent.containerAnnc.maxByteSize := v_maxByteSize;
@@ -11056,17 +11035,15 @@ module OneM2M_Testcases_CSE_Release_3 {
 						var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnnc;
 						var template RequestPrimitive v_updateRequest := m_updateGroupBase;	
 						var template RequestPrimitive v_updateRequestAnnc := mw_updateGroupAnnc;
-						var MemberType v_memberType := int3;
+						var XSD.NonNegativeInteger v_maxNrOfMembers := 1;
 
 						
 						v_createRequest.primitiveContent.group_.announceTo := {PX_TS_CSE1.cseId};
-						v_createRequest.primitiveContent.group_.memberType := v_memberType;
-						
-						v_createRequestAnnc.primitiveContent.groupAnnc.memberType := v_memberType;
+						v_createRequest.primitiveContent.group_.maxNrOfMembers := v_maxNrOfMembers;
 						
-						v_updateRequest.primitiveContent.group_.announcedAttribute := {"mt"};
+						v_updateRequest.primitiveContent.group_.announcedAttribute := {"mnm"};
 						
-						v_updateRequestAnnc.primitiveContent.groupAnnc.memberType := v_memberType;
+						v_updateRequestAnnc.primitiveContent.groupAnnc.maxNrOfMembers := v_maxNrOfMembers;
   
 						v_cse1.start(f_CSE_ANNC_UPD_009(int9, v_createRequest, v_createRequestAnnc, v_updateRequest, v_updateRequestAnnc));//Group
 						v_cse1.done;
@@ -11081,13 +11058,9 @@ module OneM2M_Testcases_CSE_Release_3 {
 						var template RequestPrimitive v_updateRequestAnnc := mw_updateTimeSeriesAnnc;
 						var XSD.NonNegativeInteger v_maxByteSize := 512;
 						
-						
-						
 						v_createRequest.primitiveContent.timeSeries.announceTo := {PX_TS_CSE1.cseId};
 						v_createRequest.primitiveContent.timeSeries.maxByteSize := v_maxByteSize;	
 	
-						v_createRequestAnnc.primitiveContent.timeSeriesAnnc.maxByteSize := v_maxByteSize;
-	
 						v_updateRequest.primitiveContent.timeSeries.announcedAttribute := {"mbs"};
 	
 						v_updateRequestAnnc.primitiveContent.timeSeriesAnnc.maxByteSize := v_maxByteSize;
@@ -11111,18 +11084,18 @@ module OneM2M_Testcases_CSE_Release_3 {
 						var template RequestPrimitive v_createRequestAnnc := mw_createAccessControlPolicyAnnc;
 						var template RequestPrimitive v_updateRequest := m_updateAcpBase;
 						var template RequestPrimitive v_updateRequestAnnc := mw_updateAccessControlPolicyAnnc;
-						var Timestamp v_expirationTime_1 := "21001231T012345";
-						var Timestamp v_expirationTime_2 := "21101231T012345";
+						var Labels v_label_1 := {"LABEL_1"};
+						var Labels v_label_2 := {"LABEL_2"};
 
 						
 						v_createRequest.primitiveContent.accessControlPolicy.announceTo := {PX_TS_CSE1.cseId};
-						v_createRequest.primitiveContent.accessControlPolicy.expirationTime := v_expirationTime_1;	
+						v_createRequest.primitiveContent.accessControlPolicy.labels := v_label_1;	
 
-						v_createRequestAnnc.primitiveContent.accessControlPolicyAnnc.expirationTime := v_expirationTime_1;
+						v_createRequestAnnc.primitiveContent.accessControlPolicyAnnc.labels := v_label_1;
 
-						v_updateRequest.primitiveContent.accessControlPolicy.expirationTime := v_expirationTime_2;
+						v_updateRequest.primitiveContent.accessControlPolicy.labels := v_label_2;
 
-						v_updateRequestAnnc.primitiveContent.accessControlPolicyAnnc.expirationTime := v_expirationTime_2;
+						v_updateRequestAnnc.primitiveContent.accessControlPolicyAnnc.labels := v_label_2;
   
 						v_cse1.start(f_CSE_ANNC_UPD_010(int3, v_createRequest, v_createRequestAnnc, v_updateRequest, v_updateRequestAnnc));//Container
 						v_cse1.done;
@@ -11135,18 +11108,18 @@ module OneM2M_Testcases_CSE_Release_3 {
 						var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnnc;
 						var template RequestPrimitive v_updateRequest := m_updateContainerBase;	
 						var template RequestPrimitive v_updateRequestAnnc := mw_updateContainerAnnc;
-						var Timestamp v_expirationTime_1 := "21001231T012345";
-						var Timestamp v_expirationTime_2 := "21101231T012345";
+						var Labels v_label_1 := {"LABEL_1"};
+						var Labels v_label_2 := {"LABEL_2"};
 
 						
 						v_createRequest.primitiveContent.container.announceTo := {PX_TS_CSE1.cseId};
-						v_createRequest.primitiveContent.container.expirationTime := v_expirationTime_1;	
+						v_createRequest.primitiveContent.container.labels := v_label_1;	
 		
-						v_createRequestAnnc.primitiveContent.containerAnnc.expirationTime := v_expirationTime_1;
+						v_createRequestAnnc.primitiveContent.containerAnnc.labels := v_label_1;
 		
-						v_updateRequest.primitiveContent.container.expirationTime := v_expirationTime_2;
+						v_updateRequest.primitiveContent.container.labels := v_label_2;
 		
-						v_updateRequestAnnc.primitiveContent.containerAnnc.expirationTime := v_expirationTime_2;
+						v_updateRequestAnnc.primitiveContent.containerAnnc.labels := v_label_2;
   
 						v_cse1.start(f_CSE_ANNC_UPD_010(int3, v_createRequest, v_createRequestAnnc, v_updateRequest, v_updateRequestAnnc));//Container
 						v_cse1.done;
@@ -11159,18 +11132,18 @@ module OneM2M_Testcases_CSE_Release_3 {
 						var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnnc;
 						var template RequestPrimitive v_updateRequest := m_updateGroupBase;	
 						var template RequestPrimitive v_updateRequestAnnc := mw_updateGroupAnnc;
-						var Timestamp v_expirationTime_1 := "21001231T012345";
-						var Timestamp v_expirationTime_2 := "21101231T012345";
+						var Labels v_label_1 := {"LABEL_1"};
+						var Labels v_label_2 := {"LABEL_2"};
 
 						
 						v_createRequest.primitiveContent.group_.announceTo := {PX_TS_CSE1.cseId};
-						v_createRequest.primitiveContent.group_.expirationTime := v_expirationTime_1;
+						v_createRequest.primitiveContent.group_.labels := v_label_1;
 		
-						v_createRequestAnnc.primitiveContent.groupAnnc.expirationTime := v_expirationTime_1;
+						v_createRequestAnnc.primitiveContent.groupAnnc.labels := v_label_1;
 		
-						v_updateRequest.primitiveContent.group_.expirationTime := v_expirationTime_2;
+						v_updateRequest.primitiveContent.group_.labels := v_label_2;
 		
-						v_updateRequestAnnc.primitiveContent.groupAnnc.expirationTime := v_expirationTime_2;
+						v_updateRequestAnnc.primitiveContent.groupAnnc.labels := v_label_2;
   
 						v_cse1.start(f_CSE_ANNC_UPD_010(int9, v_createRequest, v_createRequestAnnc, v_updateRequest, v_updateRequestAnnc));//Group
 						v_cse1.done;
@@ -11183,19 +11156,19 @@ module OneM2M_Testcases_CSE_Release_3 {
 						var template RequestPrimitive v_createRequestAnnc := mw_createTimeSeriesAnnc;
 						var template RequestPrimitive v_updateRequest := m_updateTimeSeriesBase;	
 						var template RequestPrimitive v_updateRequestAnnc := mw_updateTimeSeriesAnnc;
-						var Timestamp v_expirationTime_1 := "21001231T012345";
-						var Timestamp v_expirationTime_2 := "21101231T012345";
+						var Labels v_label_1 := {"LABEL_1"};
+						var Labels v_label_2 := {"LABEL_2"};
 						
 						
 						
 						v_createRequest.primitiveContent.timeSeries.announceTo := {PX_TS_CSE1.cseId};
-						v_createRequest.primitiveContent.timeSeries.expirationTime := v_expirationTime_1;
+						v_createRequest.primitiveContent.timeSeries.labels := v_label_1;
 
-						v_createRequestAnnc.primitiveContent.timeSeriesAnnc.expirationTime := v_expirationTime_1;
+						v_createRequestAnnc.primitiveContent.timeSeriesAnnc.labels := v_label_1;
 
-						v_updateRequest.primitiveContent.timeSeries.expirationTime := v_expirationTime_2;
+						v_updateRequest.primitiveContent.timeSeries.labels := v_label_2;
 
-						v_updateRequestAnnc.primitiveContent.timeSeriesAnnc.expirationTime := v_expirationTime_2;
+						v_updateRequestAnnc.primitiveContent.timeSeriesAnnc.labels := v_label_2;
   
 						v_cse1.start(f_CSE_ANNC_UPD_010(int29, v_createRequest, v_createRequestAnnc, v_updateRequest, v_updateRequestAnnc));//TimeSeries
 						v_cse1.done;
@@ -11241,19 +11214,19 @@ module OneM2M_Testcases_CSE_Release_3 {
 						var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnnc;
 						var template RequestPrimitive v_updateRequest := m_updateGroupBase;	
 						var template RequestPrimitive v_updateRequestAnnc := mw_updateGroupAnnc;
-						var MemberType v_memberType_1 := int3;
-						var MemberType v_memberType_2 := int4;
+						var XSD.PositiveInteger v_maxNrOfMembers_1 := 1;
+						var XSD.PositiveInteger v_maxNrOfMembers_2 := 2;
 
 						
 						v_createRequest.primitiveContent.group_.announceTo := {PX_TS_CSE1.cseId};
-						v_createRequest.primitiveContent.group_.memberType := v_memberType_1;
-						v_createRequest.primitiveContent.group_.announcedAttribute := {"mt"};
+						v_createRequest.primitiveContent.group_.maxNrOfMembers := v_maxNrOfMembers_1;
+						v_createRequest.primitiveContent.group_.announcedAttribute := {"mnm"};
 		
-						v_createRequestAnnc.primitiveContent.groupAnnc.memberType := v_memberType_1;
+						v_createRequestAnnc.primitiveContent.groupAnnc.maxNrOfMembers := v_maxNrOfMembers_1;
 		
-						v_updateRequest.primitiveContent.group_.memberType := v_memberType_2;
+						v_updateRequest.primitiveContent.group_.maxNrOfMembers := v_maxNrOfMembers_2;
 		
-						v_updateRequestAnnc.primitiveContent.groupAnnc.memberType := v_memberType_2;
+						v_updateRequestAnnc.primitiveContent.groupAnnc.maxNrOfMembers := v_maxNrOfMembers_2;
   
 						v_cse1.start(f_CSE_ANNC_UPD_011(int9, v_createRequest, v_createRequestAnnc, v_updateRequest, v_updateRequestAnnc));//Group
 						v_cse1.done;
@@ -11302,6 +11275,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 						var template RequestPrimitive v_updateRequestAnnc := mw_updateContainerAnnc;
 						var RequestPrimitive v_requestPrimitive;	
 						var XSD.NonNegativeInteger v_maxByteSize := 512;
+						var charstring v_attributeToDeannounce := "maxByteSize";
 						var AttributeAux_list v_nullFields;
 						var ListOfNCNames v_announcedAttribute := {"ToBeDeleted"};
 
@@ -11315,7 +11289,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 						v_updateRequest.primitiveContent.container.announcedAttribute := v_announcedAttribute;
 						v_nullFields := {{"announcedAttribute", omit}};
   
-						v_cse1.start(f_CSE_ANNC_UPD_012(int3, v_createRequest, v_createRequestAnnc, v_updateRequest, v_updateRequestAnnc, v_nullFields));//Container
+						v_cse1.start(f_CSE_ANNC_UPD_012(int3, v_createRequest, v_createRequestAnnc, v_updateRequest, v_updateRequestAnnc, v_nullFields, v_attributeToDeannounce));//Container
 						v_cse1.done;
 						
 						if(getverdict == pass){
@@ -11340,7 +11314,8 @@ module OneM2M_Testcases_CSE_Release_3 {
 						var template RequestPrimitive v_updateRequest := m_updateGroupBase;	
 						var template RequestPrimitive v_updateRequestAnnc := mw_updateGroupAnnc;
 						var RequestPrimitive v_requestPrimitive;	
-						var MemberType v_memberType := int3;
+						var MemberType v_memberType := int2;
+						var charstring v_attributeToDeannounce := "memberType";
 						var AttributeAux_list v_nullFields;
 						var ListOfNCNames v_announcedAttribute := {"ToBeDeleted"};
 
@@ -11354,7 +11329,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 						v_updateRequest.primitiveContent.group_.announcedAttribute := v_announcedAttribute;
 						v_nullFields := {{"announcedAttribute", omit}};
   
-						v_cse1.start(f_CSE_ANNC_UPD_012(int9, v_createRequest, v_createRequestAnnc, v_updateRequest, v_updateRequestAnnc, v_nullFields));//Group
+						v_cse1.start(f_CSE_ANNC_UPD_012(int9, v_createRequest, v_createRequestAnnc, v_updateRequest, v_updateRequestAnnc, v_nullFields, v_attributeToDeannounce));//Group
 						v_cse1.done;
 						
 						if(getverdict == pass){
@@ -11379,6 +11354,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 						var template RequestPrimitive v_updateRequestAnnc := mw_updateTimeSeriesAnnc;
 						var RequestPrimitive v_requestPrimitive;	
 						var XSD.NonNegativeInteger v_maxByteSize := 512;
+						var charstring v_attributeToDeannounce := "maxByteSize";
 						var AttributeAux_list v_nullFields;
 						var ListOfNCNames v_announcedAttribute := {"ToBeDeleted"};
 						
@@ -11393,7 +11369,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 						v_updateRequest.primitiveContent.timeSeries.announcedAttribute := v_announcedAttribute;
 						v_nullFields := {{"announcedAttribute", omit}};
   
-						v_cse1.start(f_CSE_ANNC_UPD_012(int29, v_createRequest, v_createRequestAnnc, v_updateRequest, v_updateRequestAnnc, v_nullFields));//TimeSeries
+						v_cse1.start(f_CSE_ANNC_UPD_012(int29, v_createRequest, v_createRequestAnnc, v_updateRequest, v_updateRequestAnnc, v_nullFields, v_attributeToDeannounce));//TimeSeries
 						v_cse1.done;
 	
 						if(getverdict == pass){
@@ -11424,6 +11400,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 						var template RequestPrimitive v_createRequest := m_createContainerBase;
 						var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnnc;
 						var template RequestPrimitive v_updateRequest := m_updateContainerBase;	
+						var template PrimitiveContent v_updateResponse := {container := mw_contentContainerBase};
 						var ResponsePrimitive v_responsePrimitive;	
 						var AttributeAux_list v_nullFields;
 						var ListOfNCNames v_announcedAttribute := {"ToBeDeleted"};
@@ -11438,7 +11415,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 						v_updateRequest.primitiveContent.container.announcedAttribute := v_announcedAttribute;
 						v_nullFields := {{"announcedAttribute", omit}};
 	  
-						v_ae1.start(f_CSE_ANNC_UPD_013(int3, v_createRequestAnnc, v_createRequest, v_updateRequest, v_nullFields));//Container
+						v_ae1.start(f_CSE_ANNC_UPD_013(int3, v_createRequestAnnc, v_createRequest, v_updateRequest, v_nullFields, v_updateResponse));//Container
 						v_ae1.done;
 	
 						if(getverdict == pass){
@@ -11469,21 +11446,22 @@ module OneM2M_Testcases_CSE_Release_3 {
 						var template RequestPrimitive v_createRequest := m_createGroupBase;
 						var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnnc;
 						var template RequestPrimitive v_updateRequest := m_updateGroupBase;	
+						var template PrimitiveContent v_updateResponse := {group_ := mw_contentGroupBase};
 						var ResponsePrimitive v_responsePrimitive;	
 						var AttributeAux_list v_nullFields;
 						var ListOfNCNames v_announcedAttribute := {"ToBeDeleted"};
 						var PrimitiveContent v_primitiveContentRetrieveResource;
-						var MemberType v_memberType := int3;
-	  
+						var XSD.PositiveInteger v_maxNrOfMembers_1 := 1;
+						
 						
 						v_createRequest.primitiveContent.group_.announceTo := {PX_TS_CSE1.cseId};
-						v_createRequest.primitiveContent.group_.memberType := v_memberType;
-						v_createRequest.primitiveContent.group_.announcedAttribute := {"mt"};
+						v_createRequest.primitiveContent.group_.maxNrOfMembers := v_maxNrOfMembers_1;
+						v_createRequest.primitiveContent.group_.announcedAttribute := {"mnm"};
 		
 						v_updateRequest.primitiveContent.group_.announcedAttribute := v_announcedAttribute;
 						v_nullFields := {{"announcedAttribute", omit}};
 	  
-						v_ae1.start(f_CSE_ANNC_UPD_013(int9, v_createRequestAnnc, v_createRequest, v_updateRequest, v_nullFields));//Group
+						v_ae1.start(f_CSE_ANNC_UPD_013(int9, v_createRequestAnnc, v_createRequest, v_updateRequest, v_nullFields, v_updateResponse));//Group
 						v_ae1.done;
 	
 						if(getverdict == pass){
@@ -11513,6 +11491,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 						var template RequestPrimitive v_createRequest := m_createTimeSeriesBase;
 						var template RequestPrimitive v_createRequestAnnc := mw_createTimeSeriesAnnc;
 						var template RequestPrimitive v_updateRequest := m_updateTimeSeriesBase;	
+						var template PrimitiveContent v_updateResponse := {timeSeries := mw_contentTimeSeriesBase};
 						var ResponsePrimitive v_responsePrimitive;	
 						var AttributeAux_list v_nullFields;
 						var ListOfNCNames v_announcedAttribute := {"ToBeDeleted"};
@@ -11524,10 +11503,10 @@ module OneM2M_Testcases_CSE_Release_3 {
 						v_createRequest.primitiveContent.timeSeries.maxByteSize := v_maxByteSize;
 						v_createRequest.primitiveContent.timeSeries.announcedAttribute := {"mbs"};
 
-						v_updateRequest.primitiveContent.container.announcedAttribute := v_announcedAttribute;
+						v_updateRequest.primitiveContent.timeSeries.announcedAttribute := v_announcedAttribute;
 						v_nullFields := {{"announcedAttribute", omit}};
   
-						v_ae1.start(f_CSE_ANNC_UPD_013(int29, v_createRequestAnnc, v_createRequest, v_updateRequest, v_nullFields));//TimeSeries
+						v_ae1.start(f_CSE_ANNC_UPD_013(int29, v_createRequestAnnc, v_createRequest, v_updateRequest, v_nullFields, v_updateResponse));//TimeSeries
 						v_ae1.done;
 
 						if(getverdict == pass){
@@ -11566,12 +11545,12 @@ module OneM2M_Testcases_CSE_Release_3 {
 						var template RequestPrimitive v_createRequest := m_createContainerBase;
 						var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnnc;
 						var template RequestPrimitive v_updateRequest := m_updateContainerBase;	
+						var template PrimitiveContent v_updateResponse := {container := mw_contentContainerBase};
 						var ResponsePrimitive v_responsePrimitive;	
 						 
-						
 						v_updateRequest.primitiveContent.container.announceTo := {PX_TS_CSE1.cseId};
   
-						v_ae1.start(f_CSE_ANNC_UPD_014(int3, v_createRequestAnnc, v_createRequest, v_updateRequest));//Container
+						v_ae1.start(f_CSE_ANNC_UPD_014(int3, v_createRequestAnnc, v_createRequest, v_updateRequest, v_updateResponse));//Container
 						v_ae1.done;
 						
 						if(getverdict == pass){
@@ -11579,7 +11558,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 						if(ispresent(v_responsePrimitive.primitiveContent)) {
 							if(ischosen(v_responsePrimitive.primitiveContent.container)) {
 								if(ispresent(v_responsePrimitive.primitiveContent.container.announcedAttribute)){
-									setverdict(fail, __SCOPE__ & ": Error: announcedAttribute attribute is not set to NULL");
+									setverdict(fail, __SCOPE__ & ": Error: announceTo attribute is not set to NULL");
 								}
 							}
 						}
-- 
GitLab