Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/services/searchDatasets.service.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/services/searchDatasets.service.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/services/searchDatasets.service.ts	(revision 55902)
@@ -39,7 +39,8 @@
         return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
                     //.map(res => <any> res.json())
                     //.do(res => console.info(res))
-                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "dataset")]));
+                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'], properties),RefineResultsUtils.parse(res['refineResults'],refineFields, "dataset")]));
+
     }
     searchDatasetById (id: string , properties:EnvProperties):any {
 
@@ -46,7 +47,7 @@
         let url = properties.searchAPIURLLAst+"datasets/"+id+"?format=json";
          return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
                     //.map(res => <any> res.json())
-                    .pipe(map(res => this.parseResults(res)));
+                    .pipe(map(res => this.parseResults(res, properties)));
     }
 
     searchAggregators (id: string, params: string, refineParams:string, page: number, size: number, properties:EnvProperties ):any {
@@ -90,7 +91,8 @@
         return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
                     //.map(res => <any> res.json())
                     //.do(res => console.info(res))
-                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "dataset")]));
+                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'], properties),RefineResultsUtils.parse(res['refineResults'],refineFields, "dataset")]));
+
     }
     advancedSearchDatasets (params: string, page: number, size: number, sortBy: string, properties:EnvProperties ):any {
       let url = properties.searchResourcesAPIURL;
@@ -113,7 +115,8 @@
       return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
       //.map(res => <any> res.json())
       //.do(res => console.info(res))
-      .pipe(map(res => [res['meta'].total, this.parseResults(res['results'])]));
+      .pipe(map(res => [res['meta'].total, this.parseResults(res['results'], properties)]));
+
     }
     searchDatasetsForEntity (params: string, page: number, size: number, properties:EnvProperties):any {
         let link = properties.searchAPIURLLAst;
@@ -121,7 +124,8 @@
 
         return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
                     //.map(res => <any> res.json())
-                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'])]));
+                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'], properties)]));
+
     }
 
     searchDatasetsForDataproviders(params: string, page: number, size: number, properties:EnvProperties):any {
@@ -129,10 +133,11 @@
         let url = link+params+ "&page="+(page-1)+"&size="+size + "&format=json";
         return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
                     //.map(res => <any> res.json())
-                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'])]));
+                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'], properties)]));
+
     }
 
-    parseResults(data: any): SearchResult[] {
+    parseResults(data: any, properties: EnvProperties): SearchResult[] {
         let results: SearchResult[] = [];
 
         let length = Array.isArray(data) ? data.length : 1;
@@ -221,7 +226,7 @@
 
             if(resData.hasOwnProperty("creator") && resData['creator'] != null) {
               if(result['authors'] == undefined) {
-                result['authors'] = new Array<string>();
+                result['authors'] = new Array<{"fullName": string, "orcid": string}>();
               }
 
               let authors = resData['creator'];
@@ -229,10 +234,15 @@
 
               for(let i=0; i<length; i++) {
                 let author = Array.isArray(authors) ? authors[i] : authors;
-                result.authors[author.rank] = author.content;
+                if(author) {
+                  /*if (author.ORCID && author.ORCID.indexOf(properties.orcidURL) != -1) {
+                    author.ORCID = author.ORCID.substr(properties.orcidURL.length);
+                  }*/
+                  result['authors'][author.rank] = {"fullName": author.content, "orcid": author.ORCID};
+                }
               }
               result.authors = result.authors.filter(function (item) {
-                return (item != undefined);
+                return (item != undefined && item.fullName != undefined);
               });
             }
 
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/software/software.component.html
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/software/software.component.html	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/software/software.component.html	(revision 55902)
@@ -33,12 +33,12 @@
             </div-->
 
             <div class= " uk-margin-top">
-                <showAuthors [authors]="softwareInfo.authors" searchPage="software"></showAuthors>
+                <showAuthors [authors]="softwareInfo.authors"></showAuthors>
                 <span *ngIf="softwareInfo.date != ''">({{softwareInfo.date}})</span>
             </div>
 
             <ul class="uk-list">
-              <showPublisher [publisher]="softwareInfo.publisher"
+              <showPublisher [publisher]="softwareInfo.publisher" [properties]="properties"
                              [journal]="softwareInfo.journal"></showPublisher>
 
                 <li *ngIf="softwareInfo.embargoEndDate"><span class="uk-text-bold">Embargo end date:</span> {{softwareInfo.embargoEndDate}}</li>
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/entities/orpInfo.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/entities/orpInfo.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/entities/orpInfo.ts	(revision 55902)
@@ -2,7 +2,7 @@
     underCurationMessage: boolean;
     title: string;
     accessMode: string;
-    authors: string[];
+    authors: {"fullName": string, "orcid": string}[];
     date: string;
     dateofacceptance: string;
     embargoEndDate: string;
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/services/searchOrps.service.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/services/searchOrps.service.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/services/searchOrps.service.ts	(revision 55902)
@@ -39,7 +39,8 @@
         return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
                     //.map(res => <any> res.json())
                     //.do(res => console.info(res))
-                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "other")]));
+                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'], properties),RefineResultsUtils.parse(res['refineResults'],refineFields, "other")]));
+
     }
     searchOrpById (id: string , properties:EnvProperties):any {
 
@@ -47,7 +48,8 @@
 
          return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
                     //.map(res => <any> res.json())
-                    .pipe(map(res => this.parseResults(res)));
+                    .pipe(map(res => this.parseResults(res, properties)));
+
     }
 
     searchAggregators (id: string, params: string, refineParams:string, page: number, size: number, properties:EnvProperties ):any {
@@ -93,7 +95,8 @@
                     //.map(res => <any> res.json())
                     //.do(res => console.info(res))
 
-                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "other")]));
+                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'], properties),RefineResultsUtils.parse(res['refineResults'],refineFields, "other")]));
+
     }
     advancedSearchOrps (params: string, page: number, size: number, sortBy: string, properties:EnvProperties ):any {
       let url = properties.searchResourcesAPIURL;
@@ -117,7 +120,8 @@
       return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
       //.map(res => <any> res.json())
       //.do(res => console.info(res))
-      .pipe(map(res => [res['meta'].total, this.parseResults(res['results'])]));
+      .pipe(map(res => [res['meta'].total, this.parseResults(res['results'], properties)]));
+
     }
     searchOrpsForEntity (params: string, page: number, size: number, properties:EnvProperties):any {
         let link = properties.searchAPIURLLAst;
@@ -126,7 +130,8 @@
 
         return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
                     //.map(res => <any> res.json())
-                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'])]));
+                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'], properties)]));
+
     }
 
     searchOrpsForDataproviders(params: string, page: number, size: number, properties:EnvProperties):any {
@@ -135,10 +140,11 @@
         let url = link+params+ "&page="+(page-1)+"&size="+size + "&format=json";
         return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
                     //.map(res => <any> res.json())
-                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'])]));
+                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'], properties)]));
+
     }
 
-    parseResults(data: any): SearchResult[] {
+    parseResults(data: any, properties: EnvProperties): SearchResult[] {
         let results: SearchResult[] = [];
 
         let length = Array.isArray(data) ? data.length : 1;
@@ -227,7 +233,7 @@
 
             if(resData.hasOwnProperty("creator") && resData['creator'] != null) {
               if(result['authors'] == undefined) {
-                result['authors'] = new Array<string>();
+                result['authors'] = new Array<{"fullName": string, "orcid": string}>();
               }
 
               let authors = resData['creator'];
@@ -235,10 +241,14 @@
 
               for(let i=0; i<length; i++) {
                 let author = Array.isArray(authors) ? authors[i] : authors;
-                result.authors[author.rank] = author.content;
-              }
+                if(author) {
+                  /*if (author.ORCID && author.ORCID.indexOf(properties.orcidURL) != -1) {
+                    author.ORCID = author.ORCID.substr(properties.orcidURL.length);
+                  }*/
+                  result['authors'][author.rank] = {"fullName": author.content, "orcid": author.ORCID};
+                }              }
               result.authors = result.authors.filter(function (item) {
-                return (item != undefined);
+                return (item != undefined && item.fullName != undefined);
               });
             }
 
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/services/searchSoftware.service.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/services/searchSoftware.service.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/services/searchSoftware.service.ts	(revision 55902)
@@ -38,7 +38,8 @@
         return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
                     //.map(res => <any> res.json())
                     //.do(res => console.info(res))
-                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "software")]));
+                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'], properties),RefineResultsUtils.parse(res['refineResults'],refineFields, "software")]));
+
     }
     searchSoftwareById (id: string, properties:EnvProperties ):any {
 
@@ -46,8 +47,7 @@
 
 
         return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
-                    //.map(res => <any> res.json())
-                    .pipe(map(res => this.parseResults(res)));
+                    .pipe(map(res => this.parseResults(res, properties)));
     }
 
     searchAggregators (id: string, params: string, refineParams:string, page: number, size: number, properties:EnvProperties ):any {
@@ -90,7 +90,7 @@
         return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
                     //.map(res => <any> res.json())
                     //.do(res => console.info(res))
-                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "software")]));
+                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'], properties),RefineResultsUtils.parse(res['refineResults'],refineFields, "software")]));
     }
     advancedSearchSoftware (params: string, page: number, size: number, sortBy: string, properties:EnvProperties ):any {
       let url = properties.searchResourcesAPIURL;
@@ -113,7 +113,7 @@
       return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
       //.map(res => <any> res.json())
       //.do(res => console.info(res))
-      .pipe(map(res => [res['meta'].total, this.parseResults(res['results'])]));
+      .pipe(map(res => [res['meta'].total, this.parseResults(res['results'], properties)]));
     }
     searchSoftwareForEntity (params: string, page: number, size: number, properties:EnvProperties):any {
         let link = properties.searchAPIURLLAst;
@@ -121,7 +121,7 @@
 
         return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
                     //.map(res => <any> res.json())
-                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'])]));
+                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'], properties)]));
     }
 
     searchSoftwareForDataproviders(params: string, page: number, size: number, properties:EnvProperties):any {
@@ -130,10 +130,10 @@
 
         return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
                     //.map(res => <any> res.json())
-                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'])]));
+                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'], properties)]));
     }
 
-    parseResults(data: any): SearchResult[] {
+    parseResults(data: any, properties: EnvProperties): SearchResult[] {
         let results: SearchResult[] = [];
 
         let length = Array.isArray(data) ? data.length : 1;
@@ -239,7 +239,7 @@
 
             if(resData.hasOwnProperty("creator") && resData['creator'] != null) {
               if(result['authors'] == undefined) {
-                result['authors'] = new Array<string>();
+                result['authors'] = new Array<{"fullName": string, "orcid": string}>();
               }
 
               let authors = resData['creator'];
@@ -247,10 +247,15 @@
 
               for(let i=0; i<length; i++) {
                 let author = Array.isArray(authors) ? authors[i] : authors;
-                result.authors[author.rank] = author.content;
+                if(author) {
+                  /*if (author.ORCID && author.ORCID.indexOf(properties.orcidURL) != -1) {
+                    author.ORCID = author.ORCID.substr(properties.orcidURL.length);
+                  }*/
+                  result['authors'][author.rank] = {"fullName": author.content, "orcid": author.ORCID};
+                }
               }
               result.authors = result.authors.filter(function (item) {
-                return (item != undefined);
+                return (item != undefined && item.fullName != undefined);
               });
             }
 
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/services/searchPublications.service.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/services/searchPublications.service.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/services/searchPublications.service.ts	(revision 55902)
@@ -40,7 +40,7 @@
         return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
                     //.map(res => <any> res.json())
                     // .do(res => console.info(res))
-                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "publication")]));
+                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'], properties),RefineResultsUtils.parse(res['refineResults'],refineFields, "publication")]));
     }
     searchPublicationById (id: string, properties:EnvProperties ):any {
 
@@ -48,7 +48,7 @@
 
         return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
                     //.map(res => <any> res.json())
-                    .pipe(map(res =>  this.parseResults(res)));
+                    .pipe(map(res =>  this.parseResults(res, properties)));
     }
 
     searchAggregators (id: string, params: string, refineParams:string, page: number, size: number, properties:EnvProperties ):any {
@@ -93,7 +93,8 @@
         return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
                     //.map(res => <any> res.json())
                     //.do(res => console.info(res))
-                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "publication")]));
+                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'], properties),RefineResultsUtils.parse(res['refineResults'],refineFields, "publication")]));
+
     }
 
     advancedSearchPublications (params: string, page: number, size: number, sortBy: string, properties:EnvProperties ):any {
@@ -118,7 +119,8 @@
       //.map(res => <any> res.json())
       //.do(res => console.info(res))
 
-      .pipe(map(res => [res['meta'].total, this.parseResults(res['results'])]));
+      .pipe(map(res => [res['meta'].total, this.parseResults(res['results'], properties)]));
+
     }
     searchPublicationsForEntity (params: string, page: number, size: number, properties:EnvProperties):any {
         let link = properties.searchAPIURLLAst;
@@ -129,7 +131,7 @@
 
         return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
                     //.map(res => <any> res.json())
-                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'])]));
+                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'], properties)]));
     }
 
     searchPublicationsForDataproviders(params: string, page: number, size: number, properties:EnvProperties):any {
@@ -137,7 +139,7 @@
         let url = link+params+ "&page="+(page-1)+"&size="+size + "&format=json";
         return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
                     //.map(res => <any> res.json())
-                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'])]));
+                    .pipe(map(res => [res['meta'].total, this.parseResults(res['results'], properties)]));
     }
 /*
 	searchPublicationsCSV (params: string, refineParams:string, page: number, size: number):any {
@@ -163,7 +165,7 @@
     }
 */
 
-    parseResults(data: any): SearchResult[] {
+    parseResults(data: any, properties: EnvProperties): SearchResult[] {
         let results: SearchResult[] = [];
 
         let length = Array.isArray(data) ? data.length : 1;
@@ -258,7 +260,7 @@
 
             if(resData.hasOwnProperty("creator") && resData['creator'] != null) {
               if(result['authors'] == undefined) {
-                result['authors'] = new Array<string>();
+                result['authors'] = new Array<{"fullName": string, "orcid": string}>();
               }
 
               let authors = resData['creator'];
@@ -266,10 +268,15 @@
 
               for(let i=0; i<length; i++) {
                 let author = Array.isArray(authors) ? authors[i] : authors;
-                result.authors[author.rank] = author.content;
+                if(author) {
+                  /*if (author.ORCID && author.ORCID.indexOf(properties.orcidURL) != -1) {
+                    author.ORCID = author.ORCID.substr(properties.orcidURL.length);
+                  }*/
+                  result['authors'][author.rank] = {"fullName": author.content, "orcid": author.ORCID};
+                }
               }
               result.authors = result.authors.filter(function (item) {
-                return (item != undefined);
+                return (item != undefined && item.fullName != undefined);
               });
             }
 
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/searchPages/searchUtils/searchResult.component.html
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/searchPages/searchUtils/searchResult.component.html	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/searchPages/searchUtils/searchResult.component.html	(revision 55902)
@@ -24,12 +24,13 @@
 
         <span *ngIf="result.title  && result.title.sc39" class="uk-label custom-label label-sc39 " title="Special Clause 39">Special Clause 39</span>
         <div class="uk-margin-small">
-            <span *ngIf="result['authors'] != undefined" class="resultsAuthors uk-margin-small-top" style="font-style: italic;">
-                <span *ngFor="let author of result['authors'].slice(0,15)">
-                    {{author}};
-                </span>
-                <span *ngIf="result['authors'].length > 15">...</span>
-            </span>
+<!--            <span *ngIf="result['authors'] != undefined" class="resultsAuthors uk-margin-small-top" style="font-style: italic;">-->
+<!--                <span *ngFor="let author of result['authors'].slice(0,15)">-->
+<!--                    {{author}};-->
+<!--                </span>-->
+<!--                <span *ngIf="result['authors'].length > 15">...</span>-->
+<!--            </span>-->
+            <showAuthors [authors]="result['authors']" [authorsLimit]=15 [showAll]=false></showAuthors>
             <span *ngIf="result.year != undefined && result.year != ''">
                 ({{result.year}})
             </span>
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/searchPages/searchUtils/tabResult.module.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/searchPages/searchUtils/tabResult.module.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/searchPages/searchUtils/tabResult.module.ts	(revision 55902)
@@ -5,11 +5,12 @@
 import {SearchResult}     from '../../utils/entities/searchResult';
 import {TabResultComponent} from './tabResult.component';
 import {RouterModule} from '@angular/router';
+import {ShowAuthorsModule} from "../../utils/authors/showAuthors.module";
 
 @NgModule({
   imports: [
     CommonModule, FormsModule,
-    RouterModule
+    RouterModule, ShowAuthorsModule
    ],
   declarations: [
     TabResultComponent,
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/searchPages/searchUtils/searchResults.module.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/searchPages/searchUtils/searchResults.module.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/searchPages/searchUtils/searchResults.module.ts	(revision 55902)
@@ -8,12 +8,14 @@
 import {SearchResult}           from '../../utils/entities/searchResult';
 import {SearchResultComponent}  from './searchResult.component';
 import {ApprovedByCommunityModule} from '../../connect/approvedByCommunity/approved.module';
+import {ShowAuthorsModule} from "../../utils/authors/showAuthors.module";
 
 @NgModule({
   imports: [
     CommonModule, FormsModule,
     RouterModule, ErrorMessagesModule,
-    ApprovedByCommunityModule
+    ApprovedByCommunityModule,
+    ShowAuthorsModule
   ],
   declarations: [
     SearchResultComponent
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/searchPages/searchUtils/tabResult.component.html
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/searchPages/searchUtils/tabResult.component.html	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/searchPages/searchUtils/tabResult.component.html	(revision 55902)
@@ -46,12 +46,13 @@
        <span *ngIf="result.country != undefined && result.country != ''" class="uk-label custom-label  label-country" title="Country"> {{result.country}}</span>
 
        <div class="uk-margin-small">
-         <span *ngIf="result['authors'] != undefined" class="resultsAuthors uk-margin-small-top" style="font-style: italic;">
-           <span *ngFor="let author of result['authors'].slice(0,15)">
-             {{author}};
-           </span>
-           <span *ngIf="result['authors'].length > 15">...</span>
-         </span>
+<!--         <span *ngIf="result['authors'] != undefined" class="resultsAuthors uk-margin-small-top" style="font-style: italic;">-->
+<!--           <span *ngFor="let author of result['authors'].slice(0,15)">-->
+<!--             {{author}};-->
+<!--           </span>-->
+<!--           <span *ngIf="result['authors'].length > 15">...</span>-->
+<!--         </span>-->
+         <showAuthors [authors]="result['authors']" [authorsLimit]=15 [showAll]=false></showAuthors>
          <span *ngIf="result.year != undefined && result.year != ''">
            ({{result.year}})
          </span>
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/orp/orp.component.html
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/orp/orp.component.html	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/orp/orp.component.html	(revision 55902)
@@ -23,13 +23,13 @@
             </span>
 
             <div class= " uk-margin-top">
-              <showAuthors [authors]="orpInfo.authors" searchPage="orps"></showAuthors>
+              <showAuthors [authors]="orpInfo.authors"></showAuthors>
               <span *ngIf="orpInfo.date != ''">({{orpInfo.date}})</span>
             </div>
 
             <ul class="uk-list">
               <showPublisher [publisher]="orpInfo.publisher"
-                             [journal]="orpInfo.journal"></showPublisher>
+                             [journal]="orpInfo.journal" [properties]="properties"></showPublisher>
               <li *ngIf="orpInfo.embargoEndDate"><span class="uk-text-bold">Embargo end date:</span> {{orpInfo.embargoEndDate}}</li>
               <li *ngIf="orpInfo.identifiers && orpInfo.identifiers.size > 0">
                 <showIdentifiers [identifiers]="orpInfo.identifiers"></showIdentifiers>
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/orp/orp.service.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/orp/orp.service.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/orp/orp.service.ts	(revision 55902)
@@ -46,7 +46,7 @@
                                  (res[1]['extraInfo']!= undefined && res[1]['extraInfo']['citations']!= undefined)? res[1]['extraInfo']['citations']['citation']:null, //14
                                   res[1]['oaf:result']['journal'] //15
                     ]))
-                    .pipe(map(res => this.parseOrpInfo(res)));
+                    .pipe(map(res => this.parseOrpInfo(res, properties)));
   }
 
   private handleError (error: HttpErrorResponse) {
@@ -56,7 +56,7 @@
     return throwError(error  || 'Server error');
   }
 
-  parseOrpInfo (data: any):any {
+  parseOrpInfo (data: any, properties: EnvProperties):any {
     this.orpInfo = new OrpInfo();
     this.orpInfo.record = data[13];
     if(data[0] != null) {
@@ -172,19 +172,23 @@
 
     if(data[10] != null) {
       if(this.orpInfo.authors == undefined) {
-        this.orpInfo.authors = new Array<string>();
+        this.orpInfo.authors = new Array<{"fullName": string, "orcid": string}>();
       }
 
       let authors = data[10];
       let length = Array.isArray(authors) ? authors.length : 1;
+
       for(let i=0; i<length; i++) {
         let author = Array.isArray(authors) ? authors[i] : authors;
-        this.orpInfo.authors[author.rank] = author.content;
-
+        if(author) {
+          /*if (author.ORCID && author.ORCID.indexOf(properties.orcidURL) != -1) {
+            author.ORCID = author.ORCID.substr(properties.orcidURL.length);
+          }*/
+          this.orpInfo['authors'][author.rank] = {"fullName": author.content, "orcid": author.ORCID};
+        }
       }
-
       this.orpInfo.authors = this.orpInfo.authors.filter(function (item) {
-        return (item != undefined);
+        return (item != undefined && item.fullName != undefined);
       });
     }
 
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/entities/datasetInfo.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/entities/datasetInfo.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/entities/datasetInfo.ts	(revision 55902)
@@ -4,7 +4,7 @@
     title: string;
     subtitle: string;
     accessMode: string;
-    authors: string[];
+    authors: {"fullName": string, "orcid": string}[];
     date: string;
     dateofacceptance: string;
     embargoEndDate: string;
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/entities/publicationInfo.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/entities/publicationInfo.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/entities/publicationInfo.ts	(revision 55902)
@@ -3,7 +3,7 @@
     //title: { "name": string, "url": string, "accessMode": string};
     title: string;
     accessMode: string;
-    authors: string[];
+    authors: {"fullName": string, "orcid": string}[];
     date: string;
     dateofacceptance: string;
     embargoEndDate: string;
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/authors/showAuthors.module.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/authors/showAuthors.module.ts	(nonexistent)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/authors/showAuthors.module.ts	(revision 55902)
@@ -0,0 +1,21 @@
+import { NgModule}      from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { FormsModule }  from '@angular/forms';
+import { RouterModule } from '@angular/router';
+
+import {ShowAuthorsComponent} from './showAuthors.component';
+
+@NgModule({
+  imports: [
+    CommonModule, FormsModule, RouterModule
+  ],
+  declarations: [
+    ShowAuthorsComponent
+  ],
+  providers:[
+  ],
+  exports: [
+    ShowAuthorsComponent
+  ]
+})
+export class ShowAuthorsModule { }
\ No newline at end of file
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/authors/showAuthors.component.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/authors/showAuthors.component.ts	(nonexistent)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/authors/showAuthors.component.ts	(revision 55902)
@@ -0,0 +1,120 @@
+import {Component, Input} from '@angular/core';
+import {ActivatedRoute}   from "@angular/router";
+import {HelperFunctions}  from '../HelperFunctions.class';
+import {RouterHelper}     from "../routerHelper.class";
+import {EnvProperties}    from '../properties/env-properties';
+
+@Component({
+  selector: 'showAuthors',
+  template: `
+      <span *ngIf="authors != undefined">
+        <div *ngIf="showAll && numberOfAuthors > authorsLimit">
+          <a (click)="numberOfAuthors = authorsLimit;">View less authors</a>
+        </div>
+        
+        <span *ngFor="let author of authors.slice(0,numberOfAuthors) let i=index">
+          <i *ngIf="!author.orcid || (properties.environment != 'beta' && properties.environment != 'development')">{{author.fullName}}</i
+          ><a *ngIf="author.orcid && (properties.environment == 'beta' || properties.environment == 'development')"><i>{{author.fullName}}</i></a
+          ><div *ngIf="author.orcid && (properties.environment == 'beta' || properties.environment == 'development')" class=" default-dropdown uk-margin-remove-top uk-padding-medium" 
+               uk-dropdown="pos: bottom-left; mode:hover" style="min-width: 70px !important;">
+            <b class="uk-margin-top">{{author.fullName}}</b>
+          
+            <div>
+              <div class="uk-text-muted">ORCID</div>
+              <span><code class="uk-padding-small" [id]="'orcid_clipboard_auhtor_'+i">{{author.orcid}}</code></span>
+              <span>
+                <button [class]="'uk-icon-clipboard uk-button uk-button-primary uk-button-small orcid_clipboard_btn_auhtor_'+i"
+                         [attr.data-clipboard-target]="'#orcid_clipboard_auhtor_'+i" title="Copy to clipboard">
+                  Copy
+                </button>
+                <a class="uk-button uk-button-primary uk-button-small" title="Visit author in Orcid"
+                        [href]="properties.orcidURL+author.orcid" target="_blank">
+                  Visit
+                </a>
+              </span>
+            </div>
+            
+            <hr>
+            <div class="uk-margin-top">
+              Search <b>{{author.fullName}}</b> by <b>ORCID</b> in OpenAIRE's
+            </div>
+            <div class="uk-text-center uk-margin-small uk-margin-large-left uk-margin-large-right">
+              <a class="uk-button uk-button-small portal-button uk-padding uk-padding-remove-top uk-padding-remove-bottom uk-width-1-1"
+                  [queryParams]="routerHelper.createQueryParams(['orcid','oc'],[quote(author['orcid']),'and'])" routerLinkActive="router-link-active" routerLink="/search/advanced/publications">
+                  Publications
+              </a>
+            </div>
+            <div class="uk-text-center uk-margin-small uk-margin-large-left uk-margin-large-right">
+              <a class="uk-button uk-button-small portal-button uk-padding uk-padding-remove-top uk-padding-remove-bottom uk-width-1-1"
+                  [queryParams]="routerHelper.createQueryParams(['orcid','oc'],[quote(author['orcid']),'and'])" routerLinkActive="router-link-active" routerLink="/search/advanced/datasets">
+                  Research Data
+              </a>
+            </div>
+            <div class="uk-text-center uk-margin-small uk-margin-large-left uk-margin-large-right">
+              <a class="uk-button uk-button-small portal-button uk-padding uk-padding-remove-top uk-padding-remove-bottom uk-width-1-1"
+                  [queryParams]="routerHelper.createQueryParams(['orcid','oc'],[quote(author['orcid']),'and'])" routerLinkActive="router-link-active" routerLink="/search/advanced/software">
+                  Software
+              </a>
+            </div>
+            <div class="uk-text-center uk-margin-small uk-margin-large-left uk-margin-large-right">
+              <a class="uk-button uk-button-small portal-button uk-padding uk-padding-remove-top uk-padding-remove-bottom uk-width-1-1"
+                  [queryParams]="routerHelper.createQueryParams(['orcid','oc'],[quote(author['orcid']),'and'])" routerLinkActive="router-link-active" routerLink="/search/advanced/other">
+                  Other Research Products
+              </a>
+            </div>
+          </div
+          ><span>;</span>
+        </span>
+        <span *ngIf="numberOfAuthors == authorsLimit && authors.length > authorsLimit">	... </span>
+        <span *ngIf="showAll && numberOfAuthors == authorsLimit && authors.length > authorsLimit">
+          <a (click)="numberOfAuthors = authors.length;">
+            view all {{authors.length | number}} authors
+          </a>
+        </span>
+        <span *ngIf="showAll && numberOfAuthors > authorsLimit">
+          <a (click)="numberOfAuthors = authorsLimit; scroll()">View less authors</a>
+        </span>
+      </span>
+    `
+
+})
+
+export class ShowAuthorsComponent {
+  @Input() authors: {"fullName": string, "orcid": string}[];
+  @Input() authorsLimit: number = 30;
+  @Input() showAll: boolean = true;
+
+  public numberOfAuthors: number;
+  public properties:EnvProperties;
+  public routerHelper:RouterHelper = new RouterHelper();
+
+  constructor (private route: ActivatedRoute) {}
+
+  ngOnInit() {
+    this.route.data.subscribe((data: { envSpecific: EnvProperties }) => {
+      this.properties = data.envSpecific;
+    });
+    this.numberOfAuthors = this.authorsLimit;
+
+    if(typeof window !== 'undefined') {
+      let orcid_clipboard;
+      let Clipboard;
+      Clipboard = require('clipboard');
+      if(this.authors) {
+        this.authors.forEach((author, index) => {
+          if (author && author.orcid) {
+            orcid_clipboard = new Clipboard('.orcid_clipboard_btn_auhtor_' + index);
+          }
+        });
+      }
+    }
+  }
+
+  public  quote(params: string):string {
+    return '"'+params+'"';
+  }
+
+  public scroll() {
+    HelperFunctions.scroll();
+  }
+}
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/claims/claim-utils/service/contexts.service.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/claims/claim-utils/service/contexts.service.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/claims/claim-utils/service/contexts.service.ts	(revision 55902)
@@ -24,16 +24,27 @@
     //console.info('ContextsService: request communities  '+url);
       return this.http.get(url)
                     //.map(res => <any> res.json())
-                    .pipe(map(res => this.parseCommunities(res) ))
+                    .pipe(map(res => this.parseCommunities(res, true) ))
                     // .do(request => console.info("Get claims: offset = "))
                     .pipe(catchError(this.handleError));
   }
-  parseCommunities(data){
+  public getPublicCommunities( apiUrl:string):any {
+    let  url   = apiUrl + 's/';
+
+    let key = url;
+    //console.info('ContextsService: request communities  '+url);
+    return this.http.get(url)
+      .pipe(map(res => this.parseCommunities(res, true) ))
+      .catch(this.handleError);
+  }
+  parseCommunities(data, getall){
     var communities = [];
 
     for(var i = 0; i< data.length; i++){
       if(data[i].type && (data[i].type == "ri" || data[i].type == "community")){
-        communities.push(data[i]);
+        if(getall || data[i].status!='hidden') {
+          communities.push(data[i]);
+        }
       }
     }
     return communities;
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/orp/orp.module.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/orp/orp.module.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/orp/orp.module.ts	(revision 55902)
@@ -22,6 +22,7 @@
 import {IsRouteEnabled}             from '../../error/isRouteEnabled.guard';
 import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
 import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
+import {ShowAuthorsModule}        from "../../utils/authors/showAuthors.module";
 
 
 @NgModule({
@@ -28,7 +29,8 @@
   imports: [
     CommonModule, FormsModule, SharedModule, RouterModule, LandingModule,
     CiteThisModule, ResultLandingModule, MetricsModule, IFrameModule, PagingModule,
-    AltMetricsModule, ConfigurationServiceModule, Schema2jsonldModule, SEOServiceModule
+    AltMetricsModule, ConfigurationServiceModule, Schema2jsonldModule, SEOServiceModule,
+    ShowAuthorsModule
   ],
   declarations: [
     OrpComponent
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/dataProvider/dataProvider.component.html
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/dataProvider/dataProvider.component.html	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/dataProvider/dataProvider.component.html	(revision 55902)
@@ -44,7 +44,7 @@
             </span>
 
             <ul class="uk-list">
-              <showPublisher
+              <showPublisher [properties]="properties"
                              [journal]="dataProviderInfo.journal"></showPublisher>
                 <li *ngIf="dataProviderInfo.aggregationStatus && dataProviderInfo.aggregationStatus.fundedContent && dataProviderInfo.aggregationStatus.fundedContent != -1"><span class="uk-text-bold">Results with funding information: </span>
                     {{dataProviderInfo.aggregationStatus.fundedContent | number}}
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/dataset/dataset.component.html
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/dataset/dataset.component.html	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/dataset/dataset.component.html	(revision 55902)
@@ -36,13 +36,13 @@
             </div-->
 
             <div class= " uk-margin-top">
-                <showAuthors [authors]="datasetInfo.authors" searchPage="datasets"></showAuthors>
+                <showAuthors [authors]="datasetInfo.authors"></showAuthors>
                 <span *ngIf="datasetInfo.date != ''">({{datasetInfo.date}})</span>
             </div>
 
             <ul class="uk-list">
               <showPublisher [publisher]="datasetInfo.publisher"
-                             [journal]="datasetInfo.journal"></showPublisher>
+                             [journal]="datasetInfo.journal" [properties]="properties"></showPublisher>
               <li *ngIf="datasetInfo.embargoEndDate"><span class="uk-text-bold">Embargo end date:</span> {{datasetInfo.embargoEndDate}}</li>
                  <li *ngIf="datasetInfo.identifiers && datasetInfo.identifiers.size > 0">
                   <showIdentifiers [identifiers]="datasetInfo.identifiers"></showIdentifiers>
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/properties/env-properties.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/properties/env-properties.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/properties/env-properties.ts	(revision 55902)
@@ -30,7 +30,7 @@
   searchDataciteAPIURL;
 
   searchOrcidURL;
-
+  orcidURL;
   pmidURL;
   doiURL;
   cordisURL;
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/claims/claim-utils/claimContextSearchForm.component.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/claims/claim-utils/claimContextSearchForm.component.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/claims/claim-utils/claimContextSearchForm.component.ts	(revision 55902)
@@ -275,7 +275,7 @@
 
   }else{
     this.loading = true;
-    this._contextService.getCommunities(this.properties.contextsAPI).subscribe(
+    this._contextService.getPublicCommunities(this.properties.contextsAPI).subscribe(
       data => {
         this.communities = data;
         if(this.communities.length > 0){
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/claims/directLinking/directLinking.component.html
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/claims/directLinking/directLinking.component.html	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/claims/directLinking/directLinking.component.html	(revision 55902)
@@ -47,7 +47,7 @@
 
                       <span *ngIf="!displayedResult.url" > {{((displayedResult.title == undefined || displayedResult.title == '')?'[no title available]':displayedResult.title)}}</span>
                     </div>
-                    <div *ngIf="displayedResult.result.authors && displayedResult.result.authors.length >0 " class="uk-article-meta">Authors: <span *ngFor="let author of displayedResult.result.authors.slice(0,10) let i = index">{{author}}{{(i < (displayedResult.result.authors.slice(0,10).length-1))?"; ":""}}{{(i == displayedResult.result.authors.slice(0,10).length-1 && displayedResult.result.authors.length > 10)?"...":""}}</span></div>
+                    <div *ngIf="displayedResult.result.authors && displayedResult.result.authors.length >0 " class="uk-article-meta">Authors: <span *ngFor="let author of displayedResult.result.authors.slice(0,10) let i = index">{{author.fullName}}{{(i < (displayedResult.result.authors.slice(0,10).length-1))?"; ":""}}{{(i == displayedResult.result.authors.slice(0,10).length-1 && displayedResult.result.authors.length > 10)?"...":""}}</span></div>
 
 
             </div>
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/dataset/dataset.service.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/dataset/dataset.service.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/dataset/dataset.service.ts	(revision 55902)
@@ -48,7 +48,7 @@
                                  (res[1]['extraInfo']!= undefined && res[1]['extraInfo']['citations']!= undefined)? res[1]['extraInfo']['citations']['citation']:null, //14
                                   res[1]['journal'] //15
                     ]))
-                    .pipe(map(res => this.parseDatasetInfo(res)));
+                    .pipe(map(res => this.parseDatasetInfo(res, properties)));
   }
 
   private handleError (error: HttpErrorResponse) {
@@ -58,7 +58,7 @@
     return throwError(error  || 'Server error');
   }
 
-  parseDatasetInfo (data: any):any {
+  parseDatasetInfo (data: any, properties: EnvProperties):any {
     this.datasetInfo = new DatasetInfo();
     this.datasetInfo.record = data[13];
     // ['result']['metadata']['oaf:entity']['oaf:result']
@@ -202,19 +202,23 @@
     // ['result']['metadata']['oaf:entity']['oaf:result']['creator']
     if(data[10] != null) {
       if(this.datasetInfo.authors == undefined) {
-        this.datasetInfo.authors = new Array<string>();
+        this.datasetInfo.authors = new Array<{"fullName": string, "orcid": string}>();
       }
 
       let authors = data[10];
       let length = Array.isArray(authors) ? authors.length : 1;
+
       for(let i=0; i<length; i++) {
         let author = Array.isArray(authors) ? authors[i] : authors;
-        this.datasetInfo.authors[author.rank] = author.content;
-
+        if(author) {
+          /*if (author.ORCID && author.ORCID.indexOf(properties.orcidURL) != -1) {
+            author.ORCID = author.ORCID.substr(properties.orcidURL.length);
+          }*/
+          this.datasetInfo['authors'][author.rank] = {"fullName": author.content, "orcid": author.ORCID};
+        }
       }
-
       this.datasetInfo.authors = this.datasetInfo.authors.filter(function (item) {
-        return (item != undefined);
+        return (item != undefined && item.fullName != undefined);
       });
     }
 
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/dataset/dataset.module.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/dataset/dataset.module.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/dataset/dataset.module.ts	(revision 55902)
@@ -25,6 +25,7 @@
 import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
 import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
 
+import {ShowAuthorsModule}        from "../../utils/authors/showAuthors.module";
 
 @NgModule({
   imports: [
@@ -31,7 +32,8 @@
     //MaterialModule.forRoot(),
     CommonModule, FormsModule, SharedModule, RouterModule, LandingModule,
     CiteThisModule, ResultLandingModule, MetricsModule, IFrameModule, PagingModule,
-    AltMetricsModule, ConfigurationServiceModule, Schema2jsonldModule, SEOServiceModule
+    AltMetricsModule, ConfigurationServiceModule, Schema2jsonldModule, SEOServiceModule,
+    ShowAuthorsModule
   ],
   declarations: [
     DatasetComponent
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/publication/publication.module.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/publication/publication.module.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/publication/publication.module.ts	(revision 55902)
@@ -23,6 +23,7 @@
 import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
 
 import {DeletedByInferenceModule} from '../landing-utils/deletedByInference/deletedByInference.module';
+import {ShowAuthorsModule}        from "../../utils/authors/showAuthors.module";
 
 @NgModule({
   imports: [
@@ -29,7 +30,7 @@
     CommonModule, FormsModule, LandingModule, SharedModule, RouterModule,
     CiteThisModule, PagingModule, ResultLandingModule, IFrameModule,
     MetricsModule, AltMetricsModule, ConfigurationServiceModule, Schema2jsonldModule, SEOServiceModule,
-    DeletedByInferenceModule
+    DeletedByInferenceModule, ShowAuthorsModule
   ],
   declarations: [
     PublicationComponent
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/publication/publication.component.html
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/publication/publication.component.html	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/publication/publication.component.html	(revision 55902)
@@ -27,13 +27,13 @@
 
 
             <div class= " uk-margin-top">
-                <showAuthors [authors]="publicationInfo.authors" searchPage="publications"></showAuthors>
+                <showAuthors [authors]="publicationInfo.authors"></showAuthors>
                 <span *ngIf="publicationInfo.date != ''">({{publicationInfo.date}})</span>
             </div>
 
             <ul class="uk-list">
               <showPublisher [publisher]="publicationInfo.publisher"
-                             [journal]="publicationInfo.journal"></showPublisher>
+                             [journal]="publicationInfo.journal" [properties]="properties"></showPublisher>
                 <li *ngIf="publicationInfo.embargoEndDate"><span class="uk-text-bold">Embargo end date:</span> {{publicationInfo.embargoEndDate}}</li>
                 <li *ngIf="publicationInfo.identifiers && publicationInfo.identifiers.size > 0">
                   <showIdentifiers [identifiers]="publicationInfo.identifiers"></showIdentifiers>
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/publication/publication.service.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/publication/publication.service.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/publication/publication.service.ts	(revision 55902)
@@ -49,7 +49,7 @@
                               res[2], //14
                               res[1]['oaf:result']['country']  //15
                 ]))
-                .pipe(map(res => this.parsePublicationInfo(res)));
+                .pipe(map(res => this.parsePublicationInfo(res, properties)));
   }
 
   private handleError (error: HttpErrorResponse) {
@@ -59,7 +59,7 @@
     return throwError(error  || 'Server error');
   }
 
-  parsePublicationInfo (data: any):any {
+  parsePublicationInfo (data: any, properties: EnvProperties):any {
     this.publicationInfo = new PublicationInfo();
     this.publicationInfo.record = data[14];
     if(data[0] != null) {
@@ -245,7 +245,7 @@
 
     if(data[13] != null) {
       if(this.publicationInfo.authors == undefined) {
-        this.publicationInfo.authors = new Array<string>();
+        this.publicationInfo.authors = new Array<{"fullName": string, "orcid": string}>();
       }
 
       let authors = data[13];
@@ -253,10 +253,15 @@
 
       for(let i=0; i<length; i++) {
         let author = Array.isArray(authors) ? authors[i] : authors;
-        this.publicationInfo.authors[author.rank] = author.content;
+        if(author) {
+          /*if (author.ORCID && author.ORCID.indexOf(properties.orcidURL) != -1) {
+            author.ORCID = author.ORCID.substr(properties.orcidURL.length);
+          }*/
+          this.publicationInfo['authors'][author.rank] = {"fullName": author.content, "orcid": author.ORCID};
+        }
       }
       this.publicationInfo.authors = this.publicationInfo.authors.filter(function (item) {
-        return (item != undefined);
+        return (item != undefined && item.fullName != undefined);
       });
     }
 
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/landing-utils/deletedByInference/deletedByInference.service.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/landing-utils/deletedByInference/deletedByInference.service.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/landing-utils/deletedByInference/deletedByInference.service.ts	(revision 55902)
@@ -30,10 +30,11 @@
     return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
                 //.map(res => <any> res.json())
                 .pipe(map(res => res['result']['metadata']['oaf:entity']))
-                .pipe(map(res => this.parseDeletedByInferencePublications(res)));
+                .pipe(map(res => this.parseDeletedByInferencePublications(res, properties)));
+
   }
 
-  parseDeletedByInferencePublications (result: any): DeletedByInferenceResult {
+  parseDeletedByInferencePublications (result: any, properties: EnvProperties): DeletedByInferenceResult {
     /*title, authors, abstract, List of projects, PIDs,
       collectedfrom (link pointing to the download url), access rights*/
 
@@ -142,7 +143,7 @@
 
           if(result['oaf:result'] && result['oaf:result']['creator']) {
             if(publication.authors == undefined) {
-              publication.authors = new Array<string>();
+              publication.authors = new Array<{"fullName": string, "orcid": string}>();
             }
 
             let authors = result['oaf:result']['creator'];
@@ -150,10 +151,15 @@
 
             for(let i=0; i<length; i++) {
               let author = Array.isArray(authors) ? authors[i] : authors;
-              publication.authors[author.rank] = author.content;
+              if(author) {
+                /*if (author.ORCID && author.ORCID.indexOf(properties.orcidURL) != -1) {
+                  author.ORCID = author.ORCID.substr(properties.orcidURL.length);
+                }*/
+                publication['authors'][author.rank] = {"fullName": author.content, "orcid": author.ORCID};
+              }
             }
             publication.authors = publication.authors.filter(function (item) {
-              return (item != undefined);
+              return (item != undefined && item.fullName != undefined);
             });
           }
 
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/landing-utils/deletedByInference/deletedByInference.module.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/landing-utils/deletedByInference/deletedByInference.module.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/landing-utils/deletedByInference/deletedByInference.module.ts	(revision 55902)
@@ -12,11 +12,12 @@
  import {PagingModule}        from '../../../utils/paging.module';
 
  import {ErrorMessagesModule} from '../../../utils/errorMessages.module';
+import {ShowAuthorsModule} from "../../../utils/authors/showAuthors.module";
 
 @NgModule({
   imports: [
     CommonModule, FormsModule, ResultLandingModule,
-    PagingModule, ErrorMessagesModule
+    PagingModule, ErrorMessagesModule, ShowAuthorsModule
   ],
   declarations: [
     DeletedByInferenceComponent
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/landing-utils/showPublisher.component.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/landing-utils/showPublisher.component.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/landing-utils/showPublisher.component.ts	(revision 55902)
@@ -1,4 +1,5 @@
 import {Component, Input} from '@angular/core';
+import {EnvProperties} from "../../utils/properties/env-properties";
 
 @Component({
   selector: 'showPublisher',
@@ -46,7 +47,7 @@
         ></span
       ><span *ngIf=" journal['journal'] && (journal['issn'] || journal['eissn'] || journal['lissn'])">)</span>
     </li>
-    <li *ngIf="journal && (journal['issn'] ||
+    <li *ngIf=" properties.environment != 'production' && journal && (journal['issn'] ||
                 journal['lissn'] || journal['eissn'] )">
                   <span class="custom-external custom-icon"
                         uk-tooltip="title: Publisher copyright policies & self-archiving">
@@ -62,6 +63,7 @@
   @Input() publisher;
   @Input() journal;
   @Input() sherpaUrl = 'http://www.sherpa.ac.uk/romeo/search.php?issn=';
+  @Input() properties:EnvProperties;
 
 
   constructor() {
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/landing-utils/resultLanding.module.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/landing-utils/resultLanding.module.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/landing-utils/resultLanding.module.ts	(revision 55902)
@@ -5,7 +5,7 @@
 import { RouterModule } from '@angular/router';
 import {PagingModule} from '../../utils/paging.module';
 
-import {ShowAuthorsComponent} from './showAuthors.component';
+//import {ShowAuthorsComponent} from './showAuthors.component';
 import {ShowIdentifiersComponent} from './showIdentifiers.component';
 import {ShowSubjectsComponent} from './showSubjects.component';
 import {FundedByComponent} from './fundedBy.component';
@@ -21,13 +21,13 @@
     CommonModule, FormsModule, RouterModule, PagingModule, ShowPublisherModule
   ],
   declarations: [
-   ShowAuthorsComponent,ShowIdentifiersComponent,ShowSubjectsComponent,
+    ShowIdentifiersComponent,ShowSubjectsComponent,
    FundedByComponent,PublishedInComponent,AvailableOnComponent,TabTableComponent
   ],
   providers:[
   ],
   exports: [
-    ShowAuthorsComponent, ShowIdentifiersComponent, ShowSubjectsComponent,
+    ShowIdentifiersComponent, ShowSubjectsComponent,
     FundedByComponent, PublishedInComponent, AvailableOnComponent, TabTableComponent, ShowPublisherComponent
   ]
 })
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/landing-utils/showAuthors.component.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/landing-utils/showAuthors.component.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/landing-utils/showAuthors.component.ts	(revision 55902)
@@ -3,7 +3,7 @@
 import {HelperFunctions} from "../../utils/HelperFunctions.class";
 
 @Component({
-    selector: 'showAuthors',
+    selector: 'showAuthors1',
     template: `
         <span *ngIf="authors != undefined">
             <div *ngIf="showAll">
@@ -40,7 +40,7 @@
 
     })
 
-export class ShowAuthorsComponent {
+export class ShowAuthorsComponent1 {
     @Input() authors: { [key: string]: string }[];
     @Input() searchPage:string ="publications"
 
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/landing-utils/citeThis/citeThis.component.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/landing-utils/citeThis/citeThis.component.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/landing-utils/citeThis/citeThis.component.ts	(revision 55902)
@@ -81,10 +81,10 @@
           citationData.author = [];
           var max_length = (this.result.authors.length > 10)?10:this.result.authors.length;
           for (var i =0 ;i <  max_length; i++){
-            if(this.result.authors[i] && this.result.authors[i].indexOf(", ") !== -1){
-              citationData.author.push({given:this.result.authors[i].split(", ")[0], family:this.result.authors[i].split(", ")[1], 'parse-names':true});
+            if(this.result.authors[i] && this.result.authors[i].fullName && this.result.authors[i].fullName.indexOf(", ") !== -1){
+              citationData.author.push({given:this.result.authors[i].fullName.split(", ")[0], family:this.result.authors[i].fullName.split(", ")[1], 'parse-names':true});
             }else{
-              citationData.author.push({given:"", family:this.result.authors[i], 'parse-names':true});
+              citationData.author.push({given:"", family:this.result.authors[i].fullName, 'parse-names':true});
             }
             // citationData.authors.push(this.result.authors[i]);
           }
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/software/software.module.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/software/software.module.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/software/software.module.ts	(revision 55902)
@@ -19,11 +19,13 @@
 import { FreeGuard } from'../../login/freeGuard.guard';
 import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
 import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
+import {ShowAuthorsModule}        from "../../utils/authors/showAuthors.module";
 
 @NgModule({
   imports: [
     CommonModule, FormsModule, LandingModule,  RouterModule, CiteThisModule, PagingModule,
-    ResultLandingModule,   IFrameModule, MetricsModule, AltMetricsModule, Schema2jsonldModule, SEOServiceModule
+    ResultLandingModule,   IFrameModule, MetricsModule, AltMetricsModule, Schema2jsonldModule, SEOServiceModule,
+    ShowAuthorsModule
   ],
   declarations: [
     SoftwareComponent
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/software/software.service.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/software/software.service.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/landingPages/software/software.service.ts	(revision 55902)
@@ -48,7 +48,7 @@
                                  res[2],
                                 res[1]['journal'] //15
                     ]))
-                    .pipe(map(res => this.parseSoftwareInfo(res)));
+                    .pipe(map(res => this.parseSoftwareInfo(res, properties)));
   }
 
   private handleError (error: HttpErrorResponse) {
@@ -58,7 +58,7 @@
     return throwError(error  || 'Server error');
   }
 
-  parseSoftwareInfo (data: any):any {
+  parseSoftwareInfo (data: any, properties: EnvProperties):any {
     this.softwareInfo = new SoftwareInfo();
     this.softwareInfo.record = data[14];
     if(data[0] != null) {
@@ -193,7 +193,7 @@
 
     if(data[10] != null) {
       if(this.softwareInfo.authors == undefined) {
-        this.softwareInfo.authors = new Array<string>();
+        this.softwareInfo.authors = new Array<{"fullName": string, "orcid": string}>();
       }
 
       let authors = data[10];
@@ -201,11 +201,15 @@
 
       for(let i=0; i<length; i++) {
         let author = Array.isArray(authors) ? authors[i] : authors;
-        this.softwareInfo.authors[author.rank] = author.content;
+        if(author) {
+          /*if (author.ORCID && author.ORCID.indexOf(properties.orcidURL) != -1) {
+            author.ORCID = author.ORCID.substr(properties.orcidURL.length);
+          }*/
+          this.softwareInfo['authors'][author.rank] = {"fullName": author.content, "orcid": author.ORCID};
+        }
       }
-
       this.softwareInfo.authors = this.softwareInfo.authors.filter(function (item) {
-        return (item != undefined);
+        return (item != undefined && item.fullName != undefined);
       });
     }
 
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/entities/deletedByInferenceResult.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/entities/deletedByInferenceResult.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/entities/deletedByInferenceResult.ts	(revision 55902)
@@ -4,7 +4,7 @@
 export class DeletedByInferenceResult {
     title: string;
     accessMode: string;
-    authors: string[];
+    authors: {"fullName": string, "orcid": string}[];
 
     date: string;
     dateofacceptance: string;
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/entities/searchResult.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/entities/searchResult.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/entities/searchResult.ts	(revision 55902)
@@ -11,7 +11,7 @@
     description: string;
     year: string;
     embargoEndDate: string;
-    authors: string[];
+    authors: {"fullName": string, "orcid": string}[];
 
     //datasets & orp:
     publisher: string;
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/entities/softwareInfo.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/entities/softwareInfo.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/entities/softwareInfo.ts	(revision 55902)
@@ -3,7 +3,7 @@
     //title: { "name": string, "url": string, "accessMode": string};
     title: string;
     accessMode: string;
-    authors: string[];
+    authors: {"fullName": string, "orcid": string}[];
     date: string;
     dateofacceptance: string;
     embargoEndDate: string;
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/properties/searchFields.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/properties/searchFields.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/utils/properties/searchFields.ts	(revision 55902)
@@ -14,11 +14,12 @@
      "resultbestaccessright","community","collectedfromdatasourceid","resulthostingdatasourceid", "resultdateofacceptance",
           "relfunder",
      "relfundinglevel0_id","relfundinglevel1_id","relfundinglevel2_id",
-     "resultlanguagename", "relorganizationid", "pid","relprojectid", "instancetypename"];
+     "resultlanguagename", "relorganizationid", "pid","relprojectid", "instancetypename", "authorid"];
           public RESULT_FIELDS: { [key:string]:FieldDetails}={
            ["q"]:{name:"All fields", type:"keyword", param:"q", operator: "op", equalityOperator: "="},
          ["resulttitle"]:{name:"Title", type:"keyword", param:"title", operator: "tt", equalityOperator: "="},
          ["resultauthor"]:{name:"Author", type:"keyword", param:"author", operator: "at", equalityOperator: "="},
+         ["authorid"]:{name:"Author ORCID", type:"keyword", param:"orcid", operator: "oc", equalityOperator: " exact "},
          ["resultsubject"]:{name:"Subject", type:"keyword", param:"subject", operator: "sb", equalityOperator: "="},
          ["resultpublisher"]:{name:"Publisher", type:"keyword", param:"publisher", operator: "pb", equalityOperator: "="},
          ["pid"]:{name:"PID", type:"keyword", param:"pid", operator: "pd", equalityOperator: " = "},
Index: modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/claims/claim-utils/claimResultSearchForm.component.ts
===================================================================
--- modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/claims/claim-utils/claimResultSearchForm.component.ts	(revision 55901)
+++ modules/uoa-services-library/branches/angular7/ng-openaire-library/src/app/claims/claim-utils/claimResultSearchForm.component.ts	(revision 55902)
@@ -688,7 +688,7 @@
            result.result = item;
            if(item.authors){
              for(var j=0; j<item.authors.length; j++){
-                 result.authors.push(item.authors[j]);
+                 result.authors.push(item.authors[j]['fullName']);
              }
            }
 
