diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index 09f8a22a21dc9b7c80923532af316712dd95194e..a220cdea4537f327bfb536368e22d728e5838c5d 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -2599,7 +2599,8 @@ module OneM2M_Functions {
 					alt {
 						[] mcaPortIn.receive(mw_request(mw_notifyAggregatedNotification)) -> value vc_request {
 							tc_ac.stop;
-							if(p_numberOfAggregatedNotification == lengthof(vc_request.primitive.requestPrimitive.primitiveContent.aggregatedNotification.notification_list)){
+							v_notificationsReceived := lengthof(vc_request.primitive.requestPrimitive.primitiveContent.aggregatedNotification.notification_list);
+							if(p_numberOfAggregatedNotification == v_notificationsReceived){
 								if(f_check_notificationContent(vc_request.primitive.requestPrimitive, p_primitiveContent)){
 									setverdict(pass, __SCOPE__ & ": Notification received");
 								}
@@ -2634,7 +2635,11 @@ module OneM2M_Functions {
 							}
 						}
 						[] tc_ac.timeout {
-							setverdict(fail, __SCOPE__ & ": No notification received");
+							if(v_notificationsReceived == 0) {
+								setverdict(fail, __SCOPE__ & ": No notification received");
+							} else {
+								setverdict(fail, __SCOPE__ & ": Not received the expected number of notifications");
+							}
 						}
 					}
 					
@@ -4012,7 +4017,10 @@ module OneM2M_Functions {
 						v_myResource.timeSeries.lastModifiedTime := v_myResource.timeSeries.creationTime;											
 						if(not(ispresent(p_resource.timeSeries.expirationTime))) {
 							v_myResource.timeSeries.expirationTime := "20301231T012345";
-						}
+						};
+						v_myResource.timeSeries.currentNrOfInstances := 0;
+						v_myResource.timeSeries.currentByteSize := 0;
+						v_myResource.timeSeries.missingDataDetect := false;
 					}				
 				} else if(p_resourceType == int30 and ispresent(p_resource)) { //TimeSeriesInstance
 					if(ischosen(p_resource.timeSeriesInstance)){
@@ -4343,6 +4351,8 @@ module OneM2M_Functions {
 					v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentGroup(m_contentCreateGroup(1, {"NotInitialized"}, omit, -, -, -, -, -)), -, int9);
 				} else if (p_resourceType == int10029) {
 					v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentTimeSeries(m_contentCreateTimeSeries), -, int29);
+				} else if (p_resourceType == int10030) {
+					v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentTimeSeriesInstance(m_contentCreateTimeSeriesInstance), -, int30);
 				}
 				if(v_originalResourceIndex != -1) {
 					p_requestPrimitive.primitiveContent := f_setLink(valueof(p_requestPrimitive.primitiveContent), f_getLocalResourceAddress(v_originalResourceIndex, -, e_spRelative));
@@ -5425,6 +5435,12 @@ module OneM2M_Functions {
 				if(match(valueof(p_request.primitiveContent.subscription.notificationURI), v_defaultListOfURIs )){
 					p_request.primitiveContent.subscription.notificationURI := {f_getResourceAddress(f_getResourceIndex(f_getOriginator(p_parentIndex)))};
 				}
+				//notificationForwardingURI
+				if(ispresent(p_request.primitiveContent.subscription.notificationForwardingURI)) {
+					if(match(valueof(p_request.primitiveContent.subscription.notificationForwardingURI), "NotInitialized" )){
+						p_request.primitiveContent.subscription.notificationForwardingURI := p_request.primitiveContent.subscription.notificationURI[0];
+					}
+				}
 				//subscriberURI
 				if(ispresent(p_request.primitiveContent.subscription.subscriberURI)) {
 					if(match(valueof(p_request.primitiveContent.subscription.subscriberURI), "NotInitialized" )){
@@ -6584,6 +6600,9 @@ module OneM2M_Functions {
 			else if (ischosen(p_resource.timeSeriesAnnc)){
 				p_resource.timeSeriesAnnc.link := p_link;
 			} 
+			else if (ischosen(p_resource.timeSeriesInstanceAnnc)){
+				p_resource.timeSeriesInstanceAnnc.link := p_link;
+			} 
 			else {
 				log( __SCOPE__, ":INFO: Resource not having link attribute. Not possible to set link")
 			}
diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn
index fb1fa8f033d3ca12656f80d94b27ee57f1331f42..a6a4efbd65a56850218576a9ec2d5d9aedd9e1c7 100644
--- a/OneM2M_PermutationFunctions.ttcn
+++ b/OneM2M_PermutationFunctions.ttcn
@@ -10746,10 +10746,11 @@ module OneM2M_PermutationFunctions {
 					var integer v_aeIndex := -1;
 					var integer v_remoteCSEIndex := -1;
 					var integer v_originalResourceIndex := -1;
-					var integer v_cseBaseAnncIndex := -1;
+					var integer v_parentAnncIndex := -1;
 					var XSD.ID v_originalResourceAddress, v_cseBaseResourceAddress;
 					var template RequestPrimitive v_createAE := m_createAe(PX_TS_AE1.appId, omit, omit);
 					var template RequestPrimitive v_createAcp := m_createAcpBase;
+					var template RequestPrimitive v_parentAnncResource;
 					var XSD.ID v_resourceAnncAddress;
 					var integer v_acpIndex;
 					
@@ -10774,15 +10775,28 @@ module OneM2M_PermutationFunctions {
 					vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, {f_getResourceId(vc_resourcesList[v_acpIndex].resource)}, -, -, -, {f_getLocalPoA()})));
 				    f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
 
-					if((p_resourceType == int3) or (p_resourceType == int9) or (p_resourceType == int29)) {
+					if((p_resourceType != int1) and (p_resourceType != int4) and (p_resourceType != int30)) {
 						p_createRequestAnnc := f_setAcpId(p_createRequestAnnc, {f_getResourceId(vc_resourcesList[v_acpIndex].resource)});
 					}
 					
 					vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(int5), m_createCSEBaseAnncBase(-, {f_getResourceId(vc_resourcesList[v_acpIndex].resource)}, v_cseBaseResourceAddress), -));
 					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
-					v_cseBaseAnncIndex := f_getLatestResourceIndex(vc_cse1);
+					v_parentAnncIndex := f_getLatestResourceIndex(vc_cse1);
 					//Creating announced resource (original resource in CSE1) in Hosting CSE
-					vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(p_resourceType), p_createRequestAnnc, v_cseBaseAnncIndex));
+					if(p_resourceType == int4){//Create both original and announced parent resource for contentInstance
+						v_parentAnncResource := m_createContainerAnncBase;
+						v_parentAnncResource := f_setAcpId(v_parentAnncResource, {f_getResourceId(vc_resourcesList[v_acpIndex].resource)});
+						vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(int3), v_parentAnncResource, v_parentAnncIndex));
+						f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
+						v_parentAnncIndex := f_getLatestResourceIndex(vc_cse1);
+					} else if (p_resourceType == int30){//Create both original and announced parent resource for timeSeriesInstance
+						v_parentAnncResource := m_createTimeSeriesAnncBase;
+						v_parentAnncResource := f_setAcpId(v_parentAnncResource, {f_getResourceId(vc_resourcesList[v_acpIndex].resource)});
+						vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(int29), v_parentAnncResource, v_parentAnncIndex));
+						f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
+						v_parentAnncIndex := f_getLatestResourceIndex(vc_cse1);
+					}
+					vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(p_resourceType), p_createRequestAnnc, v_parentAnncIndex));
 				    f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
 					
 					v_resourceAnncAddress := f_getLatestResourceAddress(vc_cse1, -, -);
@@ -10823,13 +10837,14 @@ module OneM2M_PermutationFunctions {
 					var integer v_aeIndex := -1;
 					var integer v_remoteCSEIndex := -1;
 					var integer v_originalResourceIndex := -1;
-					var integer v_cseBaseAnncIndex := -1;
+					var integer v_parentAnncIndex := -1;
 					var XSD.ID v_originalResourceAddress, v_cseBaseResourceAddress;
 					var template RequestPrimitive v_createAE := m_createAe(PX_TS_AE1.appId, omit, omit);
 					var template RequestPrimitive v_createAcp := m_createAcpBase;
 					var XSD.ID v_resourceAnncAddress;
 					var integer v_acpIndex;
 					var RequestPrimitive v_request;
+					var template RequestPrimitive v_parentAnncResource;
 					
 					// Test control
 
@@ -10858,13 +10873,27 @@ module OneM2M_PermutationFunctions {
 					
 					vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(int5), m_createCSEBaseAnncBase(-, {f_getResourceId(vc_resourcesList[v_acpIndex].resource)}, v_cseBaseResourceAddress), -));
 					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
-					v_cseBaseAnncIndex := f_getLatestResourceIndex(vc_cse1);
+					v_parentAnncIndex := f_getLatestResourceIndex(vc_cse1);
+					//Creating announced resource (original resource in CSE1) in Hosting CSE
+					if(p_resourceType == int4){//Create both original and announced parent resource for contentInstance
+						v_parentAnncResource := m_createContainerAnncBase;
+						v_parentAnncResource := f_setAcpId(v_parentAnncResource, {f_getResourceId(vc_resourcesList[v_acpIndex].resource)});
+						vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(int3), v_parentAnncResource, v_parentAnncIndex));
+						f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
+						v_parentAnncIndex := f_getLatestResourceIndex(vc_cse1);
+					} else if (p_resourceType == int30){//Create both original and announced parent resource for timeSeriesInstance
+						v_parentAnncResource := m_createTimeSeriesAnncBase;
+						v_parentAnncResource := f_setAcpId(v_parentAnncResource, {f_getResourceId(vc_resourcesList[v_acpIndex].resource)});
+						vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(int29), v_parentAnncResource, v_parentAnncIndex));
+						f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
+						v_parentAnncIndex := f_getLatestResourceIndex(vc_cse1);
+					}
 					//Creating announced resource (original resource in CSE1) in Hosting CSE
-					vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(p_resourceType), p_createRequestAnnc, v_cseBaseAnncIndex));
+					vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(p_resourceType), p_createRequestAnnc, v_parentAnncIndex));
 					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
 					
 					v_resourceAnncAddress := f_getLatestResourceAddress(vc_cse1, -, -);
-					v_originalResourceIndex := f_getLatestLocalResource(vc_cse1);
+					v_originalResourceIndex := f_getLatestLocalResourceIndex(vc_cse1);
 					
 					// Test Body
 					vc_cse1.start(f_cse_retrieveResourceHandler(v_originalResourceIndex, -, -));