Ex Libris Primo NDE

Ex Libris Primo NDE

These instructions are for the NDE version of Primo. If you are instead using Primo/Primo VE please see the appropriate instructions for setup in that interface here. When you are ready to move to NDE, you can use the same API Key previously issued to your library in NDE and can use it in NDE and your current version of Primo at the same time. This will not cause any conflicts in operation for either interface.

Unsure where your API Key and Library ID are? You can find them in your CURRENT Primo integration configuration code which will be listed within the script in this manner:
….
libraryId: "XXXXX",

apiKey: "XXXXXXXXX",

….

image-20250911-214753.png

Key aspects of this Primo community-informed integration of LibKey into Primo include:

  • One-click to PDF and/or HTML articles from hundreds of publishers and aggregators

  • Extending BrowZine cover images to display in the citation record

  • Link from the citation record to the full journal issue in BrowZine

  • Link to the journal current issue in BrowZine

  • Indicating retracted article status

  • Indicating expression of concern status

  • Providing “Request PDF” links for document delivery with Article Galaxy Scholar

  • Links that resolve to indicate a second order retraction status

These different elements are optionally available so that libraries can customize their installation to work best for their community.

Multi-Campus Support Available June/July 2026

Presently there is no support for multi-campus organizations (The NDE approach to add-ons does not allow the same add-on to be loaded multiple times with different configuration scripts attached to them which would be required for LibKey). Ex Libris is aware of this issue and has a resolution planned for the June/July 2026 release of Alma and shortly thereafter LibKey should be available in these environments.


Step-by-Step Implementation Guide (includes Video)

This guide is intended for Primo/Alma administrators who have a basic familiarity with Alma but with little programming/scripting experience or knowledge, or for those simply want a quick way to complete an integration.  

For advanced users, you are welcome to access this github repository to see how the integration works.

Step 1: Contact Third Iron Support

Please contact support@thirdiron.com to let us know you are a Primo library and would like to integrate LibKey.  In response, we will send your your library’s BrowZine Library ID and BrowZine API Key needed for Step 2.

If you already have an API Key for an old version of Primo and are upgrading, you can continue to use that one and skip this step.

Step 2: Customizing the JSON configuration file

There are two decisions to make for your integration:

  1. Choose your View Option

  2. Choose your Feature Options

The first thing to decide is which View Option makes the most sense for your library and its users. This is a new option available in Primo NDE which was not available in the Primo VE integration. We did this in recognition of the new design language that Ex Libris introduced with NDE (what we call below “The Stack” - meaning the drop down of content access links that appears within the interface).

We provide three basic view options that affect the LibKey button arrangement:

  1. "Stack + BrowZine Link"

    This version fully embraces the new “Stack” concept of link minimization in NDE by putting the “one click” link front and center with additional linking options available in the drop down arrow. LibKey Links would take precedent over Alma QuickLinks whenever they may both exist. The BrowZine View Issue Contents link appears separate since it serves a different purpose then immediate content access.

    Set in the config JSON file with: "viewOption": "stack-plus-browzine",


  1. "Single Stack"

    This version puts all LibKey and Alma generated links under a single stack. Effectively the only difference between this and the above option is that the BrowZine View Issue Contents appears with the links to content.

    Set in the config JSON file with: "viewOption": "single-stack",


  1. "No Stack"

    With this arrangement we recommend turning off the link resolver when LibKey can create links as leaving it on can result in duplicate linking since Alma will generate a “stack” of links via a drop down menu off to the right which could be confusing.

    Set in the config JSON file with: "viewOption": "no-stack",

As you’ll see in step 3 there is a small JSON file that needs to be created in a text editor.

Now, choose your Feature Options. We’ve highlighted below templates for each of these for the JSON file for your convenience. You can of course edit it to make totally different options to suit your organizational needs, but we’ve found that one of these five is typically appropriate. Under each Option you’ll see the JSON configuration codes listed three times to reflect the different View Options that have the specified features enabled or disabled.

Feature Option 1

This is the standard configuration. For additional variations offering unique attributes, see the other options listed.

Configuration name

Best format link presented (PDF preferred) or all formats presented

Link to View Complete Issue for serendipitous discovery in BrowZine?

Minimize duplicate links?

Show link resolver if LibKey link available?

Display Unpaywall non-version of record option?

Configuration name

Best format link presented (PDF preferred) or all formats presented

Link to View Complete Issue for serendipitous discovery in BrowZine?

Minimize duplicate links?

Show link resolver if LibKey link available?

Display Unpaywall non-version of record option?

Option 1

Best format link presented

Yes

Yes

Yes

Yes

 

{ "apiKey": "your-libkey-api-key", "libraryId": "your-libkey-library-id", "viewOption": "stack-plus-browzine", "unpaywallEmailAddressKey": "your-unpaywall-email-address", "journalCoverImagesEnabled": "true", "journalBrowZineWebLinkTextEnabled": "true", "articleBrowZineWebLinkTextEnabled": "true", "articlePDFDownloadLinkEnabled": "true", "articleLinkEnabled": "true", "printRecordsIntegrationEnabled": "true", "showFormatChoice": "false", "showLinkResolverLink": "true", "enableLinkOptimizer": "true", "articleRetractionWatchEnabled": "true", "articleExpressionOfConcernEnabled": "true", "problematicJournalEnabled": "true", "documentDeliveryFulfillmentEnabled": "true", "articlePDFDownloadViaUnpaywallEnabled": "true", "articleLinkViaUnpaywallEnabled": "true", "articleAcceptedManuscriptPDFViaUnpaywallEnabled": "true", "articleAcceptedManuscriptArticleLinkViaUnpaywallEnabled": "true" }
{ "apiKey": "your-libkey-api-key", "libraryId": "your-libkey-library-id", "viewOption": "single-stack", "unpaywallEmailAddressKey": "your-unpaywall-email-address", "journalCoverImagesEnabled": "true", "journalBrowZineWebLinkTextEnabled": "true", "articleBrowZineWebLinkTextEnabled": "true", "articlePDFDownloadLinkEnabled": "true", "articleLinkEnabled": "true", "printRecordsIntegrationEnabled": "true", "showFormatChoice": "false", "showLinkResolverLink": "true", "enableLinkOptimizer": "true", "articleRetractionWatchEnabled": "true", "articleExpressionOfConcernEnabled": "true", "problematicJournalEnabled": "true", "documentDeliveryFulfillmentEnabled": "true", "articlePDFDownloadViaUnpaywallEnabled": "true", "articleLinkViaUnpaywallEnabled": "true", "articleAcceptedManuscriptPDFViaUnpaywallEnabled": "true", "articleAcceptedManuscriptArticleLinkViaUnpaywallEnabled": "true" }
{ "apiKey": "your-libkey-api-key", "libraryId": "your-libkey-library-id", "viewOption": "no-stack", "unpaywallEmailAddressKey": "your-unpaywall-email-address", "journalCoverImagesEnabled": "true", "journalBrowZineWebLinkTextEnabled": "true", "articleBrowZineWebLinkTextEnabled": "true", "articlePDFDownloadLinkEnabled": "true", "articleLinkEnabled": "true", "printRecordsIntegrationEnabled": "true", "showFormatChoice": "false", "showLinkResolverLink": "true", "enableLinkOptimizer": "true", "articleRetractionWatchEnabled": "true", "articleExpressionOfConcernEnabled": "true", "problematicJournalEnabled": "true", "documentDeliveryFulfillmentEnabled": "true", "articlePDFDownloadViaUnpaywallEnabled": "true", "articleLinkViaUnpaywallEnabled": "true", "articleAcceptedManuscriptPDFViaUnpaywallEnabled": "true", "articleAcceptedManuscriptArticleLinkViaUnpaywallEnabled": "true" }

Feature Option 2

This configuration is almost identical to Option 1 but should be a considered a more accessible option as it will always show an Article Link option in addition to PDF links as Article Links can commonly have the full text in HTML which is usually more friendly to screen readers than a PDF. Additionally, to reduce the appearance of multiple links this option hides the link resolver. The link resolver menu is still accessible on all records by clicking the article title.

Configuration name

Best format link presented (PDF preferred) or all formats presented

Link to View Complete Issue for serendipitous discovery in BrowZine?

Minimize duplicate links?

Show link resolver if LibKey link available?

Display Unpaywall non-version of record option?

Configuration name

Best format link presented (PDF preferred) or all formats presented

Link to View Complete Issue for serendipitous discovery in BrowZine?

Minimize duplicate links?

Show link resolver if LibKey link available?

Display Unpaywall non-version of record option?

Option 2

All Formats Presented

Yes

Yes

Yes

Yes

{ "apiKey": "your-libkey-api-key", "libraryId": "your-libkey-library-id", "viewOption": "stack-plus-browzine", "unpaywallEmailAddressKey": "your-unpaywall-email-address", "journalCoverImagesEnabled": "true", "journalBrowZineWebLinkTextEnabled": "true", "articleBrowZineWebLinkTextEnabled": "true", "articlePDFDownloadLinkEnabled": "true", "articleLinkEnabled": "true", "printRecordsIntegrationEnabled": "true", "showFormatChoice": "true", "showLinkResolverLink": "true", "enableLinkOptimizer": "true", "articleRetractionWatchEnabled": "true", "articleExpressionOfConcernEnabled": "true", "problematicJournalEnabled": "true", "documentDeliveryFulfillmentEnabled": "true", "articlePDFDownloadViaUnpaywallEnabled": "true", "articleLinkViaUnpaywallEnabled": "true", "articleAcceptedManuscriptPDFViaUnpaywallEnabled": "true", "articleAcceptedManuscriptArticleLinkViaUnpaywallEnabled": "true" }
{ "apiKey": "your-libkey-api-key", "libraryId": "your-libkey-library-id", "viewOption": "single-stack", "unpaywallEmailAddressKey": "your-unpaywall-email-address", "journalCoverImagesEnabled": "true", "journalBrowZineWebLinkTextEnabled": "true", "articleBrowZineWebLinkTextEnabled": "true", "articlePDFDownloadLinkEnabled": "true", "articleLinkEnabled": "true", "printRecordsIntegrationEnabled": "true", "showFormatChoice": "true", "showLinkResolverLink": "true", "enableLinkOptimizer": "true", "articleRetractionWatchEnabled": "true", "articleExpressionOfConcernEnabled": "true", "problematicJournalEnabled": "true", "documentDeliveryFulfillmentEnabled": "true", "articlePDFDownloadViaUnpaywallEnabled": "true", "articleLinkViaUnpaywallEnabled": "true", "articleAcceptedManuscriptPDFViaUnpaywallEnabled": "true", "articleAcceptedManuscriptArticleLinkViaUnpaywallEnabled": "true" }
{ "apiKey": "your-libkey-api-key", "libraryId": "your-libkey-library-id", "viewOption": "no-stack", "unpaywallEmailAddressKey": "your-unpaywall-email-address", "journalCoverImagesEnabled": "true", "journalBrowZineWebLinkTextEnabled": "true", "articleBrowZineWebLinkTextEnabled": "true", "articlePDFDownloadLinkEnabled": "true", "articleLinkEnabled": "true", "printRecordsIntegrationEnabled": "true", "showFormatChoice": "true", "showLinkResolverLink": "true", "enableLinkOptimizer": "true", "articleRetractionWatchEnabled": "true", "articleExpressionOfConcernEnabled": "true", "problematicJournalEnabled": "true", "documentDeliveryFulfillmentEnabled": "true", "articlePDFDownloadViaUnpaywallEnabled": "true", "articleLinkViaUnpaywallEnabled": "true", "articleAcceptedManuscriptPDFViaUnpaywallEnabled": "true", "articleAcceptedManuscriptArticleLinkViaUnpaywallEnabled": "true" }

Feature Option 3

This configuration removes display of links to non-version of record copies.  Commonly used by corporate libraries and hospitals who often prefer displaying only the version of record.

Configuration name

Best format link presented (PDF preferred) or all formats presented

Link to View Complete Issue for serendipitous discovery in BrowZine?

Minimize duplicate links?

Show link resolver if LibKey link available?

Display Unpaywall non-version of record option?

Configuration name

Best format link presented (PDF preferred) or all formats presented

Link to View Complete Issue for serendipitous discovery in BrowZine?

Minimize duplicate links?

Show link resolver if LibKey link available?

Display Unpaywall non-version of record option?

Option 3

Best Format Link Presented

Yes

Yes

Yes

No

{ "apiKey": "your-libkey-api-key", "libraryId": "your-libkey-library-id", "viewOption": "stack-plus-browzine", "unpaywallEmailAddressKey": "your-unpaywall-email-address", "journalCoverImagesEnabled": "true", "journalBrowZineWebLinkTextEnabled": "true", "articleBrowZineWebLinkTextEnabled": "true", "articlePDFDownloadLinkEnabled": "true", "articleLinkEnabled": "true", "printRecordsIntegrationEnabled": "true", "showFormatChoice": "false", "showLinkResolverLink": "true", "enableLinkOptimizer": "true", "articleRetractionWatchEnabled": "true", "articleExpressionOfConcernEnabled": "true", "problematicJournalEnabled": "true", "documentDeliveryFulfillmentEnabled": "true", "articlePDFDownloadViaUnpaywallEnabled": "true", "articleLinkViaUnpaywallEnabled": "true", "articleAcceptedManuscriptPDFViaUnpaywallEnabled": "false", "articleAcceptedManuscriptArticleLinkViaUnpaywallEnabled": "false" }
{ "apiKey": "your-libkey-api-key", "libraryId": "your-libkey-library-id", "viewOption": "single-stack", "unpaywallEmailAddressKey": "your-unpaywall-email-address", "journalCoverImagesEnabled": "true", "journalBrowZineWebLinkTextEnabled": "true", "articleBrowZineWebLinkTextEnabled": "true", "articlePDFDownloadLinkEnabled": "true", "articleLinkEnabled": "true", "printRecordsIntegrationEnabled": "true", "showFormatChoice": "false", "showLinkResolverLink": "true", "enableLinkOptimizer": "true", "articleRetractionWatchEnabled": "true", "articleExpressionOfConcernEnabled": "true", "problematicJournalEnabled": "true", "documentDeliveryFulfillmentEnabled": "true", "articlePDFDownloadViaUnpaywallEnabled": "true", "articleLinkViaUnpaywallEnabled": "true", "articleAcceptedManuscriptPDFViaUnpaywallEnabled": "false", "articleAcceptedManuscriptArticleLinkViaUnpaywallEnabled": "false" }
{ "apiKey": "your-libkey-api-key", "libraryId": "your-libkey-library-id", "viewOption": "no-stack", "unpaywallEmailAddressKey": "your-unpaywall-email-address", "journalCoverImagesEnabled": "true", "journalBrowZineWebLinkTextEnabled": "true", "articleBrowZineWebLinkTextEnabled": "true", "articlePDFDownloadLinkEnabled": "true", "articleLinkEnabled": "true", "printRecordsIntegrationEnabled": "true", "showFormatChoice": "false", "showLinkResolverLink": "true", "enableLinkOptimizer": "true", "articleRetractionWatchEnabled": "true", "articleExpressionOfConcernEnabled": "true", "problematicJournalEnabled": "true", "documentDeliveryFulfillmentEnabled": "true", "articlePDFDownloadViaUnpaywallEnabled": "true", "articleLinkViaUnpaywallEnabled": "true", "articleAcceptedManuscriptPDFViaUnpaywallEnabled": "false", "articleAcceptedManuscriptArticleLinkViaUnpaywallEnabled": "false" }

 


Feature Option 4

This configuration will display all link options and will display duplicate links

Configuration name

Best format link presented (PDF preferred) or all formats presented

Link to View Complete Issue for serendipitous discovery in BrowZine?

Minimize duplicate links?

Show link resolver if LibKey link available?

Display Unpaywall non-version of record option?

Configuration name

Best format link presented (PDF preferred) or all formats presented

Link to View Complete Issue for serendipitous discovery in BrowZine?

Minimize duplicate links?

Show link resolver if LibKey link available?

Display Unpaywall non-version of record option?

Option 4

All Formats Presented

Yes

No

Yes

Yes

{ "apiKey": "your-libkey-api-key", "libraryId": "your-libkey-library-id", "viewOption": "stack-plus-browzine", "unpaywallEmailAddressKey": "your-unpaywall-email-address", "journalCoverImagesEnabled": "true", "journalBrowZineWebLinkTextEnabled": "true", "articleBrowZineWebLinkTextEnabled": "true", "articlePDFDownloadLinkEnabled": "true", "articleLinkEnabled": "true", "printRecordsIntegrationEnabled": "true", "showFormatChoice": "true", "showLinkResolverLink": "true", "enableLinkOptimizer": "false", "articleRetractionWatchEnabled": "true", "articleExpressionOfConcernEnabled": "true", "problematicJournalEnabled": "true", "documentDeliveryFulfillmentEnabled": "true", "articlePDFDownloadViaUnpaywallEnabled": "true", "articleLinkViaUnpaywallEnabled": "true", "articleAcceptedManuscriptPDFViaUnpaywallEnabled": "true", "articleAcceptedManuscriptArticleLinkViaUnpaywallEnabled": "true" }
{ "apiKey": "your-libkey-api-key", "libraryId": "your-libkey-library-id", "viewOption": "single-stack", "unpaywallEmailAddressKey": "your-unpaywall-email-address", "journalCoverImagesEnabled": "true", "journalBrowZineWebLinkTextEnabled": "true", "articleBrowZineWebLinkTextEnabled": "true", "articlePDFDownloadLinkEnabled": "true", "articleLinkEnabled": "true", "printRecordsIntegrationEnabled": "true", "showFormatChoice": "true", "showLinkResolverLink": "true", "enableLinkOptimizer": "false", "articleRetractionWatchEnabled": "true", "articleExpressionOfConcernEnabled": "true", "problematicJournalEnabled": "true", "documentDeliveryFulfillmentEnabled": "true", "articlePDFDownloadViaUnpaywallEnabled": "true", "articleLinkViaUnpaywallEnabled": "true", "articleAcceptedManuscriptPDFViaUnpaywallEnabled": "true", "articleAcceptedManuscriptArticleLinkViaUnpaywallEnabled": "true" }
{ "apiKey": "your-libkey-api-key", "libraryId": "your-libkey-library-id", "viewOption": "no-stack", "unpaywallEmailAddressKey": "your-unpaywall-email-address", "journalCoverImagesEnabled": "true", "journalBrowZineWebLinkTextEnabled": "true", "articleBrowZineWebLinkTextEnabled": "true", "articlePDFDownloadLinkEnabled": "true", "articleLinkEnabled": "true", "printRecordsIntegrationEnabled": "true", "showFormatChoice": "true", "showLinkResolverLink": "true", "enableLinkOptimizer": "false", "articleRetractionWatchEnabled": "true", "articleExpressionOfConcernEnabled": "true", "problematicJournalEnabled": "true", "documentDeliveryFulfillmentEnabled": "true", "articlePDFDownloadViaUnpaywallEnabled": "true", "articleLinkViaUnpaywallEnabled": "true", "articleAcceptedManuscriptPDFViaUnpaywallEnabled": "true", "articleAcceptedManuscriptArticleLinkViaUnpaywallEnabled": "true" }

Feature Option 5

This configuration option minimizes the number of links to full text that appear

Configuration name

Best format link presented (PDF preferred) or all formats presented

Link to View Complete Issue for serendipitous discovery in BrowZine?

Minimize duplicate links?

Show link resolver if LibKey link available?

Display Unpaywall non-version of record option?

Configuration name

Best format link presented (PDF preferred) or all formats presented

Link to View Complete Issue for serendipitous discovery in BrowZine?

Minimize duplicate links?

Show link resolver if LibKey link available?

Display Unpaywall non-version of record option?

Option 5

Best Format Link Presented

Yes

Yes

No

Yes

{ "apiKey": "your-libkey-api-key", "libraryId": "your-libkey-library-id", "viewOption": "stack-plus-browzine", "unpaywallEmailAddressKey": "your-unpaywall-email-address", "journalCoverImagesEnabled": "true", "journalBrowZineWebLinkTextEnabled": "true", "articleBrowZineWebLinkTextEnabled": "true", "articlePDFDownloadLinkEnabled": "true", "articleLinkEnabled": "true", "printRecordsIntegrationEnabled": "true", "showFormatChoice": "false", "showLinkResolverLink": "false", "enableLinkOptimizer": "true", "articleRetractionWatchEnabled": "true", "articleExpressionOfConcernEnabled": "true", "problematicJournalEnabled": "true", "documentDeliveryFulfillmentEnabled": "true", "articlePDFDownloadViaUnpaywallEnabled": "true", "articleLinkViaUnpaywallEnabled": "true", "articleAcceptedManuscriptPDFViaUnpaywallEnabled": "true", "articleAcceptedManuscriptArticleLinkViaUnpaywallEnabled": "true" }
{ "apiKey": "your-libkey-api-key", "libraryId": "your-libkey-library-id", "viewOption": "single-stack", "unpaywallEmailAddressKey": "your-unpaywall-email-address", "journalCoverImagesEnabled": "true", "journalBrowZineWebLinkTextEnabled": "true", "articleBrowZineWebLinkTextEnabled": "true", "articlePDFDownloadLinkEnabled": "true", "articleLinkEnabled": "true", "printRecordsIntegrationEnabled": "true", "showFormatChoice": "false", "showLinkResolverLink": "false", "enableLinkOptimizer": "true", "articleRetractionWatchEnabled": "true", "articleExpressionOfConcernEnabled": "true", "problematicJournalEnabled": "true", "documentDeliveryFulfillmentEnabled": "true", "articlePDFDownloadViaUnpaywallEnabled": "true", "articleLinkViaUnpaywallEnabled": "true", "articleAcceptedManuscriptPDFViaUnpaywallEnabled": "true", "articleAcceptedManuscriptArticleLinkViaUnpaywallEnabled": "true" }
{ "apiKey": "your-libkey-api-key", "libraryId": "your-libkey-library-id", "viewOption": "no-stack", "unpaywallEmailAddressKey": "your-unpaywall-email-address", "journalCoverImagesEnabled": "true", "journalBrowZineWebLinkTextEnabled": "true", "articleBrowZineWebLinkTextEnabled": "true", "articlePDFDownloadLinkEnabled": "true", "articleLinkEnabled": "true", "printRecordsIntegrationEnabled": "true", "showFormatChoice": "false", "showLinkResolverLink": "false", "enableLinkOptimizer": "true", "articleRetractionWatchEnabled": "true", "articleExpressionOfConcernEnabled": "true", "problematicJournalEnabled": "true", "documentDeliveryFulfillmentEnabled": "true", "articlePDFDownloadViaUnpaywallEnabled": "true", "articleLinkViaUnpaywallEnabled": "true", "articleAcceptedManuscriptPDFViaUnpaywallEnabled": "true", "articleAcceptedManuscriptArticleLinkViaUnpaywallEnabled": "true" }

Make sure you fill in your LibKey Library ID and API Key, along with your Unpaywall Email Address (this can be any email - generic for your library or an individual staff member)

Save this file as:

libkey_nde_config.json

Update the other boolean configuration values if desired for further customization.

Step 3: Creating and Configuring the Add-on

New for NDE, Ex Libris has added an official “Add-on” area to simplify the installation and maintenance of integrations designed for Primo NDE. To find this area, follow these breadcrumbs after logging into your Alma administrator area:

Configuration → Discovery → (Other) Add-on Configuration:

image-20260417-152921.png

Then, click Add Row:

image-20250729-155255.png

The resulting Edit Add-on Configuration screen prompts you to input a few key details to enable the add on.

image-20250729-202119.png

1 = Defaulted to checked, this will allow the add-on to turn on immediately after you complete the needed fields and click the save button in the upper right hand corner. Come back to edit your add on and uncheck if you want to temporarily disable it.

2 = Select which view(s) in Primo you want to apply the integration into. The default is “All”.

3 = Provide the Add-on Name: LibKey

You must use the name “LibKey” to ensure proper function of the add on! This name is CASE-SENSITIVE (i.e. “libkey” will not work)

4 = This is the URL where the integration’s code is living. The URL for the LibKey Add on is located here: https://thirdiron-adapters.s3.amazonaws.com/primo-nde/production/

Advanced: If you have forked github repo and created your own variant of course you’ll want to use that deployed URL here instead.

5 = Click the folder icon to search your filesystem for the JSON format Add-on Configuration file you created in the previous step. Once selected, click “Upload” to upload it.

image-20250729-202314.png

If all went well you’ll get a positive blue message indicated that you uploaded successfully. To complete the setup make sure you hit SAVE.

Pro Tip: Store the configuration file for the LibKey Add-on in a safe place. Unlike in Primo VE once you upload that file to Alma you can’t “get it back” to see the configuration again very easily. So if you want to make changes down the line, you can save yourself time by having a copy of that file saved on your local/shared drive.

Step 4: Test!

Visit Primo NDE in a view that you enabled the add-on for and observe that there are LibKey generated links present on article records. If your initial search does not yield good results, make sure to limit to “articles” or try a more “scholarly” topic as LibKey is focussed on DOI bearing materials.

If you run into any trouble, please reach out to our support team at support@thirdiron.com for assistance!


Customizing & Localizing Link Labels (includes Video)

The LibKey Add-on’s textual labels can be fully customized or localized as desired. If you are content with the default English language labels and don’t need any other languages supported, this is an optional step is nothing further is required.

If you are a single campus organization with a single view for your users for NDE (you can have multiple views for testing purposes provided all the LibKey settings are the same) then you can use this attached template Excel document to upload the labels to the various attributes in a variety of supported languages found below:

To add custom labels, do the following:

  • Download the Above Excel document. Change any text you would like in the “Description” column. This will be the text then your users will see!

  • Navigate in Alma to Configuration → Discovery → Labels

    • Search in the list of labels for “NDE Custom Defined Labels”. This is the recommended home for these labels as its designed for additional labels for custom functionality like this LibKey add-on.

    • In the more actions menu on this row click “Edit”

    • Choose Import and attach the Excel document. It will verify and then upload the document. Be sure to click SAVE in the top right hand corner to apply it to Alma.

    • Then, you can edit the English labels or add translations for other supported languages in your Alma system. Remember always to click SAVE after making changes.

  • Finally, test in Primo to make sure this worked as expected. Changes made in Alma should have immediate effect in Primo after a page refresh.

If you are a multi-campus organization or single campus but who uses multiple unique views then your organization is not yet supported. Instructions for this type of setup will be available following an Alma enhancement coming from Ex Libris in June/July 2026.


Troubleshooting FAQ

  1. When I click on “Other Online Options” I sometimes am taken directly to the resource and other times I am taken to the full list of sources. What is happening?

If this is happening, you have Direct Linking turned on in Alma and you are on an item with only one known source to Alma. Direct linking thus automatically chooses that source. By clicking on the article title you can ALWAYS get to the record detail view regardless of your setting for Direct Linking. To toggle direct linking on or off you need Alma Admin permissions and you can find it here: Alma Configuration → Fulfillment → Discovery Interface Display Logic → Direct Linking.

  1. I think I did the instructions right but I see no LibKey integration? What’s wrong?

It’s possible that you will need to include: *.thirdiron.com in the “allowed list additions” of the CSP Header Configuration (to object-src, worker-src and script-scrc areas).

This can be found here:

Configuration > General > CSP Header Configuration

More information from Alma documentation about this area of Alma.

Try making these changes and reloading Primo to see if that resolves the issue.

 

Still having trouble? Contact us!