Plug-In Feature
Overview of the Plug-in Feature
Implementation of the Plug-in Feature
- Write a stand-alone program that checks the status of a condition. The program should return 0 or 1.
The location of the program should be:
/exlibris/sfx_ver/sfx4_1/<instance>/lib/Parsers/PlugIn
- Set a plug-in threshold on the target or target service level. For example:
$obj->plugIn(name of plug-in program)
The following plug-in programs are available in SFX:
- Aleph.pm – checks whether a specific journal /book exists in the Aleph catalog (version 14.2 or later)
- z3950_lookup.pm – checks whether a specific journal/book exists in a catalog based on Z39.50
- syndetics.pm – checks whether the book review for a particular book exists in Syndetics, based on an ISBN search
Plug-In Parallel Processing
Overview
- If the same item has a threshold using several plug-ins, the plug-ins run sequentially.
- If SFX handles multiple context objects – for example for several related objects in one request – the parallel processing is done for each object, but context objects are handled sequentially.
Configuring Plug-in Parallel Processing
Parameter | Description |
---|---|
General | |
enable_parallel_processing | Possible Values: Y/N Enable/disable the parallel functionality across the system. |
max_plugin_excecutions_in_parallel | Default Value: 10 The maximum number of plug-ins that can run in parallel. |
For each Plug-In | |
Active | Possible Values: Y/N Activate the plug-in module in parallel mode. |
insert_data_order | The plug-in with the higher number for this parameter inserts its fields first. (This can be overwritten by later plug-in activity if conflicting data is fetched. This applies where several plug-ins populate the same field in the CTXO). |
multiple_running | Possible Values: Y – the plug-in should run in parallel every time it runs N – the plug-in should run in parallel only the first time it runs. This may be desired if the same plug-in is used by several active target services, and the first request already returns all the data needed. In this case there is no point in running the plug-in several times in parallel. This applies for example to the EBSCO API plug-in. |
fields_from_ctx_obj | Insert the names of the fields from the ctx object with a semicolon (;) separator between them, for example: sfx.aleph_title_index;fetchId. This is needed because at the end of the parallel processing the CTXOs of all the plug-ins that ran in parallel are merged into one CTXO. The fields you add to this parameter tell SFX what fields in the CTXO to populate. |
Plug-in Program for Aleph
Requirements
- For ALEPH 14.2.4 through 15, the Aleph license must include Aleph X-server details. Contact your Aleph support team for more information.
- From Aleph 16.01 onwards, the following additional requirements exist:
- A special/separate license (from the standard Aleph license) is required for using the X-server.
- The existence of a staff user WWW-X (similar to Z39 Server).
- server_ip_allowed with special X entries.
Setup
- Log on to your server as the instance user (for example, sfxlcl41).
- Navigate to the config directory by typing cn.
- Open the aleph_xserver_lookup.config file:
vi aleph_xserver_lookup.config |
- In this file, a number of configuration elements need to be entered. If you want the plug-in to check the catalog using ISSN or ISBN identifiers only, enter the URL, ISSN, ISBN index names, and the database name, as well as the URL for your catalog’s X-server. Additionally, specify the timeout value (in seconds).
For example:
Section "x_server" url "http://www.university.edu:8991/X" issn_index "ISSN" isbn_index "ISBN" full_title_index "" #e.g. TIT word_title_index "" #e.g. WTI database "USM01" timeout "5" EndSection |
- If no ISSN or ISBN is available in the OpenURL, the plug-in program can be configured to check the catalog using title and author information found in the OpenURL.
- Title search – To configure this option, set the title_option parameter to Y, as in the example below. In addition, provide the codes of the Aleph Title, Title word, and Author indexes. Indexes whose codes are not provided in the configuration file are not used for lookup.
When searching using the title, a search is first performed on the Aleph full title index using the book or journal title. If this search retrieves zero results, a second search is performed on the Aleph title word index using a limited number of the longest words in the title. The number of words that are used for searching is defined by the num_of_words_for_search parameter. The default number is 4.
If the book or journal title is longer than 10 words, it is not used for searching and a search is performed using the title’s longest words in the Aleph title word index.
- Author search – To activate searching using author information, populate the author_index parameter of the configuration file with the Aleph author index code. In addition, if author information is included in the OpenURL and the type of object searched is a book, the first author’s last name will be searched in the Aleph author index.
The following is an example of this section in the aleph_xserver_lookup.config file:
Section "x_server" url "http://www.university.edu:8991/X" issn_index "ISSN" isbn_index "ISBN" full_title_index "TIT" #e.g. TIT word_title_index "WTI" #e.g. WTI database "USM01" EndSection
Section "searching" title_option "Y" author_index "WAU" num_of_words_for_search "4" EndSection |
- Access the SFX Admin Center. In KBManager, locate the relevant target service (for example, LOCAL_CATALOGUE_EX_LIBRIS_ALEPH). In the target service, add the following threshold:
$obj->plugIn('ALEPH') |
If a global threshold exists, it is recommended that you use the following:
GLOBAL && $obj->plugIn('ALEPH') |
- Test the above by creating an OpenURL (use the OpenURL generator) for a journal or a book that exists in the Aleph OPAC. The link to the Aleph OPAC should appear in the SFX menu screen.
Summary Holdings Display

- The Aleph OPAC needs to contain Summary holding statements—for example, in the 852 and 866 MARC fields.
- The Aleph X-server needs to be configured to include these fields in the X-server present response. (More information about setting this up can be found in the Summary Holdings to Display in SFX: Aleph Side Configuration document located in KB item 16384-42722 How to Display Aleph Summary Holdings in the SFX Menu.)
- In KBManager, a local target displayer should be added to the Aleph getHolding target service. The value should be set to: ALEPH::ALEPH.

- Log on to your server as the instance user (for example, sfxlcl41).
- Navigate to the config directory by typing cn.
- Open the aleph_xserver_lookup.config file :
vi aleph_xserver_lookup.config |
- In the Display section, turn on the summary holding statement display option by setting display_summary_holdings to Y, and specify which MARC field/subfield(s) contain the summary holdings statement.
In addition, using the cut_off_num parameter, you can determine the maximum number of holding statements to be shown in the SFX menu.
For example:
Section "display" marc_field "852$a 866$a" display_summary_holdings "Y" cut_off_num "10" EndSection |
If there is more than one match for the OPAC Plug-in search, the following message is displayed:

Plug-in Program Based on Z39.50
STEP 1: Provide Local Z39.50 Information in z3950_lookup.config
- Log on as sfxlcl41.
- Enter cn.
- Enter vi z3950_lookup.config.
- Enter the Z39.50 server address, port, and database name.
- Specify whether the ISSN and ISBN query should be performed with or without dashes (where 0 means without dashes and 1 means with dashes).
For example:
Section "z3950_server" host " 111.22.3.44" port "210" base "innopac" syntax "USMARC" EndSection
Section "dashes" isbn_dashes "0" issn_dashes "1" EndSection |
- If no ISSN or ISBN is available in the OpenURL, the plug-in program can be configured to check the catalog using title information found in the OpenURL. To configure this option, set the title_option parameter to Y, as in the example below.
Section "searching" title_option "Y" EndSection |
- The plug-in can be configured to retrieve the catalog summary holding statements for display in the SFX menu. For this feature to work, the following conditions must be met:
- The OPAC needs to contain Summary holding statements—for example, in the 852 and 866 MARC fields.
- The Target Displayer for the Aleph getHolding target service needs to be set to: Z3950::Z3950.
To start using this option, you must configure the Display section of the z3950_lookup.config file. Set the value of display_summary_holdings to Y and specify which MARC field/subfield(s) contain the summary holdings statement.
In addition, the following two parameters can be configured:
- cut_off_num – This parameter determines the maximum number of holding statements to be shown in the SFX menu.
- charset – This optional parameter defines the character set of the z39.50 response. When blank, the default latin1 is used. Use utf8 or another character set if the z39.50 response is sent in a different character set.
The following is an example of the z3950_lookup.config, where both title and display of summary holding options are turned on:
Section "z3950_server" host " 111.22.3.44" port "210" base "innopac" timeout "5" syntax "USMARC" EndSection
Section "dashes" isbn_dashes "0" issn_dashes "1" EndSection
Section "searching" title_option "Y" EndSection
Section "display" display_summary_holdings "Y" marc_field "866$a 852$a" cut_off_num "10" # optional parameter, can be "", "utf8", "latin1", etc. # defines how to interpret raw data received from catalog charset "" EndSection |
STEP 2
$obj->plugIn('Z3950Lookup') |

STEP 3
Plug-in Program for SYNDETICS
$obj->need('ISBN') && $obj->plugIn('syndetics') |
Section "general_configuration" # set timeout value timeout "10" |
Plug-in Program for AIRway Project
Plug-in Program for Ebsco
General Information
- Metadata mismatches between OpenURL sources and Ebsco targets
- Incomplete coverage in some Ebsco targets (only some articles are available in Ebsco in full text, not the complete issue)
- Select On for the Ebsco targetURL API (SFX Admin Center > Configuration > Menu configuration > Proxy/CrossRef):

- Fill in the $$API_USER_ID linking parameter in the L/P area of the target service with the relevant value for your institution as received from the vendor. For more information about the $$API_USER_ID, see API_USER_ID Linking Parameter.
- If an institute specific activation exists for Ebsco target services, make sure that the threshold $obj‐>plugIn(Ebsco) exists also for the institute target service activation settings, as in the following image. For default activation, the plug‐in thresholds already exist for each Ebsco getFullTxt target service.

- Check the set-up using the following OpenURL (or an alternative article level OpenURL) to make sure that the linking to Ebsco targets in the SFX menu is working properly:
<SFX base_url>?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2015-04-02--10:0948&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=Effects%20of%20the%20Fitkids%20exercise%20therapy%20program%20on%20health-related%20fitness%2C%20walking%20capacity%2C%20and%20health-related%20quality%20of%20life&rft.jtitle=Physical%20Therapy&rft.aulast=Kotte&rft.auinit=E&rft.auinitm=M&rft.au=Kotte%2C%20Elles%20M.%20W.&rft.date=2014&rft.volume=94&rft.issue=9&rft.spage=1306&rft.epage=1318&rft.pages=1306-1318&rft.issn=00319023&rft.eissn=15386724&rft_id=info:doi/10.2522/ptj.20130315 |
API_USER_ID Linking Parameter
- where custid is the EBSCOadmin customer id
- where groupid is the Group ID in EBSCOhost where the database resides
- where profileid is the Profile ID in EBSCOhost where the database resides
Plug-in Details
- A plug-in program: lib/Parsers/PlugIn/Ebsco.pm
This program does the following:
- Sends requests to Ebsco API
- Stores article level links returned by the Ebsco API in CTXO so it can be used by the Ebsco target parser
- Translates the response from Ebsco API as either 0 or 1 for the plug-in threshold $obj->plugIn(Ebsco)
- A plug-in threshold added to all full text Ebsco target services:
$obj->plugIn(Ebsco)
Conditions for Using the Ebsco Plug-in
- The Ebsco plug-in is used for one or more Ebsco targets that are active in the SFX instance if the following conditions are met:
- The SFX Menu configuration option Ebsco targetURL API is set to On in SFX Admin Center > Configuration > Menu configuration > Proxy/CrossRef.
- The linking parameter $$API_USER_ID has been be filled in for the Ebsco targets. More information about the linking parameter can be found in the SFX Target and Alma E-Collection Configuration Guide. Note that this linking parameter can be defined for DEFAULT or can be institute specific, if institutes have been defined in the SFX instance.
- The Ebsco target service has threshold $obj->plugIn(Ebsco). In the SFX KnowledgeBase, a global threshold $obj->plugIn(Ebsco) exists for all Ebsco getFullTxt target services for which the Ebsco API can be used.
- The link in the SFX menu for Ebsco is an article level link, and the following metadata elements exist in the ContextObject:
(rft.issn or rft.jtitle or rft.title) AND (rft.date and rft.volume and rft.issue) AND (rft.spage or rft.au or rft.atitle)
Ebsco Plug-in Limitations
- The Ebsco plug-in cannot be used selectively for individual EBSCO targets. If activated, it is used for all EBSCO targets.
- The Ebsco plug‐in requires an Ebsco API user_id, stored in the SFX KnowledgeBase as a linking parameter (L/P). Only one Ebsco API user_id should be used per SFX instance. An exception to this rule are consortia sites using either model 2 (Using a Shared Instance) or model 3 (Single SFX Instance ‐ Multiple Institutions Sharing the Same Instance):
- In model 3 (Single SFX Instance ‐ Multiple Institutions Sharing the Same Instance), each consortium member should be represented via an institute. One Ebsco API user ID should be defined per institute and the Ebsco targets should be activated per institute (not for default).
- In model 2 (using a shared instance), the Ebsco API is invoked only in the instance responsible for creating the SFX menu (in most cases this will be the local instance, not the shared instance). For Ebsco targets activated in the shared instance, the Ebso API user ID should be added in the corresponding local instances (even if they are inactive).
- If the Ebsco plug-in is used, only one Ebsco package of the same type is displayed in the SFX menu. For example, if you have a subscription to both Ebsco Academic search Complete and Ebsco Academic search Elite, only the Ebsco Academic search Elite target is displayed in the SFX menu. The link returned by the Ebsco API is to the one with the lowest database code alphabetically. In case of a subscription to different types of Ebsco packages (for example, Academic search Elite and Business Source Premier), this restriction does not apply. Both packages are displayed in the SFX menu.
- For some Ebsco portfolios, the year information in different SFX sources varies, making it problematic to do a pre-check via the EBSCO API. For these portfolios, an exception was added to not use EBSCO API to check EBSCO targets before it is displayed in the SFX menu – based on a flag in the Object Portfolio: parse_param: exception=no_date.