Discovery system provides the UI for Alma Link Resolver services for searches that were initiated in an outside bibliographic database (such as EBSCO, Google Scholar, etc.). The result of these searches is a dedicated page called the Services Page. This page usually contains the bibliographic information of the resource, as well as a link to ‘view’ electronic version, and / or ‘get’ a physical version.
The communication is done based on the OpenURL standard.
The following diagram illustrates the workflow:
Discovery system receives an OpenURL request from an outside bibliographic database (such as EBSCO, Google Scholar, etc.).
Typically, the OpenURL includes the following:
- rfr_id – indication about the original source in which the resource was requested (e.g. google).
- Context object – i.e. metadata identifying the record.
The Discovery system should pass the openURL request to Alma. The openURL that will be sent from the discovery system to Alma is called ”Request for Services OpenURL”.
Request for services OpenURL
The following table describes the parameters that should be sent as part of the Request for Services OpenURL:
|rfr_id||The original source – the rfr_id of the request from the outside bibliographic database (e.g. google)
|sid||The original source – the rfr_id of the request from the outside bibliographic database (e.g. google)
|user_ip||IP of the user which originated the request
|Context object||metadata identifying the record, as received
|rft.mms_id||The specific MMS ID.
Alma tries to find a matching record: If multiple titles are found Alma tries to dedup them. If there are multiple titles Alma selects “the best” match.
Alma will return an XML which includes:
- Context object, including mms_id and other bibliographic information added by Alma.
- full_text_indicator – true/false indication if full text exists.
- Link which redirects to the actual resource (in a <resolution_url> field - supported from March 2017 release)
- List of available_services:
viewit: in case electronic/digital services are available
getit: in case physical services are available
Example of the returned xml:
<key id="rft.jtitle">Il Nuovo cimento.</key>
<key id="rft.atitle">Singular hypersurfaces and thin shells</key>
The discovery system receives the returned XML and should display metadata information, and the relevant options - view it / get it / both - according to the available_services fields. Following is an example of services page:
Once user clicks on one of the viewit/getit options, an OpenURL call should be sent to Alma in order to request the specific service.
Request for specific service OpenURL
Request for specific service can be for:
- View it: with parameter svc_dat=viewit
- Get it: with parameter svc_dat=getit
The Request for specific service OpenURL should include all the keys which were returned from Alma as a response to the request for services OpenURL. In the above example:
rft.jtitle= Il Nuovo cimento&
rft.atitle= Singular hypersurfaces and thin shells&
In order to receive viewit / getit HTML in specific language, the following parameter should be added to the Request for specific service OpenURL: rft_dat = language=[language code]. Example: rft_dat=language=eng
In order to support multiple views, an institution can define multiple views in Alma, with different CSS. This is configured in Alma under Gerenal configuration - Delivery System Skins.
The appropriate view should be send as part of the Request for specific service OpenURL: req.skin=<skin code>
As a response to the specific service OpenURL, Alma will return HTML, representing the mashup of the requested service. The discovery system should display the returned mashup in an iFrame.
Note: some services might be allowed only to logged-in users. SSO between the discovery system and Alma will be based on SAML, and will be supported in few month.
If you are a multi campus institution:
<Alma delivery domain>/view/uresolver/<institution_code>/openurl-<campus code>?
<Alma delivery domain>/view/uresolver/<institution_code>/openurl?
Important Note: The OpenURL integration is intended for integrating Alma with third party discovery systems. Using it for other workflows is not supported.