Troubleshooting and Debugging

For general information regarding troubleshooting and debugging, refer to the SFX General User’s Guide.

OpenURL Generator

The OpenURL generator is a program that allows you to create an OpenURL based on metadata that you enter. The Web form that the OpenURL uses is specific for each instance. You can access the form by going to http://server_name:port/instance_name/cgi/core/openurl-generator.cgi. The form contains fields that ensure proper URL syntax.
You can use the OpenURL generator to:
  • Test the data in the SFX database
  • Check TARGET_PARSERS
  • Access the SFX database directly and simulate SFX requests without using an A&I database or full-text repository as a source
  • Allow end users or librarians to request services for citations they have in hand
The OpenURL generator uses the DEFAULT SOURCE in the SFX database.
open_url_generator.gif
OpenURL Generator

Using the OpenURL Generator to Test Your SFX Database

When you configure the SFX database or make changes to it, it is important to test the results of your work. The OpenURL generator enables you to create an SFX menu with metadata you provide.
Using the OpenURL generator, you can:
  • Check to see which services display on the SFX menu for a particular journal
  • Review the order of the services
  • Check to see whether the thresholds you defined are working properly

OpenURL Example: Activating a New Journal

You have just activated a new Wiley journal because the library has recently acquired an online subscription to it. You used KBManager to activate the object portfolio for the journal.
To make sure that a full-text service for this journal shows up in the SFX menu:
  1. On the OpenURL generator Web page, enter the ISSN of the journal you just activated.

You can fill in this information in the Referrent section of the OpenURL Generator.

  1. Enter the year information.

You can use a randomly chosen year. You can also use the date threshold information in the KBManager.

  1. Select the View OpenURL check box.
  2. Click Submit.
  3. Review the OpenURL that is to be created.
  4. Click to access this OpenURL.

The SFX menu for the journal displays, taking into account the year, volume, and issue information you provided. The full-text link to the Wiley journal should display in the SFX menu.

  1. Click the button for the Wiley full-text service to check if the link to the Wiley journal actually works.
You can test the date threshold for this particular journal by going back to the OpenURL generator and entering the same ISSN with more information, such as year, volume, and issue.
To test if a threshold works, you can enter a year value that is lower than the threshold value. For example, if the threshold in the KBManager is 1997, you can enter 1996). With this test, the full-text link to Wiley should not display in the SFX menu.

OpenURL Example: Checking All Services for a Particular Journal

To check all services for a particular journal:
  1. In KBManager, go to the list of object portfolios for one particular journal.
  2. Click the SFX button.
  3. When the SFX menu displays for the journal, compare the list of services in the SFX menu with the list of services you find in the KBManager list of object portfolios.

XML Tab of the OpenURL Generator

The XML tab of the OpenURL Generator allows the library to submit simple XML to the SFX server in order to retrieve either an SFX menu or XML output. The library can use the XML output for its own purposes (write programs to parse information for its own use.)

XML Input

Given the following citation, see the corresponding OpenURL below:
Temperature dependence of Brillouin frequency, power, and bandwidth in panda, bow-tie, and tiger polarization-maintaining fibers / Qinrong Yu
Optics letters 2004 29: 17-18

http://10.1.1.67:9003/sfx_local?ctx_tim=2004-10-20T13%3A22%3A7CDT&rft.volume=29&rft.issn=0146-9592&rft.genre=article&ctx_ver=Z39.88-2004&svc_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Asch_svc&rft.issue=1&url_ctx_fmt=10_1&rft.aufirst=Qinrong&rft.atitle=Temperature+dependence+of+Brillouin+frequency%2C+power%2C+and+bandwidth+in+panda%2C+bow-tie%2C+and+tiger+polarization-maintaining+fibers.&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.date=2004&ctx_id=10_1&url_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rft.aulast=Yu&res_id=http%3A%2F%2F10.1.1.67%3A9003%2Fsfx_local&rft.epage=18&rft.spage=17

The corresponding OpenURL in an XML format is:

<?xml version="1.0" encoding="UTF-8" ?> <ctx:context-objects xmlns:ctx="info:ofi/fmt:xml:xsd:ctx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="info:ofi/fmt:xml:xsd:ctx http://www.openurl.info/registry/docs/info:ofi/fmt:xml:xsd:ctx"> <ctx:context-object timestamp="2004-01-16T12:13:00Z" version="Z39.88-2004" identifier="123"> <ctx:referent> <ctx:metadata-by-val> <ctx:format>info:ofi/fmt:xml:xsd:journal</ctx:format> <ctx:metadata> <rft:journal xmlns:rft="info:ofi/fmt:xml:xsd:journal" xsi:schemaLocation="info:ofi/fmt:xml:xsd:journal http://www.openurl.info/registry/docs/info:ofi/fmt:xml:xsd:journal"> <rft:author rank="1"> <rft:aulast>Yu</rft:aulast> <rft:aufirst>Qinrong</rft:aufirst> </rft:author> <rft:atitle>Temperature dependence of Brillouin frequency, power, and bandwidth in panda, bow-tie, and tiger polarization-maintaining fibers.</rft:atitle> <rft:title>Opt Lett</rft:title> <rft:date>2004-12-31</rft:date> <rft:volume>29</rft:volume> <rft:issue>1</rft:issue> <rft:pages>17/18</rft:pages> <rft:spage>17</rft:spage> <rft:epage>9</rft:epage> </rft:journal> </ctx:metadata> </ctx:metadata-by-val> <ctx:metadata-by-ref> </ctx:metadata-by-ref> </ctx:referent> <ctx:referrer> </ctx:referrer> </ctx:context-object> </ctx:context-objects>

XML Output

The response sent by SFX to the application that initiated the request is a response in an XML format that contains:
  • Metadata received by the SFX server
  • SFX services, if they exist
For example:
<?xml version="1.0" encoding="UTF-8" ?> <sfx_menu> <ctx_obj_set> <ctx_object_1> <perldata> <hash> <item key="rft.issn">0146-9592</item> <item key="ctx_ver">Z39.88-2004</item> <item key="rft.year">2004</item> <item key="rft.pages">17/18</item> <item key="rft.eissn">1539-4794</item> <item key="@rfr_id"> <item key="@rft_id"> <array></array> </item> </item> <item key="rft.atitle">Temperature dependence of Brillouin frequency, power, and bandwidth in panda, bow-tie, and tiger polarization-maintaining fibers.</item> <item key="sfx.response_type">simplexml</item> <item key="rft.object_type">JOURNAL</item> <item key="rft.issue_start">1</item> <item key="@rft.abbrev"> <array> <item key="0">OPT LETT</item> <item key="1">OPTICS LETT</item> </array> </item> <item key="rft.object_id">954925474435</item> <item key="rft.volume_start">29</item> <item key="rft.volume">29</item> <item key="sfx.request_id">1001000000000668</item> <item key="rft.month">12</item> <item key="rft.genre">journal</item> <item key="req.user_group"></item> <item key="rft.issue">1</item> <item key="req.faculty"></item> <item key="sfx.openurl">http://<OpenURLValuefrom example above>;sfx.response_type=simplexml;__submit=Submit</item> <item key="req.language">English</item> <item key="rft.title">Optics letters</item> <item key="@rfe_id"> <array></array> </item> <item key="@rft.aufirst"> <array> <item key="0">Qinrong</item> </array> </item> <item key="@rft.aulast"> <array> <item key="0">Yu</item> </array> </item> <item key="rft.day">31</item> <item key="sfx.sourcename">DEFAULT</item> <item key="rft.coden">OPLEDP</item> <item key="rft.jtitle">Optics letters</item> <item key="rft_val_fmt">journal</item> <item key="rft.date">2004-12-31</item> <item key="rft.epage">18</item> <item key="rft.spage">17</item> </hash> </perldata> </ctx_object_1> </ctx_obj_set> <targets> <target> <target_name>LOCAL_CATALOGUE_ENDEAVOR_VOYAGER</target_name> <target_public_name>Library Catalog (UNISTAR)</target_public_name> <target_service_id>110986400596330</target_service_id> <service_type>getHolding</service_type> <parser>ENDEAVOR::VOYAGER</parser> <parse_param>url=</parse_param> <proxy>no</proxy> <crossref>no</crossref> <note /> <authentication /> <char_set /> <displayer /> <target_url /> </target> <authentication /> <char_set>UTF8</char_set> <displayer /> <target_url /> </targets> </sfx_menu>

Debugging Tool

The debugging tool allows the SFX administrator to determine the source of errors that occur in the SFX flow. Debugging can be used in the:

  • SFX menu

  • Target window

The debugging information can be restricted to one IP address or a range of IP addresses. This prevents end users from seeing the debugging information in a live/production SFX environment.

See the following examples:

No IP restriction:

*.*.*.*

One IP address:

123.12.151.23

IP range:

123.12.151.*

IP range:

123.12.151.23-25

debugging_tool.gif

Debugging Tool

Checking the SFX Menu

Turning on debugging in the SFX menu allows the SFX administrator to see if the information being sent through the SFX server passes or fails the thresholds set in the SFX database. This helps to determine why an expected target service is not displaying in the SFX menu. The following is an example of HTML source code for the SFX menu:

'ctx_enc' => 'UTF-8',

'ctx_id' => '10_1',

'rft.year' => '2003',

'sfx.openurl' => 'http://10.1.2.225:3210/cs_3?ctx_tim=2004-10-20T10%3A57%3A8EDT;rft.issn=0000-0019;rft.genre=journal;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal;rft.date=2003;ctx_id=10_1;ctx_enc=info%3Aofi%2Fenc%3AUTF-8;ctx_ver=Z39.88-2004;url_ver=Z39.88-2004;svc_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Asch_svc;res_id=http%3A%2F%2F10.1.2.225%3A3210%2Fcs_3;url_ctx_fmt=10_1',

-------------- SFX Metadata Augmentation-------------------

ContextObject::Engine::OpenURL::augment_object_attributes: Setting 'rft.title' in ctx obj to: The publishers weekly

ContextObject::Engine::OpenURL::augment_object_attributes: From the db: $VAR1 = {

'TITLE_ABBREV' => 'PUBLISHERS WEEKLY'

};

ContextObject::Engine::OpenURL::augment_object_attributes: Setting '@rft.abbrev' in ctx obj to: PUBLISHERS WEEKLY

ContextObject::Engine::OpenURL::augment_object_attributes: From the db: $VAR1 = {

'OBJECT_TYPE' => 'JOURNAL'

};

-------------------Threshold Checking------------------

'target_internal_name' => 'GALEGROUP_INFOTRAC_EXP_ACAD_ASAP',

'ss_threshold_local' => undef,

'target_service_id' => '110997392153001',

'op_threshold_global' => '$obj->parsedDate(">=",1987,undef,undef)',

'ts_threshold_global' => '',

The above example of HTML source code for the SFX menu shows the ContextObject. It also includes references to the augmentation process and threshold checking (at target, target service, or object portfolio levels).
The SFX menu debugging information is normally hidden in comments in the HTML source code of the SFX menu. However if direct linking is active, the debugging information displays directly in the window that opens. Therefore, if both direct linking and SFX menu debugging are turned on, the SFX menu debugging should be restricted by IP address to prevent it from displaying to end users.

Checking Target Parsers

Turning on debugging in the target window allows the SFX administrator to see if the appropriate SFX target parser is being used. It also shows the resulting URL that is created by this target parser, which helps determine if the parser is functioning properly.
For example:

------------------Context Object section--------------------

SFXResolver::Engine::restore_request: Final version of ctx obj: $VAR1 = bless( {

'rft.issn' => '0000-0019',

'ctx_tim' => '2004-10-20T11:3:34CDT',

'rft.genre' => 'journal',

'svc_val_fmt' => 'info:ofi/fmt:kev:mtx:sch_svc',

'ctx_ver' => 'Z39.88-2004',

'rft.year' => '2003',

'sfx.openurl' => 'http://10.1.1.67:9003/sfx_local?ctx_tim=2004-10-20T11%3A3%3A34CDT;rft.issn=0000-0019;rft.genre=journal;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal;rft.date=2003;ctx_id=10_1;ctx_enc=info%3Aofi%2Fenc%3AUTF-8;ctx_ver=Z39.88-2004;url_ver=Z39.88-2004;svc_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Asch_svc;res_id=http%3A%2F%2F10.1.1.67%3A9003%2Fsfx_local;url_ctx_fmt=10_1',

'rft.title' => 'The publishers weekly',

'url_ctx_fmt' => '10_1',

'@rfe_id' => [],

'@rft_id' => [],

'rft.coden' => 'PWEEAD',

'sfx.sourcename' => 'DEFAULT',

'rft.jtitle' => 'The publishers weekly',

'rft_val_fmt' => 'journal',

'rft.date' => '2003',

'sfx.sid' => 'DEFAULT',

'ctx_id' => '10_1',

'ctx_enc' => 'UTF-8',

'url_ver' => 'Z39.88-2004',

'@req.institutes' => [

'Medical'

],

'rft.object_type' => 'JOURNAL',

'@rft.abbrev' => [

'PUBLISHERS WEEKLY'

],

'@res_id' => [

'http://10.1.1.67:9003/sfx_local'

],

'rft.object_id' => '954921332001'

}, 'ContextObject::Generic' );

-------------- Target Parser Retrival Section----------------

SFXResolver::Engine::revive_target_service: Context service found:$VAR1 = bless( {

'tmp_ctx_obj_id' => 1,

'ss_threshold_global' => undef,

'parser' => 'Bulk::BULK',

'authentication' => '',

'TS_AVAILABILITY' => 'ACTIVE',

'op_status' => undef,

'target_public_name' => 'Free E- Journals',

-----------------Target URL Retrieval-----------------------

SFXResolver::Engine::redirect_to_target_url: Target URL: 'http://www.publishersweekly.com/'.

The above example shows the result of clicking the Full Text Available From Free e-Journals button in the SFX menu while debugging is activated in the target window. These sections of the debugging mode show that the information passed through the ContextObject, activated the free e-journal target parser, and returned the target URL for the chosen article.
If the debugging screen displays an error message that no parser was found:
  1. Check the parser field in the target service using the KBManager. If this field is empty, this is the cause of the problem.
isi-wos.gif
ISI::WOS
  1. If the field is not empty, check the target parser .pm file on your SFX server. The name of the target parser and the name of the directory that stores this parser should correspond to the data in the parser field of the target service.

In the above example, the directory name should be ISI and the parser name should be WOS.pm.

  1. Check the first line of the target parser. This line should contain the exact directory name and file name of the target parser in the following format:

package TargetParser::ISI::WOS;

Error Messages in the Debugging Tool

If the error message Could not change debugging mode of..., displays in the debugging tool:
  1. Telnet to the SFX server and log on to the SFX instance for which you want to activate debugging.
  2. Enter cn to go to the configuration directory.
  3. Enter the following:

chmod 775 ctx_object.config

chmod 775 sfxresolver.config

Configuring Contact Support

You can configure the automated sign-in for SalesForce by providing your institution's SalesForce CRM credentials in your SFX instance.
This enables the following features:
  • The Contact Support link located in the SFX Admin Center main menu under Data Management > Troubleshooting
  • The SFX Contribution feature in KBManager
To configure the automated sign-in for the Contact Support link:
  1. Log on to the SFX server as an instance user (for example: sfxlcl41).
  2. Start the Server Admin Utility program:

da

./server_admin_util

  1. Select 3 Change Passwords from the main menu.
  2. Select 5 Generate encrypted password for use in configuration files.
  3. Enter your current USERNAME (not password) for the Ex Libris Customer Center / SalesForce.

For example:

Generate encrypted password for use in configuration files Please select [1-5,q,m]: 5

Please enter password to encrypt:****** <password, no output visible>

[Enter]

Confirm password:****** <password, no output visible>

[Enter]

Your encrypted password is: "378686c673535303236303"*

  1. Edit the CRM configuration file:

cn

vi sfx_crm.config

  1. Copy and paste the encrypted password into the Contacts section of sfx_crm.config as the crm_encrypted_pass value:

For example:

#contact_name "email" "crm_user_name" "crm_encrypted_pass"

Customer_Lastname "name@institution.edu" "name@sf.com" "378686c673535303236303"

  1. Enter value for crm_user_name in the Contacts section of sfx_crm.config. Use the contact's entire SalesForce email address (as shown on the My Profile page in SalesForce).
  2. Enter the SaleForce URL in the server_url section of the sfx_crm.config file:

server_url "http://exlibris.force.com/antwoord/services/apexrest/xmlservice/"

  1. Save and exit the sfx_crm.config file:

:wq

Separate all entries in the Contacts section of sfx_crm.config by a tab.