diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index 2e4aca7cd9b7a0e1618b245edd876bb609d7505f..a24fefc58fdc6bc85ac3becebefe084433cb1937 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -941,20 +941,27 @@ module OneM2M_Functions {
 		 * @desc Connection of InfoPort of two components
 		 * @param p_tester PTC where InfoPort is to be connected
 		 */
-		function f_connectInfoPort(in Tester p_tester) runs on Tester {
+		function f_connectInfoPort(in Tester p_tester) runs on Tester return boolean {
+			var boolean connectionState := false; 
 			// Connect
+			if (infoPort.checkstate("Connected")) {
+				connectionState := true;
+			}
 			connect(self:infoPort, p_tester:infoPort);
-			log(__SCOPE__&": INFO: infoPort connected");		
+			log(__SCOPE__&": INFO: infoPort connected");
+			return connectionState;		
 		} 
 	
 		/**
 		 * @desc Disconnection of InfoPort of two components
 		 * @param p_tester PTC where InfoPort is to be connected
 		 */
-		function f_disconnectInfoPort(in Tester p_tester) runs on Tester {
+		function f_disconnectInfoPort(in Tester p_tester, in boolean connectionState := false) runs on Tester {
 			// Disconnect
-			disconnect(self:infoPort, p_tester:infoPort);
-				log(__SCOPE__&": INFO: infoPort disconnected");		
+			if (not connectionState) {
+				disconnect(self:infoPort, p_tester:infoPort);
+				log(__SCOPE__&": INFO: infoPort disconnected");
+			}	
 		} 
 		
 		group getFunctions {
@@ -987,8 +994,9 @@ module OneM2M_Functions {
 			 */
 			function f_getRequestPrimitive(in Tester p_component) runs on Tester return RequestPrimitive {
 				var RequestPrimitive v_request;
-	
-				f_connectInfoPort(p_component);
+				var boolean previousConnectionState := false;
+				
+				previousConnectionState := f_connectInfoPort(p_component);
 				
 				p_component.start(f_sendRequestPrimitive());
 				alt {
@@ -998,7 +1006,7 @@ module OneM2M_Functions {
 	
 				p_component.done;
 				
-				f_disconnectInfoPort(p_component);
+				f_disconnectInfoPort(p_component, previousConnectionState);
 				
 				return v_request;
 		
diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn
index 642ae574a1e3f17dd46c5f0a16b5ae6ba3c45471..887f8a8b37018440dfeca24a20f0bee93324ae0d 100644
--- a/LibOneM2M/OneM2M_Templates.ttcn
+++ b/LibOneM2M/OneM2M_Templates.ttcn
@@ -2020,6 +2020,15 @@ module OneM2M_Templates {
         		resourceType := int10018,
 				primitiveContent := {scheduleAnnc := m_contentCreateScheduleAnnc (omit, {{"* * * * * * *"}})}
         	};
+        	
+        	/**
+			 * @desc Base CREATE request primitive for Schedule resource
+			 */
+        	template (value) RequestPrimitive m_createScheduleBase_subscription modifies m_create := {
+				requestIdentifier := testcasename() & "-m_createSchedule",
+        		resourceType := int18,
+				primitiveContent := {schedule := m_contentCreateSchedule ({{"* * * * * * *"}}, "notificationSchedule")}
+        	};
 
         	template (value) RequestPrimitive m_createSchedule(XSD.ID p_parentResourceAddress, in template (omit)  ResourceName p_name, in template (value) ScheduleEntries p_scheduleElement ) modifies m_create := {
         		to_ := p_parentResourceAddress,
@@ -2078,7 +2087,7 @@ module OneM2M_Templates {
 				primitiveContent := {subscription := m_contentCreateSubscription ({"NotInitialized"})}
 			};
         	
-        	template (value) RequestPrimitive m_createSubscription(template (omit) XSD.ID p_to := omit, in template (omit)  ResourceName p_name, in template (value) ListOfURIs p_notificationURI := {"NotInitialized"}) modifies m_create := {
+        	template (value) RequestPrimitive m_createSubscription(template (omit) XSD.ID p_to := omit, in template (omit)  ResourceName p_name := c_defaultSubscriptionResourceName, in template (value) ListOfURIs p_notificationURI := {"NotInitialized"}) modifies m_create := {
         		to_ := p_to,
 				requestIdentifier := testcasename() & "-m_createSubscription",
         		resourceType := int23,
diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn
index a42e93f4070390a99d387d2746c799ade1dfc296..255723fd8166de95b1bdb56bc528a6849be25489 100644
--- a/OneM2M_PermutationFunctions.ttcn
+++ b/OneM2M_PermutationFunctions.ttcn
@@ -3176,7 +3176,7 @@ module OneM2M_PermutationFunctions {
 						}
 					}
 					
-					f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
+					f_checkAeSimuStatus();
 								
 					//Check to see if the resource is present or not
 					if (f_cse_isResourcePresent(v_resourceIndex)){
@@ -3324,7 +3324,7 @@ module OneM2M_PermutationFunctions {
 						}
 					}
 								
-						f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
+					f_checkAeSimuStatus();
 						
 					//Check to see if the resource is present or not
 					if(f_cse_isResourcePresent(v_resourceIndex)){
@@ -3368,6 +3368,10 @@ module OneM2M_PermutationFunctions {
 						v_parentIndex := v_aeIndex;//For resources that can have AE resource as parent
 					}
 					v_resourceIndex := f_cse_createResource(p_resourceType, p_requestPrimitive, v_parentIndex);
+					
+					if(vc_ae2.running) {
+							vc_ae2.stop;
+						};
 						
 					if(p_resourceType == int15) {
 						v_request := f_getCreateRequestPrimitive(int3, m_createContainerBase, v_aeIndex);
@@ -3805,7 +3809,7 @@ module OneM2M_PermutationFunctions {
 						}
 					}
 								
-						f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);	
+					f_checkAeSimuStatus();	
 						
 					//Check to see if the resource is present or not
 					if(f_cse_isResourcePresent(v_resourceIndex)) {
@@ -4569,7 +4573,7 @@ module OneM2M_PermutationFunctions {
 						}
 					}
     								
-						f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
+					f_checkAeSimuStatus();
 							
 					// Postamble
 					f_cse_postamble_deleteResources();
@@ -6073,6 +6077,10 @@ module OneM2M_PermutationFunctions {
 						v_parentIndex := v_aeIndex;//For resources that can have AE resource as parent
 					}
 					v_resourceIndex := f_cse_createResource(p_resourceType, p_createRequestPrimitive, v_parentIndex);
+    					
+					if (vc_ae2.running) {
+						vc_ae2.stop;
+					};
     									
 					// Test Body
 					v_request := f_getUpdateRequestPrimitive(p_resourceType, v_resourceIndex, p_updateRequestPrimitive);
@@ -6598,6 +6606,8 @@ module OneM2M_PermutationFunctions {
 							setverdict(fail, __SCOPE__ & ": No answer while retrieving resource attributes");
 						}
 					}
+					
+					f_checkAeSimuStatus();
 						
 					vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_resourceIndex);
 						
@@ -6653,6 +6663,8 @@ module OneM2M_PermutationFunctions {
 							setverdict(fail, __SCOPE__ & ": No answer while updating resource " & int2str(enum2int(p_resourceTypeChild)));
 						}
 					}
+					
+					f_checkAeSimuStatus();
 						 
 					vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_childIndex);
 		
@@ -6693,7 +6705,7 @@ module OneM2M_PermutationFunctions {
 						p_createRequestPrimitive := f_setAcpId(p_createRequestPrimitive,{f_getResourceAddress(v_acp1Index)});
 						p_updateRequestPrimitive := f_setAcpId(p_updateRequestPrimitive,{f_getResourceAddress(v_acp2Index)});
 					
-						infoPort.send(f_getResourceAddress(lengthof(vc_resourcesList)-1, e_nonHierarchical)) to mtc;
+						//infoPort.send(f_getResourceAddress(lengthof(vc_resourcesList)-1, e_nonHierarchical)) to mtc;
 					}
 						
 					v_resourceIndex := f_cse_createResource(p_resourceType, p_createRequestPrimitive, vc_aeIndex);
@@ -7641,6 +7653,8 @@ module OneM2M_PermutationFunctions {
 						}
 					}
 				
+					f_checkAeSimuStatus();
+				
 					vc_primitiveContentRetrievedResource := f_cse_retrieveResource(v_resourceIndex);
 					
 					// Postamble
diff --git a/OneM2M_Testcases_CSE_Release_1.ttcn b/OneM2M_Testcases_CSE_Release_1.ttcn
index b24eb16e9ddd93068b4ec09a11e5c1d2f3fe4f70..c3cf2caecfbdfe879a7d13db5f508330567dde17 100644
--- a/OneM2M_Testcases_CSE_Release_1.ttcn
+++ b/OneM2M_Testcases_CSE_Release_1.ttcn
@@ -2071,7 +2071,7 @@ module OneM2M_Testcases_CSE_Release_1 {
 						[] mccPort.receive(mw_response(mw_responsePrimitive(int2001, v_primitiveContent))) -> value v_response {
 							tc_ac.stop;
 							f_checkAttributesToBeSaved(int10002, v_request, v_response.primitive.responsePrimitive);
-							v_aeAnncIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, int10002);
+							v_aeAnncIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, int10002, vc_remoteCseIndex);
 							
 							setverdict(pass, __SCOPE__ & ": AEAnnc successfully created.");
 							if(v_response.primitive.responsePrimitive.primitiveContent.aEAnnc.link != vc_cseSimuDesc.cseId & "/" & PX_ALLOWED_S_AE_IDS[0]) {
@@ -8528,7 +8528,9 @@ module OneM2M_Testcases_CSE_Release_1 {
 
 					v_resourceIndex := f_cse_createResource(int23, v_createRequest, v_aeIndex);//Subscription 				
 					
-					f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
+					if(vc_ae2.running) {
+						vc_ae2.stop;
+					};
 					
 					// Test Body
 					v_request:= f_getCreateRequestPrimitive(int3, m_createContainerBase, v_aeIndex);
@@ -8554,6 +8556,8 @@ module OneM2M_Testcases_CSE_Release_1 {
 							setverdict(fail, __SCOPE__ & ": No answer while creating resource type int3 (Container)");
 						}
 					}
+					
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
     				
 					//Postamble
 					f_cse_postamble_deleteResources();
@@ -8606,7 +8610,9 @@ module OneM2M_Testcases_CSE_Release_1 {
 					
 					v_resourceIndex := f_cse_createResource(int23, v_createRequest, v_aeIndex);//Subscription
 
-					f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
+					if(vc_ae2.running) {
+						vc_ae2.stop;
+					};
 					
 					// Test Body
 					v_contentResponse.aE := mw_contentAeBase; // all attributes expected
@@ -8636,6 +8642,8 @@ module OneM2M_Testcases_CSE_Release_1 {
 						}
 					};
 					
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
+					
 					//Postamble
 					f_cse_postamble_deleteResources();
 
@@ -8691,7 +8699,9 @@ module OneM2M_Testcases_CSE_Release_1 {
 					
 					v_request := valueof(m_delete(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex))); // Subscription resource deletion request
 										
-					f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
+					if(vc_ae2.running) {
+						vc_ae2.stop;
+					};
 					
 					// Test Body
 					v_notificationContent.subscriptionReference := ?;
diff --git a/OneM2M_Testcases_CSE_Release_2.ttcn b/OneM2M_Testcases_CSE_Release_2.ttcn
index 266a46127dd449ec0363bfe1b6d917516a897b86..317ceba4dc0e467cda5e9ff8d14aeddbdb016072 100644
--- a/OneM2M_Testcases_CSE_Release_2.ttcn
+++ b/OneM2M_Testcases_CSE_Release_2.ttcn
@@ -1133,7 +1133,7 @@ module OneM2M_Testcases_CSE_Release_2 {
 						var template PrimitiveContent v_contentResponse;
 						v_contentResponse.subscription := mw_contentSubscription_rc1;
 
-						v_ae1.start(f_CSE_DMR_RET_021(int23, m_createSubscriptionBase, v_contentResponse, int18, m_createScheduleBase));//Subscription
+						v_ae1.start(f_CSE_DMR_RET_021(int23, m_createSubscriptionBase, v_contentResponse, int18, m_createScheduleBase_subscription));//Subscription
 						v_ae1.done;
 					}
 					
diff --git a/OneM2M_Testcases_CSE_Release_3.ttcn b/OneM2M_Testcases_CSE_Release_3.ttcn
index d1e870279a18a41267e76b9fb299d3c80273917c..e2d057ebf89e37f79eed86b01bc06175845eed35 100644
--- a/OneM2M_Testcases_CSE_Release_3.ttcn
+++ b/OneM2M_Testcases_CSE_Release_3.ttcn
@@ -8745,6 +8745,10 @@ module OneM2M_Testcases_CSE_Release_3 {
 						}
 					}                    
 
+					if(vc_ae2.running) {
+						vc_ae2.stop;
+					};   
+
 					// Test Body
                     v_contentResponse.notification.notificationForwardingURI := v_fanoutPointAddress;
                     vc_ae2.start(f_cse_notifyProcedure_aggregatedNoficationHandler(v_contentResponse, 1)); // check if the Rx. of notification and match contents