diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn
index 2a1974f2a63b9a4d9b0ddce0747b0a549a63dece..bd72b1bb250f1ef32e9eb9eda52d5cbf03078b89 100644
--- a/LibOneM2M/OneM2M_Templates.ttcn
+++ b/LibOneM2M/OneM2M_Templates.ttcn
@@ -206,6 +206,22 @@ module OneM2M_Templates {
 				localTokenIDs := omit,
 				tokenRequestIndicator := omit
 			};
+			
+			/**
+			  * @desc RETRIEVE request primtive containing the Filter Criteria in the filterCriteria field
+			  * @param p_targetResourceAddress Target resource address 
+			  * @param p_filterCriteria FilterCriteria
+			  * @param p_originator Originator (from)
+		     */
+			template (value) RequestPrimitive m_retrieveResourceFilterUsageOption(XSD.ID p_targetResourceAddress, in XSD.ID p_originator, in template (value) FilterUsage p_filterUsage) modifies m_retrieveResource := {
+				requestIdentifier := "m_retrieveResourceFilterUsageOption" & f_rnd(1, 1000000),
+				filterCriteria := {
+					contentType_list := {}, 
+					attribute_list := {}, 
+					filterUsage := p_filterUsage,
+					semanticsFilter_list := {}
+				}
+			};
     	}//end group Retrieve
 
     	group Update {
diff --git a/OneM2M_TestControl.ttcn b/OneM2M_TestControl.ttcn
index 0213720a6c9aacdc82749c0f4a78271e523782e2..a8b69c2aa4dafac7726cbe8a8d87a6014d1dc3cf 100644
--- a/OneM2M_TestControl.ttcn
+++ b/OneM2M_TestControl.ttcn
@@ -239,6 +239,7 @@ module OneM2M_TestControl {
 		execute(TC_CSE_GMG_BV_022_02());
 		execute(TC_CSE_GMG_BV_022_03());
 		execute(TC_CSE_GMG_BV_022_04());
+		execute(TC_CSE_DIS_BV_001());
 		execute(TC_CSE_SUB_BV_001_01());
 		execute(TC_CSE_SUB_BV_001_02());
 		execute(TC_CSE_SUB_BV_002());
diff --git a/OneM2M_Testcases.ttcn b/OneM2M_Testcases.ttcn
index c57e0683f77a651d2e8cb69e1ce84ee1e5b37e3c..c2da397f9deba9dcc3f7c13bb7735c467677b9b3 100644
--- a/OneM2M_Testcases.ttcn
+++ b/OneM2M_Testcases.ttcn
@@ -9310,6 +9310,65 @@ module OneM2M_Testcases {
 			} // end group g_CSE_GMG_BV_024
             
         } // end group Group_Managment
+        
+        group Discovery {
+        	
+        	group g_CSE_DIS_BV_001{
+        		testcase TC_CSE_DIS_BV_001() runs on CseTester system CseSystem {
+        			// Local variables
+					var MsgIn v_response;
+					var integer v_aeIndex := -1;
+					var integer v_resourceIndex := -1;
+					var RequestPrimitive v_request;
+					var CseTester v_notifyHandler;
+					var integer v_ae2Index := -1;
+					const ResourceType c_containerResourceType := int3; 
+					
+					// Test control
+
+					// Test component configuration
+					f_cf01Up();
+
+					// Test adapter configuration
+
+					// Preamble
+					v_aeIndex := f_cse_preamble_registerAe();//AE1 is registred;
+					
+					v_resourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_aeIndex);
+					v_request := valueof(m_retrieveResourceFilterUsageOption(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex), int1));
+					mcaPort.send(m_request(v_request));
+					tc_ac.start;
+					alt {
+						
+						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2000))) -> value v_response {
+							tc_ac.stop;
+							if(not ischosen(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].URIList)){
+							  setverdict(fail, testcasename() & ": URI List Representation not present");	
+							}
+							else
+							{
+							  setverdict(pass, testcasename() & ": URI List Representation available");
+							}
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { 
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error while retrieving resource");
+						}
+						[] tc_ac.timeout {
+							setverdict(fail, testcasename() & ": No answer while retrieving resource");
+						}
+					 }	
+    								
+					// Postamble
+					f_cse_postamble_deleteResources();
+					
+					// Tear down
+					f_cf01Down();
+        		} // end TC_CSE_DIS_BV_001
+        		
+        	} //end group g_CSE_DIS_BV_001
+        	
+        } //end group Group Discovery
 		
 		group Subscription_And_Notification {