diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index ea652b02fa47aaf64b08d91c8a2330d0b8261672..5dc72514277380b6ce5936e8211efe7d27775067 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -88,6 +88,9 @@ module OneM2M_Functions {
 			// Map
 			map(self:mcaPort, system:mcaPort);
 			map(self:acPort, system:acPort);
+			if(PX_UT_IMPLEMENTED) {
+				map(self:utPort, system:utPort);
+			}
 			activate(a_default());
 			activate(a_cse_cf02_ae1());
 			vc_cse1.start(f_cf02UpCse1());
@@ -263,6 +266,9 @@ module OneM2M_Functions {
 		
 			unmap(self:mcaPort, system:mcaPort);
 			unmap(self:acPort, system:acPort);
+			if(PX_UT_IMPLEMENTED){
+				unmap(self:utPort, system:utPort);
+			}
 			unmap(vc_cse1:mccPort, system:mccPort);
 			unmap(vc_cse1:mccPortIn, system:mccPortIn);
 			unmap(vc_cse1:acPort, system:acPort);
@@ -1170,25 +1176,28 @@ module OneM2M_Functions {
 			 * @verdict 
 			 */
 			 //TODO To finalize this function
-			function f_cse_resourceAnnouncementHandler(template XSD.ID p_from := *, template XSD.ID p_to := ?) runs on CseSimu {
+			function f_cse_resourceAnnouncementHandler(template RequestPrimitive p_requestprimitive := ?) runs on CseSimu {
 				// Local variables
 				var MsgIn v_request;
+				var integer v_parentIndex := vc_localRemoteCseIndex;
+				var integer v_announcedResourceIndex;
 				var ResponsePrimitive v_responsePrimitive;
+				var PrimitiveContent v_announcedResource;
 				
 				tc_ac.start;
 				alt {
-					[] mccPortIn.receive(mw_request(mw_create(p_from, p_to))) -> value v_request {
+					[] mccPortIn.receive(mw_request(p_requestprimitive)) -> value v_request {
 						tc_ac.stop;
 						setverdict(pass, __SCOPE__ & ":INFO: Announcement received");
 						//TODO Save resource and generate required attributes
-						v_responsePrimitive := f_getCreateResponsePrimitive(v_request.primitive.requestPrimitive.resourceType, v_request.primitive.requestPrimitive);
-						mccPortIn.send(m_response(v_responsePrimitive));
-						f_checkAttributesToBeSaved(v_request.primitive.requestPrimitive.resourceType, v_request.primitive.requestPrimitive, vc_response.primitive.responsePrimitive);
-						f_setResource(vc_response.primitive.responsePrimitive.primitiveContent, v_request.primitive.requestPrimitive.resourceType, vc_remoteCseIndex);					
-					}
-					[] mccPortIn.receive{
-						tc_ac.stop;
-						setverdict(fail, __SCOPE__ & ":ERROR: Unexpected message received");
+						v_announcedResource:= f_cse_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, v_parentIndex,v_request.primitive.requestPrimitive.resourceType);
+						v_announcedResourceIndex := f_setLocalResource(v_announcedResource, v_request.primitive.requestPrimitive.resourceType, v_parentIndex);
+						
+						v_responsePrimitive := valueof(m_responsePrimitive(int2001,v_request.primitive.requestPrimitive.requestIdentifier));
+						v_responsePrimitive.from_ := PX_CSE1_ID;
+						v_responsePrimitive.to_ := v_request.primitive.requestPrimitive.from_;
+						v_responsePrimitive.primitiveContent := vc_localResourcesList[vc_localRemoteCseIndex].resource;
+						mccPortIn.send(m_response(v_responsePrimitive));			
 					}
 					[] tc_ac.timeout {
 						setverdict(fail, __SCOPE__ & ":ERROR:  No announcement received");
@@ -1802,6 +1811,13 @@ module OneM2M_Functions {
 				var integer v_resourceIndex := -1;
 				var template UtTriggerPrimitive v_utRequest := m_utCreateRemoteCSE;
 				var charstring v_action := "Please, send a CSE registration request";
+				var integer v_parentIndex := vc_localRemoteCseIndex;
+				var ResponsePrimitive v_responsePrimitive;
+				var PrimitiveContent v_announcedResource;
+				var boolean v_remoteCSERegistered:=false;
+				var integer v_ResourceIndex := -1;
+				
+				
 				
 				//send triggering primitive to SUT
 			  	f_sendUtPrimitive(v_utRequest,v_action);
@@ -1821,11 +1837,16 @@ module OneM2M_Functions {
 						mccPortIn.send(m_response(v_response));
 						
 						v_resourceIndex := f_setResource(valueof(m_primitiveContentRemoteCSE(m_contentMyRemoteCSEResource)), int16, -1);
+						v_remoteCSERegistered:=true;
+						tc_ac.start;
+						repeat;
 					}
 					[] tc_ac.timeout {
+						if(not (v_remoteCSERegistered)){
 						setverdict(inconc, __SCOPE__&":INFO: No request received for creating resource type remoteCSE");
 					}
-				}	
+					}
+				}
 
 				f_checkCseSimuStatus();
 				
@@ -1842,11 +1863,15 @@ module OneM2M_Functions {
 			 */
 			function f_cse_receiveCreateRequest(in template RequestPrimitive p_requestPrimitive := ?) runs on CseSimu {
     			
+				var ResponsePrimitive v_responsePrimitive;
 				tc_ac.start;
 				alt {
 					[] mccPortIn.receive(mw_request(p_requestPrimitive)) -> value vc_request {
 						tc_ac.stop;
 						setverdict(pass, __SCOPE__&":INFO: CREATE Request received successfuly");
+						v_responsePrimitive := f_getCreateResponsePrimitive(vc_request.primitive.requestPrimitive.resourceType, vc_request.primitive.requestPrimitive);
+						v_responsePrimitive.responseStatusCode := int2001;
+						mccPortIn.send(m_response(v_responsePrimitive));
 					}
 					[] mccPortIn.receive(mw_request(?)) {
 						tc_ac.stop;
@@ -1879,9 +1904,9 @@ module OneM2M_Functions {
 				
 				// TODO To review the code (use of indexes, generation of value for certain attributes, etc..)
 				if(p_resourceType == int5) {	//CSEBase
-					v_myResource.cSEBase.resourceName := "CSEBase" & int2str(v_resourceIndex);
+					v_myResource.cSEBase.resourceName := PX_CSE1_NAME;
 					v_myResource.cSEBase.resourceType := p_resourceType;
-					v_myResource.cSEBase.resourceID := "CSEBase" & int2str(v_resourceIndex);
+					v_myResource.cSEBase.resourceID := PX_CSE1_ID;
 					v_myResource.cSEBase.parentID := omit;		//Following TS-0001, it must be NULL
 					v_myResource.cSEBase.creationTime := fx_generateTimestamp();
 					v_myResource.cSEBase.creationTime := "20171231T012345";
@@ -1903,7 +1928,7 @@ module OneM2M_Functions {
 							v_myResource.remoteCSE.resourceName := "remoteCSE" & int2str(v_resourceIndex);
 						}
 						v_myResource.remoteCSE.resourceType := p_resourceType;
-						v_myResource.remoteCSE.resourceID := "remoteCSE" & int2str(v_resourceIndex);
+						v_myResource.remoteCSE.resourceID := f_resourceIdCleaner(v_myResource.remoteCSE.cSE_ID);
 						v_myResource.remoteCSE.parentID := f_getResourceId(vc_localResourcesList[p_parentIndex].resource);
 						v_myResource.remoteCSE.creationTime := fx_generateTimestamp();
 						v_myResource.remoteCSE.creationTime := "20171231T012345";
@@ -1925,11 +1950,81 @@ module OneM2M_Functions {
 						v_myResource.remoteCSE.nodeLink := omit;
 				    
 					}
+				} else if (p_resourceType == int10002 and ispresent (p_resource)) { //AE Annc
+					if(ischosen(p_resource.aEAnnc)) {
+						v_myResource.aEAnnc.expirationTime := p_resource.aEAnnc.expirationTime;
+						v_myResource.aEAnnc.accessControlPolicyIDs := p_resource.aEAnnc.accessControlPolicyIDs;
+						v_myResource.aEAnnc.labels := p_resource.aEAnnc.labels;
+				}
+				} else if (p_resourceType == int10001 and ispresent (p_resource)) { //Acp Annc
+					if(ischosen(p_resource.accessControlPolicyAnnc)) {
+						v_myResource.accessControlPolicyAnnc.expirationTime := p_resource.accessControlPolicyAnnc.expirationTime;
+						v_myResource.accessControlPolicyAnnc.labels := p_resource.accessControlPolicyAnnc.labels;
+						v_myResource.accessControlPolicyAnnc.privileges := p_resource.accessControlPolicyAnnc.privileges;
+						v_myResource.accessControlPolicyAnnc.selfPrivileges := p_resource.accessControlPolicyAnnc.selfPrivileges;
+					}
+				} else if (p_resourceType == int10003 and ispresent (p_resource)) { //Container Annc
+					if(ischosen(p_resource.containerAnnc)) {
+						v_myResource.containerAnnc.expirationTime := p_resource.containerAnnc.expirationTime;
+						v_myResource.containerAnnc.accessControlPolicyIDs := p_resource.containerAnnc.accessControlPolicyIDs;
+						v_myResource.containerAnnc.labels := p_resource.containerAnnc.labels;
+					}
+				} else if (p_resourceType == int10009 and ispresent (p_resource)) { //Group Annc
+					if(ischosen(p_resource.groupAnnc)) {
+						v_myResource.groupAnnc.expirationTime := p_resource.groupAnnc.expirationTime;
+						v_myResource.groupAnnc.accessControlPolicyIDs := p_resource.groupAnnc.accessControlPolicyIDs;
+						v_myResource.groupAnnc.labels := p_resource.groupAnnc.labels;
+					}
+				} else if (p_resourceType == int10014 and ispresent (p_resource)) { //ContentInstance Annc
+					if(ischosen(p_resource.contentInstanceAnnc)) {
+						v_myResource.contentInstanceAnnc.expirationTime := p_resource.contentInstanceAnnc.expirationTime;
+						v_myResource.contentInstanceAnnc.labels := p_resource.contentInstanceAnnc.labels;
+					}
+				} else if (p_resourceType == int1 and ispresent (p_resource)) { //Acp Resource
+				   if(ischosen (p_resource.accessControlPolicy)){
+					v_myResource.accessControlPolicy := valueof(p_resource.accessControlPolicy);
+					
+						if(not(ispresent(p_resource.accessControlPolicy.resourceName))) {
+							v_myResource.accessControlPolicy.resourceName := "accessControlPolicy" & int2str(v_resourceIndex);
+						}
+						
+					v_myResource.accessControlPolicy.resourceType := p_resourceType;
+					v_myResource.accessControlPolicy.resourceID := "accessControlPolicy" & int2str(v_resourceIndex);
+					v_myResource.accessControlPolicy.parentID := f_getResourceId(vc_localResourcesList[p_parentIndex].resource);
+					v_myResource.accessControlPolicy.labels := p_resource.accessControlPolicy.labels;
+					v_myResource.accessControlPolicy.creationTime := fx_generateTimestamp();
+					if(not(ispresent(p_resource.accessControlPolicy.expirationTime))) {
+						v_myResource.accessControlPolicy.expirationTime := "20301231T012345";
+					}
+					v_myResource.accessControlPolicy.lastModifiedTime := v_myResource.accessControlPolicy.creationTime;											
+					v_myResource.accessControlPolicy.announceTo := omit;	
+					v_myResource.accessControlPolicy.announcedAttribute := omit;
+					
+				   }
 				}
 				return v_myResource;
 				
 			}//End of function	
 			
+			/**
+			 * @desc Sending of a request primitive over mca port
+			 * @param p_resourceType Resource type of the resource to be created
+			 * @param p_requestPrimitive CREATE request primitive for the resource to be created
+			 * @param p_parentIndex Internal resource index which indicates the parent of the resource to be created
+			 * @return Internal resource index of the created resource
+			 * @verdict 
+			 */
+			function f_cse_sendCreateRequestPrimitive(in ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive := m_create, integer p_parentIndex := -1) runs on AeSimu {
+			
+				var RequestPrimitive v_request;
+				var integer v_resourceIndex := -1;
+				
+				v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestPrimitive, p_parentIndex);
+			
+				mcaPort.send(m_request(v_request));
+						
+			}
+			
 			
 		}//end group CseSimuFunctions
 		
@@ -1969,23 +2064,71 @@ module OneM2M_Functions {
 			  */
 			 altstep a_cse_cf02_cse1() runs on CseSimu {
 				
+				var PrimitiveContent v_localResource;
+				var integer vc_localResourceIndex := -1;
 				var MsgIn v_request;
 				var ResponsePrimitive v_response;
-				var PrimitiveContent v_remoteResource; //localresource
-				var integer v_localResourceIndex;
-				var integer v_resourceIndex;
+				var integer v_localResourceIndex := -1;
+				
+				[] mccPortIn.receive(mw_request(mw_create())) -> value v_request {
+					log(__SCOPE__&": WARNING: Unexpected CREATE message received");
+					tc_ac.stop;
+					v_localResource := f_cse_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, vc_cSEBaseIndex, v_request.primitive.requestPrimitive.resourceType);//TODO Get index from v_request.primitive.requestPrimitive.to_
+					vc_localResourceIndex := f_setLocalResource(v_localResource, v_request.primitive.requestPrimitive.resourceType, vc_cSEBaseIndex);
 
-				[] mccPortIn.receive(mw_request(mw_create)) -> value v_request {
-					v_remoteResource := f_cse_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, f_getResourceIndex(v_request.primitive.requestPrimitive.to_), v_request.primitive.requestPrimitive.resourceType);
-					v_localResourceIndex := f_setLocalResource(v_remoteResource, v_request.primitive.requestPrimitive.resourceType, f_getResourceIndex(v_request.primitive.requestPrimitive.to_));
-	
 					v_response := valueof(m_responsePrimitive(int2001,v_request.primitive.requestPrimitive.requestIdentifier));
 					v_response.from_ := PX_CSE1_ID;
 					v_response.to_ := v_request.primitive.requestPrimitive.from_;
-					v_response.primitiveContent := vc_localResourcesList[v_localResourceIndex].resource;
+					v_response.primitiveContent := vc_localResourcesList[vc_localResourceIndex].resource;
 					mccPortIn.send(m_response(v_response));
+					tc_ac.start;
+					repeat;
 				}
-				[] mccPortIn.receive {
+				[] mccPortIn.receive(mw_request(mw_retrieve(?))) -> value v_request {
+					tc_ac.stop;
+					log(__SCOPE__&": WARNING: Unexpected RETRIEVE message received");
+					
+					v_localResourceIndex := f_getResourceIndex(v_request.primitive.requestPrimitive.to_);
+					if(v_localResourceIndex == -1)
+					{ 
+						log(__SCOPE__&": ERROR: Resource Index not valid");
+						v_response := valueof(m_responsePrimitive(int4004,v_request.primitive.requestPrimitive.requestIdentifier));
+						v_response.from_ := PX_CSE1_ID;
+						v_response.to_ := v_request.primitive.requestPrimitive.from_;
+						mccPortIn.send(m_response(v_response));
+					} else {
+						v_response := valueof(m_responsePrimitive(int2000,v_request.primitive.requestPrimitive.requestIdentifier));
+						v_response.from_ := PX_CSE1_ID;
+						v_response.to_ := v_request.primitive.requestPrimitive.from_;
+						v_response.primitiveContent := vc_localResourcesList[v_localResourceIndex].resource;
+						mccPortIn.send(m_response(v_response));
+					}
+					tc_ac.start;
+					repeat;
+				}
+				[] mccPortIn.receive(mw_request(mw_update())) -> value v_request {
+					tc_ac.stop;
+					log(__SCOPE__&": WARNING: Unexpected UPDATE message received");
+
+					v_localResourceIndex := f_getResourceIndex(v_request.primitive.requestPrimitive.to_);
+					if(v_localResourceIndex == -1)
+					{ 
+						log(__SCOPE__&": ERROR: Resource Index not valid");
+						v_response := valueof(m_responsePrimitive(int4004,v_request.primitive.requestPrimitive.requestIdentifier));
+						v_response.from_ := PX_CSE1_ID;
+						v_response.to_ := v_request.primitive.requestPrimitive.from_;
+						mccPortIn.send(m_response(v_response));
+					} else {
+						v_response := valueof(m_responsePrimitive(int2004,v_request.primitive.requestPrimitive.requestIdentifier));
+						v_response.from_ := PX_CSE1_ID;
+						v_response.to_ := v_request.primitive.requestPrimitive.from_;
+						v_response.primitiveContent := vc_localResourcesList[v_localResourceIndex].resource;
+						mccPortIn.send(m_response(v_response));
+					}
+					tc_ac.start;
+					repeat;
+				}
+				[] mccPortIn.receive (mw_request(?)){
 					log(__SCOPE__&": WARNING: Unexpected message received");
 					repeat;
 				}
@@ -2479,16 +2622,16 @@ module OneM2M_Functions {
 				return f_resourceIdCleaner(p_contentResource.cSEBase.resourceID);
 			}
 			if(ischosen(p_contentResource.m2mServiceSubscriptionProfile)) {
-				return p_contentResource.m2mServiceSubscriptionProfile.resourceName;
+				return f_resourceIdCleaner(p_contentResource.m2mServiceSubscriptionProfile.resourceID);
 			}
 			if(ischosen(p_contentResource.node)) {
-				return p_contentResource.node.resourceName;
+				return f_resourceIdCleaner(p_contentResource.node.resourceID);
 			}
 			if(ischosen(p_contentResource.statsConfig)) {
-				return p_contentResource.statsConfig.resourceName;
+				return f_resourceIdCleaner(p_contentResource.statsConfig.resourceID);
 			}
 			if(ischosen(p_contentResource.statsCollect)) {
-				return p_contentResource.statsCollect.resourceName;
+				return f_resourceIdCleaner(p_contentResource.statsCollect.resourceID);
 			}
 
 			log(__SCOPE__&":WARNING: Primitive Content Kind not implemented");
@@ -2656,8 +2799,42 @@ module OneM2M_Functions {
 		 * @param p_address	Resource URI (can be structured/unstructured cseRelative/spRelative/absolute)
 		 * @return Internal resource index of the given resource or -1 in case of error
 		 */
-		function f_getResourceIndex(in XSD.AnyURI p_address) runs on CseSimu return integer {
-			return vc_cSEBaseIndex; //TODO
+		function f_getResourceIndex(in XSD.ID p_receivedURI) runs on CseSimu return integer {
+			var integer v_resourceIndex := -1;
+			var integer i;
+			var XSD.ID v_cleanedURI;
+			
+			v_cleanedURI := f_resourceIdCleaner(p_receivedURI);
+			
+			if (f_isHierarchical(p_receivedURI)) {
+				
+				log("Hierarchical method: " & v_cleanedURI);
+				for(i:=0; i < lengthof(vc_localResourcesList); i := i+1){
+					
+					if(match(f_getResourceName(vc_localResourcesList[i].resource), v_cleanedURI)){
+						v_resourceIndex := i;
+						break;
+					}		
+				}
+    		
+			} else {
+				
+				log("Non Hierarchical method: " & v_cleanedURI);
+				for(i:=0; i < lengthof(vc_localResourcesList); i := i+1){
+					if(match(f_getResourceId(vc_localResourcesList[i].resource), v_cleanedURI)){
+						v_resourceIndex := i;
+						break;
+					} 
+				}
+			}
+			log("Resource index found: " & int2str(v_resourceIndex));
+			//Try CSEBase
+			if(v_resourceIndex == -1) {
+				if(match(f_getResourceName(vc_localResourcesList[vc_cSEBaseIndex].resource), v_cleanedURI)) {
+					v_resourceIndex := vc_cSEBaseIndex;
+				}
+			}
+			return v_resourceIndex;
 		}
     		
 		/**
@@ -2755,7 +2932,7 @@ module OneM2M_Functions {
 					if(p_targetResourceIndex == -1) {
 						return PX_CSE1_ID & "/" & PX_CSE1_RESOURCE_ID;
 					} else {
-						v_resourceAddress := PX_CSE_ID & "/" & f_getResourceId(vc_localResourcesList[p_targetResourceIndex].resource);
+						v_resourceAddress := PX_CSE1_ID & "/" & f_getResourceId(vc_localResourcesList[p_targetResourceIndex].resource);
 						return v_resourceAddress;
 					}
 				} else {
@@ -2788,6 +2965,7 @@ module OneM2M_Functions {
 				
 		}
 		
+		
 		/**
 		 * @desc Saving of a resource and its parent index in the internal resource list
 		 * @param p_resource Resource to be saved
diff --git a/LibOneM2M/OneM2M_Ports.ttcn b/LibOneM2M/OneM2M_Ports.ttcn
index ffac6b7655e85c8a5bbb4d3aa23c74cf75290fd0..76b80cefe389d569029331bd0661ec2025a6287e 100644
--- a/LibOneM2M/OneM2M_Ports.ttcn
+++ b/LibOneM2M/OneM2M_Ports.ttcn
@@ -15,15 +15,15 @@ module OneM2M_Ports {
 	
 	import from OneM2M_Types all;
 	/* ***************************************
- 	 * 		oneM2M Ports 
-  	 * ***************************************
+	 * 		oneM2M Ports 
+	 * ***************************************
 	 */
 	/**
 	 * @desc Port to transport oneM2M primitives
 	 * @desc Output MsgOut   
 	 * @desc Input MsgIn 
 	 * @desc this port is allowed to extend for futher usage  
-     * @desc e.g. extend OneM2MPort to dual-faced port
+	 * @desc e.g. extend OneM2MPort to dual-faced port
 	 */
 	type port OneM2MPort message {
 		in 
diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn
index 7464dadf3ffe84936846e5ca630b8205050ea75b..e6f8505ef57e85e459b1efc155581a76a6d9082c 100644
--- a/LibOneM2M/OneM2M_Templates.ttcn
+++ b/LibOneM2M/OneM2M_Templates.ttcn
@@ -125,7 +125,7 @@ module OneM2M_Templates {
 			 * @desc Base Receive RETRIEVE request primitive
 			 * @param p_targetResourceAddress Target resource address
 			 */
-			template RequestPrimitive mw_retrieve(XSD.ID p_targetResourceAddress) := {
+			template RequestPrimitive mw_retrieve(template XSD.ID p_targetResourceAddress) := {
 				operation := int2,
 				to_ := p_targetResourceAddress,
 				from_ := ?,
@@ -383,7 +383,7 @@ module OneM2M_Templates {
 				to_ := p_to,
 				from_ := p_from,
 				requestIdentifier := ?,
-				resourceType := ?,
+				resourceType := omit,
 				primitiveContent:= ?,
 				role := *, 
 				originatingTimestamp := *,
@@ -585,7 +585,7 @@ module OneM2M_Templates {
 			/**
 			 * @desc Reception template for CREATE AEAnnc
 			 */
-			template RequestPrimitive mw_createAEAnnc(template (omit) XSD.ID p_from := omit, template (omit) XSD.ID p_to := omit, template (omit) AcpType p_accessControlPolicyIds := omit, template XSD.AnyURI p_link := ?) modifies mw_create := {
+			template RequestPrimitive mw_createAEAnnc(template (omit) XSD.ID p_from := omit, template (omit) XSD.ID p_to := omit, template AcpType p_accessControlPolicyIds := ?, template XSD.AnyURI p_link := ?) modifies mw_create := {
 				resourceType := int10002,
 				primitiveContent := {aEAnnc := mw_contentCreateAEAnnc({"Credential-ID:None"}, p_accessControlPolicyIds)}
 			};
@@ -1280,15 +1280,15 @@ module OneM2M_Templates {
 			accessControlPolicyIDs := p_accessControlPolicyIds,//MA
 			expirationTime := ?,//MA M
 			link := p_link,//M
-			appName := omit,//OA
-			app_ID := omit,//OA
-			aE_ID := omit,//OA
-			pointOfAccess := omit, //OA {"http://127.0.0.1:1400/monitor"},//O //{"http://192.168.1.92:18080/notifications/AE"}, // TODO: Check this => AE PoA
-			ontologyRef := omit,//OA
-			nodeLink := omit,//OA
-			requestReachability := omit,//OA
-			contentSerialization := omit,//OA
-			choice := omit//NA
+			appName := *,//OA
+			app_ID := *,//OA
+			aE_ID := *,//OA
+			pointOfAccess := *, //OA {"http://127.0.0.1:1400/monitor"},//O //{"http://192.168.1.92:18080/notifications/AE"}, // TODO: Check this => AE PoA
+			ontologyRef := *,//OA
+			nodeLink := *,//OA
+			requestReachability := *,//OA
+			contentSerialization := *,//OA
+			choice := *//NA
 		};	
 		
 		/**
diff --git a/LibOneM2M/OneM2M_TestSystem.ttcn b/LibOneM2M/OneM2M_TestSystem.ttcn
index 51a4ccd3372bae68a3b3e2e7af4270c3351ed8f1..223b9fdd45942755553b26b571304448b9b0d3de 100644
--- a/LibOneM2M/OneM2M_TestSystem.ttcn
+++ b/LibOneM2M/OneM2M_TestSystem.ttcn
@@ -62,9 +62,9 @@ module OneM2M_TestSystem {
 		//global variables
 		var MyResourcesList vc_localResourcesList := {};
 		var AeSimu vc_ae1;//For CF02 when CseSimu is master
-		var integer vc_remoteCseIndex;
-		var integer vc_localRemoteCseIndex;
-		var integer vc_cSEBaseIndex;	//Index of the CSEBase resource of the Tester inside vc_localResourcesList
+		var integer vc_remoteCseIndex := -1;
+		var integer vc_localRemoteCseIndex := -1;
+		var integer vc_cSEBaseIndex := -1;	//Index of the CSEBase resource of the Tester inside vc_localResourcesList
 	};
 	
 	type component InCseSimu extends CseSimu {}
@@ -77,6 +77,7 @@ module OneM2M_TestSystem {
 		port OneM2MPort mccPort;
 		port OneM2MPort mccPortIn;
 		port AdapterControlPort acPort;
+		port UpperTesterPort utPort;
 	}	
 	
 	type component AeSystem {
diff --git a/LibOneM2M/UsefulTtcn3Types.ttcn b/LibOneM2M/UsefulTtcn3Types.ttcn
index 11a0b0ce30b86afc81f19705dcc739e7e16a6095..fbbb1c2fa9539e4174a72e3c0c54c206f2879485 100644
--- a/LibOneM2M/UsefulTtcn3Types.ttcn
+++ b/LibOneM2M/UsefulTtcn3Types.ttcn
@@ -5,85 +5,84 @@
  *  © 2016, oneM2M Partners Type 1 (ARIB, ATIS, CCSA, ETSI, TIA, TSDSI, TTA, TTC).
  *  All rights reserved.
  *  
- *  @author     ETSI
- *  @version    $URL: https://oldforge.etsi.org/svn/oneM2M/branches/Release1/ttcn/LibOneM2M/UsefulTtcn3Types.ttcn $
- *              $Id: UsefulTtcn3Types.ttcn 173 2016-11-22 08:10:48Z reinaortega $
- *  @desc       Test System module for oneM2M
+ *  @author     oneM2M
+ *  @version    $URL: https://oldforge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/UsefulTtcn3Types.ttcn $
+ *              $Id: UsefulTtcn3Types.ttcn 234 2017-03-20 16:37:29Z reinaortega $
+ *  @desc       Useful types
  *
  */
 module UsefulTtcn3Types {
 
 
-	type integer byte (-128 .. 127) with { variant "/* 8 bit */" };
+    type integer byte (-128 .. 127) with { variant "/* 8 bit */" };
 
-	type integer unsignedbyte (0 .. 255) with { variant "/*unsigned 8 bit*/" };
+    type integer unsignedbyte (0 .. 255) with { variant "/*unsigned 8 bit*/" };
 
-	type integer short (-32768 .. 32767) with { variant "/*16 bit*/" };
+    type integer short (-32768 .. 32767) with { variant "/*16 bit*/" };
 
-	type integer unsignedshort (0 .. 65535) with { variant "/*unsigned 16 bit*/" };
+    type integer unsignedshort (0 .. 65535) with { variant "/*unsigned 16 bit*/" };
 
-	type integer long (-2147483648 .. 2147483647) with { variant "/*32 bit*/" };
+    type integer long (-2147483648 .. 2147483647) with { variant "/*32 bit*/" };
 
-	type integer unsignedlong (0 .. 4294967295) with { variant "/*unsigned 32 bit*/" };
+    type integer unsignedlong (0 .. 4294967295) with { variant "/*unsigned 32 bit*/" };
 
-	type integer longlong /* (  -9223372036854775808 .. 9223372036854775807 ) */ with { variant "/*64 bit*/" };
+    type integer longlong /* (  -9223372036854775808 .. 9223372036854775807 ) */ with { variant "/*64 bit*/" };
 
-	type integer unsignedlonglong /* ( 0 .. 18446744073709551615 ) */ with { variant "/*unsigned 64 bit*/" };
+    type integer unsignedlonglong /* ( 0 .. 18446744073709551615 ) */ with { variant "/*unsigned 64 bit*/" };
 
-	type float IEEE754float with { variant "/*IEEE754 float*/" };
+    type float IEEE754float with { variant "/*IEEE754 float*/" };
 
-	type float IEEE754double with { variant "/*IEEE754 double*/" };
+    type float IEEE754double with { variant "/*IEEE754 double*/" };
 
-	type float IEEE754extfloat with { variant "/*IEEE754 extended float*/" };
+    type float IEEE754extfloat with { variant "/*IEEE754 extended float*/" };
 
-	type float IEEE754extdouble with { variant "/*IEEE754 extended double*/" };
+    type float IEEE754extdouble with { variant "/*IEEE754 extended double*/" };
 
-	type universal charstring utf8string with { variant "/*UTF-8*/" };
+    type universal charstring utf8string with { variant "/*UTF-8*/" };
 
-	type universal charstring bmpstring ( char ( 0,0,0,0 ) .. char ( 0,0,255,255) ) with { variant "/*UCS-2*/" };
+    type universal charstring bmpstring ( char ( 0,0,0,0 ) .. char ( 0,0,255,255) ) with { variant "/*UCS-2*/" };
 
-	type universal charstring utf16string ( char ( 0,0,0,0 ) .. char ( 0,16,255,255) ) with { variant "/*UTF-16*/" };
+    type universal charstring utf16string ( char ( 0,0,0,0 ) .. char ( 0,16,255,255) ) with { variant "/*UTF-16*/" };
 
-	type universal charstring iso8859string ( char ( 0,0,0,0 ) .. char ( 0,0,0,255) ) with { variant "/*8 bit*/" };
+    type universal charstring iso8859string ( char ( 0,0,0,0 ) .. char ( 0,0,0,255) ) with { variant "/*8 bit*/" };
 
-	type record IDLfixed
-	{
-		unsignedshort digits,
-		short scale,
-		charstring value_
-	}
-	with {
-	variant "/*IDL:fixed FORMAL/01-12-01 v.2.6*/";
-	};
+    type record IDLfixed
+    {
+    	unsignedshort digits,
+    	short scale,
+    	charstring value_
+    }
+    with {
+    variant "/*IDL:fixed FORMAL/01-12-01 v.2.6*/";
+    };
 
-	/*
-	type charstring char length (1);
+    /*
+    type charstring char length (1);
 
-	NOTE 1: The name of this useful type is the same as the TTCN-3 keyword used to denote universal
-	charstring values in the quadraple form. In general it is disallowed to use TTCN-3 keywords as
-	identifiers. The "char" useful type is a solitary exception and allowed only for backward compatibility
-	with previous versions of the TTCN-3 standard. (except Titan doesn't)
+    NOTE 1: The name of this useful type is the same as the TTCN-3 keyword used to denote universal
+    charstring values in the quadraple form. In general it is disallowed to use TTCN-3 keywords as
+    identifiers. The "char" useful type is a solitary exception and allowed only for backward compatibility
+    with previous versions of the TTCN-3 standard. (except Titan doesn't)
 
-	NOTE 2: The special string "8 bit" defined in clause 28.2.3 may be used with this type to specify a given encoding
-	for its values. Also, other properties of the base type can be changed by using attribute mechanisms.
-	*/
+    NOTE 2: The special string "8 bit" defined in clause 28.2.3 may be used with this type to specify a given encoding
+    for its values. Also, other properties of the base type can be changed by using attribute mechanisms.
+    */
 
-	type universal charstring uchar length (1);
+    type universal charstring uchar length (1);
 
-	/*
-	NOTE: Special strings defined in clause 28.2.3 except "8 bit" may be used with this type to specify a given
-	encoding for its values. Also, other properties of the base type can be changed by using attribute
-	mechanisms.
-	*/
+    /*
+    NOTE: Special strings defined in clause 28.2.3 except "8 bit" may be used with this type to specify a given
+    encoding for its values. Also, other properties of the base type can be changed by using attribute
+    mechanisms.
+    */
 
-	type bitstring bit length (1);
+    type bitstring bit length (1);
 
-	type hexstring hex length (1);
+    type hexstring hex length (1);
 
-	type octetstring octet length (1);
+    type octetstring octet length (1);
 
 }
 with {
 encode "XML";
 }
-
diff --git a/LibOneM2M/XSD.ttcn b/LibOneM2M/XSD.ttcn
index 24dfde9c38c503a7cf630b4c5c1e64558e40bc8f..5ac7ea137b64625edc1758357b18850b6f23f20e 100644
--- a/LibOneM2M/XSD.ttcn
+++ b/LibOneM2M/XSD.ttcn
@@ -5,10 +5,10 @@
  *  © 2016, oneM2M Partners Type 1 (ARIB, ATIS, CCSA, ETSI, TIA, TSDSI, TTA, TTC).
  *  All rights reserved.
  *  
- *  @author     ETSI
- *  @version    $URL: https://oldforge.etsi.org/svn/oneM2M/branches/Release1/ttcn/LibOneM2M/XSD.ttcn $
- *              $Id: XSD.ttcn 347 2017-08-11 08:48:20Z reinaortega $
- *  @desc       Test System module for oneM2M
+ *  @author     oneM2M
+ *  @version    $URL: https://oldforge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/XSD.ttcn $
+ *              $Id: XSD.ttcn 234 2017-03-20 16:37:29Z reinaortega $
+ *  @desc       XSD Aux
  *
  */
 module XSD {
@@ -31,10 +31,10 @@ const charstring
   nums := "[0-9]#(1,)",
   ZorTimeZoneExt := "(Z|[+-]((0[0-9]|1[0-3]):[0-5][0-9]|14:00))#(,1)",
   durTime := "(T[0-9]#(1,)"&
-			 "(H([0-9]#(1,)(M([0-9]#(1,)(S|.[0-9]#(1,)S))#(,1)|.[0-9]#(1,)S|S))#(,1)|"&
-			 "M([0-9]#(1,)(S|.[0-9]#(1,)S)|.[0-9]#(1,)M)#(,1)|"&
-			 "S|"&
-			 ".[0-9]#(1,)S))";
+             "(H([0-9]#(1,)(M([0-9]#(1,)(S|.[0-9]#(1,)S))#(,1)|.[0-9]#(1,)S|S))#(,1)|"&
+             "M([0-9]#(1,)(S|.[0-9]#(1,)S)|.[0-9]#(1,)M)#(,1)|"&
+             "S|"&
+             ".[0-9]#(1,)S))";
 
 //anySimpleType
 
@@ -53,9 +53,9 @@ type record AnyType
 }
 with {
 variant "XSD:anyType";
-variant "embedValues";
-variant (attr) "anyAttributes";
-variant (elem_list) "anyElement";
+//variant "embedValues";
+//variant (attr) "anyAttributes";
+//variant (elem_list) "anyElement";
 };
 // String types
 
@@ -209,9 +209,9 @@ variant "XSD:double";
 
 // Time types
 
-type charstring Duration //(pattern TODO Check the pattern "PT5S" not matching
-  //"{dash}#(,1)P({nums}(Y({nums}(M({nums}D{durTime}#(,1)|{durTime}#(,1))|D{durTime}#(,1))|" &
-  //"{durTime}#(,1))|M({nums}D{durTime}#(,1)|{durTime}#(,1))|D{durTime}#(,1))|{durTime})")
+type charstring Duration (pattern
+  "{dash}#(,1)P({nums}(Y({nums}(M({nums}D{durTime}#(,1)|{durTime}#(,1))|D{durTime}#(,1))|" &
+  "{durTime}#(,1))|M({nums}D{durTime}#(,1)|{durTime}#(,1))|D{durTime}#(,1))|{durTime})")
 with {
 variant "XSD:duration";
 };
@@ -305,23 +305,23 @@ type utf8string XMLCompatibleString
 	char(0,0,0,9)..char(0,0,0,9),
 	char(0,0,0,10)..char(0,0,0,10),
 	char(0,0,0,13)..char(0,0,0,13),
-	char(0,0,0,32)..char(0,0,215,255),
-	char(0,0,224,0)..char(0,0,255,253),
-	char(0,1,0,0)..char(0,16,255,253)
+  	char(0,0,0,32)..char(0,0,215,255),
+  	char(0,0,224,0)..char(0,0,255,253),
+  	char(0,1,0,0)..char(0,16,255,253)
 );
 
 type utf8string XMLStringWithNoWhitespace
 (
 	char(0,0,0,33)..char(0,0,215,255),
-	char(0,0,224,0)..char(0,0,255,253),
-	char(0,1,0,0)..char(0,16,255,253)
+  	char(0,0,224,0)..char(0,0,255,253),
+  	char(0,1,0,0)..char(0,16,255,253)
 );
 
 type utf8string XMLStringWithNoCRLFHT
 (
 	char(0,0,0,32)..char(0,0,215,255),
-	char(0,0,224,0)..char(0,0,255,253),
-	char(0,1,0,0)..char(0,16,255,253)
+ 	char(0,0,224,0)..char(0,0,255,253),
+  	char(0,1,0,0)..char(0,16,255,253)
 );
 
 }
diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn
index fac90f36f4d0e6a026567eb2e5e0f29b2ba2de97..a2dffbe4ee0c9c64ee2f5a889ca53862d7265e2c 100644
--- a/OneM2M_PermutationFunctions.ttcn
+++ b/OneM2M_PermutationFunctions.ttcn
@@ -6320,6 +6320,77 @@ module OneM2M_PermutationFunctions {
 			}//end group AccessControlPolicy
 			
 		}//end group Security
+		
+		group Annoucement {
+			
+			group Basic {
+		
+				function f_CSE_ANNC_001(ResourceType p_resourceType, template RequestPrimitive p_createRequestAnnc, in template RequestPrimitive p_requestCreatePrimitive := omit, in template RequestPrimitive p_requestUpdatePrimitive := omit) runs on AeSimu {
+
+					// Local variables
+					var MsgIn v_response;
+					var RequestPrimitive v_request;
+					var integer v_parentIndex := -1;
+					var integer v_aeIndex := -1;
+					var integer v_resourceIndex;
+					var ResponsePrimitive v_responsePrimitive;
+					var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit);
+					v_create.primitiveContent.aE.announceTo := {PX_CSE_ID};
+				   
+					// Test control
+
+					// Test component configuration
+					f_cf02Up();
+
+					// Test adapter configuration
+			
+					//Register the CSE
+					vc_cse1.start(f_cse_registrationRemoteCse(mw_createRemoteCSE));	
+					vc_cse1.done;
+					
+					//Preamble
+					vc_cse1.start(f_cse_resourceAnnouncementHandler(mw_createAEAnnc(-, -, -)));
+					v_aeIndex := f_cse_createResource(int2,v_create);
+					vc_cse1.done;
+					
+					// Test Body
+					if (ispresent (p_requestUpdatePrimitive)) {
+						v_resourceIndex := f_cse_createResource(p_resourceType,p_requestCreatePrimitive);
+ 				      	v_request := f_getUpdateRequestPrimitive(p_resourceType, v_resourceIndex, p_requestUpdatePrimitive);
+					  	v_responsePrimitive.responseStatusCode := int2004;
+					} else {
+					  	v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestCreatePrimitive, v_parentIndex);
+					  	v_responsePrimitive.responseStatusCode := int2001;
+					}
+					vc_cse1.start(f_cse_resourceAnnouncementHandler(p_createRequestAnnc));	
+					mcaPort.send(m_request(v_request));
+
+					tc_ac.start;
+					alt {
+						[] mcaPort.receive(mw_response(mw_responsePrimitive(v_responsePrimitive.responseStatusCode))) -> value v_response {
+							tc_ac.stop;
+							setverdict(pass, __SCOPE__, ": Operation for resource " & int2str(enum2int(p_resourceType)) & " performed successfully");	
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value vc_response {
+							tc_ac.stop;
+							setverdict(fail, __SCOPE__, ": Wrong response status code");
+						}
+						[] tc_ac.timeout {
+							setverdict(fail, __SCOPE__, ": No answer while updating resource type " & int2str(enum2int(p_resourceType)));
+						}
+					}
+										
+					// Postamble
+					f_cse_postamble_deleteResources();
+
+					// Tear down
+					f_cf02Down();
+
+				}//end f_CSE_ANNC_001
+	
+			}//end group Basic
+		
+		}// end group Announcement
 	
 	}//end group CSE
 
diff --git a/OneM2M_Testcases_AE_Release_1.ttcn b/OneM2M_Testcases_AE_Release_1.ttcn
index ef3d6b938c5b075c66b57dc83f1853d96069c42a..0c7bbbbe445bb6772b2a84f1c9687b207cd1403e 100644
--- a/OneM2M_Testcases_AE_Release_1.ttcn
+++ b/OneM2M_Testcases_AE_Release_1.ttcn
@@ -70,7 +70,7 @@ module OneM2M_Testcases_AE_Release_1 {
 					}
 					
 				}//end group g_AE_GEN_CRE_002
-					
+						
 				group g_AE_GEN_CRE_002 {
 							
 					/**
@@ -429,7 +429,7 @@ module OneM2M_Testcases_AE_Release_1 {
 					testcase TC_AE_REG_CRE_002_RN() runs on CseSimu system AeSystem {
 						//primitives for utPort
 						var template UtTriggerPrimitive v_utRequest := m_createAe("UNINITIALIZED");
-                        var template RequestPrimitive v_createAe := mw_createAe;
+						var template RequestPrimitive v_createAe := mw_createAe;
 						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid AE CREATE Registration Request containing attribute ResourceName";
 						v_utRequest.primitiveContent.aE.resourceName := "UNINITIALIZED";
 						v_createAe.primitiveContent.aE.resourceName := ?;
@@ -527,7 +527,7 @@ module OneM2M_Testcases_AE_Release_1 {
 					}
 	
 				}//End of subgroup AE_REG_CRE_002
-			
+				
 			} // End of subgroup Create
 			
 			group Delete {
@@ -735,7 +735,7 @@ module OneM2M_Testcases_AE_Release_1 {
 				 
 				 group g_AE_DMR_CRE_004 {
 				 
-				 	testcase TC_AE_DMR_CRE_004_ACPI() runs on CseSimu system AeSystem {
+					testcase TC_AE_DMR_CRE_004_ACPI() runs on CseSimu system AeSystem {
 						var template UtTriggerPrimitive v_utRequest := m_utCreateContainer;
 						var template RequestPrimitive v_request := mw_createContainer;
 						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid CREATE Request for Container containing attribute AccessControlPolicyIDs";
@@ -753,7 +753,7 @@ module OneM2M_Testcases_AE_Release_1 {
 						f_AE_DMR_CRE_004(v_utRequest,v_request,v_action);
 					}
 				 	
-				 	testcase TC_AE_DMR_CRE_004_MBS() runs on CseSimu system AeSystem {
+					testcase TC_AE_DMR_CRE_004_MBS() runs on CseSimu system AeSystem {
 						var template UtTriggerPrimitive v_utRequest := m_utCreateContainer;
 						var template RequestPrimitive v_request := mw_createContainer;
 						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid CREATE Request for Container containing attribute MaxByteSize";
@@ -771,7 +771,7 @@ module OneM2M_Testcases_AE_Release_1 {
 						f_AE_DMR_CRE_004(v_utRequest,v_request,v_action);
 					}
 				 	
-				 	testcase TC_AE_DMR_CRE_004_OR() runs on CseSimu system AeSystem {
+					testcase TC_AE_DMR_CRE_004_OR() runs on CseSimu system AeSystem {
 						var template UtTriggerPrimitive v_utRequest := m_utCreateContainer;
 						var template RequestPrimitive v_request := mw_createContainer;
 						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid CREATE Request for Container containing attribute OntologyRef";
@@ -866,7 +866,7 @@ module OneM2M_Testcases_AE_Release_1 {
 
 						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
 						v_expectedUpdateRequestAe.primitiveContent.aE.appName := ?;
-												
+						
 						f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe);
 					}
 	
@@ -880,7 +880,7 @@ module OneM2M_Testcases_AE_Release_1 {
 
 						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
 						v_expectedUpdateRequestAe.primitiveContent.aE.pointOfAccess := ?;
-												
+						
 						f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe);
 					}
 	
@@ -894,7 +894,7 @@ module OneM2M_Testcases_AE_Release_1 {
 
 						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
 						v_expectedUpdateRequestAe.primitiveContent.aE.ontologyRef := ?;
-												
+						
 						f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe);
 					}
 	
@@ -908,7 +908,7 @@ module OneM2M_Testcases_AE_Release_1 {
 
 						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
 						v_expectedUpdateRequestAe.primitiveContent.aE.nodeLink := ?;
-												
+						
 						f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe);
 					}
 	
@@ -921,7 +921,7 @@ module OneM2M_Testcases_AE_Release_1 {
 
 						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
 						v_expectedUpdateRequestAe.primitiveContent.aE.requestReachability := ?;
-												
+						
 						f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe);
 					}
 	
@@ -934,7 +934,7 @@ module OneM2M_Testcases_AE_Release_1 {
 
 						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
 						v_expectedUpdateRequestAe.primitiveContent.aE.contentSerialization := ?;
-												
+						
 						f_AE_DMR_UPD_001(v_utRequestTestBody,v_action, v_expectedUpdateRequestAe);
 					}
 	
@@ -1006,7 +1006,7 @@ module OneM2M_Testcases_AE_Release_1 {
 						f_AE_DMR_UPD_002(v_utRequest,v_request,v_action);
 					}
 
-					}//End of subgroup AE_DMR_UPD_002
+				}//End of subgroup AE_DMR_UPD_002
 			
 			}//End of subgroup Update
 
@@ -1018,11 +1018,11 @@ module OneM2M_Testcases_AE_Release_1 {
 					 * @desc Check that the IUT sends a RETRIEVE Request on the TARGET_RESOURCE_ADDRESS to CSE
 					 */
 	
-				 	testcase TC_AE_DMR_RET_001_CB() runs on CseSimu system AeSystem {
+					testcase TC_AE_DMR_RET_001_CB() runs on CseSimu system AeSystem {
 						var integer v_auxInteger := f_setLocalResource(valueof(m_primitiveContentCSEBase(m_contentCreateCSEBase)), int5);
 						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid RETRIEVE Request for CSEBase";
 						f_AE_DMR_RET_001(int5, f_getLocalResourceAddress(v_auxInteger),v_action);
-				 	}
+					}
 				 	
 					testcase TC_AE_DMR_RET_001_AE() runs on CseSimu system AeSystem {
 						var integer v_auxInteger := f_setLocalResource(valueof(m_primitiveContentAe(m_contentCreateAe(omit, omit, omit, omit))),int2);
@@ -1446,43 +1446,43 @@ module OneM2M_Testcases_AE_Release_1 {
 				testcase TC_AE_SUB_CRE_001() runs on CseSimu system AeSystem {
 				
 					//variables
-				  	var template UtTriggerPrimitive v_utRequest := m_utCreateSubscription;
-				  	var MsgIn v_request;
+					var template UtTriggerPrimitive v_utRequest := m_utCreateSubscription;
+					var MsgIn v_request;
 					var ResponsePrimitive v_responsePrimitive;
 					var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid subscription creation request";
 				  	
 					var integer v_auxInteger := f_setLocalResource(valueof(m_primitiveContentAe(m_contentCreateAe(omit, omit, omit, omit))),int2);
 					v_utRequest.to_ := f_getLocalResourceAddress(v_auxInteger);
 
-				  	f_cf03Up();
+					f_cf03Up();
 
 					//send triggering primitive to SUT
-				  	f_sendUtPrimitive(v_utRequest,v_action);
+					f_sendUtPrimitive(v_utRequest,v_action);
 				  	
-				  	//Test behavior
-				  	tc_ac.start;
-				  	alt{
+					//Test behavior
+					tc_ac.start;
+					alt{
 						[] mcaPortIn.receive(mw_request(mw_createSubscription)) -> value v_request {
 							tc_ac.stop;
-						  	setverdict(pass, __SCOPE__, " : Subscription creation request is accepted!");
+							setverdict(pass, __SCOPE__, " : Subscription creation request is accepted!");
 
-						  	//set responseStatusCode back to SUT
+							//set responseStatusCode back to SUT
 							v_responsePrimitive := valueof(m_responsePrimitive(int2001, "To_be_defined", omit));
 		
-						  	//send back responsePrimitive
+							//send back responsePrimitive
 							mcaPortIn.send(m_response(v_responsePrimitive));
-					  	}
+						}
 						[] mcaPortIn.receive {
-						  	tc_ac.stop;
-						  	setverdict(fail, __SCOPE__, " : Subscription creation request is rejected due to not including mandatory attributes!!");
-					  	}
-					  	[] tc_ac.timeout{
-						 	setverdict(fail, __SCOPE__, " : Timeout due to no response received from requested SUT!");
-					  	}
-				  	}
-
-				  	// Postamble
-				  	f_cf03Down();
+							tc_ac.stop;
+							setverdict(fail, __SCOPE__, " : Subscription creation request is rejected due to not including mandatory attributes!!");
+						}
+						[] tc_ac.timeout{
+							setverdict(fail, __SCOPE__, " : Timeout due to no response received from requested SUT!");
+						}
+					}
+
+					// Postamble
+					f_cf03Down();
 				}
 				
 				group g_AE_SUB_CRE_002 {
@@ -1510,7 +1510,7 @@ module OneM2M_Testcases_AE_Release_1 {
 					
 					testcase TC_AE_SUB_CRE_002_ENC() runs on CseSimu system AeSystem {
 						var template UtTriggerPrimitive v_utRequest := m_utCreateSubscription;
-                        var template RequestPrimitive v_requestT := mw_createSubscription;
+						var template RequestPrimitive v_requestT := mw_createSubscription;
 						var universal charstring v_action :=  __SCOPE__ & ": Please, send a valid subscription creation request with optional attribute createdBefore";
 						var integer v_auxInteger := f_setLocalResource(valueof(m_primitiveContentAe(m_contentCreateAe(omit, omit, omit, omit))),int2);
 						v_utRequest.to_ := f_getLocalResourceAddress(v_auxInteger);
diff --git a/OneM2M_Testcases_CSE_Release_1.ttcn b/OneM2M_Testcases_CSE_Release_1.ttcn
index 6892d3108bda63772712c1aa1cc3c6e22918b85e..dc06935c148d21d095d7ba70534e27fef135f626 100644
--- a/OneM2M_Testcases_CSE_Release_1.ttcn
+++ b/OneM2M_Testcases_CSE_Release_1.ttcn
@@ -872,7 +872,7 @@ module OneM2M_Testcases_CSE_Release_1 {
 					//Test Body
 					f_cse_createResource(int2, m_createAe(PX_APP_ID, omit, f_getResourceId(vc_resourcesList[v_aeIndex].resource)));
 					
-					vc_cse1.start(f_cse_resourceAnnouncementHandler(PX_CSE_ID, f_getResourceAddress(v_aeIndex, e_nonHierarchical, e_spRelative)));
+					vc_cse1.start(f_cse_resourceAnnouncementHandler(mw_createAEAnnc(PX_CSE_ID, -, -, -)));
 					vc_cse1.done;
 					
 					tc_ac.start;
diff --git a/OneM2M_Testcases_CSE_Release_2.ttcn b/OneM2M_Testcases_CSE_Release_2.ttcn
index 4cceda80f0a95292d7130fa1d6c47fc975c944bc..6da18b8fb9a5d1554fc8f859fd946a42968858e3 100644
--- a/OneM2M_Testcases_CSE_Release_2.ttcn
+++ b/OneM2M_Testcases_CSE_Release_2.ttcn
@@ -6776,6 +6776,101 @@ module OneM2M_Testcases_CSE_Release_2 {
 			}//end group AccessControlPolicy
 			
 		}//end group Security
+		
+		group Announcement {
+			
+			group Basic {
+		
+				group g_CSE_ANNC_001 {
+			
+					testcase TC_CSE_ANNC_001_ACP_UPD() runs on Tester system CseSystem {
+						// Local variables
+						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						var template RequestPrimitive v_updateRequest := m_updateAcpBase;
+						var template RequestPrimitive v_createRequestAnnc := mw_createAccessControlPolicyAnnc;
+  
+						v_updateRequest.primitiveContent.accessControlPolicy.announceTo := {f_getAnnouncementTargetPoA()};
+                  
+						v_ae1.start(f_CSE_ANNC_001(int1, v_createRequestAnnc, omit, v_updateRequest));//AccessControlPolicy
+						v_ae1.done;
+					}
+					
+					testcase TC_CSE_ANNC_001_ACP_CRE() runs on Tester system CseSystem {
+						// Local variables
+						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						var template RequestPrimitive v_createRequest := m_createAcpBase;
+						var template RequestPrimitive v_createRequestAnnc := mw_createAccessControlPolicyAnnc;
+  
+						v_createRequest.primitiveContent.accessControlPolicy.announceTo := {f_getAnnouncementTargetPoA()};
+  
+						v_ae1.start(f_CSE_ANNC_001(int1, v_createRequestAnnc, v_createRequest, omit));//AccessControlPolicy
+						v_ae1.done;
+					}
+					
+					testcase TC_CSE_ANNC_001_CNT_UPD() runs on Tester system CseSystem {
+						// Local variables
+						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						var template RequestPrimitive v_updateRequest := m_updateContainerBase;
+						var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnncBase;
+  
+						v_updateRequest.primitiveContent.container.announceTo := {f_getAnnouncementTargetPoA()};
+  
+						v_ae1.start(f_CSE_ANNC_001(int3, v_createRequestAnnc, omit, v_updateRequest));//Container
+						v_ae1.done;
+					}
+					
+					testcase TC_CSE_ANNC_001_CNT_CRE() runs on Tester system CseSystem {
+						// Local variables
+						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						var template RequestPrimitive v_createRequest := m_createContainerBase;
+						var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnncBase;
+  
+						v_createRequest.primitiveContent.container.announceTo := {f_getAnnouncementTargetPoA()};
+  
+						v_ae1.start(f_CSE_ANNC_001(int3, v_createRequestAnnc, v_createRequest, omit));//Container
+						v_ae1.done;
+					}
+					
+					testcase TC_CSE_ANNC_001_GRP_UPD() runs on Tester system CseSystem {
+						// Local variables
+						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						var template RequestPrimitive v_updateRequest := m_updateGroupBase;
+						var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnncBase;
+  
+						v_updateRequest.primitiveContent.group_.announceTo := {f_getAnnouncementTargetPoA()};
+  
+						v_ae1.start(f_CSE_ANNC_001(int9, v_createRequestAnnc, omit, v_updateRequest));//Group
+						v_ae1.done;
+					}
+					
+					testcase TC_CSE_ANNC_001_GRP_CRE() runs on Tester system CseSystem {
+						// Local variables
+						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						var template RequestPrimitive v_createRequest := m_createGroupBase;
+						var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnncBase;
+  
+						v_createRequest.primitiveContent.group_.announceTo := {f_getAnnouncementTargetPoA()};
+  
+						v_ae1.start(f_CSE_ANNC_001(int9, v_createRequestAnnc, v_createRequest, omit));//Group
+						v_ae1.done;
+					}
+					
+					testcase TC_CSE_ANNC_001_CIN_CRE() runs on Tester system CseSystem {
+						// Local variables
+						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						var template RequestPrimitive v_createRequest := m_createContentInstanceBase;
+						var template RequestPrimitive v_createRequestAnnc := mw_createContentInstanceAnncBase;
+  
+						v_createRequest.primitiveContent.contentInstance.announceTo := {f_getAnnouncementTargetPoA()};
+  
+						v_ae1.start(f_CSE_ANNC_001(int4, v_createRequestAnnc, v_createRequest, omit));//ContentInstance
+						v_ae1.done;
+					}
+			
+				}// end group g_CSE_ANNC_001
+		
+			}//end group Basic
+		}//end group Announcement
 	
 	}//end group CSE
 
diff --git a/Requirements collection/TST-Requirements_collection.xlsx b/Requirements collection/TST-Requirements_collection.xlsx
new file mode 100644
index 0000000000000000000000000000000000000000..7d04d1de7cd2829cd2f796259575a4ee7d948f67
Binary files /dev/null and b/Requirements collection/TST-Requirements_collection.xlsx differ