diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index 8cf442c4438bba940554352c80f2d2e8548562a1..34c2c0d034da183be7158fdc35cafdb5b0f677b3 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -1736,11 +1736,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;
diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn
index dbcae45f2611c50e08d08dffbe03b9a4b8998c4d..9c2bbba33eba0bba27472af39d2ee842af4ac9a0 100644
--- a/OneM2M_PermutationFunctions.ttcn
+++ b/OneM2M_PermutationFunctions.ttcn
@@ -6176,6 +6176,85 @@ module OneM2M_PermutationFunctions {
 			}//end group AccessControlPolicy
 			
 		}//end group Security
+		
+		group Annoucement {
+			
+			group Basic {
+		
+				function f_CSE_ANNC_001(ResourceType p_resourceType, template RequestPrimitive p_requestCreatePrimitive, template (present) RequestPrimitive p_requestAnnc, template(omit) RequestPrimitive p_requestUpdatePrimitive := omit) runs on AeSimu {
+
+					// Local variables
+					var MsgIn vc_response;
+					var RequestPrimitive v_request;
+					var integer v_parentIndex := -1;
+					var integer v_containerIndex := -1;
+					var ResponsePrimitive v_responsePrimitive;
+				   
+					// Test control
+
+					// Test component configuration
+					f_cf02Up();
+
+					// Test adapter configuration
+			
+					//Register the CSE
+					vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSEBase));	
+					vc_cse1.done;
+					
+					//Preamble
+					v_parentIndex := f_cse_preamble_registerAe();//c_CRUDNDi);						
+
+					vc_cse1.start(f_cse_resourceAnnouncementHandler());						
+					v_resourceIndex := f_cse_createResource(p_resourceType, m_createAEAnnc(PX_APP_ID, omit, omit));						
+					vc_cse1.done;
+					
+					// Test Body
+					if (ispresent (p_requestUpdatePrimitive)) {
+ 				      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;
+					}
+					mcaPort.send(m_request(v_request));
+
+					vc_cse1.start(f_cse_receiveCreateRequest(p_requestAnnc));
+					vc_cse1.done;
+					
+					tc_ac.start;
+					alt {
+						[] mcaPort.receive(mw_response(mw_responsePrimitive(v_responsePrimitive.responseStatusCode))) -> value vc_response {
+							tc_ac.stop;
+							if (v_responsePrimitive.responseStatusCode == int2004){
+							  setverdict(pass, __SCOPE__, ": Attribute of resource type " & int2str(enum2int(p_resourceType)) & " updated successfully");
+							} else if (v_responsePrimitive.responseStatusCode == int2001) {
+							  setverdict(pass, __SCOPE__, ": Attribute of resource type " & int2str(enum2int(p_resourceType)) & " created successfully");
+							}
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value vc_response {
+							tc_ac.stop;
+							setverdict(fail, __SCOPE__, ": Wrong response status code");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value vc_response {
+							tc_ac.stop;
+							setverdict(fail, __SCOPE__, ": Error while updating optional attribute");
+						}
+						[] 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_CSE_Release_2.ttcn b/OneM2M_Testcases_CSE_Release_2.ttcn
index 7d021b0c8adb10c2a84400ad0057c23bea7a1228..b0758a6c0ff08395fc47bcf35f18c2420df4b6e2 100644
--- a/OneM2M_Testcases_CSE_Release_2.ttcn
+++ b/OneM2M_Testcases_CSE_Release_2.ttcn
@@ -7242,6 +7242,29 @@ 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_createRequest := m_createAcpBase;
+						var template RequestPrimitive v_updateRequest := m_updateAcpBase;
+  
+						v_createRequest.primitiveContent.accessControlPolicy.announceTo := {f_getAnnouncementTargetPoA()};
+                  
+						v_ae1.start(f_CSE_ANNC_001(int1, v_createRequest, mw_createAccessControlPolicyAnnc, v_updateRequest));//AccessControlPolicy
+						v_ae1.done;
+					}
+			
+				}// end group g_CSE_ANNC_001
+		
+			}
+		}
 	
 	}//end group CSE