Versions Compared

Key

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


Warning

You are reading the documentation for

Table of Contents

Introduction

Info
titleORCID API version
Since

DSpace-CRIS 5.

8.0 we use the ORCID API v2, see https://members.orcid.org/api/news/xsd-20-update

DSpace-CRIS provides the most advanced and complete integration between a CRIS / Repository system and ORCID achieving most of the ORCID integration use cases.

The available functionalities depend on the kind of API Key that you have, Public or Member. You must configure your client-id, client secret and specify the endpoint appropriate for your API level in the 

[dspace-installDir]/config/modules/authentication-oauth.cfg (via build.properties, that contains configuaration like below)

x and 6.x as available in the maintenance branches.

For DSpace-CRIS 7 please check the PDF technical documentation provided on GitHub as noted here a specific section is devoted to the ORCID Integration


Table of Contents

Introduction

Info
titleORCID API Version 3

Currently the last line of development DSpace-CRIS 5.10.x  use ORCID API v3, see https://members.orcid.org/api/news/xsd-30-update


Info
titleORCID API version

Since DSpace-CRIS 5.8.0 we use the ORCID API v2, see https://members.orcid.org/api/news/xsd-20-update


Info
titleORCID Metadata mandatory definition

Note that "orcid" metadata in the Researcher Profile entity MUST be a "text" property definition (check https://github.com/4Science/DSpace/blob/dspace-5_x_x-cris/dspace/etc/orcid_from_link_to_text.sql to perform the migration)


Info
titleAbout ORCID

more info about ORCID here https://orcid.org/


DSpace-CRIS provides the most advanced and complete integration between a CRIS / Repository system and ORCID, achieving most of the ORCID integration use cases.

The available functionalities depend on the kind of API Key that you have: Public or Member. You must configure your client-id, client secret and specify the endpoint appropriate for your API level in the 

[dspace-installDir]/config/modules/authentication-oauth.cfg (via build.properties, that contains configuration like below)

Code Block
#####################
# ORCID
#####################
#Production Registry
#Step        |     Member API
Code Block
#####################
# ORCID
#####################
#Production Registry
#Step        |     Member API                                       |    Public API
#--------------------------------------------------------------------------------------------------------
#Authorize   |    https://orcid.org/oauth/authorize          |    https://orcid.org/oauth/authorize
#Exchange    |    https://orcid.org/oauth/token              |    https://orcid.org/oauth/token
#Use         |    https://api.orcid.org/v2v3.0                 |    https://pub.orcid.org/v2v3.0
#--------------------------------------------------------------------------------------------------------
#
#Sandbox
#Step        |     Member API                                |    Public API
#--------------------------------------------------------------------------------------------------------
#Authorize   |     https://sandbox.orcid.org/oauth/authorize |    https://sandbox.orcid.org/oauth/authorize
#Exchange    |     https://sandbox.orcid.org/oauth/token     |    https://sandbox.orcid.org/oauth/token
#Use         |     https://api.sandbox.orcid.org/v2v3.0o        |    https://pub.sandbox.orcid.org/v2v3.0
#--------------------------------------------------------------------------------------------------------
authentication-oauth.orcid-api-url = https://pub.orcid.org/v2v3.0
authentication-oauth.application-token-url = https://orcid.org/oauth/token
authentication-oauth.application-authorize-url = https://orcid.org/oauth/authorize

# register for free on ORCID to use an institutional Public API
# IMPORTANT!! Please fill authentication-oauth.application-client-name with name of client registered into orcid registries (need by the putcode flow retrieve) 
authentication-oauth.application-client-name =
authentication-oauth.application-client-id =
authentication-oauth.application-client-secret =
authentication-oauth.application-client-redirect = ${dspace.baseUrl}/oauth-login

# If you have only PUBLIC API the scope need to be; /authenticate scope now includes /read-public scope
authentication-oauth.application-client-scope =/authenticate
# if you have MEMBER API the suggested scopes are as following; /authenticate scope now includes /read-public scope
#authentication-oauth.application-client-scope =/authenticate /read-limited /person/update /activities/update

...

Info
Please note that the properties in such this file are used also for the other ORCID integration functionalities. So you need to make sure that they are accurate also , even if you decide to disable the ORCID authentication.

...

The following properties are specific of the authentication integration:

Code Block
autoregister=true
choice-page=false
orcid-embedded-login=true

the The autoregister flag is auto-explaining,self explanitory. choice-page, if true list , lists the ORCID authentication explicitly as an authentication methods method, so that, if you have multiple authentication methods configured, such as LDAP, Shibboleth, etc., ORCID is also listed in the that choice page. The orcid-embedded-login is the preferred mode, a Login with ORCID button is displayed side-by-side the with password or ldap authentication.

...

When the ORCID Authentication is enabled and the autoregister flag is true. it is possible for a researcher to claim an existent researcher profile that have has an ORICD in DSpace-CRIS just logging in. Indeed, when the user login logs in, the system will create an a user account using the information from ORCID and, if his ORCID match one already assigned to an orphan researcher profile, this new account become the owner of the profile. In such way, external collaborators can login in the system and gains gain limited privileges to improve their profile without any explicit activity by the repository staff.

...

When the user is logged in via ORCID and proceed proceeds to create his local researcher profile, the system automatically captures from ORCID several information: 


Submission lookup

A special authority is build-in DSpace-CRIS to use the ORCID registry togheter with the internal directory of researchers as authority list for metadata editing

...

Code Block
event.dispatcher.default.consumers = versioning, discovery, eperson, harvester, orcidpush, crisorcid, itemauthority, dedup
...
# orcid push consumer
event.consumer.orcidpush.class = org.dspace.app.cris.integration.authority.CrisOrcidQueueConsumer
event.consumer.orcidpush.filters = Item+INSTALL|MODIFY_METADATA|MODIFY

and for the CRIS entites with a model listner orgCRIS entites with a model listner org.dspace.app.cris.model.listener.OrcidQueueListener enabled via spring

Code Block
languagexml
themeEclipse
<bean id="ORCIDListener" class="org.dspace.app.cris.model.listener.OrcidQueueListener

...

">
	<property name="orcidPreferencesUtils" ref="orcidPreferencesUtils" />	
</bean>

The synchronization can happen automatically via a batch script that need to be configured as a CRON Job without parameters

Code Block
./dspace dsrun 
Code Block
languagexml
themeEclipse
<bean id="ORCIDListener" class="org.dspace.app.cris.model.listener.OrcidQueueListener">
	<property name="orcidPreferencesUtils" ref="orcidPreferencesUtils" />	
</bean>.batch.ScriptPushOrcid

or triggered manually by the researcher. A custom box ORCID Registry Queue ("orcidsyncqueue") is included in the default configuration to show the queue of object to synchronize and allow manual processing.

Info

If a researcher set the synchronization mode to "manual" the normal execution of the synchronization script cause to send a reminder email to the researcher with pending synchronization actions (email template: orcid-alerts)

The script can be also used from the command line to force a first push of information to ORCID indipendently by the content of the ORCID queue tableThe synchronization can happen automatically via a batch script that need to be configured as a CRON Job without parameters

Code Block
./dspace dsrun org.dspace.app.cris.batch.ScriptPushOrcid

or triggered manually by the researcher. A custom box ORCID Registry Queue ("orcidsyncqueue") is included in the default configuration to show the queue of object to synchronize and allow manual processing.

Info

If a researcher set the synchronization mode to "manual" the normal execution of the synchronization script cause to send a reminder email to the researcher with pending synchronization actions (email template: orcid-alerts)

The script can be also used from the command line to force a first push of information to ORCID indipendently by the content of the ORCID queue table

Code Block
./dspace dsrun org.dspace.app.cris.batch.ScriptPushOrcid [-a | -s <crisID>] [-p]

-a process all the researcher

-s process a single researcher, whom with the specified crisID

.cris.batch.ScriptPushOrcid [-a | -s <crisID>] [-p]

-a process all the researcher

-s process a single researcher, whom with the specified crisID

-p force the script to use POST call to ORCID instead of PUT (put is more efficient but replace all the existent publications, projects, organisations in the ORCID profile created from DSpace-CRIS with the new value. POST will just append the new values). Please note that information input manually by the researcher in his ORCID profile or created in his profile by other system (like crossref, scopus, etc.) cannot be never overridden by DSpace-CRIS


Note that DSpace-CRIS will perform an operation on the Orcid Queue when

  1.      add/remove/change metadata at first level
  2.      add/remove/save metadata at nested level (like affiliation and education)

Point 1. and 2. will perform a request of push for the Researcher Profile on Orcid Queue. In particular the second point means that modification on value at metadata "nested" object (like modification on "Role" of the "affiliation" nested object) not perform any operation on Orcid Queue but the "Save" event will do it. So the operation of open a nested object without change it perform an ADD operation on the Orcid Queue. By the way on the metadata first level (like authorid, country, keywords, personalsite, scopusid, variants) any ADD/REMOVE/CHANGE events occuring the system will perform a push of the Researcher Profile that need to perform a synchronization.-p force the script to use POST call to ORCID instead of PUT (put is more efficient but replace all the existent publications, projects, organisations in the ORCID profile created from DSpace-CRIS with the new value. POST will just append the new values). Please note that information input manually by the researcher in his ORCID profile or created in his profile by other system (like crossref, scopus, etc.) cannot be never overridden by DSpace-CRIS


Mapping local properties to ORCID

...

Preference shortnameDSpace-CRIS propertyORCID property
orcid-profile-pref-affiliationaffiliationaffiliations-employment
orcid-profile-pref-authoridauthoridexternal-identifier-Researcher ID
system-orcid-profile-pref-biographybiographybiography
orcid-profile-pref-educationeducationaffiliations-education
system-orcid-profile-pref-emailemailprimary-email
system-orcid-profile-pref-fullNamefullNamename
orcid-profile-pref-iso-3166-countryiso-countryiso-3166-country
orcid-profile-pref-keywordskeywordskeywords
system-orcid-profile-pref-otheremailsotheremailsother-emails
orcid-profile-pref-personalsitepersonalsiteresearcher-urls
system-orcid-profile-pref-preferredNamepreferredNamecredit-name
orcid-profile-pref-scopusidscopusidexternal-identifier-Scopus Author ID
orcid-profile-pref-variantsvariantsother-names

...