diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index c8cc996be353c44d84e130ecafe835e4337e9bbd..7d16fd6bee23319e35ac7f647e9323fe2be091c9 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -418,13 +418,41 @@ module OneM2M_Functions {
 			 * @param p_tester AeSimu component
 			 * @param p_resourceIndex Index of resource to be retrieved
 			 */
-			function f_getResource(in Tester p_component, in integer p_resourceIndex := -1) runs on Tester return integer {
+			function f_getResourceFromAeSimu(in AeSimu p_component, in integer p_resourceIndex := -1) runs on Tester return integer {
 				var MyResource v_resource;
 				var integer v_resourceIndex := -1;
 			
 				f_connectInfoPort(p_component);
+				
+				p_component.start(f_sendResourceAeSimu(p_resourceIndex));
+				
+				alt {
+					[]infoPort.receive(mw_resource) -> value v_resource {
+						v_resourceIndex := f_setResource(v_resource.resource, v_resource.resourceType, v_resource.parentIndex, false);
+					}
+				}
 	
-				p_component.start(f_sendResource(p_resourceIndex));
+				p_component.done;
+				f_disconnectInfoPort(p_component);
+				
+				return v_resourceIndex;
+				
+			}	
+
+			
+			/**
+			 * @desc Getting a specific resource from an CseSimu component
+			 * @param p_tester AeSimu component
+			 * @param p_resourceIndex Index of resource to be retrieved
+			 */
+			function f_getResourceFromCseSimu(in CseSimu p_component, in integer p_resourceIndex := -1) runs on Tester return integer {
+				var MyResource v_resource;
+				var integer v_resourceIndex := -1;
+			
+				f_connectInfoPort(p_component);
+				
+				p_component.start(f_sendResourceCseSimu(p_resourceIndex));
+				
 				alt {
 					[]infoPort.receive(mw_resource) -> value v_resource {
 						v_resourceIndex := f_setResource(v_resource.resource, v_resource.resourceType, v_resource.parentIndex, false);
@@ -491,7 +519,7 @@ module OneM2M_Functions {
 			 * @desc Sending of a specific resource through InfoPort
 			 * @param p_resourceIndex Index of resource to be sent
 			 */	
-			function f_sendResource(in integer p_resourceIndex) runs on Tester {
+			function f_sendResourceAeSimu(in integer p_resourceIndex) runs on AeSimu {
 		
 				if(p_resourceIndex == -1) {
 					infoPort.send(vc_resourcesList[vc_aeAuxIndex]);  //TODO To send Ae or RemoteCSE depending on the component type
@@ -500,6 +528,57 @@ module OneM2M_Functions {
 				}
 					
 			} 	
+			
+			/**
+			 * @desc Sending of a specific resource through InfoPort
+			 * @param p_resourceIndex Index of resource to be sent
+			 */	
+			function f_sendResourceCseSimu(in integer p_resourceIndex) runs on CseSimu {
+		
+				if(p_resourceIndex == -1) {
+					infoPort.send(vc_resourcesList[vc_remoteCseIndex]);  //TODO To send Ae or RemoteCSE depending on the component type
+				} else {
+					infoPort.send(vc_resourcesList[p_resourceIndex]);
+				}
+					
+			}
+			
+			/**
+			 * @desc Sending of the latest resource through InfoPort
+			 */	
+			function f_sendLatestResource() runs on Tester {
+
+				infoPort.send(vc_resourcesList[lengthof(vc_resourcesList)-1]);
+				
+			} 	
+			
+			/**
+			 * @desc Sending of last resourceIndex saved in the vc_resourcesList
+			 */	
+			function f_sendLatestResourceIndex() runs on Tester {
+
+				infoPort.send(lengthof(vc_resourcesList)-1);
+		
+			} 
+		
+			/**
+			 * @desc Sending the address of the last resource saved in the vc_resourcesList
+			 */	
+			function f_sendLatestLocalResourceAddress(AddressingMethod p_addressingMethod := PX_ADDRESSING_METHOD, PrimitiveScope p_primitiveScope := PX_PRIMITIVE_SCOPE) runs on CseSimu {
+
+				infoPort.send(f_getLocalResourceAddress(lengthof(vc_localResourcesList)-1, p_addressingMethod, p_primitiveScope));
+		
+			} 
+		
+			/**
+			 * @desc Sending of last local resourceIndex saved in the vc_localResourcesList
+			 */	
+			function f_sendLatestLocalResourceIndex() runs on CseSimu {
+
+				infoPort.send(lengthof(vc_localResourcesList)-1);
+		
+			} 
+			
 		}//end of group sendFunctions
 			
 	}// end of gropu InfoPortCommunication	
@@ -599,7 +678,7 @@ module OneM2M_Functions {
 				}
 				
 				if(vc_acpAuxIndex != -1) {
-					vc_resourcesIndexToBeDeleted := {vc_acpAuxIndex};
+					vc_resourcesIndexToBeDeleted := {vc_acpAuxIndex};//TODO Not needed
 					v_request := valueof(m_createAe(p_appId, {f_getResourceId(vc_resourcesList[vc_acpAuxIndex].resource)}, -));
 					
 					//TODO Test, to be removed
@@ -702,7 +781,7 @@ module OneM2M_Functions {
 					vc_ae2.start(f_cse_createResource_withAcpAux(int2, m_createAe(PX_APP_ID, -, PX_AE2_ID_STEM, c_defaultAE2Name, {f_getCompletePoA("HTTP", PX_AE2_ADDRESS, "")}), -1)); // AE2 is registred
 					f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
 					
-					p_ae2Index := f_getResource(vc_ae2);
+					p_ae2Index := f_getResourceFromAeSimu(vc_ae2);
 					if(ischosen(p_createRequestPrimitive.primitiveContent.subscription)){		//this condition is necessary for Subscription TCs where notification URI is set in m_createSubscriptionAdvanced
 						p_createRequestPrimitive.primitiveContent.subscription.notificationURI := {f_getResourceAddress(p_ae2Index)};
 					}
@@ -1027,7 +1106,8 @@ module OneM2M_Functions {
 			 * @return Internal resource index of the created auxiliar ACP resource
 			 * @verdict 
 			 */
-			function f_cse_createAccessControlPolicyAux(in template (value) XSD.String p_acpName := c_acpAuxName, in template (value) ListOfURIs p_acor := PX_ACOR, in template (value) AccessControlOperations p_allowedOperations := int63) runs on AeSimu return integer{				var RequestPrimitive v_request;
+			function f_cse_createAccessControlPolicyAux(in template (value) XSD.String p_acpName := c_acpAuxName, in template (value) ListOfURIs p_acor := PX_ACOR, in template (value) AccessControlOperations p_allowedOperations := int63) runs on AeSimu return integer{				
+				var RequestPrimitive v_request;
 				var integer v_acpAuxIndex := -1;
 				
 				v_request := valueof(m_createAcpAux(p_acpName := p_acpName, p_acor := p_acor, p_allowedOperations := p_allowedOperations));
@@ -1565,6 +1645,10 @@ module OneM2M_Functions {
 							tc_ac.stop;
 							setverdict(fail, __SCOPE__ & ": Error, Non expected notification received");
 						}
+						[] mcaPortIn.receive(mw_request(mw_notifyResponsePrimitive(?))) -> value vc_request {
+							tc_ac.stop;
+							setverdict(fail, __SCOPE__ & ": Error, Non expected notification received");
+						}
 						[] tc_ac.timeout {
 							setverdict(pass, __SCOPE__ & ": No notification received");
 						}
@@ -2878,8 +2962,8 @@ module OneM2M_Functions {
 			
 			if (p_resourceType == int9) {//group
 				if(match(valueof(p_request.primitiveContent.group_.memberIDs), v_defaultListOfURIs )){
-					if ((p_parentIndex == -1) and (isbound(vc_aeAuxIndex))){
-						p_request.primitiveContent.group_.memberIDs := {f_getResourceId(vc_resourcesList[vc_aeAuxIndex].resource)};
+					if (p_parentIndex == -1){
+						p_request.primitiveContent.group_.memberIDs := {};
 					}else{
 						p_request.primitiveContent.group_.memberIDs := {f_getResourceId(vc_resourcesList[p_parentIndex].resource)};
 					}
@@ -2915,7 +2999,7 @@ module OneM2M_Functions {
 				//subscriberURI
 				if(ispresent(p_request.primitiveContent.subscription.subscriberURI)) {
 					if(match(valueof(p_request.primitiveContent.subscription.subscriberURI), "NotInitialized" )){
-						p_request.primitiveContent.subscription.subscriberURI := f_getResourceAddress(vc_aeAuxIndex);
+						p_request.primitiveContent.subscription.subscriberURI := valueof(p_request.from_);
 					}
 				}
 				//accessControlPolicyIds
diff --git a/LibOneM2M/OneM2M_Ports.ttcn b/LibOneM2M/OneM2M_Ports.ttcn
index 76b80cefe389d569029331bd0661ec2025a6287e..fbfdbc6024dc35bbb7ffe700a6855d824231f4db 100644
--- a/LibOneM2M/OneM2M_Ports.ttcn
+++ b/LibOneM2M/OneM2M_Ports.ttcn
@@ -14,6 +14,7 @@
 module OneM2M_Ports {
 	
 	import from OneM2M_Types all;
+	import from XSD all;
 	/* ***************************************
 	 * 		oneM2M Ports 
 	 * ***************************************
@@ -47,9 +48,9 @@ module OneM2M_Ports {
 	 */
 	type port InfoPort message {
 		in
-			RequestPrimitive, ResponsePrimitive, PrimitiveContent, MyResource;
+			RequestPrimitive, ResponsePrimitive, PrimitiveContent, MyResource, integer, XSD.ID;
 		out
-			RequestPrimitive, ResponsePrimitive, PrimitiveContent, MyResource;
+			RequestPrimitive, ResponsePrimitive, PrimitiveContent, MyResource, integer, XSD.ID;
 	}
 
 
diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn
index 85a8e7b0d138ab6d327af3573dfaae3a24384604..3a00f17f01a6c5addfc2329f15f02526cce52a88 100644
--- a/LibOneM2M/OneM2M_Templates.ttcn
+++ b/LibOneM2M/OneM2M_Templates.ttcn
@@ -1191,6 +1191,13 @@ module OneM2M_Templates {
 				primitiveContent := {notification := p_notification}
 			};
 			
+			/**
+			 * @desc Base NOTIFY request primitive for ResponsePrimitive
+			 */
+			
+			template RequestPrimitive mw_notifyResponsePrimitive(in template (present) ResponsePrimitive p_responsePrimitive) modifies mw_notify := {
+				primitiveContent := {responsePrimitive := p_responsePrimitive}
+			};
 
 			
     		
diff --git a/LibOneM2M/OneM2M_TestSystem.ttcn b/LibOneM2M/OneM2M_TestSystem.ttcn
index b1808128e9b8db935d6030770a2ab9f83223a423..ed535b18d206c00958b5ddc0e5e29ea664460da3 100644
--- a/LibOneM2M/OneM2M_TestSystem.ttcn
+++ b/LibOneM2M/OneM2M_TestSystem.ttcn
@@ -35,13 +35,12 @@ module OneM2M_TestSystem {
 		var TestSystemRole vc_testSystemRole;
 		var MyResourcesList vc_resourcesList;
 		var IntegerList vc_resourcesIndexToBeDeleted := {};
-		var integer vc_aeAuxIndex := -1;//TODO To be removed
 		var integer vc_acpAuxIndex := -1;
-		var AccessControlPolicy_optional vc_acpAux;
 		var MsgIn vc_request;
 		var MsgIn vc_response;
 		var default vc_aeSimu := null;
 		var default vc_cseSimu := null;
+		var PrimitiveContent vc_primitiveContentRetrievedResource;
 	};
 	
 	type component AeSimu extends Tester {
@@ -50,10 +49,11 @@ module OneM2M_TestSystem {
 		port OneM2MPort mcaPortIn;
 	
 		//global variables
-		var PrimitiveContent vc_primitiveContentRetrievedResource;
+		//var PrimitiveContent vc_primitiveContentRetrievedResource;
 
 		var CseSimu vc_cse1;//For CF02 when AeSimu is master
 		var boolean vc_auxiliaryAe2Up := false;
+		var integer vc_aeAuxIndex := -1;//Specific to AeSimu
 	};
 		
 	type component CseSimu extends Tester {
@@ -65,10 +65,10 @@ module OneM2M_TestSystem {
 		//global variables
 		var MyResourcesList vc_localResourcesList := {};
 		var AeSimu vc_ae1;//For CF02 when CseSimu is master
-		var integer vc_remoteCseIndex := -1;
 		var integer vc_localRemoteCseIndex := -1;
 		var integer vc_cSEBaseIndex := -1;	//Index of the CSEBase resource of the Tester inside vc_localResourcesList
 		var CseTypeID vc_cseType;	//cseType of the simulated CSE. IN =1, MN = 2
+		var integer vc_remoteCseIndex := -1;//Specific to CseSimu
 	};
 	
 	type component InCseSimu extends CseSimu {}
diff --git a/LibOneM2M/OneM2M_Types.ttcn b/LibOneM2M/OneM2M_Types.ttcn
index b116f750797f31282fc746c89b96c671e6ea8cf9..8f58e11081f26b2eadc52adf46f992c91a58f917 100644
--- a/LibOneM2M/OneM2M_Types.ttcn
+++ b/LibOneM2M/OneM2M_Types.ttcn
@@ -2865,7 +2865,7 @@ module OneM2M_Types {
 		MemberType memberType,
 		XSD.NonNegativeInteger currentNrOfMembers,
 		XSD.PositiveInteger maxNrOfMembers,
-		record of XSD.AnyURI memberIDs,
+		record length(0 .. infinity) of XSD.AnyURI memberIDs,//TODO A list that can be empty
 		ListOfURIs membersAccessControlPolicyIDs optional,
 		XSD.Boolean memberTypeValidated optional,
 		ConsistencyStrategy consistencyStrategy optional,
@@ -4619,7 +4619,7 @@ group optionalResourceTypes {
 			MemberType memberType optional,
 			XSD.NonNegativeInteger currentNrOfMembers optional,
 			XSD.PositiveInteger maxNrOfMembers optional,
-			ListOfURIs memberIDs optional,
+			record length(0 .. infinity) of XSD.AnyURI memberIDs optional,//TODO A list that can be empty
 			ListOfURIs membersAccessControlPolicyIDs optional,
 			XSD.Boolean memberTypeValidated optional,
 			ConsistencyStrategy consistencyStrategy optional,
diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn
index b42f331bc1b6ff8a386ea1c3b5569b13b47a4c72..0d0a66e1d6675bb0086a0759991c1d9a3d0158dd 100644
--- a/OneM2M_PermutationFunctions.ttcn
+++ b/OneM2M_PermutationFunctions.ttcn
@@ -1752,7 +1752,7 @@ module OneM2M_PermutationFunctions {
 								vc_ae2.start(f_cse_createResource_withAcpAux(int2, m_createAe(PX_APP_ID, -, PX_AE2_ID_STEM, c_defaultAE2Name, v_poaList), -1)); // AE2 is registred
 								f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
 								
-								v_ae2Index := f_getResource(vc_ae2);
+								v_ae2Index := f_getResourceFromAeSimu(vc_ae2);
 								p_parentRequestPrimitive.primitiveContent.subscription.notificationURI := {f_getResourceAddress(v_ae2Index)};
 								vc_ae2.start(f_cse_notifyProcedure_subscriptionVerificationHandler());
 							}
@@ -1789,7 +1789,7 @@ module OneM2M_PermutationFunctions {
 							f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
 							vc_ae2.start(f_cse_createResource_withAcpAux(int2, m_createAe(PX_APP_ID, -, PX_AE2_ID_STEM, c_defaultAE2Name, v_poaList), -1)); // AE2 is registred
 							f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
-							v_ae2Index := f_getResource(vc_ae2);
+							v_ae2Index := f_getResourceFromAeSimu(vc_ae2);
 							p_requestPrimitive.primitiveContent.subscription.notificationURI := {f_getResourceAddress(v_ae2Index)}; 
 							vc_ae2.start(f_cse_notifyProcedure_subscriptionVerificationHandler());
 						}
@@ -1863,7 +1863,7 @@ module OneM2M_PermutationFunctions {
 								f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
 								vc_ae1.start(f_cse_createResource_withAcpAux(int2, m_createAe(PX_APP_ID, -, PX_AE1_ID_STEM, "MyAe", v_poaList), -1)); // AE1 is registered
 								f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
-								v_ae1Index := f_getResource(vc_ae1);
+								v_ae1Index := f_getResourceFromAeSimu(vc_ae1);
 								p_requestPrimitive.primitiveContent.subscription.notificationURI := {f_getResourceAddress(v_ae1Index)}; 
 								vc_ae1.start(f_cse_notifyProcedure_subscriptionVerificationHandler());
 							}
diff --git a/OneM2M_Testcases_CSE_Release_1.ttcn b/OneM2M_Testcases_CSE_Release_1.ttcn
index a0597f2667df817afadbfd29e25c59a4906ea08e..cdad95e4f0779d1b55e6779a0859671c76705546 100644
--- a/OneM2M_Testcases_CSE_Release_1.ttcn
+++ b/OneM2M_Testcases_CSE_Release_1.ttcn
@@ -1414,7 +1414,7 @@ module OneM2M_Testcases_CSE_Release_1 {
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ": Resource type remoteCSE created successfully");
 							f_checkAttributesToBeSaved(int16, v_request, v_response.primitive.responsePrimitive);
-							vc_aeAuxIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, int16);
+							vc_remoteCseIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, int16);
 						}
 						[] mccPort.receive(mw_response(mw_responsePrimitiveOK)) {
 							tc_ac.stop;
@@ -1480,7 +1480,7 @@ module OneM2M_Testcases_CSE_Release_1 {
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ": Resource type remoteCSE created successfully");
 							f_checkAttributesToBeSaved(int16, v_request, v_response.primitive.responsePrimitive);
-							vc_aeAuxIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, int16);
+							vc_remoteCseIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, int16);
 						}
 						[] mccPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
 							tc_ac.stop;