diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn
index ae20ea507e798c2b83a1802dd493ba50716c1bc9..8c7b809c84c01abfb1cd053542692b7b2a6e6108 100644
--- a/LibOneM2M/OneM2M_Templates.ttcn
+++ b/LibOneM2M/OneM2M_Templates.ttcn
@@ -236,6 +236,17 @@ module OneM2M_Templates {
 				tokenReqIndicator := omit
 			};
         	
+			/**
+			 * @desc Base UPDATE request primitive for Ae resource
+			 */
+			template (value) RequestPrimitive m_updateAeBase modifies m_update:= {
+				from_ := PX_AE_ID_STEM,
+				requestIdentifier := "m_updateAe" & f_rnd(1, 1000000),
+				primitiveContent:= {
+							any_1 := {{AE_optional := m_contentUpdateAe}}
+				}
+			};
+        	
 			/**
 			 * @desc Base UPDATE request primitive for Container resource
 			 */
@@ -990,7 +1001,7 @@ module OneM2M_Templates {
 			notificationEventCat := omit,//O
 			subscriberURI := omit,//O
 			choice := omit//NP
-    	};  
+    	};   	
     	
 		template (value) Subscription_optional m_contentCreateSubscriptionAdvanced (in template (value) ListOfURIs p_notificationURI,
 																					in template (omit)  XSD.String p_name := c_defaultResourceName,
@@ -1343,7 +1354,7 @@ module OneM2M_Templates {
 			e2eSecInfo:= *, //O
 			choice := *//O
 		};
-		
+    	
 		template AE_optional mw_contentAe_allOmit := {
 			resourceName := omit,//M
 			resourceType := omit,//M
@@ -1990,6 +2001,28 @@ module OneM2M_Templates {
 			locationID := omit,
 			ontologyRef := omit
 		};		
+		
+		template (value) EventNotificationCriteria m_eventNotificationCriteria (in NotificationEventType p_notificationEventType) := {
+			createdBefore := omit,
+			createdAfter := omit,
+			modifiedSince := omit,
+			unmodifiedSince := omit,
+			stateTagSmaller := omit,
+			stateTagBigger := omit,
+			expireBefore := omit,
+			expireAfter := omit,
+			sizeAbove := omit,
+			sizeBelow := omit,
+			operationMonitor_list := {},
+			attribute_list := {}, // TODO this list should be able to be omited see 9.6.8 
+			notificationEventType_list := {p_notificationEventType},// TODO this list should be able to be omited see 9.6.8 
+			missingData := omit
+		}
+		
+		template (value) BatchNotify m_batchNotifyNumber3Duration1 := {
+			number := 3,
+			duration := " " //TODO duration has to be set to 1s and match to the Duration regex
+		}//normaly duration can be omited 6.3.5.6 (TS0004)
 				
 	}//end group SpecialContents
 	
@@ -2094,5 +2127,5 @@ module OneM2M_Templates {
 		return v_address;
 	
 	}
-
+	
 }  // end of module
diff --git a/OneM2M_Testcases.ttcn b/OneM2M_Testcases.ttcn
index 28ab9d219498afa9c4c4bc6af451bc033a19d20b..52a71c7be5e7cf8eb8caa1967c7f8cd3b8a7c1f9 100644
--- a/OneM2M_Testcases.ttcn
+++ b/OneM2M_Testcases.ttcn
@@ -98,7 +98,7 @@ module OneM2M_Testcases {
 				unmap(self:mcaPort, system:mcaPort); 
 				stop;
 			}	
-			
+		
 		}//end group helpingTestCases
 	
 	}//end group oneM2M_demos
@@ -1564,7 +1564,7 @@ module OneM2M_Testcases {
     								
 						// Postamble
 						f_cse_postamble_deleteResources();
-						
+    				
 						// Tear down
 						f_cf01Down();
     				
@@ -4272,6 +4272,246 @@ module OneM2M_Testcases {
 			
 		}//end group Data_Management_and_Repository
 		
+		group Notification {
+			
+			group g_CSE_SUB_BV_001_1{
+				testcase TC_CSE_SUB_BV_001_1() runs on CseTester system CseSystem {
+					// Local variables
+					var MsgIn v_response;
+					var integer v_aeIndex := -1;
+					var integer v_resourceIndex := -1;
+					var integer v_childResourceIndex := -1;
+					var template RequestPrimitive v_createRequestOne := m_createSubscriptionBase;
+					var template RequestPrimitive v_createRequestTwo := m_createSubscriptionBase;
+					var ResponsePrimitive v_responsePrimitive;
+					var RequestPrimitive v_request;
+											
+					v_contentResponse.any_1[0].Container_optional := mw_contentContainer_rc1; // all attributes expected   
+					// Test control
+
+					// Test component configuration
+					f_cf01Up();
+
+					// Test adapter configuration
+
+					// Preamble
+					v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
+
+					v_resourceIndex := f_cse_createResource(int23, v_createRequestOne, v_aeIndex);//Subscription 				
+		
+					v_request := f_getCreateRequestPrimitive(int23, v_createRequestOne, v_resourceIndex);
+					
+		
+					//Postamble
+					f_cse_postamble_deleteResources();
+
+					//Tear down
+					f_cf01Down();
+		
+				} // end TC_CSE_SUB_BV_001_1
+			}//end group g_CSE_SUB_BV_001_1
+			
+			group g_CSE_SUB_BV_001{
+				testcase TC_CSE_SUB_BV_001() runs on CseTester system CseSystem {
+					// Local variables
+					var MsgIn v_response;
+					var Labels v_labels_1:= {"VALUE_1"};
+					var integer v_aeIndex := -1;
+					var integer v_resourceIndex := -1;
+					var template RequestPrimitive v_createRequest := m_createSubscriptionAdvanced(); 
+					var template PrimitiveContent v_contentResponse;
+					var template RequestPrimitive v_updateRequest := m_updateAeBase;
+					var RequestPrimitive v_request;
+					
+					v_updateRequest.primitiveContent.any_1[0].AE_optional.labels := v_labels_1; 
+					v_contentResponse.any_1[0].AE_optional := mw_contentAeBase; // all attributes expected   
+					
+					// Test control
+
+					// Test component configuration
+					f_cf01Up();
+
+					// Test adapter configuration
+
+					// Preamble
+					v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
+
+					v_resourceIndex := f_cse_createResource(int23, v_createRequest, v_aeIndex);//Subscription
+					
+					v_request:= f_getUpdateRequestPrimitive(int2, v_aeIndex, v_updateRequest);
+					
+					mcaPort.send(m_request(v_request));
+					tc_ac.start;
+					alt {
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+							tc_ac.stop;
+							setverdict(pass, testcasename() & ": Attribute of resource type int2 (Ae) updated successfuly");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error while updating resource type int2 (Ae)");
+						}
+						[] tc_ac.timeout {
+							setverdict(inconc, testcasename() & ": No answer while updating resource type int2 (Ae)");
+						}
+					}	
+		
+					tc_ac.start;
+					alt {
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK(v_contentResponse))) -> value v_response {
+							tc_ac.stop;
+							setverdict(pass, testcasename() & ": Notification received");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error, resource elements provided not matching expected resource elements");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error while sending notification");
+						}
+						[] tc_ac.timeout {
+							setverdict(inconc, testcasename() & ": None notification received");
+						}
+					}
+		
+					//Postamble
+					f_cse_postamble_deleteResources();
+
+					//Tear down
+					f_cf01Down();
+		
+				} // end TC_CSE_SUB_BV_001
+			}//end group g_CSE_SUB_BV_001
+			
+			group g_CSE_SUB_BV_003{
+				testcase TC_CSE_SUB_BV_003() runs on CseTester system CseSystem {
+					// Local variables
+					var MsgIn v_response;
+					var integer v_aeIndex := -1;
+					var integer v_resourceIndex := -1;
+					var integer v_childResourceIndex := -1;
+					var ListOfURIs v_notificationURI := {"Not Initialized"};
+					var template RequestPrimitive v_createRequest := m_createSubscriptionAdvanced(v_notificationURI, m_eventNotificationCriteria(int3)); 
+					var template PrimitiveContent v_contentResponse;
+					
+					v_contentResponse.any_1[0].Container_optional := mw_contentContainer_rc1; // all attributes expected   
+					// Test control
+
+					// Test component configuration
+					f_cf01Up();
+
+					// Test adapter configuration
+
+					// Preamble
+					v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
+
+					v_resourceIndex := f_cse_createResource(int23, v_createRequest, v_aeIndex);//Subscription 
+					
+					tc_ac.start;
+					alt {
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK(v_contentResponse))) -> value v_response {
+							tc_ac.stop;
+							setverdict(pass, testcasename() & ": Notification received");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error, resource elements provided not matching expected resource elements");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error while sending notification");
+						}
+						[] tc_ac.timeout {
+							setverdict(inconc, testcasename() & ": None notification received");
+						}
+					}
+					
+					//Postamble
+    				f_cse_postamble_deleteResources();
+    
+    				//Tear down
+    				f_cf01Down();
+					
+				} // end TC_CSE_SUB_BV_003
+			}//end group g_CSE_SUB_BV_003
+			
+			group g_CSE_SUB_BV_004{
+				testcase TC_CSE_SUB_BV_004() runs on CseTester system CseSystem {
+					// Local variables
+					var MsgIn v_response;
+					var RequestPrimitive v_deleteRequest;
+					var integer v_aeIndex := -1;
+					var integer v_resourceIndex := -1;
+					var integer v_childResourceIndex := -1;
+					var ListOfURIs v_notificationURI := {"Not Initialized"};
+					var template RequestPrimitive v_createRequest := m_createSubscriptionAdvanced(v_notificationURI, m_eventNotificationCriteria(int4));
+					var template PrimitiveContent v_contentResponse;
+		
+					//v_createRequest.primitiveContent.any_1[0].Subscription_optional.resourceName := omit; // name's R1 =! of his child ressource R2 ? 
+					v_contentResponse.any_1[0].Container_optional := mw_contentContainer_rc1; // all attributes expected in notification  
+					v_deleteRequest := valueof(m_deleteRequest(f_getResourceAddress(v_resourceIndex)));
+					v_deleteRequest.resultContent := int0; //none content is expected because if the child ressource triggers a notification the second received message will have no content and the test shall fail
+					// Test control
+
+					// Test component configuration
+					f_cf01Up();
+
+					// Test adapter configuration
+
+					// Preamble
+					v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
+
+					v_resourceIndex := f_cse_createResource(int23, v_createRequest, v_aeIndex);//Subscription 				
+		
+					v_childResourceIndex := f_cse_createResource(int3, m_createContainerBase, v_aeIndex);
+					
+					mcaPort.send(m_request(v_deleteRequest));
+					tc_ac.start;
+					alt {
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+							tc_ac.stop;
+							setverdict(pass, testcasename() & ": Resource deleted successfuly");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error while deleting resource ");
+						}
+						[] tc_ac.timeout {
+							setverdict(inconc, testcasename() & ": No answer while deleting resource type ");
+						}
+					}	
+					
+					tc_ac.start;
+					alt {
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK(v_contentResponse))) -> value v_response {
+							tc_ac.stop;
+							setverdict(pass, testcasename() & ": Notification received");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error, resource elements provided not matching expected resource elements");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error while sending notification");
+						}
+						[] tc_ac.timeout {
+							setverdict(inconc, testcasename() & ": None notification received");
+						}
+					}
+		
+					//Postamble
+					f_cse_postamble_deleteResources();
+
+					//Tear down
+					f_cf01Down();
+		
+				} // end TC_CSE_SUB_BV_004
+			}//end group g_CSE_SUB_BV_004
+						
+		}//end group Notification
+		
 		//@Martin
 		group Location {
 		  		    
@@ -5320,7 +5560,7 @@ module OneM2M_Testcases {
             } // end group g_CSE_GMG_BV_012
             
         } // end group Group_Managment
-        
+		
 		group Subscription_And_Notification {
 	
 			group g_CSE_SUB_BV_001{
diff --git a/Requirements collection/TST-Requirements_collection.xlsx b/Requirements collection/TST-Requirements_collection.xlsx
index e2808caf4af7551e0f520f17fcea6532822ff1ed..5cffa92f06065f296e5af81aa1e17839f49ceffd 100644
Binary files a/Requirements collection/TST-Requirements_collection.xlsx and b/Requirements collection/TST-Requirements_collection.xlsx differ