Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Warning
titleexperimental

Please note that the ORCID integration feature is classified as experimental at the time of 7.3 and it MUST be enabled manually. Due to the strict validation rules applied on the ORCID side and the absence of friendly edit UI  for the archived items in DSpace (see issues#2876), it is hard at this time to achieve an optimal UX.


Info
titleAcknowledgement
The ORCID integration has been originally developed by 4Science in DSpace-CRIS, it is the result of years of collaboration with several institutions and the ORCID team that has helped to correct, improve and broaden the scope of the integration. We want to thank the University of Hong Kong that was the first institution to fund development activities on this regards back in 2015 and the TUHH Hamburg University of Technology that have funded the initial porting of the ORCID integration to the new Angular/REST architecture introduced in DSpace 7. Last but not least, funds have been received by the DSpace community to port this feature from DSpace-CRIS to DSpace.

...

The table below summarize the supported features according to the type of ORCID API configured

FeatureNo credentials*Public APIMember API
Authentication
 (tick) (tick)
Connect local profile to ORCID (authenticated ID)
 (tick) (tick)
ORCID Registry Lookup - import Person records(tick) (tick) (tick)
ORCID Registry Lookup - as authority(tick) (tick) (tick)
Import publication from ORCID(tick) (tick) (tick)
Push biographic data to ORCID

 (tick)
Push publications to ORCID (works)

 (tick)
Push projects to ORCID (fundings)

 (tick)

* No credentials: please note that ORCID strongly recommend to apply at least for public free API Key as this will help to trouble-shooting integration problem and get support from them. There is also a chance to get better performance/priority over "unknown" client

User features

Login via ORCID

...

Configuration

Enable the integration

All the ORCID features requires a minimal common set of properties to configure in the local.cfg 

Code Block
# Switch to production API once ready https://github.com/ORCID/ORCID-Source/tree/master/orcid-api-web#endpoints 
orcid.domain-url= https://sandbox.orcid.org
orcid.api-url = https://api.sandbox.orcid.org/v3.0
orcid.application-client-id = <YOUR-ORCID-CLIENT-ID>
orcid.application-client-secret = <YOUR-ORCID-CLIENT-SECRET>

To enable the main integration (i.e. connect local profile with ORCID and push data to the ORCID registry) you need to be an ORCID Member, get a Member API Key and proper enable and configure the feature in DSpace.

You need to override, via local.cfg , the following properties

Warning
The ORCID Synchronization features depend on other features that must be enabled: DSpace Profile, Configurable Entities at least Person, Publication & Project

In the ORCID API Credentials request form you will be asked to enter one or more redirect URLs for you application (DSpace), you will need to enter here the root URL of your REST and Angular interfaces that could eventually be different, otherwise it will be sufficient to put the URL of your angular UI. For the DSpace 7 official demo these are

Once ORCID has reviewed and approved your request, you will get from them the Client ID and Client Secret that need to be set in the local.cfg  among other properties (see below)

Code Block
# the properties below are required only for the sync / linking part (not for authentication or import)
Code Block
orcid.synchronization-enabled = true
# Switch to production API once ready https://github.com/ORCID/ORCID-Source/tree/master/orcid-api-web#endpoints 
orcid.domain-url= https://sandbox.orcid.org
orcid.api-url = https://api.sandbox you need to enable the orcidqueue consumer to keep track of what need to be sync between DSpace and ORCID
event.dispatcher.default.consumers = versioning, discovery, eperson, orcidqueue

By default DSpace will request permissions to READ and WRITE all the information from the ORCID profile as this will enable support for all the features. You can eventually fine-tuning that overriding the following properties, please note that if you are going to configure Public API Credential you MUST update this configuration keeping only the /authenticate  scope as all the other scopes require member API

Code Block
# The scopes to be granted by the user during the login on ORCID (see https://info.orcid.org/faq/what-is-an-oauth-scope-and-which-scopes-does-orcid-support/)
orcid.scope = /authenticate
orcid.scope = /read-limited
orcid.scope = /activities/update
orcid.scope = /person/update


The push of DSpace data (Person, Publication, Project) to ORCID is based on mapping defined in the config/modules/orcid.cfg  file, 

Code Block
	<bean id="orcidWorkFactoryFieldMapping" class="org.dspace.app.orcid.model.OrcidWorkFieldMapping" >
		<property name="contributorFields" value="${orcid.mapping.work.contributors}" />
		<property name="externalIdentifierFields" value="${orcid.mapping.work.external-ids}" />
		<property name="publicationDateField" value="${orcid.mapping.work.publication-date}" />
		<property name="titleField" value="${orcid.mapping.work.title}" />
		<property name="journalTitleField" value="${orcid.mapping.work.journal-title}" />
		<property name="shortDescriptionField" value="${orcid.mapping.work.short-description}" />
		<property name="subTitleField" value="${orcid.mapping.work.sub-title}" />
		<property name="languageField" value="${orcid.mapping.work.language}" />
		<property name="languageConverter" ref="${orcid.mapping.work.language.converter}" />
		<property name="typeField" value="${orcid.mapping.work.type}" />
		<property name="typeConverter" ref="${orcid.mapping.work.type.converter}" />
		<property name="citationType" value="${orcid.mapping.work.citation.type}" />
	</bean>

that respectively read the mapping from the config/modules/orcid.cfg  file

Code Block
### Work (Publication) mapping ###
orcid.mapping.work.title = dc.title
orcid.mapping.work.sub-title =
orcid.mapping.work.short-description = dc.description.abstract
orcid.mapping.work.publication-date = dc.date.issued
orcid.mapping.work.language = dc.language.iso
orcid.mapping.work.language.converter = mapConverterDSpaceToOrcidLanguageCode
orcid.mapping.work.journal-title = dc.relation.ispartof
orcid.mapping.work.type = dc.type
orcid.mapping.work.type.converter = mapConverterDSpaceToOrcidPublicationType

##orcid.mapping.work.contributors syntax is <metadatafield>::<role>
orcid.mapping.work.contributors = dc.contributor.author::author
orcid.mapping.work.contributors = dc.contributor.editor::editor

##orcid.mapping.work.external-ids syntax is <metadatafield>::<type> or $simple-handle::<type>
##The full list of available external identifiers is available here https://pub.orcid.org/v3.0/identifiers
orcid.mapping.work.application-client-id = <YOUR-ORCID-CLIENT-ID>
orcid.application-client-secret = <YOUR-ORCID-CLIENT-SECRET>external-ids = dc.identifier.doi::doi
orcid.mapping.work.external-ids = dc.identifier.scopus::eid
orcid.mapping.work.external-ids = dc.identifier.pmid::pmid
orcid.mapping.work.external-ids = $simple-handle::handle
orcid.mapping.work.external-ids = dc.identifier.isi::wosuid
orcid.mapping.work.external-ids = dc.identifier.issn::issn

To enable the ORCID Authentication you need to uncomment the following line in the modules/authentication.cfg  file or adding it to your local.cfg 

...

the mapping between ORCID Person and the DSpace Person Item is the following, currently hardcodedhard-coded

ORCIDDSpace
Name/FamilyNameperson.firstName
Name/GivenNameperson.givenName
Name/Pathperson.identifier.orcid
ORCID Profile URLdc.identifier.uri


the following bean is instead used to configure the import of publication records from ORCID (Work)

...

the mapping of the ORCID Work metadata to the DSpace metadata is performed by the following beans in config/spring/api/orcid-services.xml 

Code Block
	<bean id="orcidWorkFactoryFieldMappingorcidPublicationDataProviderFieldMapping" class="org.dspace.app.orcid.model.OrcidWorkFieldMapping" >
		<property name="contributorFields" value="${orcid.external-data.mapping.workpublication.contributors}" />
		<property name="externalIdentifierFields" value="${orcid.external-data.mapping.workpublication.external-ids}" />
		<property name="publicationDateField" value="${orcid.external-data.mapping.workpublication.publicationissued-date}" />
		<property name="titleField" value="${orcid.external-data.mapping.workpublication.title}" />
		<property name="journalTitleField" value="${orcid.external-data.mapping.workpublication.journalis-part-titleof}" />
		<property name="shortDescriptionField" value="${orcid.external-data.mapping.workpublication.short-description}" />
		<property name="subTitleFieldlanguageField" value="${orcid.mapping.work.sub-title}" />
		<property name="languageField" value="${orcidexternal-data.mapping.workpublication.language}" />
		<property name="languageConverter" ref="${orcid.external-data.mapping.workpublication.language.converter}" />
		<property name="typeField" value="${orcid.external-data.mapping.workpublication.type}" />
		<property name="typeConverter" ref="${orcid.external-data.mapping.workpublication.type.converter}" />
		<property name="citationType" value="${orcid.mapping.work.citation.type}" />
	</bean>

that respectively read the mapping from the config/modules/orcid.cfg  file

Code Block
### Work (Publication) external-data.mapping ###
orcid.external-data.mapping.workpublication.title = dc.title

orcid.mapping.work.sub-title =
orcidexternal-data.mapping.workpublication.short-description = dc.description.abstract
orcid.external-data.mapping.workpublication.publicationissued-date = dc.date.issued
orcid.external-data.mapping.workpublication.language = dc.language.iso
orcid.external-data.mapping.workpublication.language.converter = mapConverterDSpaceToOrcidLanguageCodemapConverterOrcidToDSpaceLanguageCode
orcid.external-data.mapping.workpublication.journalis-part-titleof = dc.relation.ispartof
orcid.external-data.mapping.workpublication.type = dc.type
orcid.external-data.mapping.workpublication.type.converter = mapConverterDSpaceToOrcidPublicationTypemapConverterOrcidToDSpacePublicationType

##orcid.external-data.mapping.workpublication.contributors syntax is <metadatafield>::<role>
orcid.external-data.mapping.workpublication.contributors = dc.contributor.author::author
orcid.external-data.mapping.workpublication.contributors = dc.contributor.editor::editor

##orcid.external-data.mapping.workpublication.external-ids syntax is <metadatafield>::<type> or $simple-handle::<type>
##The full list of available external identifiers is available here https://pub.orcid.org/v3.0/identifiers
orcid.external-data.mapping.workpublication.external-ids = dc.identifier.doi::doi
orcid.external-data.mapping.workpublication.external-ids = dc.identifier.scopus::eid
orcid.external-data.mapping.workpublication.external-ids = dc.identifier.pmid::pmid
orcid.mapping.work.external-ids = $simple-handle::handle
orciddata.mapping.workpublication.external-ids = dc.identifier.isi::wosuid
orcid.external-data.mapping.workpublication.external-ids = dc.identifier.issn::issn

...

Configure the push of information from DSpace to ORCID

...coming soon...


Trouble-shooting & common issues

The toubleshooting guide from ORCID can help as well https://info.orcid.org/documentation/integration-guide/troubleshooting/


I cannot find the ORCID features described in this page in my installation

The ORCID features must be enabled by hand changing some configuration file, please refer to the Enable the integration section paragraph above in the page

I have configured my Public ORCID API credentials in DSpace but I get an error attempting to login via ORCID

When you use public ORCID API credentials you can only use a subset of the integration features (check ) moreover you need to limit the scopes (permissions) requested to the user via the ORCID authentication to the /authenticate  scope. Please check the Enable the integration section paragraph above in the page

I cannot push all my publications, only few or none of them are listed in the queue

Please double check that the orcidqueue  consumer has been enabled and that the orcid settings of your profile has the "All publications" checkbox flagged. ORCID features require the use of the new Configurable Entities. Only Publication item are synchronized with ORCID, legacy "untyped" items not. Please consider to convert your legacy collection to "Publication" collection and set a dspace.entity.type = Publication  metadata on your legacy items

Push of publications to ORCID fails

...

Push of projects to ORCID fails

...