Primo Collections

Publishing Rosetta Collections to Primo

(As of Rosetta 5.0 and Primo February 2016 release)

Exposing Rosetta collections in Primo allows institutions to make to most of combining Rosetta’s digital asset management capabilities with Primo’s discovery and user experience. This document describes the interfaces between the two systems and the relevant necessary configuration on the Rosetta side to achieve the desired interoperability. For details about Primo configuration, please refer to Primo documentation).


Rosetta exports data to Primo over HTTP using the OAI-PMH protocol, using the publishing platform. Metadata records in oai_dc format are harvested by Primo, normalized, indexed and displayed, with link-back to Rosetta delivery for viewing. In the context of publishing we distinguish between two types of objects: Collections and items. Collections can include other collections and/or items. An item is equivalent to a Rosetta IE. Both objects contain metadata in Dublin Core format, which must be published as oai_dc (or qualified dc, as we will show) to Primo. Since Rosetta’s collection and IE/item publishing mechanisms are separate, two (or more) distinct OAI-PMH sets will need to be provided to Primo.

A second interface is a RESTful Collection Tree API that exposes Rosetta’s collection structure and a basic collection description. This structure is used by Primo to display its collection lobby, allowing users to navigate up and down collections in a way that is similar to Rosetta’s collection viewer. Collection Tree API usage is not limited to Primo and may be used by any external tool. However, Ex Libris reserves the right to makes changes the API in the future in order to accommodate internal interoperability needs.


  • Collections can continue to be published to Primo without using the Collection Tree API. In this case, Primo will index and display collections as any other discoverable item.
  • The Rosetta-Primo collection integration supports a collection hierarchy of up to 9 levels.



Reference: Rosetta Staff Guide, ‘Publishing’; Rosetta Staff Guide, ‘Collections’ -> ‘Publishing Collections’

Collection publishing is run as part of a system job that runs all publishing configurations throughout Rosetta. The only relevant configuration is transformation, which converts a collection METS object to an OAI-PMH record. This is achieved via XSL. A default XSL file is provided OOTB in Rosetta, which needs to be modified in order to provide Primo with enriched data. A working example can be downloaded here. You may modify your XSL file add other information as long as the published collection OAI-PMH records contain the following fields:

  • A dc:type field with a value of ‘collection’. Additional dc:type fields are permitted.
  • A dcterms:isPartOf field with a xsi:type=”collection” qualifier, containing the collection’s parent collection ID (a top-level collection should not have this field). Field is not¬†repeatable. Additional dcterms:isPartOf fields are permitted as long as they do not have a xsi:type=”collection” qualifier.

Collection publishing sets are hard-coded per institution (‘INS00-collections’, ‘INS01-collections’ etc.).

Note: Collection publishing is not mandatory for Primo Collection support. Publishing collections will enable users to be able to retrieve collections as items using search (as before).

Requirements for adding Primo collection support to IE/item publishing configuration are simple:

  • An Item record must not have a dc:type field with a value of ‘collection’ (any other value is permitted).
  • A dcterms:isPartOf field with a xsi:type=”collection” qualifier, containing the collection ID(s) to which the item is assigned. Field is repeatable. Additional dcterms:isPartOf fields are permitted as long as they do not have a xsi:type=”collection” qualifier.

A working example can be downloaded here.

General information about the Rosetta OAI-PMH server is available here.

Collection Tree API

No special configuration is required to expose the API. Like all Rosetta web services, access can be restricted by IP range (see here). As in the case of publishing (and Rosetta’s collection viewer), collections with a publish=false flag will be suppressed from the API response.

The API’s basic endpoint, to be configured in Primo is This can be filtered. An institution-level filter to expose only collections from certain institutions to Primo, e.g.:,CRS00.INS01

You may decide to manage all your ‘Primo’ collections as subcollections under a single parent collection and direct Primo to the parent collection, e.g.

where ‘237819434’ is the Rosetta Collection ID. If you use this configuration, you must add a level parameter to expose all the subcollections:

For best results, all published collection records should have corresponding entries in the collection tree that is exposed to Primo.

Updates to collection information are available via the API immediately; no job is required.

Primo Configuration

Primo Collection Discovery setup configuration is described here.