Index: modules/dnet-modular-mdstore-ui/trunk/src/main/java/eu/dnetlib/functionality/modular/ui/mdstore/MDStoreServiceInternalController.java
===================================================================
--- modules/dnet-modular-mdstore-ui/trunk/src/main/java/eu/dnetlib/functionality/modular/ui/mdstore/MDStoreServiceInternalController.java	(revision 39741)
+++ modules/dnet-modular-mdstore-ui/trunk/src/main/java/eu/dnetlib/functionality/modular/ui/mdstore/MDStoreServiceInternalController.java	(revision 39742)
@@ -5,6 +5,11 @@
 import com.google.common.collect.Maps;
 import eu.dnetlib.data.mdstore.DocumentNotFoundException;
 import eu.dnetlib.data.mdstore.MDStoreService;
+import eu.dnetlib.data.mdstore.modular.MDFormatDescription;
+import eu.dnetlib.data.mdstore.modular.MDStoreUtils;
+import eu.dnetlib.data.mdstore.modular.ModularMDStoreService;
+import eu.dnetlib.data.mdstore.modular.connector.MDStore;
+import eu.dnetlib.data.mdstore.modular.rest.MDStoreResultItem;
 import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
 import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
 import eu.dnetlib.enabling.locators.UniqueServiceLocator;
@@ -13,6 +18,7 @@
 import eu.dnetlib.miscutils.functional.xml.ApplyXslt;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
@@ -44,9 +50,16 @@
     @Resource
     private UniqueServiceLocator serviceLocator;
 
+    @Autowired
+    private MDStoreUtils mdStoreUtils;
+
     @Resource
     private ResultSetClientFactory resultSetClientFactory;
 
+    @Autowired
+    private ModularMDStoreService mdStoreService;
+
+
     private Map<String, Info> datasourceCache;
 
     /**
@@ -105,11 +118,24 @@
     public MDStoreInfo getMdStoreInfo(final ModelMap map, @RequestParam(value = "id", required = true) final String profileId) throws Exception {
 
         final MDStoreInfo mdStoreInfo = retrieveMDStoreInfo(profileId);
-        mdStoreInfo.setDatasourcesInvolved(findDatasourceNameAssociatedToMdStore(profileId));
+        List<MDFormatDescription> indexFields = mdStoreUtils.getField(mdStoreInfo.getFormat(), mdStoreInfo.getLayout());
+        List<String> idFields = null;
+        if (indexFields != null) {
+            idFields = Lists.transform(indexFields, new Function<MDFormatDescription, String>() {
+                @Override
+                public String apply(MDFormatDescription input) {
+                    return input.getName();
+                }
+            });
+            mdStoreInfo.setIndexFields(idFields);
+        }
+
+        //mdStoreInfo.setDatasourcesInvolved(findDatasourceNameAssociatedToMdStore(profileId));
         return mdStoreInfo;
 
     }
 
+
     @RequestMapping(value = "/ui/mdstore/mdStoreResults")
     @ResponseBody
     public List<String> getMDStoreResults(final ModelMap map,
@@ -128,13 +154,11 @@
             } catch (DocumentNotFoundException e) {
                 return null;
             }
-
         }
 
+
         W3CEndpointReference epr = mdService.deliverMDRecords(mdId, null, null, null);
-
         Iterable<String> result = resultSetClientFactory.getClient(epr);
-
         List<String> convertedList = new ArrayList<String>();
         Iterator<String> it = result.iterator();
         int currentcounter = 0;
@@ -158,6 +182,22 @@
     }
 
 
+    @RequestMapping(value = "/ui/mdstore/findByIndexField")
+    @ResponseBody
+    public List<MDStoreResultItem> findMDStoreItemByIndexField(
+            ModelMap map,
+            @RequestParam(value = "mdId", required = true) final String mdId,
+            @RequestParam(value = "indexField", required = true) final String indexField,
+            @RequestParam(value = "query", required = true) final String query,
+            @RequestParam(value = "from", required = true) final int from) throws Exception {
+
+        MDStore store = mdStoreService.getFeeder().getDao().getMDStore(mdId);
+        Map<String, String> queryMap = Maps.newHashMap();
+        queryMap.put(indexField, query);
+        return store.searchByIndexFields(queryMap, from, 20);
+    }
+
+
     private Map<String, Info> datasourceFromMdStore() {
         final String query = "for $x in collection('/db/DRIVER/WorkflowDSResources/WorkflowDSResourceType') where $x[.//PARAM/@category/string()='MDSTORE_ID'] return concat($x//PARAM[./@name='providerId'][1]/string(), '<::>',$x//PARAM[./@name='providerName'][1]/string(), '<::>', string-join($x//PARAM[./@category/string()='MDSTORE_ID']/string(), '--'))";
         final ISLookUpService lookupService = serviceLocator.getService(ISLookUpService.class);
Index: modules/dnet-modular-mdstore-ui/trunk/src/main/java/eu/dnetlib/functionality/modular/ui/mdstore/model/MDStoreInfo.java
===================================================================
--- modules/dnet-modular-mdstore-ui/trunk/src/main/java/eu/dnetlib/functionality/modular/ui/mdstore/model/MDStoreInfo.java	(revision 39741)
+++ modules/dnet-modular-mdstore-ui/trunk/src/main/java/eu/dnetlib/functionality/modular/ui/mdstore/model/MDStoreInfo.java	(revision 39742)
@@ -1,5 +1,6 @@
 package eu.dnetlib.functionality.modular.ui.mdstore.model;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -41,6 +42,8 @@
 
     private Map<String, String> datasourcesInvolved;
 
+    private List<String> indexFields;
+
     /**
      * The size.
      */
@@ -199,4 +202,12 @@
     public void setDatasourcesInvolved(Map<String, String> datasourcesInvolved) {
         this.datasourcesInvolved = datasourcesInvolved;
     }
+
+    public List<String> getIndexFields() {
+        return indexFields;
+    }
+
+    public void setIndexFields(List<String> indexFields) {
+        this.indexFields = indexFields;
+    }
 }
Index: modules/dnet-modular-mdstore-ui/trunk/src/main/resources/eu/dnetlib/web/resources/html/mdstore/inspect.html
===================================================================
--- modules/dnet-modular-mdstore-ui/trunk/src/main/resources/eu/dnetlib/web/resources/html/mdstore/inspect.html	(revision 39741)
+++ modules/dnet-modular-mdstore-ui/trunk/src/main/resources/eu/dnetlib/web/resources/html/mdstore/inspect.html	(revision 39742)
@@ -128,7 +128,7 @@
                                     </a>
                                 </td>
                             </tr>
-                            <tr>
+                            <tr ng-hide="mdStoreInfo.indexFields.length">
                                 <td align="right">
                                     <b>Free search: </b>
                                 </td>
@@ -145,6 +145,23 @@
                                 </td>
                             </tr>
 
+                            <tr ng-repeat="item in mdStoreInfo.indexFields">
+                                <td align="right">
+                                    <b>{{item}}: </b>
+                                </td>
+                                <td style=" padding-left:10px">
+                                    <input type="text" class="form-control" ng-model="query"
+                                           placeholder="Search for {{item}}">
+                                </td>
+                                <td style=" padding-left:10px">
+                                    <a style=" padding-left:10px" href="" ng-click="findIndexFields(item)"
+                                       class="btn btn-primary btn-sm">
+                                        <span class="glyphicon glyphicon-search"></span>
+                                        Search
+                                    </a>
+                                </td>
+                            </tr>
+
                         </table>
 
                     </div>
Index: modules/dnet-modular-mdstore-ui/trunk/src/main/resources/eu/dnetlib/web/resources/js/mdstore_inspector_controllers.js
===================================================================
--- modules/dnet-modular-mdstore-ui/trunk/src/main/resources/eu/dnetlib/web/resources/js/mdstore_inspector_controllers.js	(revision 39741)
+++ modules/dnet-modular-mdstore-ui/trunk/src/main/resources/eu/dnetlib/web/resources/js/mdstore_inspector_controllers.js	(revision 39742)
@@ -123,6 +123,27 @@
             $scope.hideSpinner();
         }
 
+
+        $scope.findIndexFields = function (indexField) {
+            $scope.showSpinner();
+            if ($scope.query == null) {
+                if ($scope.searchResult != null)
+                    $scope.searchResult.total = $scope.mdStoreInfo.size
+            }
+            $http.post('mdstore/findByIndexField', $.param({
+                'mdId': $routeParams.id, 'from': $scope.from_page, 'query': $scope.query,
+                'indexField': indexField
+            })).success(function (data) {
+                $scope.hideSpinner();
+                $scope.searchResult.records = data;
+                $scope.to_page = Math.min($scope.from_page + 10, $scope.searchResult.total);
+            }).error(function () {
+                $scope.showError('Error getting info from mdstore');
+                $scope.hideSpinner();
+            });
+
+        }
+
         $scope.getResults = function () {
             $scope.showSpinner();
             if ($scope.query == null) {
Index: modules/dnet-modular-mdstore-ui/trunk/pom.xml
===================================================================
--- modules/dnet-modular-mdstore-ui/trunk/pom.xml	(revision 39741)
+++ modules/dnet-modular-mdstore-ui/trunk/pom.xml	(revision 39742)
@@ -34,5 +34,11 @@
 			<scope>test</scope>
 		</dependency>
 
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>cnr-modular-mdstore-service</artifactId>
+			<version>[5.0.0,5.1.0)</version>
+		</dependency>
+
 	</dependencies>
 </project>
