1. Upgrade notes

2. New Features

2.1. Acquisitions

This work represents the last major part of the multi-year Angular Acquisitions project. The Invoices and Claims interfaces have been reimplemented in Angular and have had several improvements, including scoping claim policy actions; adding a summary to invoices recording funds and charges; integration with Acquisitions Search; and other bugfixes.

The MARC Federated search and Z39.50 search interfaces have also been reimplemented in Angular, including several bugfixes associated with Z39.50 search in particular.

A new component is also added for the MARC Batch Import/Export (Vandelay) and Load MARC Order Records interfaces that allows for background processing of record imports. There is a checkbox in each of these interfaces labeled Request background import and a field to enter an email address. If a user selects background import, they can navigate away from the import screen while the import continues processing in the background. If they enter an email address, they will recieve a notification when the import is complete. Status and history of background imports for each user can be seen in the MARC Batch Import/Export interface under the new Background Imports tab.

2.1.1. Fixes for SFTP Transfer of EDI Order Data

With more vendors requiring Secure File Transfer Protocol (SFTP) for sending and receiving acquisitions data via EDI, it was discovered that the SFTP mechanism in the Evergreen acquisitions module did not work as well as it should.

This release repairs the SFTP transfer mechanism so that it should work with most vendors who require usernames and passwords for authentication.

To switch from FTP to SFTP, edit the EDI account’s host entry to begin with "sftp://" instead of "ftp://". Check with your EDI vendor before making this change. They may have additional requirements.

New Prerequisite Perl Modules

This fix introduces two new required Perl modules for Evergreen: Net::SFTP::Foreign and IO::Pty. These can be installed by running the prerequisite installation for your Linux distribution. Please see the Evergreen installation instructions.

2.2. Administration

2.2.1. Support Scripts: marc_export check for required IDs

The marc_export script will now exit if it expects to be passed IDs and they are not found. Previously it would continue on as if you wanted all records in the system in that situation. Bug #1329872

2.3. Architecture

2.3.1. IDL Improvements and Clean Up

The IDL (fm_IDL.xml) has undergone improvement and clean up.

More fields have been marked required. Required fields are that those that come from a database table, have a "NOT NULL" constraint in the schema, and do not have a default value assigned in the database. This change has the advantage of making it easier for the Angular staff client to identify required fields and prevent bad data from being entered in many interfaces.

Classes that are read-only and virtual were ignored, since they cannot be updated. Virtual fields were also skipped for similar reasons.

No attempt was made to validate whether or not existing required fields should be required. If a field was required before these changes, it should still be required now.

Line wrap and spacing have been updated to match the output of libxml2.

Spaces used for indentation have been replaced with tabs using the vim and Emacs setting of 4 spaces per tab.

Two schema validation errors have been corrected:

  1. A typo of "relteype" was corrected to "reltype."

  2. An extra "retrieve" permissions entry was removed from the asc class.

If you have custom IDL entries, you will want to make sure that you merge with this update and check for conflicts. It would be a good idea to validate your merged IDL with the schema file:

xmllint --schema Open-ILS/examples/fm_IDL.xsd Open-ILS/examples/fm_IDL.xml

For maintaining future compatibility and ease of merging, you may want to ensure that your custom IDL entries follow the above formatting guidelines.

2.4. Cataloging

2.4.1. Holdings Editor Batch Action <None> Option Restored

The <None> option has been restored for prefix and suffix fields in the Holdings Editor’s Batch Actions. See [Lp 1998413](https://bugs.launchpad.net/evergreen/+bug/1998413).

2.4.2. Patron View Discovery Layer URL

A new org unit setting configures the discovery layer URL opened by the Patron View button on a staff catalog record.

Example: https://example.com/Record/{eg_record_id}

2.5. Client

2.5.1. Improve Button Colors in Staff Client

Yellow is no longer used as a button color in the staff client for normal actions such as closing dialogs that do not involve a condition that actually requrires a warning.

Instead, light grey is used as a default color for buttons that do secondary actions, with a variant that includes red upon hover or activation for actions that remove data or clear form input.

Developer Notes

The btn-warning CSS class should be avoided in the staff interface unless needed for actions that truly require a warning. Instead, btn-normal should be used for secondary actions such as closing a dialog and btn-destroy for actions that would remove or clear data.

A new dropdown is available when in-scope, including globally available, Library Groups are present. In-scope Shelving Location Groups can also optionally be presented in this dropdown. Scoping of Library Groups and Shelving Location Groups, in this interface component, is based on and effectively replaces the selected organizational unit, such that the Library Group or Shelving Location Group takes the place of a branch of the organizational hierarchy for location filtering.

When a Library Group or Shelving Location Group is seleced from this new component, specific Shelving Location selection is disabled because those filtering axes are mutually exclusive.

Enabling and disabling Shelving Location Group inclusion

This developement adds a new Global Flag called staff.search.shelving_location_groups_with_lassos ("Staff Catalog Search: Display shelving location groups with library groups"). If disabled, Shelving Location Groups will not be included in new filter dropdown. This is provided as a way to entirely separate Shelving Location Groups from this interface change in future parallel development, if desired, on an instance-by-instance basis.

2.6. OPAC

2.6.1. Creating carousels from item bucket or item status

The item status interfaces has a new option: "Create Carousel from Selected Items". The item bucket interface has a new option: "Create Carousel from Bucket". Both of these options allow users to create carousels, which can later be edited as needed in the Carousels Admin interface.

One use case for the new item bucket interface is to allow libraries to showcase existing item buckets that they have created for a holiday, program, or display.

2.6.2. Allow Patrons to Edit Preferred Name

This change builds upon the existing staff client preferred name functionality to allow patrons to edit their preferred names directly through OPAC > My Account > Preferences > Personal Information.

2.7. Reports

2.7.1. Angular Reporter rewrite

All existing Reporter interfaces, except for the actual report output, have been reimplemented using Angular to match the rest of the staff client. In addition to the updated and improved interfaces, additional functionality is now available:

  • Field display order and output sort order are now separated, and can be controlled independently

  • Nullability has been simplified, presenting the template creator with a choice between INNER join (linked required on both tables) and LEFT join (only the "parent" table is required to have a contributing row)

  • Staff can see the list of Reports that make use of a Template, and the list of Outputs that are generated from a Report

  • Where supported by the backend services, all Browse and Search grids used in the report management interfaces are sortable in ways other than by relevant timestamp, and many are now filterable using standard egGrid filters

Significant portions of the UI are inherited from the Simple Reporter implementation. Additionally, many existing UI elements have been enhanced to add supporting functionality, and any new functionality is available for use in other interfaces.

Existing templates

Care has been taken to allow existing templates to function properly in the new interface implementation. However, because the internal structure of the templates have changed, it is possible that some existing templates may need to be recreated.

2.8. SIP

Evergreen now supports back-end functionality to integrate with SIP2Mediator.

For more information, see Evergreen Wiki.

  • Manage SIP accounts:

    • Administration ⇒ Server Administration ⇒ SIP Accounts

  • Manage SIP Screen Messages:

    • Administration ⇒ Server Administration ⇒ SIP Screen Messages

2.9. Miscellaneous

  • Fixes the fine level check on the asset.copy_template table, still used by serials. [Lp 1384796](https://bugs.launchpad.net/evergreen/+bug/1384796)

  • Fix an Apache internal server error in SuperCat when retrieving copies or call numbers with statistical categories. [Lp 2047587](https://bugs.launchpad.net/evergreen/+bug/2047587)

  • Log staff user for canceled holds [Lp 1963541](https://bugs.launchpad.net/evergreen/+bug/1963541)

  • Tighten permission checks for CREATE_COPY, UPDATE_COPY, CREATE_VOLUME, and UPDATE_VOLUME [Lp 1763811](https://bugs.launchpad.net/evergreen/+bug/1763811) [Lp 2018491](https://bugs.launchpad.net/evergreen/+bug/2018491)

  • Read-only view for Holdings Editor if lacking an appropriately scoped UPDATE_COPY permission for all items being edited. Mixed Permission dialog if the permission only covers some of the items being edited. Actions from the dialog: Only show permissible items, Read-only view for all items, and Change Operator and try again. [Lp 1932062](https://bugs.launchpad.net/evergreen/+bug/1932062)

  • Angularized the Local Administration → Circulation Policies interface.

  • Added an option to fmEditor for allowing one to unset a field (aka set to null)

  • Added some misc fmEditor tweaks/additions for developers

  • Replaced checkboxes for boolean fields in fmEditor with radio buttons

  • Changed instances of Copy Location to Shelving Location in the IDL, which wil be reflected in many interfaces.

  • Also, in the IDL, every instance of Copy, Copies, and copies in a label become Item, Items, and items, respectively. Except for Copy Location, which is normalized to Shelving Location. And any instance of "Lib" in label gets expanded to "Library".

  • Org Unit becomes Checkout Library for the circ matrix. Checkout is more prevalent in the code than Check Out, but we should pick one.

  • Adds new library settings to display an example and/or perform regex validation for the default and SMS phone fields on the patron registration and edit interfaces (LP#2035396)

    • Regex for default_phone field on patron registration

    • Example for default_phone field on patron registration

    • Regex for default_sms_notify field on patron registration

    • Example for default_sms_notify field on patron registration

  • Fix cropping of reports icon on staff interface splash page (Bug 2046970)

  • Pull list now includes Publication year. Print template code: [% hold.pubdate %] (lp2049673) (Bug 2049673)

  • Hold Status in holds grid is now sortable. (lp1889133) (Bug 1889133)

  • Fix an Apache internal server error in SuperCat when retrieving copies or call numbers with statistical categories. (Bug 20474587)

  • Ensure alerts are displayed in the patron summary when selecting a record from patron search results. (Bug 1980273)

  • Fix display of Expand All button’s icon on purchase order page (Bug 2049654)

  • Serialize PCRUD requests on the MARC Batch Import/Export Recent Sessions page to avoid excessive PCRUD calls (Bug 1945003)

  • Improve the accessiblity of the Angular staff login page (Bug 1839364)

  • Make the Hold Status, Current Item, and Requested Item Columns non-sortable on Angular holds grids to avoid errors. (Bug 1889133)

  • Holds grid can now print / download the Hold Status column. (Bug 2051038)

  • Reduce size of release tarball by not shipping the Angular build cache (Bug 2048907)

  • Fix crash when displaying Staff View for a deleted record that has no metarecord mappings. (Bug 2039229)

  • Improve speed of searching for and displaying (in Staff View) titles that are members of large metarecord sets. (Bug 2051708)

  • Enable clearing the default pickup location in the patron editor. (Bug 1939154)

  • Remove non-functional staff-only "Locate Z39.50 Matches" buttons from OPAC templates. (Bug 2021903)

  • [Developer] Remove make_release -x option to build XUL client (Bug 2051370)

  • [Developer] make_release now builds the browser client by default. (Bug 2051370)

  • Adds missing bib bucket IDL permissions, fixes carousel admin interface (Bug 2051140)

  • Ignore deleted monograp parts when checking title holds while "Require Monographic Part when Present" is on. (Bug 2051557)

  • Fix bug that allowed one checkout after a patron had reached a group penalty threshold, for example PATRON_EXCEEDS_OVERDUE_COUNT or PATRON_EXCEEDS_CHECKOUT_COUNT. (Bug 1890822)

  • [Developer] Fixes test failure in Angular staff client (Bug 2053245)

  • The fund dropdowns for line items and direct charges on purchase orders now display funds that user has permission to use. (Bug 2040637)

  • Adds a "Clear Added Content Cache" item to the Other Actions menu in the staff catalog record page. (Bug 1939162)

  • Restore ability to submit basic OPAC search by hitting enter in search input. (Bug 2053035)

  • Close autosuggest dropdown in the public catalog when it loses focus. (Bug 2054128)

  • Remove extra tab stops when navigating bib record actions in staff client using keyboard (Bug 2052960)

  • (OPAC) Ignore duplicate links from 856 fields with multiple $9’s (Bug 1582720)

  • Adds 245$n and 245$p to the title field in public catalog list CSV download, to better distinguish between multiple titles in the same series. (Bug 1909585)

  • Improves documentation of Fiscal Propagation and Rollover (Bug 2049774)

  • Fixes invocation of (Manage) Item Alerts dialog in Holdings Editor (Bug 2012971)

  • Adds batch edit for Item Alerts in Holdings Editor. Alerts get grouped together for editing if they are mostly identical (Bug 2012971)

  • Adds Manage Alerts button to Item Alerts dialog during alert display in Angular ("eg2") interfaces. (Bug 2012971)

  • Fixes TypeError: defaults is null exception for missing Default Item Alert Type preference (Bug 2012971)

  • Adds a Changes Pending indicator for Holdings Editor (Bug 2012971)

  • Increase the visibility of focus outlines in the Angular staff client (Bug 1828463)

  • Removes placeholder attributes from inputs in the Angular record editor and display field help directly rather than in a tooltip. Also moves the translate button next to text inputs for translatable fields. (Bug 2021862)

  • Show the total number of record notes in the Record Note tab in the staff catalog. (Bug 1991103)

  • Restore bold styling of paid off amount in purchase order summary. (Bug 2051250)

  • Restores bold weight to eg-grid column headers (Bug 2051566)

  • Update the version of Antora used to build the documentation (Bug 2036328)

  • Changes "Account Information and Preferences" in areas of the OPAC to "Personal Information and Preferences" (Bug 1980138)

  • Clarify button text in public catalog New List interface. (Bug 2047589)

  • Add privilege expiration date column to Group Member Details table (Bug 1779743)

  • Show the More/Less toggle on facet display in the staff catalog only when a facet has more than five entries. (Bug 2046974)

  • Fixes the styling of the Angular grid’s Manage Columns modal (Bug 2056069)

  • Fixes the styling of the Angular grid’s Manage Actions Menu modal (Bug 2056069)

  • Fix bug that could cause the Cash Reports page to display payments for the wrong day. (Bug 2051599)

  • Adds drop shadows to open dropdown menus and active tabs (Bug 2057432)

  • Remove potentially harmful javascript from the opac.patron.custom_css library setting when it is saved and before it is shown to a user. (Bug 1869971)

  • Fixes problem where "Form" value could not be saved in MARC editor for electronic resources. (Bug 2056204)

  • Ensures that both AngularJS and Angular grids use a gear icon for the grid settings menu. (Bug 1803788)

  • Makes it possible to display the org unit ID as a number on Angular record editor forms for editing org units (Bug 2051944)

  • Displays Org Unit ID in Org Config interface. (Bug 2051879)

  • Fixes placement of Save Notes button in public catalog My Lists page (Bug 2047588)

  • Fixes overly large barcode field on Mark Item as Missing Pieces page. (Bug 2051156)

  • Adds documentation for the Angular staff catalog, based on documentation produced by Indiana Evergreen.

  • Improves description of the "How to set default owning library for auto-created line item items" Library Setting (Bug 2028095)

  • Removes inaccurate shelving location count in staff catalog (Bug 2048798)

  • Fixes issue where Reports interface would not load if the BitWarden browser plugin is installed (Bug 2052567)

  • Allow Windows users to generate the Evergreen manual locally. (Bug 1930099)

  • Fixes annotate payment when using keyboard navigation (Bug 2047158)

  • Adds help button for Convert change to patron credit on patron bills (Bug 1929596)

  • Silences some "Use of uninitialized value" log entries from catalog search (Bug 2043045)

  • Prevents holds with an invalid pickup location selected from being placed in the angular catalog (Bug 2000270)

  • Changes button order in OPAC My Lists (Bug 2047592)

  • Adds idempotency to Stripe to prevent duplicate payments (Bug 2057948)

  • Adds an X icon to selected search facets in OPAC. (Bug 1086550)

  • Improves performance of item refresh after batch editing (Bug 1821094)

  • Presents an alert in the public catalog when no hold notifications are set. (Bug 2002572)

  • Removes obsolete remoteauth.cgi example script. (Bug 2019211)

  • New development tool to help prepare release notes using information from Git commits. (Bug 2051874)

  • Fixes custom permission tree display sort in the patron registration/edit screen (Bug 1843940)

  • Refactors Shelving Location Groups Admin for accessibility (Bug 2042879)

  • Remove unnecessary error message from ./configure installation step. (Bug 2054454)

  • Re-orders fields on Server Administration > Circulation Max Fine Rules (Bug 1839878)

  • Re-orders Server Admin > Circulation Duration Rules fields (Bug 1839875)

  • Reorders the fields for Local Admin > Statistical (Bug 2052641)

  • Fixes problem where the staff catalog could attempt to jump to an (Bug 1949214)

  • Moves submit button to end of Angular patron search form (Bug 1615805)

  • Moves submit button to end of AngularJS patron search form (Bug 1615805)

  • Reorders fields for Local Admin > Hold Policies (Bug 1915464)

  • Adds field group styling option to fieldmapper editor (Bug 1915464)

  • Patron bill grid row status color contrast adjustments (Bug 2045292)

  • Makes Angular nav bar responsive (Bug 1945498)

  • Remove unusued code. (Bug 2063980)

  • Adds page navigation to bottom of OPAC Shelf Browser (Bug 1763173)

  • Adds Angular interfaces for Invoices, Claims, MARC Federated Search, and Z39.50 Search. (Bug 2039609)

  • TypeScript compiler target updated to ES2021 (Bug 1615781)

  • Adds skip link for Angular staff navbar (Bug 2017034)

  • Matches card tabs' active color to card background (Bug 2059046)

  • Use "search" input type for staff catalog query inputs (Bug 2065326)

  • Fixes color contrast in printer settings warnings. (Bug 2060316)

  • Marks "Next" and "Back" for translation in Browse and Shelf Browse (Bug 1920247)

  • Marks "Receive on Scan" for translation in Acquisitions (Bug 2043418)

  • Adds missing shipment notification permissions (Bug 2055089)

  • Get actual remote file name when sending EDI message via SFTP. (Bug 2060153)

  • Add PATRON_BARRED.override permission if missing. (Bug 2062023)

  • Fixes issue where cover images were not displayed in the selfcheck holds list for titles that lack ISBNs. (Bug 2037564)

  • Maintain the staff client’s automated test suite (Bug 2065457)

  • upgrade dependencies for staff client automated tests/ (Bug 2036312)

  • Combobox-based MARC rich editor with inline help (Bug 2006969)

  • Updates MARC tag tables to support new rich editor (Bug 2006969)

  • Fixing hard-coded ID number for new AT Event Definition (Bug 2065540)

3. Acknowledgments

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

  • Evergreen Community Development Initiative

  • King County Library System

  • PaILS

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

  • Andrea Buntz Neiman

  • Angela Kilsdonk

  • Bill Erickson

  • Blake Graham-Henderson

  • Brian Kennedy

  • Brett French

  • Carol Witt

  • Chris Sharp

  • Christine Morgan

  • Dan Briem

  • Debbie Luchenbill

  • Elizabeth Davis

  • Eva Cerniňáková

  • Galen Charlton

  • Garry Collum

  • Gina Monti

  • Jane Sandberg

  • Jason Boyer

  • Jason Etheridge

  • Jason Stephenson

  • Jeff Davis

  • Jennifer Pringle

  • Jennifer Weston

  • Jessica Woolford

  • Josh Stompro

  • Katie Greenleaf Martin

  • Ken Cox

  • Kyle Huckins

  • Lena Hernandez

  • Llewellyn Marshall

  • Michele Morgan

  • Mike Rylander

  • Robin Fitch

  • Rogan Hamby

  • Ruth Frasur Davis

  • Scott Angel

  • Shula Link

  • Spencer Pennington

  • Stephanie Leary

  • Steven Mayo

  • Susan Morrison

  • Terran McCanna

  • Tiffany Little

  • Zavier Banks

We also thank the following organizations whose employees contributed patches:

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