diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn
index 705b8e742d878d3e7263f65e02bd3a778054978b..2f6f2fe10f1fb064bd99a3177855677e7c4fff29 100644
--- a/LibOneM2M/OneM2M_Templates.ttcn
+++ b/LibOneM2M/OneM2M_Templates.ttcn
@@ -731,6 +731,13 @@ module OneM2M_Templates {
 				primitiveContent := {accessControlPolicyAnnc := mw_contentCreateAcpAnnc(-)}
 			};
         	
+			/**
+			  * @desc Reception template for CREATE AcpAnnc
+			  */
+			template RequestPrimitive mw_createRemoteCSEAnnc(template XSD.ID p_from := ?, template XSD.ID p_to := ?, template AcpType p_accessControlPolicyIds := ?) modifies mw_create := {
+				resourceType := int10016,
+				primitiveContent := {remoteCSEAnnc := mw_contentCreateRemoteCSEAnnc({"Credential-ID:None"}, p_accessControlPolicyIds)}
+			};
        	
 			/**
 			 * @desc Base CREATE request primitive for AccessControlPolicy resource (AUX)
@@ -1432,6 +1439,34 @@ module OneM2M_Templates {
 			choice := omit//NA
 		};	
 		
+		/**
+		 * @desc Base reception template of primitiveContent for CREATE operation for RemoteCSEAnnc resource
+		 * @param p_labels Labels
+		 * @param p_accessControlPolicyIds AcpIDs
+		 * @param p_appId App ID
+		 * @param p_nodeLink Node link
+		 */
+		template RemoteCSEAnnc_optional mw_contentCreateRemoteCSEAnnc (in template  Labels p_labels := ?, in template AcpType p_accessControlPolicyIds := ?, template XSD.AnyURI p_link := ?) := {
+			resourceName := omit,//NA M
+			resourceType := omit,//NA M
+			resourceID := omit,//NA M
+			parentID := omit,//NA M
+			creationTime := omit,//NA M
+			lastModifiedTime := omit,//NA M
+			labels := p_labels,//MA
+			accessControlPolicyIDs := p_accessControlPolicyIds,//MA
+			expirationTime := ?,//MA M
+			link := p_link,//M
+			dynamicAuthorizationConsultationIDs := omit, //OA			
+			cseType := *,//OA
+			pointOfAccess := *,//OA
+			cSE_ID := *,//OA
+			requestReachability := *, //OA {"http://127.0.0.1:1400/monitor"},//O //{"http://192.168.1.92:18080/notifications/AE"}, // TODO: Check this => AE PoA
+			nodeLink := *,//OA
+			e2eSecInfo := ?,//OA
+			choice := omit//NA
+		};
+		
     	/**
     	 * @desc Base primitiveContent for CREATE operation for AE resource
     	 * @param p_name Resource name
diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn
index e9085a37c299d51b708e6b499ea6de23be36d991..51466f6ae624323dc5a4db82f84ae62b5e5315b6 100644
--- a/OneM2M_PermutationFunctions.ttcn
+++ b/OneM2M_PermutationFunctions.ttcn
@@ -6455,7 +6455,7 @@ module OneM2M_PermutationFunctions {
 					v_ae1.start(f_cse_sendUpdateRequestPrimitive(p_resourceType, p_requestUpdatePrimitive));
 					v_ae1.done;
 					
-					v_remoteCSEAnncIndex := f_cse_announcementProcedure_createHandler(p_createRequestAnnc);
+					f_cse_announcementProcedure_createHandler(p_createRequestAnnc);
 						
 					// Postamble
 					f_cse_postamble_deleteResourcesCSE();
@@ -6525,11 +6525,10 @@ module OneM2M_PermutationFunctions {
 
 				}//end f_CSE_ANNC_CRE_003
 				
-				function f_CSE_ANNC_CRE_004(ResourceType p_resourceType, template RequestPrimitive p_createRequestAnnc, in template RequestPrimitive p_requestCreatePrimitive := omit) runs on CseSimu {
+				function f_CSE_ANNC_CRE_004_CseSimu(ResourceType p_resourceType, template RequestPrimitive p_createRequestAnnc, in template RequestPrimitive p_requestCreatePrimitive := omit) runs on CseSimu {
 					// Local variables
 					var AeSimu v_ae1 := AeSimu.create("AE1") alive;
 					var MsgIn v_request;
-					var RequestPrimitive v_request;
 					var integer v_parentIndex := -1;
 					var integer v_aeIndex := -1;
 					var integer v_resourceIndex;
@@ -6547,7 +6546,7 @@ module OneM2M_PermutationFunctions {
  				    f_cse_registrationRemoteCse(mw_createRemoteCSE);	
 					
 					//Preamble
-					v_aEAnncIndex := f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -));
+					f_cse_announcementProcedure_createHandler(mw_createAEAnnc(-, -, -));
 					v_ae1.start(f_cse_createResource(int2,v_create));
 					v_ae1.done;
 					
@@ -6582,6 +6581,118 @@ module OneM2M_PermutationFunctions {
 
 				}//end f_CSE_ANNC_CRE_004
 				
+				function f_CSE_ANNC_CRE_005_CseSimu(ResourceType p_resourceType, template RequestPrimitive p_createRequestAnnc, in template RequestPrimitive p_requestCreatePrimitive := omit) runs on CseSimu {
+					// 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_remoteCSEAnncIndex := -1;
+					var ResponsePrimitive v_responsePrimitive;
+					var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit);
+   
+					// Test control
+
+					// Test component configuration
+					f_cf02UpCseSimuMaster();
+
+					// Test adapter configuration
+					// Register the CSE
+					f_cse_registrationRemoteCse(mw_createRemoteCSE);	
+	
+					//Preamble
+					f_cse_announcementProcedure_createHandler(mw_createRemoteCSEAnnc(-, -, -));
+					v_ae1.start(f_cse_createResource(int2,v_create));
+					v_ae1.done;
+	
+					// Test Body
+					v_ae1.start(f_cse_sendCreateRequestPrimitive(p_resourceType,p_requestCreatePrimitive, v_parentIndex));
+					v_ae1.done;
+	
+					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");
+						}
+					}
+
+					// Postamble
+					f_cse_postamble_deleteResourcesCSE();
+
+					// Tear down
+					f_cf02DownCseSimuMaster();
+
+				}//end f_CSE_ANNC_CRE_005
+				
+				function f_CSE_ANNC_CRE_006_CseSimu(ResourceType p_resourceType, template RequestPrimitive p_createRequestAnnc, in template RequestPrimitive p_requestCreatePrimitive := omit) runs on CseSimu {
+					// 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_remoteCSEAnncIndex := -1;
+					var ResponsePrimitive v_responsePrimitive;
+					var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit);
+   
+					// Test control
+
+					// Test component configuration
+					f_cf02UpCseSimuMaster();
+
+					// Test adapter configuration
+					// Register the CSE
+					f_cse_registrationRemoteCse(mw_createRemoteCSE);	
+
+					//Preamble
+					f_cse_announcementProcedure_createHandler(mw_createRemoteCSEAnnc(-, -, -));
+					v_ae1.start(f_cse_createResource(int2,v_create));
+					v_ae1.done;
+
+					// Test Body
+					v_ae1.start(f_cse_sendCreateRequestPrimitive(p_resourceType,p_requestCreatePrimitive, v_parentIndex));
+					v_ae1.done;
+
+					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");
+						}
+					}
+
+					// Postamble
+					f_cse_postamble_deleteResourcesCSE();
+
+					// Tear down
+					f_cf02DownCseSimuMaster();
+
+				}//end f_CSE_ANNC_CRE_006
+				
 			} //end group Create
 		
 		}// end group Announcement
diff --git a/OneM2M_Testcases_CSE_Release_2.ttcn b/OneM2M_Testcases_CSE_Release_2.ttcn
index 77a4be6302114014de12dbb0408d8f1b31a5f16a..28accb34dcbf702c27aa1c07411c69c8e7414727 100644
--- a/OneM2M_Testcases_CSE_Release_2.ttcn
+++ b/OneM2M_Testcases_CSE_Release_2.ttcn
@@ -6996,6 +6996,112 @@ module OneM2M_Testcases_CSE_Release_2 {
 					}
 					
 				}// end group g_CSE_ANNC_CRE_004
+				
+				group g_CSE_ANNC_CRE_005 {
+					
+					testcase TC_CSE_ANNC_CRE_005_ACP() runs on Tester system CseSystem {
+						//Local variables
+						 var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
+						 var template RequestPrimitive v_createRequest := m_createAcpBase;
+						 var template RequestPrimitive v_createRequestAnnc := mw_createAccessControlPolicyAnnc;
+	  
+						 v_createRequest.primitiveContent.accessControlPolicy.announceTo := {PX_CSE1_ID};
+	  
+						 v_cse1.start(f_CSE_ANNC_CRE_005_CseSimu(int1, v_createRequestAnnc, v_createRequest));//AccessControlPolicy
+						 v_cse1.done;
+					}
+					
+					testcase TC_CSE_ANNC_CRE_005_CNT() runs on Tester system CseSystem {
+						//Local variables
+						 var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
+						 var template RequestPrimitive v_createRequest := m_createContainerBase;
+						 var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnncBase;
+  
+						 v_createRequest.primitiveContent.container.announceTo := {PX_CSE1_ID};
+  
+						 v_cse1.start(f_CSE_ANNC_CRE_005_CseSimu(int3, v_createRequestAnnc, v_createRequest));//Container
+						 v_cse1.done;
+					}
+					
+					testcase TC_CSE_ANNC_CRE_005_CIN() runs on Tester system CseSystem {
+						//Local variables
+						 var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
+						 var template RequestPrimitive v_createRequest := m_createContentInstanceBase;
+						 var template RequestPrimitive v_createRequestAnnc := mw_createContentInstanceAnnc;
+  
+						 v_createRequest.primitiveContent.contentInstance.announceTo := {PX_CSE1_ID};
+  
+						 v_cse1.start(f_CSE_ANNC_CRE_005_CseSimu(int4, v_createRequestAnnc, v_createRequest));//ContentInstance
+						 v_cse1.done;
+						
+					}
+					
+					testcase TC_CSE_ANNC_CRE_005_GRP() runs on Tester system CseSystem {
+						//Local variables
+						 var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
+						 var template RequestPrimitive v_createRequest := m_createGroupBase;
+						 var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnncBase;
+  
+						 v_createRequest.primitiveContent.group_.announceTo := {PX_CSE1_ID};
+  
+						 v_cse1.start(f_CSE_ANNC_CRE_005_CseSimu(int9, v_createRequestAnnc, v_createRequest));//Group
+						 v_cse1.done;
+					}
+					
+				} //end group g_CSE_ANNC_CRE_005
+				
+				group g_CSE_ANNC_CRE_006 {
+					
+					testcase TC_CSE_ANNC_CRE_006_ACP() runs on Tester system CseSystem {
+						//Local variables
+						 var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
+						 var template RequestPrimitive v_createRequest := m_createAcpBase;
+						 var template RequestPrimitive v_createRequestAnnc := mw_createAccessControlPolicyAnnc;
+  
+						 v_createRequest.primitiveContent.accessControlPolicy.announceTo := {PX_CSE1_ID};
+  
+						 v_cse1.start(f_CSE_ANNC_CRE_006_CseSimu(int1, v_createRequestAnnc, v_createRequest));//AccessControlPolicy
+						 v_cse1.done;
+					}
+	
+					testcase TC_CSE_ANNC_CRE_006_CNT() runs on Tester system CseSystem {
+						//Local variables
+						 var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
+						 var template RequestPrimitive v_createRequest := m_createContainerBase;
+						 var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnncBase;
+  
+						 v_createRequest.primitiveContent.container.announceTo := {PX_CSE1_ID};
+  
+						 v_cse1.start(f_CSE_ANNC_CRE_006_CseSimu(int3, v_createRequestAnnc, v_createRequest));//Container
+						 v_cse1.done;
+					}
+	
+					testcase TC_CSE_ANNC_CRE_006_CIN() runs on Tester system CseSystem {
+						//Local variables
+						 var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
+						 var template RequestPrimitive v_createRequest := m_createContentInstanceBase;
+						 var template RequestPrimitive v_createRequestAnnc := mw_createContentInstanceAnnc;
+  
+						 v_createRequest.primitiveContent.contentInstance.announceTo := {PX_CSE1_ID};
+  
+						 v_cse1.start(f_CSE_ANNC_CRE_006_CseSimu(int4, v_createRequestAnnc, v_createRequest));//ContentInstance
+						 v_cse1.done;
+		
+					}
+	
+					testcase TC_CSE_ANNC_CRE_006_GRP() runs on Tester system CseSystem {
+						//Local variables
+						 var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
+						 var template RequestPrimitive v_createRequest := m_createGroupBase;
+						 var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnncBase;
+  
+						 v_createRequest.primitiveContent.group_.announceTo := {PX_CSE1_ID};
+  
+						 v_cse1.start(f_CSE_ANNC_CRE_006_CseSimu(int9, v_createRequestAnnc, v_createRequest));//Group
+						 v_cse1.done;
+					}
+	
+				} //end group g_CSE_ANNC_CRE_006
 			}
 		}//end group Announcement