The synchronization process with ORCID allows to update the user publications, fundings and profile on ORCID after changes on DSpace CRIS items. To perform this synchronization, however, the user must:

A profile that can be synchronized with ORCID must therefore have the following metadata:

Since DSpace-CRIS version 2022.02.00 (05th Oct 2022) this feature is aligned with ORCID integration available in DSpace and some metadata were migrated from the cris schema to the dspace schema (ref. ORCID Integration)

ORCID Synchronization settings Box

It is possible to view and edit the synchronization modes and settings using the specific box under the ORCID tab. Like the ORCID tab itself and the other boxes in it, this section of the item can only be viewed by the owner of the item and only if an ORCID account was already linked to the viewing shown.

User specified synchronization settings are stored in the following metadata of the researcher profile item:

The update of the synchronization preferences is done with a PATCH request to the endpoint /api/cris/profiles/<:eperson-uuid>, performing a REPLACE operation with one of the following paths:

ORCID Registry Queue

The items to be synchronized with ORCID, according to the synchronization configuration set by the user, are put in a queue of resources to be sent to ORCID to insert or update publications, fundings and profile informations. Once the user has forced sending to ORCID or the synchronization batch has done it, the items already synchronized will be removed from the queue.

The queue is modeled through the orcid_queue table, and each entry of that queue is therefore represented by a record of that table. Each record represents an item or a metadata to be synchronized on ORCID, with the reference to the item of the owner researcher profile. The columns of the orcid_queue table are:

The records in the ORCID queue associated with a specific profile can be viewed in the specific box under the ORCID tab on the item page. From this section you can remove the records from the queue or force synchronization with the ORCID registry. For further details on manual synchronization, refer to the specific section of this page.

Orcid history

After each attempt to push data from DSpaceCRIS to the ORCID registry, a record is inserted in the orcid_history table with the detail of the response coming from ORCID. In particular, in addition to the columns present in the orcid_queue except the attempts column, the orcid_history also has the following columns:

Orcid Queue population

The ORCID queue is in most cases populated by a specific consumer implemented by the class org.dspace.app.orcid.consumer.OrcidQueueConsumer which, when an archived item is modified, checks if it is necessary to update the queue of some profile connected to ORCID . In particular:

The ORCID queue is also populated on two other occasions, in addition to the OrcidQueueConsumer:

Publications synchronization

Publications can be synchronized with the ORCID registry to create/update Work entities. The conversion between the items representing the publications and the works in xml format to be sent to the ORCID register is managed by the bean org.dspace.app.orcid.model.factory.impl.OrcidWorkFactory.
This bean use a dynamic configuration of the metadata to be read, implemented through the class org.dspace.app.orcid.model.OrcidWorkFieldMapping.
The mapping between the publication’s metadata fields and the Work attributes present in the ORCID registry can be configured through the following properties:

Below is an example of a configuration:

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.citation.type = bibtex
orcid.mapping.work.contributors = dc.contributor.author::author
orcid.mapping.work.contributors = dc.contributor.editor::editor
orcid.mapping.work.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
orcid.mapping.work.funding = dc.relation.funding
orcid.mapping.work.funding.external-id.type = grant_number
orcid.mapping.work.funding.external-id.value = dc.relation.grantno
orcid.mapping.work.funding.external-id.entity-value = oairecerif.funding.identifier
orcid.mapping.work.funding.url = crisfund.award.url
orcid.mapping.contributor.email = person.email
orcid.mapping.contributor.orcid = person.identifier.orcid

Fundings synchronization

Fundings can be synchronized with the ORCID registry to create/update Funding entities. The conversion between the items representing the fundings and the fundings in xml format to be sent to the ORCID register is managed by the bean org.dspace.app.orcid.model.factory.impl.OrcidFundingFactory.
This bean use a dynamic configuration of the metadata to be read, implemented through the class org.dspace.app.orcid.model.OrcidFundingFieldMapping.
The mapping between the funding’s metadata fields and the Funding attributes present in the ORCID registry can be configured through the following properties:

Below is an example of a configuration:

orcid.mapping.funding.title = dc.title
orcid.mapping.funding.type = dc.type
orcid.mapping.funding.type.converter = mapConverterDSpaceToOrcidFundingType
orcid.mapping.funding.external-ids = oairecerif.internalid::other-id
orcid.mapping.funding.external-ids = crisfund.award.url::uri
orcid.mapping.funding.external-ids = oairecerif.funding.identifier::grant_number
orcid.mapping.funding.description = dc.description
orcid.mapping.funding.start-date = oairecerif.funding.startDate
orcid.mapping.funding.end-date = oairecerif.funding.endDate
orcid.mapping.funding.contributors = crisfund.investigators::lead
orcid.mapping.funding.contributors = crisfund.coinvestigators::co-lead
orcid.mapping.funding.organization = oairecerif.funder
orcid.mapping.funding.amount = oairecerif.amount
orcid.mapping.funding.amount.currency = oairecerif.amount.currency
orcid.mapping.funding.amount.currency.converter = mapConverterDSpaceToOrcidAmountCurrency
orcid.mapping.contributor.email = person.email
orcid.mapping.contributor.orcid = person.identifier.orcid

Profile synchronization

Unlike synchronization of publications and fundings, only certain information can be synchronized for the profile, based on the synchronization preferences you set. The profile’s metadata to be synchronized based on the preferences expressed can be configured using the following properties:

ORCID data

Property

Preference

Multi-values

Other names (Also known as)

orcid.mapping.other-names

BIOGRAPHICAL

check box with check

Keywords

orcid.mapping.keywords

BIOGRAPHICAL

check box with check

Country

orcid.mapping.country

BIOGRAPHICAL

check box with check

Other ids

orcid.mapping.person-external-ids

IDENTIFIERS

check box with check

Websites & Social Links

orcid.mapping.researcher-urls

IDENTIFIERS

check box with check

Employment name

orcid.mapping.affiliation.name

AFFILIATION


Employment role

orcid.mapping.affiliation.role

AFFILIATION


Employment start date

orcid.mapping.affiliation.start-date

AFFILIATION


Employment end date

orcid.mapping.affiliation.end-date

AFFILIATION


Qualification name

orcid.mapping.qualification.name

EDUCATION


Qualification role

orcid.mapping.qualification.role

EDUCATION


Qualification start date

orcid.mapping.qualification.start-date

EDUCATION


Qualification end date

orcid.mapping.qualification.end-date

EDUCATION


Education name

orcid.mapping.education.name

EDUCATION


Education role

orcid.mapping.education.role

EDUCATION


Education start date

orcid.mapping.education.start-date

EDUCATION


Education end date

orcid.mapping.education.end-date

EDUCATION


Below is an example of a configuration:

### Affiliation mapping ###
orcid.mapping.affiliation.name = oairecerif.person.affiliation
orcid.mapping.affiliation.role = oairecerif.affiliation.role
orcid.mapping.affiliation.start-date = oairecerif.affiliation.startDate
orcid.mapping.affiliation.end-date = oairecerif.affiliation.endDate
### Qualification mapping ###
orcid.mapping.qualification.name = crisrp.qualification
orcid.mapping.qualification.role = crisrp.qualification.role
orcid.mapping.qualification.start-date = crisrp.qualification.start
orcid.mapping.qualification.end-date = crisrp.qualification.end
### Education mapping ###
orcid.mapping.education.name = crisrp.education
orcid.mapping.education.role = crisrp.education.role
orcid.mapping.education.start-date = crisrp.education.start
orcid.mapping.education.end-date = crisrp.education.end
### Other names mapping ###
orcid.mapping.other-names = crisrp.name.variant
orcid.mapping.other-names = crisrp.name.translated
### Keywords mapping ###
orcid.mapping.keywords = dc.subject
### Country mapping ###
orcid.mapping.country = crisrp.country
orcid.mapping.country.converter =
### Person External ids mapping ###
##orcid.mapping.person-external-ids syntax is <metadatafield>::<type>
orcid.mapping.person-external-ids = person.identifier.scopus-author-id::SCOPUS
orcid.mapping.person-external-ids = person.identifier.rid::RID
### Researcher urls mapping ###
orcid.mapping.researcher-urls = oairecerif.identifier.url

For affiliation, education and qualification, the ORCID register also requires specific information related to the organizations associated with these activities. It is therefore necessary that the 3 metadata indicated for the name are authority controlled and linked to an orgUnit. For more information on how to configure the sending of organization data, refer to the "Organizations mapping" section.

Organizations mapping

Some information related to organizations, such as the funder of fundings or organizations related to the affiliation of a profile, require some details on the organizations themselves that in DSpace-CRIS must be obtained from the OrgUnit entities. The mapping between the data that make up an organization on the ORCID registry and the metadata of the organizations on the CRIS side is managed by the following configuration properties:

Below is an example of a configuration:

orcid.mapping.organization.country = organization.address.addressCountry
orcid.mapping.organization.city = organization.address.addressLocality
orcid.mapping.organization.identifiers = organization.identifier.crossrefid::FUNDREF
orcid.mapping.organization.identifiers = organization.identifier.rin::RINGGOLD

Metadata signature

When a record relating to a section of the profile is added to the orcid queue, the metadata column is populated by generating a signature of the metadata values that are associated with the particular data to be synchronized. The use of a signature, not linked to the id of the metadata values, allows not to interpret as new data to be synchronized those metadata that have the same value but a different id. The class that is used to generate the signature is org.dspace.app.orcid.service.impl.PlainMetadataSignatureGeneratorImpl, which generates signatures with the <metadatafield>::<value>[::<authority] format, where the authority section is set only if the metadata authority is not empty. If the signature to be generated relates to more than one metadata (such as the signature of the nested metadata that make up the affiliation), the signature described above is generated for each metadata and all the individual signatures are sorted based on the id of the metadata field and concatenated with the §§ characters.

Examples:

Manual synchronization

To send an ORCID queue entry to the ORCID api and create a record into the ORCID history a reference of an ORCID queue record must be posted to the ORCID history resource endpoint (/api/cris/orcidhistories). The ORCID queue record must be supplied as URI in the request body using the text/uri-list content-type.
This endpoint, once invoked, will then send the entity associated with the specified orcid_queue, will create a new record on the orcid_history with the result of the send and will return it to the caller.

An optional query param named forceAddition with value true or false could be provided to force the send of a new resource to the ORCID api without an update of an existing resource even if for the provided ORCID queue record there is a put-code. This parameter allows for example to force the insertion of a new object on ORCID even if it had already been sent and then be deleted on ORCID in the past.

In case of insertion or updating, the data to be sent to the ORCID registry are validated by the org.dspace.app.orcid.model.validator.impl.OrcidValidatorImpl class. In case of validation errors, such as the absence of a mandatory attribute, the endpoint returns a response with status 422 and body containing the error codes. This allows clearer error messages to be returned to the user.
It is possible to disable the validation of work, funding and affiliation (employment, education and qualification) through the following properties (all enabled by default):

If the synchronization was successful, the record of the orcid queue is deleted.

Synchronization Batch

The script called orcid-bulk-push and implemented by the org.dspace.app.orcid.script.OrcidBulkPush class allows to massively synchronize all the profiles that have configured their synchronization preferences to BATCH. The steps of the batch process are:

The script accept the following options: