Changes and required actions

Functional Area

Change or Additions

Considerations

Action timing,
Action required

Comments

Contact person,
Related JIRAs

Functional Area

Change or Additions

Considerations

Action timing,
Action required

Comments

Contact person,
Related JIRAs

Affected app or module

What has been changed or added that should be noted for this release

What challenges may arise related to this change or addition

When can the action be taken (before, during or after upgrade)?

If applicable, detail what action(s) must be taken here

Is this action required for the next release?

Name of user leaving comment: comment on what you encountered or ask a question @mention Contact person

User name of person that can provide additional detail.
Include issue link for bug fix, story or feature that applies

Deployment

AWS S3 URL endpoint validation is more picky in Poppy

If using Amazon S3: Only an officially supported Amazon S3 endpoint URL is allowed in the S3 URL environment variables of modules. Example:

Wrong: AWS_URL=https://s3-us-west-2.amazonaws.com/

Correct: AWS_URL=https://s3.us-west-2.amazonaws.com

Before upgrade change environment variables and secure store variables AWS_URLand S3_URL.

 

@Julian Ladisch 

FOLS3CL-20: Java 17, upgrade dependencies for PoppyClosed

 

Deployment

Set SYSTEM_USER_PASSWORD environment variable for
mod-consortia
mod-data-export-spring
mod-dcb
mod-entities-links
mod-inn-reach
mod-pubsub
mod-remote-storage
mod-search

Module will fail on startup or when enabling a tenant if system user password is not set.

Consider setting a different SYSTEM_USER_NAME and a different SYSTEM_USER_PASSWORD for each module.

Before upgrade set environment variables/secure store variables.

The new password will be applied when migrating a tenant to the Poppy version of the module.

If changing the SYSTEM_USER_NAME from the default name or from the previous name the old system user still exists and must be manually disabled or deleted.

 

@Julian Ladisch 

https://folio-org.atlassian.net/browse/SECURITY-9

 

System wide

Refresh token support. Expiring token support. See the guide how to configure for more information.

Third party integrations that use non-expiring legacy tokens will need to be updated to use the new authn/login-with-expiry  token endpoint during the deprecation period of Poppy and Quesnelia. Within Poppy and Quesnelia both the legacy authn/login and new login endpoints will be supported.

Integrations that use the edge API are unaffected.

System operators can configure access and refresh token expiration (TTLs) as documented in the mod-authtoken READMEusing the new token.expiration.secondssystem property.

It is also possible to configure the token cookie SameSite attribute using LOGIN_COOKIE_SAMESITE environment variable. as documented in the READMEs of mod-login and mod-login-saml.

When the LOGIN_COOKIE_SAMESITE  attribute is not set, it defaults to the more restrictive Lax attribute.

For system operators who are not using the FOLIO front-end and wish take full advantage of the enhanced security of expiring tokens, there is a new system property legacy.token.tenants in mod-authtoken. This property affects the system state in three ways.

  1. When not provided or provided with a wildcard * character, all tenants are legacy token tenants.

  2. When provided, with a comma separated list of tenant ids, only those tenants will be legacy token tenants.

  3. When provided with an empty string value, no tenants will be legacy token tenants.

A legacy token tenant is a tenant for which a request to the legacy authn/login  endpoint will not return a 404. See the readme of mod-authtoken for additional details.

Follow instructions here for updating third party integrations and for configuration.

In Poppy, backend modules default to using the new authn/login-with-expiry endpoint which issues expiring tokens. Enabling the legacy token endpoint through configuration does not disable this new endpoint. It only has the effect of exposing the legacy endpoint to requests for a given tenant allowing for a smother transition for clients which currently depend on the legacy endpoint.

 

@Steve Ellis 

FOLIO-3627: Quesnelia 2024 R1 - Implement refresh token rotation (RTR) in all affected modulesIn Review

 

Password reset link (mod-users-bl)

Token in the reset password link expires early.

Ensure that mod-users-bl’s RESET_PASSWORD_LINK_EXPIRATION_TIME (default: 24 hours) does not exceed mod-authtoken’s token.expiration.seconds (default: 10 minutes)

Before or after upgrade

 

@Steve Ellis , @Julian Ladisch

https://folio-org.atlassian.net/browse/MODUSERBL-185

Inventory, SRS, Data import

Default MARC-Instance mapping updated to change multiple classification fields or repeated subfields within one classification field are handled

Libraries should review and decide: 

  1. If existing Instances should be refreshed against the updated map, so that all existing instances reflect these changes

See Update of mapping to correct handling of repeated classification fields and subfields for additional details.

Follow the instructions to update the mapping rules. 

Mandatory change. 

Note that any revised mappings will only apply to Instances created or updated via MARC Bibs after the map is updated. To refresh existing Instances against the current SRS MARC Bibs and current map, the library may consider running Script 3 described here: Scripts for Inventory, Source Record Storage, and Data Import Cleanup

 

@Ann-Marie Breaux (Deactivated) 

MODDICORE-323: Problems with default MARC-Instance mapping when some call number fields are repeated or have repeated subfieldsClosed

 

Inventory, SRS, Data import

Default MARC-Instance mapping updated to adjust punctuation handling for the 1xx/7xx contributor fields and for the $e/$j relator terms

If the library wants more name relator terms to be standardized, for searching and filtering, this update will help.

Libraries should review and decide: 

  1. If existing Instances should be refreshed against the updated map, so that all existing instances reflect these changes

See Update of mapping to adjust punctuation handling for 1xx/7xx contributors and $e/$j relator terms for additional details.

Follow the to update the mapping rules. 

Mandatory change. 

Note that any revised mappings will only apply to Instances created or updated via MARC Bibs after the map is updated. To refresh existing Instances against the current SRS MARC Bibs and current map, the library may consider running Script 3 described here: Scripts for Inventory, Source Record Storage, and Data Import Cleanup

 

@Ann-Marie Breaux (Deactivated) 

MODDICORE-347: MARC bib - FOLIO instance mapping | Adjust contributor and relator term mapping WRT punctuationClosed

MODDICORE-355: Create migration script for updating customized rules for Poppy relator terms and punctuationClosed

Data Import

This functionality enables libraries to reliably process large MARC 21 files through data import. When enabled, the system automatically splits large files into smaller parts, which are optimal for processing.

Data splitting functionality is currently an opt-in feature that is disabled by default and requires S3-compatible storage to use.  Environment variables to control enablement/disablement are set at the cluster level for mod-data-import.
See detailed release documentation here: Detailed Release Notes for Data Import Splitting Feature#Suggestedvalues and user-level documentation here: DRAFT Overview: reliably process large MARC files

 

 

@Kathleen Moore, @Ryan Taylor 

https://folio-org.atlassian.net/browse/UXPROD-4337

Settings. Patron Overdue Policy. Reminder fee section.

The overdue policies has been extended with an additional section to define “Reminder fees”. The policy is defining the wanted process to bill reminder fees.

 

Reminder schedule. The first reminder is scheduled at check-out based on the due date and the reminder fee configuration defined in this section. As the first reminder is sent the next reminder is scheduled according to this configuration, and so forth. A timed process is then defined in mod-circulation, to pick up due reminders, charge fees and send notices.

If the library does not use reminder fees then leave this section unfilled.

 

 If institutions expect to generate more than 100 reminder fee notices each time the scheduled process runs, the limit on maximum number of schedule notices must be raised to a new, desired limit.

This is done by adding an entry to configurations/entries with module set to "NOTIFICATION_SCHEDULER", configName set to “noticesLimit” and “value” set to the desired limit.

A new timed process is defined in mod-circulation to process reminders that have become due according to the configured reminder fees policy.

By default the process is scheduled to run once a day, at one minute past midnight in Central European timezone (00:01 CET) where it will pick up reminders that have become due since the most recent run.

The default timing of the process can be changed using Okapi's timer interface. Use Okapi's timer API to find the timed process at path "/circulation/scheduled-digital-reminders-processing" and follow the Okapi guide to set the desired timing of the process.

The process can be disabled entirely, if desired by tenants not using reminder fees. The Okapi guide describes how to disable a timed process as well. This is not required though, since simply letting the process run will have negligible impact on installations that do not use reminder fees.

 

UXPROD-2015: Hebis (Poppy): Implement Reminder Fees for German Libraries. Minimal requirementsClosed

UXPROD-4159: Hebis: Implement Reminder Fees for German Libraries (extended Poppy) Closed

@Florian Ruckelshausen 

@Charlotte Whitt 

Inn Reach listening to Kafka topics.

A new environmental variable INNREACH_TENANTS introduced which is mandatory and should contain the list of tenants for which mod-inn-reach module will be enabled.

The INNREACH_TENANTS variable is not set then the module will not start.

 

 

@Vignesh Kalyanasundaram
@Steve Ellis 
@Gurleen Kaur1 
MODINREACH-381: Manual ongoing contributions fail to reach the ContributionJobRunnerClosed

INNREACH_TENANTS variable details

 

 

Requests, Request policies, Service points

  • For each type of request allowed in a Request policy, libraries will be able to specify which Service points are allowed for pickup (from among the Service points that are flagged as pickup SPs in Settings > Tenant > Service points).

  • The New Request form will be dynamic, enabling Title / Item information AND Requester information to determine available Request types and Pickup locations

  • Libraries will see a confirmation popup when changing a Pickup location from “Yes” to “No” as a reminder that this action will remove it from existing Request policies and affect all Circulation rules using the policies.

 

 

 

@Anne Ekblad 

UXPROD-2689: Enable Request Policy to Determine Allowed Pickup Service PointsClosed

Loan records. Add patron info and add staff info

Loan-related notes/comments (action based):

Two new buttons for adding this information is now available from the detailed loan display, and the check-out screen when clicking the three dots.

 

 

The notes/comments are searchable in the Circulation log app. 

 

UXPROD-3913: Mainz: Loans record. Add new property. Loan specific notes/commentsClosed

@Axel Dörrer 

@Charlotte Whitt 

Patron notices

A new token supporting sending patron notices with the new patron information has been developed: 

{{loan.additionalInfo}}

 

 

 

UXPROD-3913: Mainz: Loans record. Add new property. Loan specific notes/commentsClosed

@Axel Dörrer 

@Charlotte Whitt 

@julie.bickle 

Patron notices

7 new tokens for users primary address information supporting sending printed letters with a final reminder to patrons:

{{user.primarydeliveryAddressType}}

{{user.primaryAddressLine1}}

{{user.primaryAddressLine2}}

{{user.primaryCity}}

{{user.primaryStateProvRegion}}

{{user.primaryZipPostalCode}}

{{user.primaryCountry}}

 

 

 

 

UXPROD-4276: Replace Location Details accordion with solution to support discovery integrationOpen

@Florian Ruckelshausen 

@Charlotte Whitt 

@julie.bickle 

Patron notices

Addition:

Given: You have a lost item policy that charges the actual cost + a notice policy that sends notices with the existing trigger “Lost item fee(s), charged”,
When: You bill the actual cost for an item that has aged to lost,
Then: A notice is sent to the patron, according to the settings in the notice policy.

There are no new options or features in the notice policy or the notice templates; rather, the existing triggers have expanded their scope.

UXPROD-3573.docx

Please note: This ALSO works for items that have been declared lost.

Before upgrading to Poppy and/or switching to actual cost, please review whether your notice policies and/or templates (e.g. wording) need to or can be updated as a consequence.

Remember: Updates to a notice policy are applied when the open loan is next updated. Updates to the lost item policy are NOT applied to open loans.

 

@julie.bickle 

https://folio-org.atlassian.net/browse/UXPROD-3573

 

Patron notices

Addition:

Given: You have billed the actual cost for a lost item (both whether aged to lost or declared lost) + you have a notice policy that sends notices with the existing trigger “Lost item returned - fee(s) adjusted”,
When: The lost item is checked in (returned),
Then: A notice is sent to the patron, according to the settings in the notice policy.

There are no new options or features in the notice policy or the notice templates; rather, the existing triggers have expanded their scope.

UXPROD-3740.docx

 

Before upgrading to Poppy and/or switching to actual cost, please review whether your notice policies and/or templates (e.g. wording) need to or can be updated as a consequence.

Remember: Updates to a notice policy are applied when the open loan is next updated. Updates to the lost item policy are NOT applied to open loans

 

@julie.bickle 

https://folio-org.atlassian.net/browse/UXPROD-3740

 

Patron notices

Addition:

Lost item fees (set cost, actual cost and processing fee) can be bundled into one notice, overnight (or whenever you have agreed to with your hosting provider).

The functionality works the same as for notices trigged by the “Loan due date/time”:

  • There is a new “Mutliple fee/fine charges” token pair to add to the templates: #feeCharges  &  /feeCharges

  • For the triggering event “Lost item fee(s) charged”, there are two new options to select:

  •  

    • Send overnight with multiple lost item fee charges by patron.  – This option will bundle any open lost item charges into one email (by standard, up to 100 charges). MUST contain the multiple charges tokens: #feeCharges  &  /feeCharges

    • Send throughout the day with one lost item fee charge per notice.  – This represents existing functionality, and will be the default setting in your existing notice policies that use this trigger. MUST NOT contain the multiple charges tokens: #feeCharges  &  /feeCharges

UXPROD-3998.docx

 

Before upgrading to Poppy and/or selecting this option, please review whether your notice policies and/or templates (e.g. wording) need to or can be updated as a consequence.

Remember: Updates to a notice policy are applied when the open loan is next updated. Updates to the lost item policy are NOT applied to open loans. 

 

@julie.bickle 

https://folio-org.atlassian.net/browse/UXPROD-3998

 

Patron notices

Mandatory change:

Overdue fines can be bundled into one notice. The functionality is very similar as for check in and out notices:

  • There is a new “Mutliple fee/fine charges” token pair that MUST be added to the templates: #feeCharges  &  /feeCharges
    Otherwise, the notices will have an empty email body.

  • For the notice policy trigger “Overdue fine, returned”: The overdue fines generated in a single check in session are bundled when the check in session is closed.

  • For the notice policy trigger “Overdue fine, renewed”: The overdue fines are bundled when you renew multiple items at the same time. 

UXPROD-3999.docx

 

Mandatory change:

Before upgrading to Poppy and/or selecting this option, you MUST update the relevant notice templates to include the multiple charges tokens. Otherwise, the notices will have an empty email body.

In addition, please review whether your notice policies and/or templates (e.g. wording) need to or can be updated as a consequence.

Remember: Updates to a notice policy are applied when the open loan is next updated. Updates to the lost item policy are NOT applied to open loans. 

 

@julie.bickle 

https://folio-org.atlassian.net/browse/UXPROD-3999

 

Title level requests

Addition:
Institutions will now be able to choose to have title level request holds fail OR always succeed, following Circulation rules. (Through Orchid, holds can always be placed, regardless of Circulation rules).

Via discovery: The TLR endpoint used by edge-patron tries Page, Recall, then hold when TLR is enabled. If you allow recalls, by policy, it will never fall back to TLR hold (if holds are also allowed by policy).

Settings > Circulation > Title level requests. Select the box next to "Fail to create title level hold when request is blocked by circulation rule" to prevent holds from succeeding when Circulation rules do not allow them. 

 

@Stephanie Buck 

https://folio-org.atlassian.net/browse/UXPROD-3981

 

Fees/fines: Actual cost

Additions:
Actual cost, fee/fine, and status details have been added to the Actual cost processing page. You can now access the processing page through the Action menu on the User details record. An "X" has been added to enable people to leave the processing page without needing to use the back button on the browser. 

 

 

 

https://folio-org.atlassian.net/browse/UXPROD-4083

https://folio-org.atlassian.net/browse/UXPROD-3954

@Stephanie Buck 

OAI-PMH -  AWS S3/ MinIO Server 

OAI-PMH uses AWS S3 or Minio Server for storing error logs generated by harvests

The environment will need to be configured as described in https://github.com/folio-org/mod-oai-pmh#environment-variables

 

 

https://folio-org.atlassian.net/browse/UXPROD-4006

@Magda Zacharska 

@Viachaslau Khandramai (Deactivated) 

OAI-PMH/Inventory storage 

New field completeUpdatedDate has been added to the instance schema to improve OAI-PMH performance for incremental harvests (with from/until parameters) 

Execute scripts as documented in Migration scripts for OAI-PMH

Execution of the script takes approximately 5 hours for 8 millions instance records.

 

https://folio-org.atlassian.net/browse/MODINVSTOR-1105

https://folio-org.atlassian.net/browse/MODOAIPMH-492

@Magda Zacharska

@Viachaslau Khandramai (Deactivated) 

@Mikita Siadykh 

 

 

OAI-PMH

A new property cleanErrorsInterval has been added to OAI-PMH technical configuration. The property defines for how many days the error logs are stored.

 

  1. Retrieve OAI-PMH technical config via request: GET /configurations/entries?query=module="OAIPMH" and configName="technical".

  2. Update config: PUT /configurations/entries/{id} with body included parameter

cleanErrorsInterval:

{
"id": "{id}",
"module": "OAIPMH",
"configName": "technical",
"enabled": true,
"value": "{\"enableValidation\":\"false\",\"formattedOutput\":\"false\",\"srsClientIdleTimeoutSec\":\"20\",

\"maxRecordsPerResponse\":\"50\",\"srsHttpRequestRetryAttempts\":\"50\",\"fetchingChunkSize\":\"5000\",

\"cleanErrorsInterval\":\"30\"}"
}

 

Additional information can be found in: https://github.com/folio-org/mod-oai-pmh#configuration

https://folio-org.atlassian.net/browse/MODOAIPMH-514

@Viachaslau Khandramai (Deactivated) 

@Magda Zacharska 

OAI-PMH

Columns path_to_error_file_in_s3 and started_date has been added to the request_metadata_lb table

 

Requests metadata table should be empty or clean up in case there are records before upgrading.

 

https://folio-org.atlassian.net/browse/MODOAIPMH-545

Data export

New field userId has been added to jobExecution schema for completed jobs filtering purposes

 

No action is needed.  The migration script is executed automatically during the module upgrade.

 

https://folio-org.atlassian.net/browse/MDEXP-643

https://folio-org.atlassian.net/browse/MDEXP-639

@Magda Zacharska

@Viachaslau Khandramai (Deactivated) 

@Mikita Siadykh 

Users Loans

When the "Anonymize all loans" button is clicked a confirmation modal will now appear before the anonymization takes place. 

 

 

 

https://folio-org.atlassian.net/browse/UXPROD-3906

@Amelia Sutton 

Settings > Users > Permissions

Added new accordion "Assigned users" when viewing a permission set in settings. If the logged in user has the "Users: Can view permissions assigned to users" permission, this accordion contains a table listing the name (Last name, First name) and patron group of each user who has the permission assigned.

If the logged in user has the "Users: Can assign and unassign permissions to users" permission assigned, a button will appear at the top of the accordion labeled "Assign/unassign" which will bring up a modal to search for users and assign or unassign them the selected permission set.

 

 

 

https://folio-org.atlassian.net/browse/UIU-2872

https://folio-org.atlassian.net/browse/UIU-2873

https://folio-org.atlassian.net/browse/UIPFU-71

@Amelia Sutton 

 

Users Search

The keyword search in the Users app will now match on a user's middle name. Therefore Users keyword search now matches on:

  • username

  • personal.firstName

  • personal.preferredFirstName

  • personal.lastName

  • personal.middleName

  • personal.email

  • barcode

  • id

  • externalSystemId

  • customFields with the "Text Field" or "Text Area" custom field types

 

 

 

https://folio-org.atlassian.net/browse/UIU-2860

@Amelia Sutton

 

Inventory, Call-numbers

Migration needed to correct call-number shelving order that is used for call-number browse:

  • recalculate based on call-number type specified in a record

  • recalculate for NLM and SuDoc call-numbers

 

2-action script: before and after upgrade. Second action - before the reindex

Instructions provided on the page: Call-numbers migration

PLEASE NOTE THAT THIS SCRIPT HAS BEEN UPDATED ON Mar 01, 2024

PLEASE NOTE THAT THIS SCRIPT HAS BEEN UPDATED ON Mar 13, 2024

PLEASE NOTE THAT THIS SCRIPT HAS BEEN UPDATED ON Apr 02, 2024

 

https://folio-org.atlassian.net/browse/UXPROD-4327

@Pavlo Smahin 

Agreements

Increased memory requirements. Module descriptors updated to reflect these

In testing the latest release of mod-agreements is using slightly more memory. While it cannot be predicted how this will affect any particular environment it is recommended to review the updated module descriptors as per https://github.com/folio-org/mod-agreements/pull/684/files

Review available memory and MaxRAMPercentage used by mod-agreements

 

@Owen Stephens 

Agreements Local KB

New configuration KBIngressType controls whether external knowledge base data is obtained through a harvesting/pull model (where mod-agreements fetches data from external systems) or through a push model (where an external system pushes data into mod-agreements via an API endpoint)

The application determines which KBIngressType is to be used through an environment variable: INGRESS_TYPE 

This can have the values:

  • Harvest (Default and used is no INGRESS_TYPE environment variable is set)

  • PushKB 

Although the KBIngressType can be set via the environment variable, it is not recommended that a running system is switched between services.

While the  PushKB ingress type has been tested in the hosted-reference environments (snapshot and snapshot-2) it has not yet been tested in a more production like environment where larger data sets can be loaded and where the use of this process over a period of time can be monitored for any issues

This being the case it is not recommended that mod-agreements v6.x.x is used with

ingressType = KBIngressType.PushKB

in a production environment without first running extensive testing

No action is needed to keep the population of the Agreements Local KB from an external  knowledge base operating as previously as the default services used in mod-agreements v6.x.x is Harvest which is the same method as previous versions of mod-agreements.

In either configuration file upload (JSON or KBART) in the Local KB Admin module can still be used in addition to integration with an external knowledge base 

@Owen Stephens 

https://folio-org.atlassian.net/browse/UXPROD-3886

 

Agreements Local KB

New titleInstanceResolverService  available which uses work (rather than title) level IDs to match data from external sources to the local KB

The titleInstanceResolverService   controls how resource data from external sources (added through external knowledge base integration, other system integrations or file upload). In mod-agreements v6.x.x a new service WorkSourceIdentifierTIRSImpl  is added

The application determines which titleInstanceResolverService is to be used through an environment variable: TIRS

This can have the values:

  • IdFirst (Default and used is no TIRS environment variable is set)

  • WorkSourceIdentifier 

  • TitleFirst 

Although the titleInstanceResolverService can be set via the environment variable, it is not recommended that a running system is switched between services.

While the new  WorkSourceIdentifier  method has been tested in the hosted-reference environments (snapshot and snapshot-2) it has not yet been tested in a more production like environment where larger data sets can be loaded and especially in situations where the incoming data from external data sources interacts with existing data in the Agreements Local KB which may have been loaded from various sources

This being the case it is not recommended that mod-agreements v6.x.x is used with

TIRS = WorkSourceIdentifier 

in a production environment without first running extensive testing

No action is needed to keep the population of the Agreements Local KB from an external  knowledge base operating as previously as the default service used in mod-agreements v6.x.x is IdFirst which is the same method as previous versions of mod-agreements.

Whether it is being used or not introduction of the new WorkSourceIdentifierTIRSImpl method has resulted in a change to the processing of data added through file upload (JSON or KBART) in the Local KB Admin module.

The import documentation has been updated to reflect these changes and is available at https://drive.google.com/drive/folders/1YFZyKKm8NsqGJKC3EhMJPFBi57GBiyk7?usp=drive_link

@Owen Stephens 

https://folio-org.atlassian.net/browse/UXPROD-3885

https://folio-org.atlassian.net/browse/ERM-3018

 

Requests, Discovery

New endpoints at edge-patron and mod-patron added that return available Pickup service points - This is a Discovery UX related enhancement (e.g., Locate and EDS).

 

 

 

@Anne Ekblad

Oleksandr Kurash

https://folio-org.atlassian.net/browse/UXPROD-4480

 

Export manager

migrated mod-data-export-spring to quartz implementation

No longer need to re-enable modules. Just install and enable once

This would be a consideration for after the upgrade

More than one mod-data-export-spring can now be run in parallel.

@Serhii_Nosko 

Invoices

Invoices can now be assigned to previous fiscal years. When processed all transactions will be made against the corresponding fiscal year.

 Users will need specific permissions to perform this action (see below). 

No action required

If ignored invoices will continue to apply to the current fiscal year.

@Dennis Bridges 

Users

Integration with Kafka was added to mod-users.

 

Make sure that environment variables KAFKA_HOST and KAFKA_PORT are set before upgrading the module, otherwise mod-users startup fails with "Failed to construct kafka consumer".

Kafka events are sent only for ECS based envs by design, though.

 

@Dennis Bridges 

Users

User type is a required field. For non-consortia environments, it is optional but can be used if desired through the UI.

In a consortia environment, users must be given a type of "patron" OR "staff". There is also a type of "system" and "shadow", "dcb" that is used by FOLIO to manage user accounts and access across members.

 

Can not be ignored when creating users as it will be required in ECS environments. In non-ECS environments selecting a value or leaving this field blank will have no consequence. If a value is set it will be possible to filter accounts based on this data.

@Dennis Bridges 

Reporting (formerly known as LDP)

With the addition of two major new features (support for Metadb and pre-authored reports), the LDP app is now renamed Reporting. This reflects its ability to provide near-real-time information based on complex pre-authored reports.

The Reporting App is now compatible with Metadb.

 

To point to a Metadb instance, the configuration will need to be updated in the Settings → Reporting → Database Configuration.

 

@Corrie Hutchinson (Unlicensed) 

https://folio-org.atlassian.net/browse/UILDP-92

 

Reporting (formerly known as LDP)

Using the 'Run Report' tab in the Reporting App, a user can run a report and specify input parameters against a query stored in a GitHub repository.

Documentation on how to write, store, connect, and publish reports used by this feature. 

To use, a GitHub repository must be added in Settings → Reporting → Report repositories.

 

@Corrie Hutchinson (Unlicensed) 
https://folio-org.atlassian.net/browse/UILDP-97

https://folio-org.atlassian.net/browse/UILDP-98

Authorities, mod-entities-links

 

When enabling mod-entities-links the tenantParameters parameter passed to Okapi must include loadReference=true

 

 

@Pavlo Smahin 

Authorities

Authorities, authority note types, authority source files, and the authority reindex API have been relocated from mod-inventory-storage to mod-entities-links. The implementation remains consistent with the previous version, including APIs and permissions. The database schema was changed.

  1. Migration script for existed authorities could be found on the page: Authorities migration

  2. Upgrading mod-entities-links and mod-inventory-storage have to be done in one Okapi install request.

 

 

@Pavlo Smahin 

Search

 

Reindex for instance records are required.

 

mod-search reindex endpoint was updated (now it is possible to change index settings. Check MSEARCH-436 and MSEARCH-437for details.

 

 

@Pavlo Smahin 

quickMarc

 

mod-quick-marc does not support high availability (HA). Only one instance of the module should be running at a time.

 

@Pavlo Smahin 

 

Lists

New app

mod-lists needs an S3 bucket (or an S3-compatible bucket using something like MinIO or Ceph) in order to support exporting list contents

ui-lists depends on the Query Builder plugin (v1.0.2) being present in the Stripes bundle, so this will need to be manually included when building the bundle.

This should be set up prior to module installation, as the bucket name is a required system property. Without this, this function will not work

The module does work without an S3 bucket, however the list export functionality will not work.

@Matt Weaver 

@Kathleen Moore 

FQM

New module

We highly recommend running mod-fqm-manager with read/write split, using the standard read/write split configuration, in order to prevent the module from impacting the performance of other FOLIO modules

 

This is not required, but is HIGHLY recommended

@Matt Weaver 

SRS, Data import (marc record matching)

MODSOURCE-601 requires the execution of scripts to populate marc_indexers version data for existing records so that existing marc records can be matched/found using marc fields other than 001, 999f$s, and 999f$i.

 

The scripts to populate marc_indexers version should be run after upgrading mod-source-record-storage from v5.6.7 (or lower) to v5.7.0.
During the module upgrade from v5.6.7 (or lower) to v5.7.0 it is recommended to set property srs.record.matching.fallback-query.enable = true to enable the fallback query, ensuring the lookup of records imported prior to v5.6.8 until these scripts have been completed. 
After the scripts are completed, this property can be set to false (which is the default value) in order to avoid fallback query execution, as it will be redundant once the scripts are finished.

 

@Kateryna Senchenko 

https://folio-org.atlassian.net/browse/MODSOURCE-601

https://folio-org.atlassian.net/browse/MODSOURCE-681

 

Requests

Request field fulfilmentPreference has been renamed to fulfillmentPreference

 

This is a breaking change. All third party integrations that use request related APIs (like /circulation/requests... or /request-storage/requests...) need to change the spelling of this field name accordingly.

 

@Alexander Kurash 

https://folio-org.atlassian.net/browse/CIRC-253

https://folio-org.atlassian.net/browse/CIRCSTORE-413

 

Domain events (mod-pubsub)

Fallback credentials for mod-pubsub's system user have been removed from the code.

Before Poppy, libraries could use optional environment variables SYSTEM_USER_NAME and SYSTEM_USER_PASSWORD to override default user credentials. Now these variables become mandatory. If they are not present in the system, mod-pubsub will crash immediately after start.

Set environment variables SYSTEM_USER_NAME and SYSTEM_USER_PASSWORD (if they are not present) before upgrade.

 

@Alexander Kurash 
@Oleksandr Vidinieiev 
https://folio-org.atlassian.net/browse/MODPUBSUB-278

Search, Inventory

To make mod-search consume all types of changes for instances, holdings, items, and changes related to bound-with functionality it has a consumer with a default Kafka topic pattern: 

(${ENV}\.)(.*\.)inventory\.(instance|holdings-record|item|bound-with)

This pattern could be changed by setting KAFKA_EVENTS_CONSUMER_PATTERN environment variable.

If the library requires the default behavior of mod-search, please ensure that the KAFKA_EVENTS_CONSUMER_PATTERN is either omitted from the environment variables or is set to the same value as the default pattern.

 

 

@Pavlo Smahin

mod-circulation

Integration with Kafka was added to mod-circulation.

Without valid Kafka configuration the module will crash at startup.

Make sure that environment variables KAFKA_HOST and KAFKA_PORT are set before upgrading the module.

More information on supported environment variables and their default values can be found in mod-circulations README.

@Oleksandr Vidinieiev@Alexander Kurash

https://folio-org.atlassian.net/browse/CIRC-1958

 

mod-entities-links

Needs authority data copied from consortium central tenant to consortium member tenant when enabled for new consortium member tenant

Without authority data in member tenant instance-authority link propagation will be broken and reports exported from member tenant may miss data.

Execute 2 scripts to copy data from a central tenant to a new member tenant

Adding a new member tenant to consortium. mod-entities-links scope

Only in consortium environment for a member tenant

@Viacheslav Kolesnyk 

@Pavlo Smahin 

Data Import Job Profiles (mod-di-converter-storage)

Changed structure of storing links between profiles.

Some links to Action Profiles might be missing after the initial migration (fixed with CSP#2).

Editing Job Profiles with reusable Action Profiles can lead to unlinking them from other Job Profiles (fixed with CSP#1)

If possible, migrate from Orchid to Poppy CSP#2.

After migration review existing Job Profiles to verify they migrated correctly.

In case issues are found, Job Profile can be updated manually. For Poppy before CSP#1 - pay attention to reusable Action Profiles, unlinking from one Job Profile will unlink it from all the others that use it.

 

@Kateryna Senchenko 

@Ryan Taylor 

https://folio-org.atlassian.net/browse/MODDICONV-365

https://folio-org.atlassian.net/browse/MODDICONV-361

Dashboard

A new mechanism for storing dashboard layouts has been implemented. To ensure existing dashboards (i.e. migrated from previous versions) are setup to use this new mechanism a special admin job is required

Only relevant for those upgrading from previous versions of Dashboard where dashboards have already been created. New dashboards created after the upgrade are not affected.

The required script is only available with mod-service-interaction 3.0.3

After updating to mod-service-interaction 3.0.3 (included in Poppy CSP #1):

With a user with the “Dashboard: Dashboard administrator” permission allocated

GET <okapi base URL>/servint/admin/ensureDisplayData

Expected response:

200 OK

{ "status": "OK" }

 

 

@Owen Stephens https://folio-org.atlassian.net/browse/SI-45

 

Inventory and Orders configuration

Invalid ISBN has been added to order as a possible product identifier type

Orders fetches the identifier type from inventory, using "name":"Invalid ISBN" , (or, from Ramsons on as fallback "id":"fcca2643-406a-482a-b760-7a7f8aec640e" ). If it doesn’t exist orders will fail. This identifier type is inventory reference data.

Navigate to inventory settings and select resource identifier types (or use /identifier-types API). Ensure there is an type with the name Invalid ISBN (may have any id), (or, from Ramsons on, a type with id fcca2643-406a-482a-b760-7a7f8aec640e , may have any name, eg. a translated name).

 

@Dennis Bridges https://folio-org.atlassian.net/browse/MODORDERS-927

@Julian Ladisch https://folio-org.atlassian.net/browse/MODORDERS-1094

Circulation Storage

Migration from Orchid to Poppy resets reference data: https://github.com/folio-org/mod-circulation-storage/tree/v17.1.0/reference-data

Other modules don’t touch existing reference data when migrating with parameter loadReference = true, but mod-circulation-storage does.
Most notable reference data that gets reset to default: Circulation rules.

If library has changed any reference data and migrates using loadReference = true: Make a backup of reference data (cancellation-reasons, circulation-rules-storage, loan-policies, patron-notice-policies, request-policies, staff-slips) before migration and restore afterwards.

 

@Stephanie Buck https://folio-org.atlassian.net/browse/CIRCSTORE-496

Orders Storage

Migration from Orchid to Poppy resets reference data:

Only the records listed in the directories above are affected, other custum closure reasons and custom aquisition methods are unaffected.

Other modules don’t touch existing reference data when migrating with parameter loadReference = true, but mod-orders-storage does.

If you have deleted official reference data: Delete it again after the migration.

If you have kept the reference data with the official id but changed the name: Back up before migration and restore afterwards.

 

https://folio-org.atlassian.net/browse/MODORDSTOR-408