VuFind Primo Central Bridge

General Purpose

An adaptor that allows VuFind to connect and get results from Primo Central, a mega-index of electronic material.

Download – Relevant for customers using VuFind V1.3 and higher. Removed warnings from log – Relevant for customers using VuFind V1.3 and higher – Relevant for customers using VuFind V1.2 and lower

Supported VuFind versions

The PC Bridge was tested to support the following VuFind versions:

  • 1.3
  • 1.2
  • 1.1

Note – Each version of VuFind uses a different version of the PC Bridge. See the attachments, to find your relevant PC Bridge version.

Primo Central Registration

In order to use the PC Bridge, you must have a PC key, meaning you must be registered to Primo Central.

The registration is not done via the PC Bridge.

If you would like to register to Primo Central please contact us at:

The registration includes the IP address of the machine (multiple IP addresses can be entered for testing on production servers) which will be running the PC Bridge.

If the IP address changes, you must update it in the registration wizard (My Profile). The update will take affect up to 24 hours after.


  1. After you receive the file, provide the Account/Implementation Manager with the IP address of your server so that it can be authorized to access Primo Central.
    Note that you will need your Primo Central ID key later in this procedure.
  2. Extract the and place the blender directory at the chosen location as described below:

    The PC Bridge can be installed in 2 different modes:
    a) Local – On the same server that is running your VuFind.
    The common location to place the PC Bridge directory is below the main vufind directory (i.e. /some path/vufind/blender/)

    b) Remote – On a different server which is not your VuFind server.
    In such cases you must make sure you have got the needed ports open between your VuFind server and your PC Bridge server (see below step #5).

  3. Enter the following commands to change the ownership of the PC Bridge’s startup script:
    cd /some path/vufind/blender
    chmod 775
  4. Enter the following commands to open VuFind’s config.ini file for editing:
    vi /some path/vufind/web/conf/config.ini
  5. Under the Index section, change the url parameter so that it points to the PC Bridge’s host and port (the default is localhost:8984). For example:

    engine   = Solr
    # changed for blender

    If you have installed the PC Bridge using the Remote mode, the url should point to the remote machine.
    You must choose a port which is opened and free to be used.

  6. Exit and save your changes to the file.
  7. Enter the following commands to open the PC Bridge’s file for editing:
    vi /some path/vufind/blender/home/conf/
  8. Update the following mandatory fields to configure your local settings for the PC Bridge (see figure below): – enter your Primo Central ID. This must be changed before using the PC Bridge.
    jetty.port – this is the port the PC Bridge will listen on. This port must match the port you used in step #5.
    VUFIND_SOLR  – this is the URL to your Solr index.


  9. if the PC Bridge is running, you will need to restart it in order to load the new settings.

Starting and Stopping the PC Bridge

The commands to start and stop the Blender are stored in the following directory:


To start the PC Bridge:

cd /usr/local/vufind/blender
./ start

To stop the PC Bridge:

cd /usr/local/vufind/blender
./ stop

Note: After you configure the PC Bridge, you must restart VuFind with the regular script in order to start Solr.

Configuring VuFind to Stop and Start the Blender

If you want the PC Bridge to start and stop automatically when VuFind is stopped and started, add the highlighted lines as shown below to the script.

case "$ACTION" in


        echo "Starting VuFind ... "

        if [ -f $JETTY_PID ]


            echo "Already Running!!"

            exit 1


        # Export variables for Import Tool

        export VUFIND_HOME

        echo "STARTED VuFind `date`" >> $JETTY_CONSOLE

        echo "$RUN_CMD"

        nohup sh -c "exec $RUN_CMD >>$JETTY_CONSOLE 2>&1" &

        echo $! > $JETTY_PID

        echo "VuFind running pid="`cat $JETTY_PID`

        exec "cd blender"

        exec " start"



        PID=`cat $JETTY_PID 2>/dev/null`

        echo "Shutting down VuFind ... "

        kill $PID 2>/dev/null

        sleep 2

        kill -9 $PID 2>/dev/null

        rm -f $JETTY_PID

        echo "STOPPED `date`" >>$JETTY_CONSOLE

        exec "cd blender"

        exec " stop"



When the PC Bridge is running, log entries are added to the following file:

/some pathl/vufind/blender/home/log/blender.log

Configuring the PC Bridge

The PC Bridge configuration files described in the following sections are located in the following directory:

/some path/vufind/blender/home/conf

NOTES: If the PC Bridge is running while you make changes, restart the PC Bridge to load the new settings.

General Configuration –

The file holds the basic configuration for the Primo Central bridge. It contains the following parameters:


  • jetty.port – this is the port for the blender. Change if you wish to use another port
  • VUFIND_SOLR – this is the URL to your Solr index
  • – This is your Primo Central ID. This must be changed before starting to use the blender


  • blend.pc.timeout – The timeout in seconds for results to return from Primo Central.
    If the timeout reaches, no results will be returned from Primo Central.
  • record.title.suffix – A suffix which will be added to the title for records returning from Primo Central.
    If you do not want any suffix, remove the value or remove completely the parameter from the file.
    This suffix might be useful when debugging or configuring the blending settings.

Link Resolving

  • link.resolver.base.url – If you have a link resolver installed you can use this feature.
    Records returning from Primo Central include an availability indication.
    If a positive indication exists, the PC bridge will populate the SOLR “url” field
    for each record with the direct link to it’s full text.
    Below are 2 relevant parameters to use:

    link.resolver.base.url – Should hold the base URL for your link resolver
    openurlfull_article =

  • openurlfull_article – See above. A URL template which will be used and populated by the bridge.
    The template includes in it place holders. You can use 3 different place holders:

    1) base_url – will be replaced with the value under link.resolver.base.url

    2) timestamp – will be replaced withthe current timestamp in the format of:

    3) <PNX section>/<PNX field> – Will place the relevant PNX value which exists under the
    relevant section under the relevant field.
    For example: display/title

Currently the openurlfull_article is an SFX working template. If you have a different link resolver, you will need to change this template




By default, the queries sent to PC are sent as “logged off” or “off campus”.
In order to indicate to the Blender to send  an “on campus” request to PC, you need to add a facet to the query coming from VuFind.

Using the configuration below, you configure which is the facet to look for, and what is the expected value in it that indicates when I am “on campus”.
In the example below, if the query will include the facet: restricted_mode = true , the query sent to PC will hold the “on campus” indication.

  • = restricted_mode
  •     authorized.field.value = true

Mapping PNX Fields to Solr Fields –

This file holds the mappings between the fields in the Solr index and the fields in the PNX file received from Primo Central (PC).
The format is as follows:

<solr field>=<PC field><tab><filters>

Where the PC field is formatted as follows:

<pnx section>|<field name>

For example:

author=display|creator  join(“, “)

After mapping to a specific PC field, you can use several filters to manipulate the content from Primo Central before it is mapped to a Solr field. Note the <tab> between the <field name> and the filters. You can use more than one filter delimited by a semicolon, as follows:


The filters will be applied one at a time in the order in which they are entered, from left to right.


The following filters are valid:

  • default(“<value>”) – if the field in Primo Central returns no value, this filter returns the specified default <value>.
  • makearray() – always returns an array even if the field is a single string.
  • join(“<value>”) – always returns a string. If the field is an array, this filter joins the different values by using <value> as a separator.
  • first() – always returns a string. If the field is an array, this filter returns the first cell.
  • trimword(<max>) – trim strings after the maximum number of words <max> is met. If the field is an array,
    this filter trims every string in the array. If any string has been trimmed,
    this filter will append the ellipsis string (“…”) to the end.
  • trimchars(<max>) – trim strings after maximum number of characters <max> is met. If the field is an array, this filter trims every string in the array.
    If any string has been trimmed, this filter will append the ellipsis string (“…”) to the end.
  • removemarkup() – removes markup (XML/HTML) code from the field contents. If the field is an array, this filter removes markup from each string in the array.
  • map(“<file>”) – maps the value of the field according to the properties file specified in <file>. If the field is an array, this filter maps every string in the array.
    If no mapping is found for a string, the filter will not change the string.
  • constant(“<value>”) – adds fields with a constant value <value> to Solr. In these cases, specify the PC field definition, as follows:
  • explode(“<value>”) – splits a string on every occurrence of <value>.
  • geturl() – extracts the URL from the links|backlink field, which is built using the MARC subfield codes ($$u and so forth).

Configuring Facets –

The field maps specific fields in Primo Central to facets defined in VuFind, as follows:

<PC facet>=<VU facet>

For example:


NOTE: Queries arriving with an un-mapped facet field/s will not return results from PC, only from local.

Mapping Facet Values –

The file is used to map the facet values used in Primo Central to those used in the VuFind Solr index.

Each mapping row in the file must use the following format:

<facet name in solr>>><PC field value>=<VuFind value>

For example:


Mapping Search Fields –

The file is used to map the Solr search terms to the field names used in Primo Central searches. Each mapping row in the file must use the following format:

<Vu field>=<PC field>

For example:


Facets Display order –

Although you configure the facets display order in VuFind’s configuration files, you must re-configure them in the PC Bridge as well.
The PC Bridge cannot access VuFind’s configuration files therefor you must let the bridge know the requested order.
Facets which are not in the list will display at the end.
Each line should hold one facet name

Ignore Filter Queries (fq) –

In Vufind you can define filters to be added to specific queries.
For example in /vufind/web/conf/searches.ini you can define a filter under [RawHiddenFilters].
If these filters are only meant to filter out specific local results you will want the PC bridge to ignore these filters.
Each filter you which to ignore, should appear in it’s own separate line exactly like defined for VuFind.
For example:
institution:”GD-1″ or institution:”GD-2″

Static Facets –

A static facet is such a facet which will be associated to all PC returned results.
Clicking on the facet will return only relevant PC results (and not local).
You can define 1 or more such static facets.
Each line should hold one facet.

For example:
collection = Electronic Resources

VuFind will receive back a facet called collection holding a value named: “Electronic Resources” with the relevant PC returned count for this value.