1. Upgrade notes

1.1. New Action Trigger hook for patron registration

Use of the new Action Trigger stgu.created hook requires changes to your action_trigger_filters.json file. See below for more details.

1.2. New prerequisite - Email::MIME Perl module

The Email::MIME Perl module is now required, so be sure to run the prerequisite installation procedure for your Linux distribution before upgrading Evergreen.

2. New Features for 3.5.0

2.1. Administration

2.1.1. Do not cache the Angular application root

Evergreen administrators should update existing apache configuration files so that the Angular index.html file is never cached by the client. This can be done by changing the Angular setup section of the apache configuration that starts with:

<Directory "/openils/var/web/eg2/en-US">

or similar in the apache configuration. Add the following after the FallbackResource directive:

    <Files "index.html">
      <IfModule mod_headers.c>
        Header set Cache-Control "no-cache, no-store, must-revalidate"
        Header set Pragma "no-cache"
        Header set Expires 0
      </IfModule>
    </Files>

Finally, ensure that the mod_headers apache module is enabled by running the following commands on all apache servers as the root user:

a2enmod headers
/etc/init.d/apache2 restart

2.1.2. Repair of Self-closing HTML Tags

The most recent release of JQuery requires valid closing tags for X/HTML elements. These were repaired within affected OPAC/Staff Client TT2 templates, but care should be taken in Action/Trigger templates to make sure closing tags are present where appropriate. The stock template for PO HTML was affected. See LP#1873286 for details.

2.1.3. Aged Money Changes

Two new global flag settings have been added to control if/when billings and payments are aged. Both settings are disabled by default.

  • history.money.age_with_circs

    • Age billings and payments linked to circulations when the cirulcation is aged.

  • history.money.retention_age

    • Age billings and payments based on the age of the finish date for the linked transaction.

    • To age money based on this setting, there is a new srfsh script at (by default) /openils/bin/age_money.srfsh.

Aged Payment Additional Fields

The aged payment table now has accepting_usr, cash_drawer, and billing columns to improve reporting of aged money.

Manual Data Migration of Aged Money

For users that wish to age money along with circulations (global flag history.money.age_with_circs is set to true), it’s necessary to manaully age money for circulations which have already been aged. This can be done directly in the database with SQL:

Note
This SQL can take a very long time to run on large databases, so it may be necessary to process aged circulations in batches instead of all at once.
SELECT money.age_billings_and_payments_for_xact(circ.id)
FROM action.aged_circulation circ
-- limit to aged circs with billings
JOIN money.billing mb ON mb.xact = circ.id;

2.1.4. PostgreSQL 10 Support

PostgreSQL 10 is now available for installation with Evergreen. Please see the installation documentation for details.

2.1.5. New Action Trigger hook for patron registration

Evergreen now includes a new type of Action Trigger hook: stgu.created. This hook will trigger upon the patron registration submission form. In addition to the new hook, an example Action Trigger definition is provided (disabled by default) entitled "Patron Registered for a card stgu.created". With clever timing and delay settings, a library can receive a single notification containing all of the pending patron registrations for a given time interval. No special server-side considerations required unless you introduce a new granularity. There is, however, a new clause introduced to the "action_trigger_filters.json.example" file.

If you wish to use this new hook, be sure to include this clause in your local "action_trigger_filters.json" file:

"stgu.created" : {
        "context_org": "home_ou",
        "filter": {
            "complete": "f"
        }
    }

2.1.6. SendEmail Reactor Updated to use Email::MIME

The SendEmail reactor for Action/Trigger has been updated to use the Email::MIME Perl module for proper encoding of the email message header fields. You should notice no functional difference in the sending of emails.

2.2. Cataloging

2.2.1. Enriched/Full MARC Editor Ported to Angular

The full MARC editor is now implemented in Angular. This change impacts both the experimental Angular catalog and the MARC edit option within MARC Batch Import/Export (Vandelay) Queue manager.

2.2.2. Patron View tab in Experimental Catalog

The record view screen in the Experimental Catalog now has a Patron View tab. This tab displays a view of the record in the OPAC, as a patron would see it.

The Patron View tab replaces the previous View in Catalog button.

2.3. Circulation

2.3.1. New Hold Sort Order: Traditional with Holds-chase-home-lib-patrons

This is a new entry under Administration → Server Administration → Best-Hold Selection Sort Order in the staff client. It prioritizes holds such that a given item, based on its owning library, will prefer patrons with a matching home library, no matter the pickup library.

2.3.2. Angular Staff Catalog Holds Patron Search Support

The Angular staff catalog now supports patron searching directly from the holds placement interace.

2.3.3. Hide Print List Button On Self Check Home Page

The Print List button is no longer displayed on the main page of the self check interface. This addresses an issue where users were observed to either hit the Print List button and walk away or hit it and the Logout button, causing duplicate receipts to be printed. The Print List button continues to be displayed on the Items Out, Holds, and Fines Details pages of the self check interface.

2.3.4. Update Hold Notification Information

The public catalog and staff client now have the ability to update existing holds if a patron or a staff member changes certain notification preferences or contact information. Evergreen will detect these changes and prompt the staff user or patron user and ask if they want to update existing holds with the new contact information and/or notification preferences.

2.4. Client

2.4.1. Angular Staff Catalog Preferences Page

Adds a new "Catalog Preferences" interface, accessible directly from the catalog. The UI houses the search preferences (default search lib, preferred library, default search tab) and a new staff-specific hits-per-page setting. Other preferences may be added later.

Adds support for selecting a default search tab using the existing eg.search.adv_pane setting.

2.4.2. Hatch File Writer Print Option

Adds a new stock print option in the Hatch printer configuration interface called Hatch File Writer (translatable). When selected, any print content that is delivered to this printer is translated into text where necessary and written to a file in the Hatch profile directory.

The name of the file written is based on the print context: "receipt.<context>.txt". For example, receipt.label.txt.

2.4.3. Angular Staff Catalog gets Search Highlighting

Search text highlighting is now supported on the search results and record details pages in the Angular staff catalog for searches that support highlighting.

2.5. OPAC

2.5.1. Custom CSS in OPAC

There is now a library setting called opac.patron.custom_css. This can be populated with CSS that will load in the OPAC after the stylesheets and allow for custom CSS without editing server side templates. The permission UPDATE_ORG_UNIT_SETTING.opac.patron.custom_css manages access to it.

2.6. SIP

2.6.1. Add patron_status_always_permit_loans Option to SIP Server

Evergreen now has a new oils_sip.xml login attribute called patron_status_always_permit_loans that specifies whether the charge privileges denied, renewal privilges denied, and card reported lost flags in the patron status block should be coerced to permissive values regardless of the actual state of the patron record. Turning this on works around an issue where a 2019-12 change by the Hoopla SIP2 client takes those flag fields into account, but some libraries may not wish those to block a patron’s access to online resources that use SIP2 to authenticate. This setting can also be set as an implementation_config option; note that if it is set to true or false as a login attribute, the login attribute will override whatever is set in the implementation_config.

3. Acknowledgments

The Evergreen project would like to acknowledge the following organizations that commissioned developments in this release of Evergreen:

  • King County Library System

  • MassLNC

  • PaILS

We would also like to thank the following individuals who contributed code, translations, documentations patches and tests to this release of Evergreen:

  • Jason Boyer

  • Galen Charlton

  • Garry Collum

  • Dawn Dale

  • Jeff Davis

  • Bill Erickson

  • Jason Etheridge

  • Lynn Floyd

  • Ruth Frasur

  • Blake Graham-Henderson

  • Rogan Hamby

  • Terran McCanna

  • Mike Risher

  • Mike Rylander

  • Jane Sandberg

  • Chris Sharp

  • Josh Stompro

  • Cesar Velez

We also thank the following organizations whose employees contributed patches:

  • BC Libraries Cooperative

  • Catalyte

  • Equinox Open Library Initiative

  • Georgia Public Library Service

  • Indiana State Library

  • King County Library System

  • Lake Agassiz Regional Library

  • Linn-Benton Community College

  • MOBIUS

We regret any omissions. If a contributor has been inadvertently missed, please open a bug at http://bugs.launchpad.net/evergreen/ with a correction.