forward-port 3.10 release notes
authorGalen Charlton <gmc@equinoxOLI.org>
Wed, 16 Nov 2022 00:12:26 +0000 (19:12 -0500)
committerGalen Charlton <gmc@equinoxOLI.org>
Wed, 16 Nov 2022 00:12:26 +0000 (19:12 -0500)
Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
docs/RELEASE_NOTES_3_10.adoc [new file with mode: 0644]

diff --git a/docs/RELEASE_NOTES_3_10.adoc b/docs/RELEASE_NOTES_3_10.adoc
new file mode 100644 (file)
index 0000000..3b10228
--- /dev/null
@@ -0,0 +1,574 @@
+= Evergreen 3.10.0 Release Notes =
+:toc:
+:numbered:
+:toclevels: 3
+
+== Upgrade notes ==
+
+The database update includes a partial reingest.
+
+== New Features ==
+
+
+===  Acquisitions ===
+
+==== Further Angularization of Acquisitions Interfaces ====
+
+The following acquisitions interfaces were rewritten in Angular:
+
+ * Purchase Orders and Selection Lists
+ * Line Item management, including
+   ** Receiving and claiming
+   ** Creation of line item items singly and in batch
+ * Load MARC Order Records
+
+Improvements over the previous interfaces include:
+
+ * The line item table can now be sorted and filtered
+ * New settings to control the owning library that is
+   applied to auto-created line item items.
+
+==== Support for Advanced Shipment Notices in Acquisitions ====
+
+This version of Evergreen supports DESADV EDI messages.  These messages are
+created by vendors when they pack and ship items, and contain:
+
+* A list of dispatched POs, lineitems, and the number of items per lineitem.
+* A package-level barcode (e.g. https://en.wikipedia.org/wiki/Serial_shipping_container_code) that represents the package as a whole.
+
+Staff can scan that package-level barcode to retrieve information on every
+item in the package, including an option to auto-receive every item in the box.
+
+==== New column in General Acquisitions Search ====
+
+The general acquisitions search grid now has a column
+for purchase order ID.
+
+==== New Permission for Fund Rollovers ====
+
+A new permission, `ADMIN_FUND_ROLLOVER`, is added to control access
+to the fund rollover function. This allows having some users be able
+to manage funds without being to invoke the rollover action, as
+rollovers can be hard to undo.
+
+During upgrade, any permission group with the `ADMIN_FUND` permission
+will get the new `ADMIN_FUND_ROLLOVER` permission to avoid surprises.
+Consequently, an Evergreen administrator who wishes to lock down
+access to the feature should follow up by removing the new permission
+where necessary.
+
+In new databases, `ADMIN_FUND_ROLLOVER` is granted only to the stock
+Acquisitions Administrators permission group.
+
+==== Inactive funds can no longer make allocations or transfers ====
+
+In the Funds Administration page, if a fund is not marked as
+active, the "Create allocation" and "Transfer money" options
+will no longer be available.
+
+In the occassional cases where these operations are necessary,
+you can edit the fund to mark it active, perform your financial
+operations, then mark it inactive again.
+
+=== Administration ===
+
+==== Geosort feature can now use Bing Maps API ====
+
+The API can be configured at *Server Administration*
+-> *Geographic Location Service*.
+
+==== Refresh Time for Carousel ====
+
+This adds the time (rather than just the date) to the 
+Last Refresh Time column of the Local Administration > 
+Carousels grid. 
+
+==== Hours of Operation Note field ====
+
+Adds a note field to each day's hours to record split hours or service related notes. The notes appear enclosed in parentheses next to each day's hours when viewing a library's hours in the Bootstrap OPAC and TPAC
+
+==== HTML email ====
+
+Administrators can now configure action triggers to send HTML-formatted
+email.  Evergreen continues to send emails in plain-text by default, but
+you can now configure an email template to send as HTML by adding the appropriate
+header to the email.  For example: Content-Type: text/html;charset=utf-8
+
+==== Match Quality Ratio Option Added to marc_stream_importer.pl ====
+
+Command line options have been added to the marc_stream_importer.pl
+support script to specify the match quality ratio used when matching
+bibliographic or authority records for overlay:
+
+* --bib-match-quality-ratio
+* --auth-match-quality-ratio
+
+These options specify the match quality ratio, as a decimal number
+(i.e. 1.0), for overlay of records with the overlay on 1 match
+options.  They correspond to the similar options in the staff client
+Vandelay import.
+
+==== Configuring sign-on to OpenAthens ====
+:toc:
+
+===== Purpose =====
+
+If your institution uses OpenAthens, you can configure Evergreen to sign 
+patrons in to OpenAthens using their Evergreen account. This will let them 
+connect to OpenAthens resources seamlessly once they have logged in to 
+Evergreen. Patrons are assigned an OpenAthens identity dynamically based 
+on their Evergreen login, and do not need accounts created manually in 
+OpenAthens.
+
+===== Registering your Evergreen installation with the OpenAthens service =====
+
+Using your OpenAthens administrator account at https://admin.openathens.net/, 
+complete the following steps:
+
+. Register a local authentication connection for Evergreen:
+  .. Go to *Management* -> *Connections*.
+  .. Under *Local authentication* click *Create*.
+  .. In the wizard that appears, select *Evergreen* as the local authentication 
+  system type (or *API* if Evergreen is not listed) and click *Configure*.
+  .. For *Display name*, enter the name of your Evergreen portal that your 
+  patrons will be familiar with. They will need to be able to recognise and 
+  select this name from a list of sign-in options on OpenAthens.
+  .. For *Callback URL* enter *https://<HOSTNAME>/eg/opac/sso/openathens* where 
+  <HOSTNAME> is the public hostname of your Evergreen installation, and click 
+  *Save*. (If you have installed Evergreen somewhere other than /eg, modify the
+  URL accordingly.)
+  .. On the details page that appears, take a copy of the *Connection ID* and 
+  *Connection URI* that have been generated. You will need these when 
+  configuring Evergreen.
+. Generate an API key:
+  .. Go to *Management* -> *API keys* and click *Create*.
+  .. For *Name*, enter 'Evergreen' or whatever name you use for your Evergreen 
+  portal internally, and click *Save*.
+  .. Take a copy of the 36-character key that has been generated. You will need 
+  this when configuring Evergreen.
+
+Full OpenAthens documentation for local authentication API connections is 
+available at http://docs.openathens.net/display/public/MD/API+connector.
+
+===== Configuring Evergreen =====
+
+OpenAthens sign-on is configured in the staff client under *Local 
+Administration* -> *OpenAthens Sign-on*. To make a connection, select *New 
+Sign-on to OpenAthens*, and set the values as follows:
+
+* *Owner* - the organisation within your library hierarchy that owns the 
+connection to OpenAthens. If your whole consortium has signed up to OpenAthens 
+as a single customer, then you would select the top-level. If only one 
+regional library system or branch is the OpenAthens customer, select that. 
+Whichever organisation you select, the OpenAthens connection will take effect 
+for all libraries below it in your organisational hierarchy. A single 
+OpenAthens sign-on configuration normally equates to a single *domain* in the 
+OpenAthens service. If in doubt refer to your OpenAthens account manager or 
+implementation partner.
+* *Active* - Enable this connection (enabled by default). N.B. Evergreen
+  does not support more than one active connection to OpenAthens at a time per 
+  organisation. If more than one connection is added per organisation, 
+  Evergreen will use only the _first_ connection that has *Active* enabled.
+* *API key* - the 36-character OpenAthens *API key* that was generated in step 
+  2 above.
+* *Connection ID* - the numerical *Connection ID* that was generated for the 
+  OpenAthens local authentication connection in step 1 above.
+* *Connection URI* - the *Connection URI* that was generated for the 
+  OpenAthens local authentication connection in step 1 above.
+* *Auto sign-on* - controls _when_ patrons are signed on to OpenAthens:
+  ** *enabled* (recommended) - As soon as a patron logs in to Evergreen, they 
+  are signed in to OpenAthens. This happens via a quick redirect that the user 
+  should not notice.
+  ** *disabled* - The patron is not signed in to OpenAthens to start with. When 
+  they first access an OpenAthens-protected resource, they will need to search 
+  for your institution at the OpenAthens log-in page and choose your Evergreen 
+  portal as the sign-in method (they will see the name you entered as the 
+  *Display name* in step 1 above). Evergreen will then prompt for log-in if 
+  they have not already logged in. After that, they are signed in to OpenAthens 
+  and OpenAthens redirects them to the resource.
+* *Auto sign-out* - controls whether the patron is signed out of OpenAthens 
+  when they log out of Evergreen. If *enabled* the patron will be sent to the 
+  OpenAthens sign-out page when they log out of Evergreen. You can optionally 
+  configure the OpenAthens service to send them back to your home page again 
+  after this; the setting can be found at https://admin.openathens.net/ under 
+  *Preferences* -> *Domain* -> *After sign out*.
+* *Unique identifier field* - controls which attribute of patron accounts is 
+  used as the unique identifier in OpenAthens. The supported values are 'id' 
+  and 'usrname', but you should leave this set to the default value of 'id' 
+  unless you have a reason to do otherwise. It is important that this attribute 
+  does not change during the lifetime of a patron account, otherwise they would 
+  lose any personalised settings they have saved on third party resources. It 
+  is also important that you do not re-use old patron accounts for new users, 
+  otherwise a new user could see personalised settings saved by an old user.
+* *Display name field* - controls which attribute of patron accounts is 
+  displayed in the OpenAthens portal at https://admin.openathens.net/. (This 
+  is where you can see which accounts have been used, and what use patrons are 
+  making of third party resources.) The supported values are 'id', 'usrname' 
+  and 'fullname'. Whichever you choose, OpenAthens will only use it within 
+  your portal view; it won't be released to third-party resources.
+* *Release X* - one setting for each of the attributes that it is possible to 
+  release to OpenAthens. Depending on your user privacy policy, you can 
+  configure any of these attributes to be released to OpenAthens as part of 
+  the sign-on process. None are enabled by default. OpenAthens in turn doesn't 
+  store or release any of these attributes to third party resources, unless 
+  you configure that separately in the OpenAthens portal. You have to 
+  configure this in two stages. Firstly, mapping Evergreen attributes to 
+  OpenAthens attributes, and secondly releasing OpenAthens attributes to third 
+  party resources. See the OpenAthens documenation pages at 
+  http://docs.openathens.net/display/public/MD/Attribute+mapping and 
+  http://docs.openathens.net/display/public/MD/Attribute+release. You will need 
+  to know the exact names of the attributes that are released. These are listed 
+  in the following table:
+
+|===
+|Setting|Attribute released|Description
+
+|Release prefix
+|prefix
+|the patron's prefix, overriden by the preferred prefix if that is set
+
+|Release first name
+|first_given_name
+|the patron's first name, overriden by the preferred first name if that is set
+
+|Release middle name
+|second_given_name
+|the patron's middle name, overriden by the preferred middle name if that is set
+
+|Release surname
+|family_name
+|the patron's last name, overriden by the preferred last name if that is set
+
+|Release suffix
+|suffix
+|the patron's suffix, overriden by the preferred suffix if that is set
+
+|Release email
+|email
+|the patron's email address
+
+|Release home library
+|home_ou
+|the _shortcode_ of the patron's home library (e.g. 'BR1' in the Concerto 
+sample data set)
+
+|Release barcode
+|barcode
+|the patron's barcode
+|===
+
+Click 'Save' to finish creating the connection. (If you can't see the 
+connection you just created for a branch library, enable the "+ Descendants" 
+option.)
+
+===== Network access - server =====
+
+As part of the sign-on process, Evergreen makes a connection to the OpenAthens
+service to transfer details of the user that is signing on. This data does not
+go via the user's browser, to avoid revealing the private API key and to avoid
+the risk of spoofing. You need to open up port 443 outbound in your firewall,
+from your Evergreen server to login.openathens.net.
+
+===== Network access - web client =====
+
+If you restrict internet access for your web client machines, you need to open
+up port 443 outbound in your firewall, from your web clients to the following
+three domains:
+
+* connect.openathens.net
+* login.openathens.net
+* wayfinder.openathens.net
+
+===== Admin permissions =====
+
+To delegate OpenAthens configuration to other staff users, assign the 
+*ADMIN_OPENATHENS* permission.
+
+==== Optionally allow patrons to renew after hitting fine maximum ====
+
+When a patron hits the max fine limit, a standing penalty is applied to their account. By default, that penalty (PATRON_EXCEEDS_FINES)
+is configured to block renewals.
+
+This release adds a new org unit setting, _circ.permit_renew_when_exceeds_fines_.  If enabled for a particular org unit, renewals are
+permitted (as long as all other circulation eligibility criteria are met).
+
+==== Optionally remove traditional catalog from menu ====
+
+Libraries that have fully migrated to the Angular staff catalog
+may optionally hide the "Staff Catalog (Traditional)" menu
+options.  To do so, in the Library Settings Editor, set the
+"ui.staff.traditional_catalog.enabled" setting to False.
+
+After changing the setting, you will need to log out and log
+back in to see the changes to the menu.
+
+=== Architecture ===
+
+==== (Developer-focused) Use ESLint for eg2 ====
+
+The `eg2` Angular application now uses ESLint rather than TSLint for
+source code linting. This is motivated by the deprecation of TSLint
+by the Angular CLI, but ESLint also offer some improvements.
+
+In particular, ESLint checks the HTML templates in addition to the
+TypeScript code. For example, it will catch uses of `==` in the
+templates when `===` is preferred.
+
+The primary ESLint rules applied to the project are configured in
+`Open-ILS/src/eg2/.eslintrc.json`. To override them for specific
+directories, `.eslintrc` files can be used. An example of this
+is `Open-ILS/src/eg2/src/app/share/.eslintrc`, which turns off
+the `angular-eslint/no-output-on-prefix` check that discourages
+using `onFoo` as the name of `@Output()` properties. This rule
+is now enforced in most of `eg2`, but it was decided not to immediately
+mandate for shared components.
+
+The command to run the lint checks remains the same: from
+`Open-ILS/src/eg2/`, run `ng lint`.
+
+==== Operating System Requirements ====
+
+Evergreen 3.10 now supports installation on Ubuntu 22.04 (Jammy Jellyfish).
+
+This release removes support for Debian Stretch and Ubuntu 18.04 (Bionic Beaver).
+
+=== Cataloging ===
+
+==== Record Note Merges ====
+
+During a merge of bibliographic records notes will now merge and a
+notation on each added that they were originally from another record.
+A note is also added that the merge was performed.
+
+=== Circulation ===
+
+==== Experimental Angular Circulation Interfaces ====
+
+This Evergreen release includes new, experimental versions of many
+circulation interfaces.  To enable these interfaces:
+
+. In the Library Settings Editor, enable the setting called
+_Enable Angular Circulation Menu_.
+. Add the _ACCESS_ANGULAR_CIRC_ permission to any users who
+will be testing the experimental interfaces.
+
+These interfaces are experimental, and should not be used for production
+work.  Please report any issues with the interfaces at
+https://bugs.launchpad.net/evergreen
+
+==== New Patrons with Negative Balances interface ====
+
+The _Patrons with Negative Balances_ interface has been re-implemented
+in Angular.
+
+==== OPAC-visible statisitical categories are now visible in the OPAC ====
+
+This release restores a previously available feature: the ability to 
+display statistical categories (stat cats) in the OPAC.  If an
+item stat cat has "OPAC Visibility" set to true, its values will
+display in the record page's item table, underneath the call number.
+If a patron stat cat has "OPAC Visibility" set to true, its values
+will display in the patron's account under Preferences ->
+Personal Information (below the account expiration date).
+
+Since these values have not been visible for some time, Evergreen
+libraries may wish to review them before making them public.  To
+set all stat cats to private, so that OPAC visibility can be
+restored on a case-by-case basis after review, you can use the
+following SQL:
+
+[,sql]
+----
+-- Item stat cats
+UPDATE asset.stat_cat SET opac_visible=false WHERE opac_visible=true;
+
+-- Patron stat cats
+UPDATE actor.stat_cat SET opac_visible=false WHERE opac_visible=true;
+----
+
+==== Renewal Due Date Extended to Cover Lost Time ====
+
+When an item is renewed before it's due date, libraries now have the option
+to extend the renewal's due date to include any time lost from the early 
+renewal.
+
+For example, a 14 day checkout renewed after 12 days will result in a due date
+on the renewal of 14 days plus 2 days to cover the lost time.
+
+===== Settings =====
+
+Two new fields are available under Admin => Local Administration => 
+Circulation Policies.
+
+*Early Renewal Extends Due Date*
+
+Enables this new feature for a circulation policy.
+
+*Early Renewal Minimum Duration Interval*
+
+Specifies the amount of time a circulation has to be checked out before a 
+renewal will result in an extended due date.
+
+For example, if you wanted to support due date extensions on 14-day checkout
+renewals, but only if the item has been checked out at least 8 days, you 
+would enter "8 days" for the value of this field.
+
+If no value is set for a given matchpoint that supports renewal extension, 
+all renewals using that matchpoint will be eligible.
+
+==== Override All Option when Placing Multiple Staff Holds ====
+
+When placing multiple holds in the Angular Staff Catalog, staff users with permission to override the failed holds will see an Override All button which will perform all overrides at once.
+
+Overriding each failed hold individually remains an option.
+
+==== Source library addresses now available on transit slips ====
+
+Transit slip templates previously could include the address of
+the library that the item is being transitted _to_.  With this
+release, the address of the library the item is being transitted
+_from_ is also available.
+This change applies to both the Hold Transit Slip and the Transit
+Slip templates.
+
+==== Courses can be un-archived ====
+
+Course reserves staff can now un-archive a course that was previously archived, either from
+its course page, or from the course list.
+
+Un-archiving a course makes it active again.  Users with public roles in the course (such
+as instructors) remain associated with the course.  Non-public users (such as students)
+are removed.
+
+=== OPAC ===
+
+==== Additional trailing punctuation removed from certain fields ====
+
+MarcXML facet, display, and browse fields will undergo some extra
+cleanup before displaying to a user.  Of particular note for any
+title fields that match these criteria, ending `/`, `:`, `;`, and
+`=` will be removed.
+
+This change does not affect MODS fields.  You can check if a
+particular field uses MarcXML or MODS in Server Administration
+-> MARC Search/Facet Fields by consulting the Format column.
+
+
+=== Miscellaneous ===
+
+* The Field Documentation interface (under Local Administration) has
+  been ported to Angular with an org selector as an additional filter.
+* The Pending Users and Bucket View grids in the User Buckets interface
+  now includes a column for the patron's balance owed. (LP#1980257)
+* Patron Interface Gets a New Penalty Refresh Action. (LP#1823225)
+* A new workstation setting optionally allows the full library name to be
+  added to the Angular Org Unit Selector. (LP#1771636)
+* The tabs on the Claiming Administration page have been reordered to
+  Claim Policies, Claim Policy Actions, Claim Event Types, and Claim
+  Types. This reflects the fact that Claim Types tend to be configured
+  once and are not typically adjusted when setting up a new claim
+  policy. (LP#1947045)
+* Links in the staff catalog summary area now open in a new tab. (LP#1953692)
+* The Item Status list view now includes an optional column for
+  Total Circulations. (LP#1964629)
+* The credit card payment approval code is now available as a column in
+  the bill history payments table in the patron record. (LP#1818303)
+* The group member details grid now contains columns for preferred names.
+  (LP#1951996)
+* The patron profile name is now available to the Hold Shelf Slip
+  print template as `patron.profile.name`. (LP#1724032)
+* Removed the Message Center from the Patron -> Other Menu (deprecated),
+  added action for unarchiving Notes, and added confirmation dialogs
+  for Remove Note, Archive Note, and Unarchive Note. (LP#1977877)
+* Curbside request notes and user messages are now purged when a user
+  record is deleted. (LP#1934162)
+* If the patron record has a preferred name set, the SIP server now
+  returns it in response to patron lookups. (LP#1984114)
+* The label and description of the acq.fund.allow_rollover_without_money
+  library setting are updated for greater clarity (LP#1982031)
+* The Cash Reports interface (under Local Administration) is ported to
+  Angular.
+
+=== Acknowledgments ===
+
+The Evergreen project would like to acknowledge the following
+organizations that commissioned developments in this release of
+Evergreen:
+
+* CW MARS
+* Evergreen Community Development Initiative
+* Equinox Open Library Initiative
+* King County Library System
+
+We would also like to thank the following individuals who contributed
+code, translations, documentations patches and tests to this release of
+Evergreen:
+
+* John Amundson
+* Zavier Banks
+* Jason Boyer
+* Dan Briem
+* Christine Burns
+* Steven Callender
+* Galen Charlton
+* Julian Clementson
+* Garry Collum
+* Dawn Dale
+* Jeff Davis
+* Bill Erickson
+* Jason Etheridge
+* Ruth Frasur
+* Blake Graham Henderson
+* Rogan Hamby
+* Elaine Hardy
+* Kyle Huckins
+* Linda Jansova
+* Stephanie Leary
+* Shula Link
+* Tiffany Little
+* Mary Llewellyn
+* Llewellyn Marshall
+* Terran McCanna
+* Gina Monti
+* Christine Morgan
+* Michele Morgan
+* Susan Morrison
+* Andrea Buntz Neiman
+* Jennifer Pringle
+* Erica Rohlfs
+* Mike Risher
+* Mike Rylander
+* Jane Sandberg
+* Lindsay Stratton
+* Chris Sharp
+* Jason Stephenson
+* Jennifer Weston
+* Beth Willis
+* Carol Witt
+* Jessica Woolford
+
+We also thank the following organizations whose employees contributed
+patches:
+
+* BC Libraries Coop
+* Bibliomation
+* Catalyte
+* CW MARS
+* Equinox Open Library Initiative
+* Georgia Public Library Service
+* Greater Clarks Hill Regional Library
+* Kenton County Library
+* King County Library System
+* Lake Agassiz Regional Library
+* Linn Benton Community College
+* MOBIUS
+* NC Cardinal
+* NOBLE
+* Princeton University
+* Sigio
+* Westchester Library System
+
+We regret any omissions.  If a contributor has been inadvertently
+missed, please open a bug at http://bugs.launchpad.net/evergreen/
+with a correction.
+