This article explains how Talis products integrate with third party library management systems. Warning - it is quite in-depth!
Integration with library catalogs
This article is intended for a technical audience with assumed familiarity with the following topic areas:
- Library Management Systems
- MARC records
- z39.50 services
- JavaScript, CSS and HTML
Basic concept
When constructing a resource list, the user will want to assemble a number of resources from different locations into the list.
Talis Courseflow will try to find out as much information as possible about the resource being bookmarked as possible. This information is used to lead the student back to the resource and make resource access as straightforward as possible.
- A Bookmarking Extension captures initial data about a resource
- Talis Courseflow tries to find an authoritative record for the resource - preferably from a local library catalog
- Talis Courseflow then tries to show the user local library availability information
- Talis Courseflow also provides links back to the resource
Bookmarking Extension
The end user (often an academic or member of library staff) will add a bookmarking extension to their web browser.
The user will be browsing a library catalog or another website which has information about a resource. If the user wants to add that resource to their bookmarks, they will click the browser extension. More information on these bookmarking options is explained in the Bookmarking from your web browser support article.
Bookmarking extension
The bookmarking extension javascript will:
- Inject a
<script>tag into the HTML of the page being viewed. - Send the URL of the page being bookmarked to Talis Courseflow.
Talis Courseflow will send back some more javascript bookmarking parser rules which are specific to the URL of the page being bookmarked. This javascript will look for data in the page that we can use to identify the resource. Typically we use jQuery and CSS selectors to find the elements on the page. Occasionally we can load other pages from the same domain and retrieve additional data from there.
Construct an openURL string to send to Talis Courseflow
We use the data scraped from the page to build a set of openURL parameters which are then sent back to Talis Courseflow. The parameters that we are able to use are explained in the Bookmarklet API documentation.
We automatically then redirect the user to Talis Courseflow.
Temporarily redirect the user to Talis Courseflow
The user is redirected to Talis Courseflow Reading Lists in order to complete the bookmarking process. The user has the opportunity to:
- Amend the data that is found
- Add additional data if required.
- Add the bookmark to their My Bookmarks, or
- Add the bookmark to a recent list that has been worked on as well as My Bookmarks
Catalog lookup
Where possible, we will prefer to lookup data from trusted sources, rather than use the data scraped from the source web page. A user could be bookmarking from a bookstore catalog page or from some other web page containing ISBNs.
The data sent to the bookmarking API is used to determine what sort of lookup we will do.
| Identifier | Lookup from… | Method |
|---|---|---|
| Local Control Number | Local Library Catalog only | z39.50 |
| ISBN | Local Library Catalog or else the Open Library | z39.50 or in the case of Open Library URLbased |
| ISSN | Crossref (Plus additional info such as volume and issue details) | URL based |
| DOI | Crossref | URL based |
Talis Courseflow is able to read the resulting record and choose data from the record to build into its resource display. The record might be in MARC21 or some other XML format. Talis supports MARC21 records as well as MARC21 records which use RDA.
If the catalog lookup fails to find a usable record then we resort to using the data passed to Talis Courseflow via the Bookmarklet.
Z39.50
Where a library uses z39.50, in order to make this available to a number of parts of the Talis Courseflow system, a single z39.50 endpoint is created within Talis Courseflow which essentially proxies requests to the z39.50 service. This allows the application to easily make certain limited types of searches.
All z39.50 servers are required to support searching for ISBN, ISSN and Local Control Number. The attribute set expected to be in use is the Bib-1 attribute set.
If multiple records are returned, the first result is the one that will be used.
| Search for… | TARL endpoint | Equivalent z39.50 search | Notes |
|---|---|---|---|
| ISBN | /catalog/records/isbn/<ISBN> |
find @attr 1=7 <ISBN> |
We expect the ISBN to be in the Marc21 020 data field |
| Local Control Number | /catalog/records/<LCN> |
find @attr 1=12 <LCN> |
This sometimes has to be requested as a special index. For Primo customers, both the IE.MID (source record number) and the MARC record 001 need to be indexed in this field |
| CKey | /catalog/records/ckey/<CKEY> |
find ^C <CKEY> |
Additional configuration is required in the tenancy to support the use of CKey as the default search type |
| any | /catalog/records/any/<anything> |
find @attr 1=1016 <anything> |
This is rarely used as it allows a search in ANY field that is indexed by the z39.50 service. Not all z39.50 services support this. |
Local Control Numbers
If we are successful with getting a MARC record from the Library catalog, then one of the most important bits of information that we pull from the record is the Local Catalog Number. This may or may not be the identifier used to get the record in the first place (e.g. ISBN lookup) but will be required by Talis Courseflow for two purposes.
- To allow deep linking back in to the library catalog from within the resource display of Talis Courseflow
- To allow library availability lookup to take place every time a user views the resource
The exact location of the Local control number can vary between library systems. This is not an exhaustive list but typical known locations are:
| System Vendor | Product | Local name | Marc field | validation regular expression |
|---|---|---|---|---|
| ExLibris | Alma | Source Record Number | (not present) | Captured via Bookmarking |
| OCLC | Worldshare (WMS) | OCLC Number (OCN) | 001 | Captured via Bookmarking |
| III Innovative | Millennium and Sierra | Record Number | 907a or 035a |
/b[0-9]{7}/ (the check digit is ignored as it cannot be used when passed to the online catalog) |
| SirsiDynix | Unicorn and Symphony | CKey | May not be present or 001 | use full value |
| SirsiDynix | Horizon | Bib Number | May need to be added to MARC record | use full value |
| ESS | Alto and Chorus | work id | 001 | use full value - always a numeric of varying length |
| Infor | V-Smart | 001 |
This LCN is unusual in that it will contain a forward slash |
|
| IS Oxford | Heritage | Not applicable |
The LCN is often a user entered field so varies wildly. |
|
| Open Source | Folio | hrid | 001 |
The 'Human Readable Identifier' |
Library Availability
This is shown in Talis Courseflow from the resource view of an item on a list. The availability will be fetched on each page load so that it always returns the most recent data.
Talis Courseflow supports the following sources for Library Availability.
| System Vendor | System | Service |
|---|---|---|
| ExLibris | Alma | z39.50 (Opac format record with <holdings>) |
| ExLibris | Aleph | X-Services |
| OCLC | WMS |
Knowledge Base API (being deprecated) Discovery API WMS Availability API |
| ESS | Alto or Chorus | Local Data Services - ESS Connect for Talis Courseflow |
| III | Millennium | z39.50 (Opac format record with <holdings>) |
| III | Sierra | (Opac format record with <holdings>) |
| SirsiDynix | Symphony | z39.50 - Holdings are in the MARC 926 fields |
| Open Source | Folio | z39.50 (Opac format record with <holdings>) |
Deep linking
Talis Courseflow offers deep links back into the Library Catalog in order to provide the student with an opportunity to place holds or find additional information about a resource.
| Deep Link type | Info |
|---|---|
| A deep link to the item | Uses the Local Control Number |
| An optional deep link to an author and title search to aid alternative format and edition searches. | Uses the title and author as seen on the resource in Courseflow |
Deep Links require the library catalog to have a stable URL into which the appropriate value is placed by Talis Courseflow. This will be the value as captured in the resource details and may have been edited by the user.
Typical stable URL patterns for different online catalogs might be as shown in the table below.
Example URLs
The *LCN* part of any of these URLs refers to a token that Talis Courseflow uses to replace with the actual token captured by the bookmarking. The *author* and *title* are used in the other formats and editions urls and will be replaced with the author and title taken from the current resource being displayed.
The <customer> part in these examples refers to any specific identifier that identifies that particular customer to the system vendor and would be a static value.
| System Vendor | Online Catalog Product | Deep Link Type | example URL |
|---|---|---|---|
| OCLC | Discovery | view in catalogue | https://<customer>.on.worldcat.org/v2/oclc/ |
| OCLC | Discovery | other formats editions | https://<customer>.on.worldcat.org/search?queryString=ti%3A%28*title*%29+AND+au%3A%28*author*%29&databaseList=283&origPageViewName=pages%2Fadvanced-search-page&clusterResults=true&scope= |
| ESS | Prism 3 | item | http://prism.librarymanagementcloud.co.uk/<customer>/items/*LCN* |
| Serial Solutions | Summon 2 | view in catalog | http://<customer>.summon.serialssolutions.com/#!/search/document?id=FETCHMERGED-<customer>_catalog_1_*LCN*1 |
| Serial Solutions | Summon 2 | other formats editions | http://<customer>.summon.serialssolutions.com/search?s.q=TitleCombined:(*title*)%20AND%20AuthorCombined:(*author*) |
| III | Classic catalog | view in catalog | http://<customer-domain>/record=*LCN* |
| III | Encore | view in catalog | http://<customer-domain>/iii/encore/record/C__R*LCN* |
| SirsiDynix | Symphony | view in catalog | http://<customer-domain>/uhtbin/cgisirsi/x/0/0/5?user_id=WEBSERVER&&searchdata1=*LCN*{001} |
| ExLibris | Aleph | view in catalog | http://<customer-domain>/F?func=item-global&doc_library=<customer>&doc_number=*LCN* |
| ExLibris | Primo | view in catalog | http://<customer-domain>/primo_library/libweb/action/display.do?&vid=<customer>&doc=<customer-prefix>*LCN* |
| ExLibris | Primo (alternative) | view in catalog | http://<customer-domain>/primo_library/libweb/action/dlSearch.do?institution=<customer>&onCampus=false&vid=<customer>&query=any,contains,*LCN*&indx=1&bulkSize=10&dym=true&highlight=false&displayField=creator |
| Open Source | Folio | View in catalog and Other Formats and editions | This will vary depending what discovery layer is being used alongside Folio. |
Other Library Systems
Technology from Sage believe that you should be able to choose a combination of systems that will work together to enable you to achieve a resource list service in your university that meets your needs.
We will happily have a conversation with your library system vendor to help establish whether integration will be possible and the best method to use. In general our requirements are:
- That we can search an index of Local Control Numbers
- That we can search an index of ISBNs
- That we can search an index of ISSNs
- That these searches will return bibliographic data. Either a MARC record or another representation of the record. AND that the Local Control Number is present in the record.
- That we can use a Local Control Number to lookup live item holding availability.
- That we can build a deep link to your library catalog or discovery service using the previously captured Local Control Number
- That we can build a deep link to an author and title search for finding other formats and editions of a title.
We may need to do some development work to support local specifics of an library system integration. but we have not come across a system that we cannot integrate with.