diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index b61d428e893fe798df25af06fb468ea42ae1fde9..350ce7a0561f57c459d890d8ae05567c4f11834c 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -376,6 +376,48 @@ module OneM2M_Functions {
 				f_cse_postamble_default();
 			}
 			
+			/**
+			 * @desc Deletion of all resources created during the test case execution. IUT gets clean and ready for next execution
+			 * @verdict 
+			 */
+			function f_cse_postamble_deleteResourcesCSE() runs on CseTester {
+				var integer i;
+				var XSD.ID v_resourceAddress;
+				var RequestPrimitive v_request;
+	
+				if (PX_RUN_POSTAMBLE) {
+		
+					for(i := lengthof(vc_resourcesIndexToBeDeleted) -1; i >=0; i := i - 1) {
+			
+						v_resourceAddress := f_getResourceAddress(vc_resourcesIndexToBeDeleted[i]); 
+			
+						v_request := valueof(m_delete(v_resourceAddress, f_getOriginator(vc_resourcesIndexToBeDeleted[i],false)));
+			
+						v_request.from_ := PX_SUPER_CSE_ID;
+
+						mccPort.send(m_request(v_request));
+			
+						tc_ac.start;
+						alt {
+							[] mccPort.receive(mw_response(mw_responsePrimitiveOK)) {
+								tc_ac.stop;
+								log(__SCOPE__&" INFO: Resource " & v_request.to_ & " deleted");
+							}
+							[] mccPort.receive(mw_response(mw_responsePrimitiveKO)) {
+								tc_ac.stop;
+								log(__SCOPE__&" INFO: Error while deleting resource " & v_request.to_);
+							}
+							[] tc_ac.timeout {
+								log(__SCOPE__&" INFO: No answer while deleting resource " & v_request.to_);
+							}	
+						}	
+			
+					}
+				}
+				
+				f_cse_postamble_default();
+			}
+			
 			/**
 			 * @desc Default postamble
 			 * @verdict 
@@ -1669,6 +1711,9 @@ module OneM2M_Functions {
 			if(ischosen(p_contentResource.serviceSubscribedAppRule)) {
 				return p_contentResource.serviceSubscribedAppRule.resourceName;
 			}
+			if(ischosen(p_contentResource.remoteCSE)) {
+				return p_contentResource.remoteCSE.resourceName;
+			}
 			log(__SCOPE__&":WARNING: Primitive Content Kind not implemented");
 			
 			return "resourceNameNotFound";
diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn
index 011fb75d10225fe9cc7c498614e80b9fc5448d6c..d1e09873ddea2a36e6cf5a2cf08b70ec4f8d0966 100644
--- a/LibOneM2M/OneM2M_Templates.ttcn
+++ b/LibOneM2M/OneM2M_Templates.ttcn
@@ -204,6 +204,35 @@ module OneM2M_Templates {
 				}
 			};
 			
+			/**
+			  * @desc RETRIEVE request primtive containing the Filter Criteria in the filterCriteria field
+			  * @param p_targetResourceAddress Target resource address 
+			  * @param p_originator Originator (from)
+			  * @param p_filterUsage FilterUsage
+			  * @param p_labels Labels
+			 */
+			template (value) RequestPrimitive m_retrieveResourceFilterUsageOptionLabel(XSD.ID p_targetResourceAddress, in XSD.ID p_originator, in template (value) FilterUsage p_filterUsage, in Labels p_labels) modifies m_retrieveResource := {
+				requestIdentifier := "m_retrieveResourceFilterUsageOptionLabel" & f_rnd(1, 1000000),
+				filterCriteria := {
+					createdBefore := omit,
+					createdAfter := omit,
+					modifiedSince := omit,
+					unmodifiedSince := omit,
+					stateTagSmaller := omit,
+					stateTagBigger := omit,
+					expireBefore := omit,
+					expireAfter := omit,
+					labels := p_labels,
+					resourceType := omit,
+					sizeAbove := omit,
+					sizeBelow := omit,
+					contentType_list := {},
+					attribute_list := {},
+					filterUsage := p_filterUsage, 
+					limit := omit
+				}
+			};
+			
 			/**
 			  * @desc RETRIEVE request primtive containing the Discovery Type in the discoveryResultType field and Filter Criteria in the filterCriteria field
 			  * @param p_targetResourceAddress Target resource address 
@@ -3294,10 +3323,10 @@ module OneM2M_Templates {
 			eventCategory := *
 		};
     	
-		template ResponsePrimitive mw_responseDiscovery := {
+		template ResponsePrimitive mw_responseDiscovery(template URIList p_uriList := ?) := {
 			responseStatusCode := int2000,
 			requestIdentifier := ?,
-			primitiveContent := {uRIList := ?},
+			primitiveContent := {uRIList := p_uriList},
 			to_ := *,
 			from_ := *,
 			originatingTimestamp := *,
diff --git a/OneM2M_TestControl.ttcn b/OneM2M_TestControl.ttcn
index 6c0860ad9f3cf4c0bc9466f4d3c00a967b6a6b6c..18722af085bbfcb7c25733aad900cdf65676385d 100644
--- a/OneM2M_TestControl.ttcn
+++ b/OneM2M_TestControl.ttcn
@@ -43,7 +43,7 @@ module OneM2M_TestControl {
 		execute(TC_CSE_REG_CRE_018());
 		execute(TC_CSE_REG_CRE_022());
 		execute(TC_CSE_REG_CRE_023());
-		execute(TC_CSE_REG_CRE_024());
+		execute(TC_CSE_REG_CRE_025());
 		execute(TC_CSE_REG_CRE_026());
 		execute(TC_CSE_REG_RET_001());
 		execute(TC_CSE_REG_RET_005());
diff --git a/OneM2M_Testcases.ttcn b/OneM2M_Testcases.ttcn
index 4c1eca21c129ed0bb7992b22673b2e5393f738ea..bf98ebe6131dd040934dc823de75e6aa8dffa0f0 100644
--- a/OneM2M_Testcases.ttcn
+++ b/OneM2M_Testcases.ttcn
@@ -1293,6 +1293,8 @@ module OneM2M_Testcases {
 						[] mccPort.receive(mw_response(mw_responsePrimitive(int2001))) -> value v_response {
 							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);
 						}
 						[] mccPort.receive(mw_response(mw_responsePrimitiveOK)) {
 							tc_ac.stop;
@@ -1308,7 +1310,7 @@ module OneM2M_Testcases {
 					}	
 			
 					// Postamble
-					f_cse_postamble_deleteResources();
+					f_cse_postamble_deleteResourcesCSE();
 	
 					// Tear down
 					f_cf04Down();
@@ -1345,6 +1347,8 @@ module OneM2M_Testcases {
 						[] mccPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
 							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);
 						}
 						[] mccPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
 							tc_ac.stop;
@@ -1356,7 +1360,7 @@ module OneM2M_Testcases {
 					}	
 
 					// Postamble
-					f_cse_postamble_deleteResources();
+					f_cse_postamble_deleteResourcesCSE();
 
 					// Tear down
 					f_cf04Down();
@@ -15770,6 +15774,7 @@ module OneM2M_Testcases {
 				var RequestPrimitive v_request;
 				var integer v_childResourceIndex := -1;
 				const ResourceType c_containerResourceType := int3; 
+				var Labels v_labels := {"NotFoundLabel"};
 			
 				// Test control
 	
@@ -15783,12 +15788,14 @@ module OneM2M_Testcases {
 			
 				v_resourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_aeIndex);
 				v_childResourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_resourceIndex);
-				v_request := valueof(m_retrieveResourceFilterUsageOption(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex), int1));
+				//v_request := valueof(m_retrieveResourceFilterUsageOption(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex), int1));
+				v_request := valueof(m_retrieveResourceFilterUsageOptionLabel(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex), int1, v_labels));
 				mcaPort.send(m_request(v_request));
 				tc_ac.start;
 				alt {
 					[] mcaPort.receive(mw_response(mw_responseDiscovery)) -> value v_response {
 						tc_ac.stop;
+						log("sizeof: " & int2str(sizeof(v_response.primitive.responsePrimitive.primitiveContent.uRIList)));
 						if(sizeof(v_response.primitive.responsePrimitive.primitiveContent.uRIList) == 0){
 						  setverdict(pass, __SCOPE__ & ": No Content is present");	
 						}
@@ -15829,6 +15836,7 @@ module OneM2M_Testcases {
 				var RequestPrimitive v_request;
 				var integer v_childResourceIndex := -1;
 				const ResourceType c_containerResourceType := int3; 
+				var integer v_i_cont := 0;
 				
 				// Test control
 	
@@ -15848,10 +15856,13 @@ module OneM2M_Testcases {
 				alt {
 					[] mcaPort.receive(mw_response(mw_responseDiscovery)) -> value v_response {
 						tc_ac.stop;
-						if (f_isNonHierarchical(v_response.primitive.responsePrimitive.primitiveContent.uRIList[0])) {
-						  setverdict(pass, __SCOPE__ & ": Non-hierarchical address form present in URIList element");
-						} else {
-						  setverdict(fail, __SCOPE__ & ": Non-hierarchical address form absent in URIList representation"); 
+						while (v_i_cont<sizeof(v_response.primitive.responsePrimitive.primitiveContent.uRIList)){
+							if (f_isNonHierarchical(v_response.primitive.responsePrimitive.primitiveContent.uRIList[v_i_cont])) {
+							  setverdict(pass, __SCOPE__ & ": Non-hierarchical address form present in URIList[" & int2str(v_i_cont) & "] element");
+							} else {
+							  setverdict(fail, __SCOPE__ & ": Non-hierarchical address form absent in URIList[" & int2str(v_i_cont) & "] element"); 
+							}
+							v_i_cont := v_i_cont + 1;
 						}
 					}
 					[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) { 
@@ -16014,7 +16025,9 @@ module OneM2M_Testcases {
 			    
 				v_resourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_aeIndex);
 				v_childResourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_resourceIndex); 
-				v_request := valueof(m_retrieveResourceInvalidFormatOption(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex)));
+				v_request := valueof(m_retrieveResourceFilterUsageOption(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex), int1));
+				v_request.filterCriteria.expireBefore := "20171231T012345";
+				v_request.filterCriteria.expireAfter := "20181231T012345";
 				mcaPort.send(m_request(v_request));
 				tc_ac.start;
 				alt {