diff --git a/OneM2M_Testcases_CSE_Release_4.ttcn b/OneM2M_Testcases_CSE_Release_4.ttcn
index ea5beec4e9f740271eeb7b521c78fca0ee003c4c..14e5efd2debec61b36026c90a7fbaad5366a749a 100644
--- a/OneM2M_Testcases_CSE_Release_4.ttcn
+++ b/OneM2M_Testcases_CSE_Release_4.ttcn
@@ -572,7 +572,7 @@ module OneM2M_Testcases_CSE_Release_4 {
 				function f_CSE_SCH_001() runs on AeSimu system CseSystem {
 					// Local variables
 					var integer v_aeIndex, v_resourceIndex := -1;
-                    var template RequestPrimitive v_createRequestSchedule := m_createScheduleBase;
+                    var template RequestPrimitive v_createRequestSchedule := m_createScheduleBase_subscription;
                     var RequestPrimitive v_request;
                     
 					// Test component configuration
@@ -645,11 +645,11 @@ module OneM2M_Testcases_CSE_Release_4 {
 					v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
                     v_resourceIndex := f_cse_createResource(int23, m_createSubscriptionBase, v_aeIndex);//Subscription
 
-                    v_childscheduleResourceIndex := f_cse_createResource(v_scheduleresourceType, m_updateScheduleBase, v_resourceIndex);
+                    v_childscheduleResourceIndex := f_cse_createResource(v_scheduleresourceType, m_createScheduleBase_subscription, v_resourceIndex);
 
                     v_contentUpdateSchedule.primitiveContent.schedule.networkCoordinated := true;
                     // Test Body
-                    v_request := f_getUpdateRequestPrimitive(v_scheduleresourceType, v_resourceIndex, v_contentUpdateSchedule);
+                    v_request := f_getUpdateRequestPrimitive(v_scheduleresourceType, v_childscheduleResourceIndex, v_contentUpdateSchedule);
 					f_send(e_mcaPort, m_request(valueof(v_request)));
 					tc_ac.start;
 					alt {
@@ -696,18 +696,21 @@ module OneM2M_Testcases_CSE_Release_4 {
                     timer t_batchNotificationTimer := PX_TAC * 2.0; //just gives enough time to execute
                     const ResourceType c_containerResourceType := int3;
                     var float v_elapsedTime;
-					var integer v_ae1Index, v_ae2Index, v_containerResourceIndex, v_childScheduleIndex := -1;
-                    var template RequestPrimitive v_updateRequestPrimitive := m_updateContainerBase;
-                    var template RequestPrimitive v_updateRequest;
-                    var template RequestPrimitive v_createRequestSubscription;                  
-                    var template RequestPrimitive v_createRequest := m_createScheduleBase;
-
+					var integer v_ae1Index, v_ae2LocalIndex, v_ae2Index, v_containerResourceIndex, v_subscriptionResourceIndex, v_childScheduleIndex := -1;
+                    var template RequestPrimitive v_updateRequest := m_updateContainerBase;
+                    var template RequestPrimitive v_createRequest := m_createScheduleBase_subscription;
+                    var ResponsePrimitive v_responsePrimitive;
+					var integer v_actualYear;
+                    var XSD.ID v_containerResourceAddress;
+					var template PrimitiveContent v_contentResponse := {container := mw_contentContainerBase};// all attributes expected
+					v_contentResponse.container.labels := ?;
+					
 					// Test control
 					if(PX_TAC < 10.0) {
 						setverdict(inconc, __SCOPE__ & ": PX_TAC is required to be bigger than 10 seconds to run this test case");
 						stop;
 					}
-                    
+					
 					// Test component configuration
 					f_cf01Up(true);
 
@@ -716,39 +719,123 @@ module OneM2M_Testcases_CSE_Release_4 {
 					// Preamble
 					f_cse_createAccessControlPolicyAux("SubscriptionVerificationAcp",{"all"}, int63);
 					
-					v_ae1Index := f_cse_createResource_withAcpAux(int2, m_createAe(vc_aeSimuDesc.appId, -, vc_aeSimuDesc.aeIdStem, c_defaultAe1ResourceName, {f_getLocalPoA(vc_aeSimuDesc.mcaPortIn, "")}), -1); 
-                    // AE1 is registered
-
-					vc_ae2.start(f_cse_createResource_withAcpAux(int2, m_createAe(PX_TS_AE2.appId, -, PX_TS_AE2.aeIdStem, c_defaultAe2ResourceName, {f_getLocalPoA(PX_TS_AE2.mcaPortIn, "")}), -1)); 
-                    // AE2 is registered
+					v_ae1Index := f_cse_createResource_withAcpAux(int2, m_createAe(vc_aeSimuDesc.appId, -, vc_aeSimuDesc.aeIdStem, c_defaultAe1ResourceName, {f_getLocalPoA(vc_aeSimuDesc.mcaPortIn, "")}), -1); // now AE1 is registered
+					
+					vc_ae2.start(f_cse_createResource(int2, m_createAe(PX_TS_AE2.appId, -, PX_TS_AE2.aeIdStem, c_defaultAe2ResourceName, omit), -1)); // AE2 is registered
+					
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
+					
+					v_ae2LocalIndex := f_getResourceFromAeSimu(vc_ae2);
+					
+					v_ae2Index := f_getLatestResourceIndex(vc_ae2);
+					
+					vc_ae2.start(f_cse_createResource(c_containerResourceType, m_createContainerBase, v_ae2Index));
 					f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
-                    v_ae2Index := f_getResourceFromAeSimu(vc_ae2);
+					
+					v_containerResourceIndex := f_getLatestResourceIndex(vc_ae2);
+                    
+					v_containerResourceAddress := f_getLatestResourceAddress(vc_ae2);
                     
-                    v_containerResourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_ae1Index);
+					vc_ae2.start(f_cse_createResource(int23, m_createSubscription(v_containerResourceAddress, -, {f_getResourceAddress(v_ae1Index)}), v_containerResourceIndex));
+										
+					tc_ac.start;
+					alt {
+						[] mcaPortIn.receive(mw_request(mw_notifyNotification(mw_contentNotificationVerification))) -> value vc_request {
+							tc_ac.stop;
+							setverdict(pass, __SCOPE__ & ":INFO: Notification received");
+							v_responsePrimitive := valueof(m_responseNotification(int2000, omit));
+							v_responsePrimitive.requestIdentifier := vc_request.primitive.requestPrimitive.requestIdentifier;
+							f_send(e_mcaPortIn, m_response(v_responsePrimitive));
+						}
+						[] mcaPortIn.receive(mw_request(mw_notifyNotification(mw_contentNotification(?)))) -> value vc_request {
+							tc_ac.stop;
+							setverdict(inconc, __SCOPE__ & ":ERROR: Notification received but verificationRequest isn't set to TRUE");
+							v_responsePrimitive := valueof(m_responseNotification(int4000, omit));
+							v_responsePrimitive.requestIdentifier := vc_request.primitive.requestPrimitive.requestIdentifier;
+							f_send(e_mcaPortIn, m_response(v_responsePrimitive));						
+						}
+						[] tc_ac.timeout {
+							if (not(vc_ae2.running)){
+								setverdict(pass, __SCOPE__ & ":INFO:  No subscription verification received but subscription resource was created");
+							}
+						}
+					}
+					
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
+					
+					v_subscriptionResourceIndex := f_getLatestResourceIndex(vc_ae2);
+                    
+					v_actualYear := f_getYear(fx_generateTimestamp());
+                    v_createRequest.primitiveContent.schedule.scheduleElement := {{"* * * * * * " & int2str(v_actualYear)}};//scheduled for this year
+					vc_ae2.start(f_cse_createResource(int18, v_createRequest, v_subscriptionResourceIndex));
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
+					
+					// Test Body
+					v_updateRequest.primitiveContent.container.labels := {"LABEL_1"};
+					vc_ae2.start(f_cse_updateResource(int3, v_containerResourceIndex, v_updateRequest)); // Update request 1
+					
+					tc_ac.start;
+					alt {
+						[] mcaPortIn.receive(mw_request(mw_notifyNotification(mw_contentNotification(?)))) -> value vc_request {
+							tc_ac.stop;
+							if(f_check_notificationContent(vc_request.primitive.requestPrimitive, v_contentResponse)){
+								setverdict(pass, __SCOPE__ & ":INFO: Notification received");
+							}
+							else{
+								setverdict(fail, __SCOPE__ & ":ERROR: Notification received but the content doesn't match");
+							}
+							//Send response in any case
+							v_responsePrimitive := valueof(m_responseNotification(int2000, omit));
+							v_responsePrimitive.requestIdentifier := vc_request.primitive.requestPrimitive.requestIdentifier;
+							f_send(e_mcaPortIn, m_response(v_responsePrimitive));
+							f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
+							setverdict(pass, __SCOPE__ & ": Notifications sent on scheduled time");	
+						}
+						[] tc_ac.timeout {
+							setverdict(fail, __SCOPE__ & ": No notification received");
+						}
+					}
+					
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
+					
+					//Postamble
+					f_cse_postamble_deleteResources();
+					
+					//Tear down
+					f_cf01Down();
+					
+                    /*
+					// Test component configuration
+					f_cf01Up();
+
+					// Test adapter configuration
 
-					v_createRequestSubscription := m_createSubscription(f_getResourceAddress(v_ae2Index), omit, {f_getResourceAddress(v_ae1Index)});
+					// Preamble
+					v_aeIndex := f_cse_preamble_registerAe(-,  {f_getLocalPoA(vc_aeSimuDesc.mcaPortIn, "")});
+					
+					// AE1 is registered
 
-					vc_ae2.start(f_cse_createResource(int23, v_createRequestSubscription, v_containerResourceIndex));//Subscription
+					v_containerResourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_ae1Index);
 
-                    v_createRequest.primitiveContent.schedule.scheduleElement := {{"*/5 0 0 * * * *"}};//scheduled every 5 seconds
-                    v_childScheduleIndex := f_cse_createResource(int18, v_createRequest, v_containerResourceIndex);  //schedule resource child                    
+					v_subscriptionResourceIndex := f_cse_createResource(int23, m_createSubscriptionBase(), v_containerResourceIndex);//Subscription
 
-                    v_updateRequest := f_getUpdateRequestPrimitive(c_containerResourceType, v_containerResourceIndex, v_updateRequestPrimitive);
+                    v_createRequest.primitiveContent.schedule.scheduleElement := {{"*//*5 0 0 * * * *"}};//scheduled every 5 seconds
+                    v_childScheduleIndex := f_cse_createResource(int18, v_createRequest, v_subscriptionResourceIndex);  //schedule resource child                    
 
+                    v_updateRequest := f_getUpdateRequestPrimitive(c_containerResourceType, v_containerResourceIndex, v_updateRequest);
+					v_updateRequest.primitiveContent.container.labels := {"LABEL_1"};
+					
 					// Test Body                    
-                    t_batchNotificationTimer.start;
-
                     f_send(e_mcaPort, m_request(valueof(v_updateRequest)));
                     tc_ac.start;
                     alt {
                         [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response {
                             tc_ac.stop;
                             setverdict(pass, __SCOPE__&":INFO: Attribute of resource updated successfuly");
-                            v_elapsedTime := t_batchNotificationTimer.read;
-                            t_batchNotificationTimer.stop;
-						    if(float2int(v_elapsedTime) mod 5 != 0) {
-									setverdict(fail, __SCOPE__ & ": Notifications sent before SCHEDULE_TIME is reached");
-						    }                            
+                            if (v_firstNotification) {
+                           
+                            }
+                                                        
                         }
    						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value vc_response {
 							tc_ac.stop;
@@ -758,6 +845,38 @@ module OneM2M_Testcases_CSE_Release_4 {
 							tc_ac.stop;
 							setverdict(fail, __SCOPE__ & ": Error while updating scheduling resource ");
 						}
+						[] mcaPortIn.receive(mw_request(mw_notifyNotification(mw_contentNotification(?)))) -> value vc_request {
+							tc_ac.stop;
+							if(f_check_notificationContent(vc_request.primitive.requestPrimitive, v_contentNotification)){
+								setverdict(pass, __SCOPE__ & ":INFO: Notification received");
+							}
+							else{
+								setverdict(fail, __SCOPE__ & ":ERROR: Notification received but the content doesn't match");
+							}
+							//Send response in any case
+							v_responsePrimitive := valueof(m_responseNotification(int2000, omit));
+							v_responsePrimitive.requestIdentifier := vc_request.primitive.requestPrimitive.requestIdentifier;
+							f_send(e_mcaPortIn, m_response(v_responsePrimitive));
+							if (v_firstNotification){
+								t_batchNotificationTimer.start;
+								v_updateRequest := f_getUpdateRequestPrimitive(c_containerResourceType, v_containerResourceIndex, v_updateRequest);
+								v_updateRequest.primitiveContent.container.labels := {"LABEL_2"};
+								f_send(e_mcaPort, m_request(valueof(v_updateRequest)));
+								repeat;
+							} else {
+								v_elapsedTime := t_batchNotificationTimer.read;
+								t_batchNotificationTimer.stop;
+								if(v_elapsedTime < 5.0) {
+									setverdict(fail, __SCOPE__ & ": Notifications sent before SCHEDULE_TIME is reached");
+								} else {
+									setverdict(pass, __SCOPE__ & ": Notifications sent on scheduled time");	
+								}
+							}
+						}
+						[] mcaPortIn.receive(mw_request(mw_notifyNotification(?))) -> value vc_request {
+							tc_ac.stop;
+							setverdict(fail, __SCOPE__ & ":ERROR: Notification received but the content doesn't match");
+						}
 						[] tc_ac.timeout {
 							setverdict(fail, __SCOPE__ & ": No answer while updating scheduling resource ");
 						}
@@ -769,7 +888,7 @@ module OneM2M_Testcases_CSE_Release_4 {
 					f_cse_postamble_deleteResources();
 
 					// Tear down
-					f_cf01Down();
+					f_cf01Down();*/
 				} // f_CSE_SCH_003
 
         }//end group Schedule_functionality