Index: modules/uoa-services-library/trunk/ng-openaire-library/src/app/services/searchDataproviders.service.ts
===================================================================
--- modules/uoa-services-library/trunk/ng-openaire-library/src/app/services/searchDataproviders.service.ts	(revision 58415)
+++ modules/uoa-services-library/trunk/ng-openaire-library/src/app/services/searchDataproviders.service.ts	(revision 58416)
@@ -471,6 +471,17 @@
 
         return this.numOfDataproviders(url, properties);
     }
+  numOfSearchDataproviders2(params: string, properties:EnvProperties, refineQuery:string=null):any {
+    let url: string = properties.searchAPIURLLAst+"resources2/?format=json&size=0&type=datasources";
+    if(params != "") {
+      url += "&query=" +params;
+    }
+    if(refineQuery!= null && refineQuery != ''  ) {
+      url += refineQuery;
+    }
+    return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
+      .pipe(map(res => res['meta']['total']));
+  }
 /*
     private quote(word: any): string {
         return '"'+word+'"';
Index: modules/uoa-services-library/trunk/ng-openaire-library/src/app/services/searchResearchResults.service.ts
===================================================================
--- modules/uoa-services-library/trunk/ng-openaire-library/src/app/services/searchResearchResults.service.ts	(revision 58415)
+++ modules/uoa-services-library/trunk/ng-openaire-library/src/app/services/searchResearchResults.service.ts	(revision 58416)
@@ -388,19 +388,20 @@
         return this.numOfResults(url , properties);
     }
   numOfResearchOutcomes( params: string, properties:EnvProperties, refineParams:string=null):any {
-    let url = properties.searchAPIURLLAst+"resources2/?format=json&size=0&type=publications&type=datasets&type=software&type=other";
+    let url = properties.searchAPIURLLAst+"resources2/?format=json&size=0&type=results";
     if(params.length > 0){
-      var DOIs:string[] = DOI.getDOIsFromString(params);
-      var doisParams = "";
-
-      for(var i =0 ;i < DOIs.length; i++){
-        doisParams+=(doisParams.length > 0?"&":"")+'doi="'+ DOIs[i]+'"';
-      }
-      if(doisParams.length > 0){
-        url += "&"+doisParams;
-      }else{
-        url += "&query=" + StringUtils.URIEncode(params);
-      }
+      // var DOIs:string[] = DOI.getDOIsFromString(params);
+      // var doisParams = "";
+      //
+      // for(var i =0 ;i < DOIs.length; i++){
+      //   doisParams+=(doisParams.length > 0?"&":"")+'doi="'+ DOIs[i]+'"';
+      // }
+      // if(doisParams.length > 0){
+      //   url += "&"+doisParams;
+      // }else{
+      //   url += "&query=" + StringUtils.URIEncode(params);
+      // }
+      url += "&query=" + params;
     }
 
     if(refineParams!= null && refineParams != ''  ) {
Index: modules/uoa-services-library/trunk/ng-openaire-library/src/app/services/searchOrganizations.service.ts
===================================================================
--- modules/uoa-services-library/trunk/ng-openaire-library/src/app/services/searchOrganizations.service.ts	(revision 58415)
+++ modules/uoa-services-library/trunk/ng-openaire-library/src/app/services/searchOrganizations.service.ts	(revision 58416)
@@ -196,4 +196,16 @@
         }
         return this.numOfOrganizations(url, properties);
     }
+
+    numOfSearchOrganizations2(params: string, properties:EnvProperties, refineParams:string=null ):any {
+        let url = properties.searchAPIURLLAst+"resources2/?format=json&size=0&type=organizations";
+        if(params != "") {
+            url += "&query=" + params;
+        }
+        if(refineParams!= null && refineParams != ''  ) {
+            url += refineParams;
+        }
+        return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
+          .pipe(map(res => res['meta']['total']));
+    }
 }
Index: modules/uoa-services-library/trunk/ng-openaire-library/src/app/services/searchProjects.service.ts
===================================================================
--- modules/uoa-services-library/trunk/ng-openaire-library/src/app/services/searchProjects.service.ts	(revision 58415)
+++ modules/uoa-services-library/trunk/ng-openaire-library/src/app/services/searchProjects.service.ts	(revision 58416)
@@ -288,4 +288,15 @@
       }
         return this.numOfProjects(url, properties);
     }
+    numOfSearchProjects2(params: string, properties:EnvProperties, refineParams:string=null ):any {
+      let url = properties.searchAPIURLLAst+"resources2/?format=json&size=0&type=projects";
+      if(params != "") {
+        url += "&query=" + params;
+      }
+      if(refineParams!= null && refineParams != ''  ) {
+        url += refineParams;
+      }
+      return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
+        .pipe(map(res => res['meta']['total']));
+    }
 }
Index: modules/uoa-services-library/trunk/ng-openaire-library/src/app/searchPages/find/searchAll.component.ts
===================================================================
--- modules/uoa-services-library/trunk/ng-openaire-library/src/app/searchPages/find/searchAll.component.ts	(revision 58415)
+++ modules/uoa-services-library/trunk/ng-openaire-library/src/app/searchPages/find/searchAll.component.ts	(revision 58416)
@@ -31,6 +31,7 @@
 import {SearchProjectsComponent} from "../searchProjects.component";
 import {SearchOrganizationsComponent} from "../searchOrganizations.component";
 import {SearchDataProvidersComponent} from "../searchDataProviders.component";
+import {NewSearchPageComponent} from "../searchUtils/newSearchPage.component";
 
 @Component({
   changeDetection: ChangeDetectionStrategy.Default,
@@ -65,9 +66,6 @@
   public linkToSearchPublications = "";
   public linkToSearchProjects = "";
   public linkToSearchDataproviders = "";
-  public linkToSearchDatasets = "";
-  public linkToSearchSoftware = "";
-  public linkToSearchOrps = "";
   public linkToSearchOrganizations = "";
 
   public fetchPublications: FetchResearchResults;
@@ -328,13 +326,17 @@
     }
   }
   private prepareKeywordParam(keyword){
-    if (this.parameters["q"] && keyword.length == 0) {
+    if (this.parameters["q"]) {
       delete this.parameters['q'];
       delete this.parameters['op'];
-    } else {
+    }
+     if(keyword.length > 0){
       this.parameters["fv0"] = keyword;
       this.parameters["f0"] = "q";
-    }
+    }else if(keyword.length ==0 && this.parameters["f0"]=="q"){
+       delete this.parameters['f0'];
+       delete this.parameters['fv0'];
+     }
   }
   private prepareResultParameters() {
     //quickSelections
@@ -363,6 +365,7 @@
 
   public quickSelectionsChanged() {
     this.prepareResultParameters();
+    this.parameters["page"] = 1;
     this.reload[this.activeEntity] = true;
     this.router.navigate([location.pathname], {queryParams: this.parameters});
   }
@@ -370,6 +373,7 @@
 
   public keywordChanged($event) {
     this.prepareKeywordParam(this.selectedFields[0].value);
+    this.parameters["page"] = 1;
     this.reloadTabs();
     this.router.navigate([location.pathname], {queryParams: this.parameters});
   }
@@ -383,7 +387,8 @@
       this.fetchPublications.searchUtils.status = this.errorCodes.LOADING;
       this.reload["result"] = false;
       this.fetchPublications.results = [];
-      this.subPub = this.numOfSearchResults(this.fetchPublications, refineParams);
+      //Add Open Access Filter
+      this.subPub = this.numOfSearchResults(this.fetchPublications, (refineParams ? (refineParams + '&') : '') + "&fq=resultbestaccessright%20exact%20%22Open%20Access%22");
     }
 
     if (this.activeEntity != "projects" && this.reload["projects"] && this.showProjects) {
@@ -390,7 +395,7 @@
       this.fetchProjects.searchUtils.status = this.errorCodes.LOADING;
       this.fetchProjects.results = [];
       this.reload["projects"] = false;
-      this.subProjects = this._searchProjectsService.numOfSearchProjects(this.keyword, this.properties, refineParams).subscribe(
+      this.subProjects = this._searchProjectsService.numOfSearchProjects2(this.keyword.length>0?NewSearchPageComponent.createKeywordQuery("project",this.keyword,"q","="):"", this.properties, refineParams).subscribe(
         data => {
           this.fetchProjects.searchUtils.totalResults = data;
           this.fetchProjects.searchUtils.status = this.errorCodes.DONE;
@@ -408,13 +413,27 @@
     if (this.activeEntity != "datasources"  && this.reload["datasources"] && this.showDataProviders) {
       this.fetchDataproviders.results = [];
       this.reload["datasources"] = false;
-      this.fetchDataproviders.getNumForSearch(this.keyword, this.properties, refineParams);
+      // this.fetchDataproviders.getNumForSearch(this.keyword, this.properties, refineParams);
+      this.subDataPr = this._searchDataprovidersService.numOfSearchDataproviders2(this.keyword.length>0?NewSearchPageComponent.createKeywordQuery("datasources",this.keyword,"q","="):"", this.properties, refineParams).subscribe(
+        data => {
+          this.fetchDataproviders.searchUtils.totalResults = data;
+          this.fetchDataproviders.searchUtils.status = this.errorCodes.DONE;
+          if (this.fetchDataproviders.searchUtils.totalResults == 0) {
+            this.fetchDataproviders.searchUtils.status = this.errorCodes.NONE;
+          }
+        },
+        err => {
+          //console.log(err);
+          this.handleError("Error getting number of Projects", err);
+          this.fetchDataproviders.searchUtils.status = this.errorCodes.ERROR;
+        }
+      );
     }
     if (this.activeEntity != "organizations" && this.reload["organizations"] && this.showOrganizations) {
       this.fetchOrganizations.searchUtils.status = this.errorCodes.LOADING;
       this.fetchOrganizations.results = [];
       this.reload["organizations"] = false;
-      this.subOrg = this._searchOrganizationsService.numOfSearchOrganizations(this.keyword, this.properties, refineParams).subscribe(
+      this.subOrg = this._searchOrganizationsService.numOfSearchOrganizations2(this.keyword.length>0?NewSearchPageComponent.createKeywordQuery("organizations",this.keyword,"q","="):"", this.properties, refineParams).subscribe(
         data => {
           this.fetchOrganizations.searchUtils.totalResults = data;
           this.fetchOrganizations.searchUtils.status = this.errorCodes.DONE;
@@ -435,7 +454,7 @@
   }
 
   private numOfSearchResults(fetchClass: FetchResearchResults, refineParams): Observable<any> {
-    return this._searchResearchResultsService.numOfResearchOutcomes(this.keyword, this.properties, refineParams).subscribe(
+    return this._searchResearchResultsService.numOfResearchOutcomes(this.keyword.length>0?NewSearchPageComponent.createKeywordQuery("result",this.keyword,"q","="):"", this.properties, refineParams).subscribe(
       data => {
         fetchClass.searchUtils.totalResults = data;
         fetchClass.searchUtils.status = this.errorCodes.DONE;
@@ -465,18 +484,6 @@
     console.error("General Search Page: " + message, error);
   }
 
-  private getEntityName(entityType: string, plural: boolean, full: boolean): string {
-    if (entityType == "publication") {
-      return "publication" + (plural ? "s" : "");
-    } else if (entityType == "dataset") {
-      return (full ? "research data" : ("dataset" + (plural ? "s" : "")));
-    } else if (entityType == "software") {
-      return "software";
-    } else if (entityType == "other") {
-      return (full ? ("other research product" + (plural ? "s" : "")) : "other");
-    }
-  }
-
   activeEntityUpdate($event) {
     this.disableForms = $event.disableForms;
     let updated = true;
@@ -526,8 +533,8 @@
       this.reload[entity]= true;
       this.parameters["active"] = entity;
     if ( this.keyword.length > 0) {
-      this.parameters["q"] = this.keyword;
-      this.parameters["op"] = "and";
+      this.parameters["fv0"] = this.keyword;
+      this.parameters["f0"] = "q";
     }
       this.router.navigate(["/search/find"], {queryParams: this.parameters});
     }
Index: modules/uoa-services-library/trunk/ng-openaire-library/src/app/searchPages/searchUtils/searchUtils.class.ts
===================================================================
--- modules/uoa-services-library/trunk/ng-openaire-library/src/app/searchPages/searchUtils/searchUtils.class.ts	(revision 58415)
+++ modules/uoa-services-library/trunk/ng-openaire-library/src/app/searchPages/searchUtils/searchUtils.class.ts	(revision 58416)
@@ -4,7 +4,7 @@
   status:number = 1;
   keyword:string = "";
   baseUrl:string = "";
-  totalResults = 0;
+  totalResults = null;
   totalResultsNoFilters:number; // for organization landing - tab with projects
   sortBy: string = "";
 }
Index: modules/uoa-services-library/trunk/ng-openaire-library/src/app/searchPages/searchUtils/newSearchPage.component.ts
===================================================================
--- modules/uoa-services-library/trunk/ng-openaire-library/src/app/searchPages/searchUtils/newSearchPage.component.ts	(revision 58415)
+++ modules/uoa-services-library/trunk/ng-openaire-library/src/app/searchPages/searchUtils/newSearchPage.component.ts	(revision 58416)
@@ -660,7 +660,7 @@
         } else {
           if (this.selectedFields[i].id == "q") {
             // console.log(this.selectedFields[i].value)
-            var op = "";
+/*            var op = "";
             var doisParams = "";
             if ((this.entityType == 'publication' || this.entityType == 'dataset' || this.entityType == 'software' || this.entityType == 'other' || this.entityType == "result")) {
               var DOIs: Identifier[] = Identifier.getIdentifiersFromString(this.selectedFields[i].value);
@@ -679,7 +679,8 @@
               params += this.createQuotedKeywordQuery(this.selectedFields[i].value, this.selectedFields[i].id, this.selectedFields[i].operatorId ,countParams,true, true) + " or " + doisParams;
             } else {
               params += this.createQuotedKeywordQuery(this.selectedFields[i].value, this.selectedFields[i].id, this.selectedFields[i].operatorId,countParams,true);
-            }
+            }*/
+            params = NewSearchPageComponent.createKeywordQuery(this.entityType,this.selectedFields[i].value, this.selectedFields[i].id, this.selectedFields[i].operatorId, countParams);
             //TODO deposit case
             // console.log(this.usedBy)
             // console.log(this.keywordFields)
@@ -693,7 +694,7 @@
                 if(j > 0) {
                   params += " or "
                 }
-                params += this.createQuotedKeywordQuery(this.selectedFields[i].value, this.keywordFields[j].name, " or ", countParams,false);
+                params += NewSearchPageComponent.createQuotedKeywordQuery(this.selectedFields[i].value, this.keywordFields[j].name, " or ", countParams,false);
                 // let field = this.keywordFields[i];
                 //keywordQuery += field.name+field.equalityOperator+StringUtils.URIEncode(keyword);
                 // params += field.name+field.equalityOperator+StringUtils.quote(StringUtils.URIEncode(keyword));
@@ -706,7 +707,7 @@
           } else if (countParams == 0 && this.selectedFields[i].operatorId == "not" && this.fieldIdsMap[this.selectedFields[i].id].equalityOperator != "=") {
             params += " " + this.selectedFields[i].id + " <> " + '"' + StringUtils.URIEncode(this.selectedFields[i].value) + '"' + " ";
           } else if(this.fieldIdsMap[this.selectedFields[i].id].equalityOperator == "=") {
-            params+=this.createQuotedKeywordQuery(this.selectedFields[i].value, this.selectedFields[i].id, this.selectedFields[i].operatorId, countParams, false);
+            params+=NewSearchPageComponent.createQuotedKeywordQuery(this.selectedFields[i].value, this.selectedFields[i].id, this.selectedFields[i].operatorId, countParams, false);
           }else{
               params += (countParams == 0 ? "" : this.selectedFields[i].operatorId + " ") + this.selectedFields[i].id + this.fieldIdsMap[this.selectedFields[i].id].equalityOperator + '"' + encodeURIComponent(this.selectedFields[i].value) + '"' + " ";
 
@@ -723,8 +724,31 @@
     // console.log(params)
     return params;
   }
+  public static createKeywordQuery(entityType:string, value:string, id, operatorId, countParams=0){
+    let params = "";
+    let doisParams = "";
+    if ((entityType == 'publication' || entityType == 'dataset' || entityType == 'software' || entityType == 'other' || entityType == "result")) {
+      var DOIs: Identifier[] = Identifier.getIdentifiersFromString(value);
+      for (let identifier of DOIs) {
+        // console.log(identifier)
+        // pidclassid exact \"doi\" and pid exact \"10.1016/j.nima.2015.11.134\"
+        //and (authorid exact \"0000-0001-7291-3210 \" )"
+        if(identifier.class == "ORCID"){
+          doisParams += (doisParams.length > 0 ? " or " : "") +'(authorid="' + identifier.id + '")';
+        }else{
+          doisParams += (doisParams.length > 0 ? " or " : "") +'(pidclassid exact "' + identifier.class + '" and pid="' +  identifier.id + '")';
+        }
+      }
+    }
+    if (doisParams.length > 0) {
+      params += this.createQuotedKeywordQuery(value, id, operatorId ,countParams,true, true) + " or " + doisParams;
+    } else {
+      params += this.createQuotedKeywordQuery(value, id, operatorId,countParams,true);
+    }
+    return params;
 
-  createQuotedKeywordQuery(fieldValue, fieldId, fieldOperator, countParams:number, isSearchAll:boolean, forceQuotted:boolean=false){
+  }
+  private static createQuotedKeywordQuery(fieldValue, fieldId, fieldOperator, countParams:number, isSearchAll:boolean, forceQuotted:boolean=false){
     let params = "";
     let quotedParts = (fieldValue)?fieldValue.match(/(["'])(.*?)*?\1/g):[];
     params+= (countParams == 0 ? "" : fieldOperator) + " (";
@@ -768,10 +792,10 @@
     return params;
   }
 
-  private getQuotedQueryPart(fieldId:string, value:string,  isSearchAll:boolean){
+  private static getQuotedQueryPart(fieldId:string, value:string,  isSearchAll:boolean){
       return (isSearchAll?"__all":fieldId)+" exact "+StringUtils.URIEncode(value);
   }
-  private getNoQuotedQueryPart(fieldId:string, value:string,  isSearchAll:boolean){
+  private static getNoQuotedQueryPart(fieldId:string, value:string,  isSearchAll:boolean){
     if(isSearchAll){
       return  value ;
     }else{
