diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index 3e814e3a24079f96463195c9e168a9944b4960ce..024978d020340e9a02d54acf93b70dc4b1ea541a 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -1904,26 +1904,33 @@ module OneM2M_Functions {
 						[] mccPortIn.receive(mw_request(p_requestprimitive)) -> value v_request {
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ":INFO: Expected Announcement received");
-							//Save resource and generate required attributes
-							v_announcedResource:= f_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);
-							
-							if(isvalue(p_expectedResourceIndex)){
-								if(p_expectedResourceIndex == f_getResourceIndex(v_request.primitive.requestPrimitive.to_)){
-									setverdict(pass, __SCOPE__ & ":INFO: Announcement Parent Resource Address matched");
-									v_responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,v_request.primitive.requestPrimitive.requestIdentifier));
-									v_responsePrimitive.primitiveContent := vc_localResourcesList[p_expectedResourceIndex].resource;
-								} else {
-									setverdict(fail, __SCOPE__ & ":ERROR: Announcement Parent Resource Address not matched");
-									v_responsePrimitive := valueof(m_responsePrimitive(int4000,v_request.primitive.requestPrimitive.requestIdentifier));
-									v_responsePrimitive.primitiveContent := omit;
-								}	
+							v_parentIndex := f_getResourceIndex(v_request.primitive.requestPrimitive.to_);
+							if(v_parentIndex == -1) {
+								log(__SCOPE__&": ERROR: Target resource not found");
+								v_responsePrimitive := valueof(m_responsePrimitive(int4004,v_request.primitive.requestPrimitive.requestIdentifier));
+	
 							} else {
-								v_responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,v_request.primitive.requestPrimitive.requestIdentifier));
-								if(p_responseStatusCode == int2001) {
-									v_responsePrimitive.primitiveContent := vc_localResourcesList[v_announcedResourceIndex].resource;
+								//Save resource and generate required attributes
+								v_announcedResource:= f_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);
+								
+								if(isvalue(p_expectedResourceIndex)){
+									if(p_expectedResourceIndex == v_parentIndex){
+										setverdict(pass, __SCOPE__ & ":INFO: Announcement Parent Resource Address matched");
+										v_responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,v_request.primitive.requestPrimitive.requestIdentifier));
+										v_responsePrimitive.primitiveContent := vc_localResourcesList[p_expectedResourceIndex].resource;
+									} else {
+										setverdict(fail, __SCOPE__ & ":ERROR: Announcement Parent Resource Address not matched");
+										v_responsePrimitive := valueof(m_responsePrimitive(int4000,v_request.primitive.requestPrimitive.requestIdentifier));
+										v_responsePrimitive.primitiveContent := omit;
+									}	
 								} else {
-									v_responsePrimitive.primitiveContent := omit;
+									v_responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,v_request.primitive.requestPrimitive.requestIdentifier));
+									if(p_responseStatusCode == int2001) {
+										v_responsePrimitive.primitiveContent := vc_localResourcesList[v_announcedResourceIndex].resource;
+									} else {
+										v_responsePrimitive.primitiveContent := omit;
+									}
 								}
 							}
 							v_responsePrimitive.from_ := PX_CSE1_ID;
diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn
index 89e04e72b0f2577d00d0c7079b1e3cfc13803fc8..e9fe754ececfefc255d52f4d0c7a7d2d58a8f823 100644
--- a/OneM2M_PermutationFunctions.ttcn
+++ b/OneM2M_PermutationFunctions.ttcn
@@ -7314,7 +7314,6 @@ module OneM2M_PermutationFunctions {
 					// Local variables
 					var AeSimu v_ae1 := AeSimu.create("AE1") alive;
 					var MsgIn v_request;
-					var integer v_parentIndex := -1;
 					var integer v_aeIndex := -1;
 					var integer v_resourceIndex;
 					var integer v_aEAnncIndex := -1;
@@ -7337,27 +7336,12 @@ module OneM2M_PermutationFunctions {
 					f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -));
 					v_ae1.done;
 					
+					v_aeIndex := f_getLatestResourceIndex(v_ae1);
+					
 					// Test Body
-					v_ae1.start(f_cse_sendCreateRequestPrimitive(p_resourceType,p_requestCreatePrimitive, v_parentIndex));
+					v_ae1.start(f_cse_createResource(p_resourceType,p_requestCreatePrimitive, v_aeIndex));
 					
-					tc_ac.start;
-					alt {
-						[] mccPortIn.receive(mw_request(p_createRequestAnnc)) -> value v_request {
-							tc_ac.stop;
-							setverdict(pass, __SCOPE__ & ":INFO: CREATE REQUEST received");
-							
-							if(match(v_request.primitive.requestPrimitive.to_, f_getLocalResourceAddress(v_aEAnncIndex, e_hierarchical, e_spRelative)) or 
-							match(v_request.primitive.requestPrimitive.to_, f_getLocalResourceAddress(v_aEAnncIndex, e_nonHierarchical, e_spRelative))) {
-								setverdict(pass, __SCOPE__ & ":matching ANNC_PARENT_RESOURCE_ADDRESS");     
-							} else {
-								setverdict(fail, __SCOPE__ & ":mis-matching ANNC_PARENT_RESOURCE_ADDRESS");
-							}
-										
-						}
-						[] tc_ac.timeout {
-							setverdict(fail, __SCOPE__ & ":ERROR:  No CREATE REQUEST received");
-						}
-					}
+					f_cse_announcementProcedure_createHandler(p_createRequestAnnc);					
 					
 					v_ae1.done;