Changes and required actions
Functional Area | Change or Additions | Considerations | Action timing, | Comments | Contact person, |
---|---|---|---|---|---|
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. |
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 |  | @Julian Ladisch FOLS3CL-20: Java 17, upgrade dependencies for PoppyClosed  |
Deployment | Set | Module will fail on startup or when enabling a tenant if system user password is not set. Consider setting a different | 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 |  | @Julian Ladisch SECURITY-9: Secure setup of system users by defaultCompleted  |
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 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 It is also possible to configure the token cookie When the 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
A legacy token tenant is a tenant for which a request to the legacy | Follow instructions here for updating third party integrations and for configuration. In Poppy, backend modules default to using the new |  | @Steve Ellis  |
Password reset link (mod-users-bl) | Token in the reset password link expires early. | Ensure that mod-users-bl’s | Before or after upgrade |  | @Steve Ellis , @Julian Ladisch MODUSERBL-185: RESET_PASSWORD_* values may conflict with mod-authtoken configurationClosed |
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:Â
| 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)  |
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:Â
| 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) |
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. |  |  | @Kathleen Moore, @Ryan Taylor |
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 INNREACH_TENANTS variable details   |
Requests, Request policies, Service points |
|  |  |  | @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”, There are no new options or features in the notice policy or the notice templates; rather, the existing triggers have expanded their scope. | 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”, There are no new options or features in the notice policy or the notice templates; rather, the existing triggers have expanded their scope. |  | 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”:
|  | 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:
|  | 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: | 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: |  |  |  | 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. | Â |
cleanErrorsInterval: { \"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. | Â | |
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:
|  |  |  | 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:
|  | 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 The application determines which This can have the values:
| Although the While the  This being the case it is not recommended that mod-agreements v6.x.x is used with
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 | 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 The The application determines which This can have the values:
| Although the While the new  This being the case it is not recommended that mod-agreements v6.x.x is used with
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 | Whether it is being used or not introduction of the new 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) |
Authorities, mod-entities-links |  | When enabling mod-entities-links the |  |  | @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. |
|  |  | @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. |  | @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 |
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 |
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
Expected response:
{
"status": "OK"
} Â | Â | @Owen Stephens https://folio-org.atlassian.net/browse/SI-45 Â |
Inventory and Orders configuration |
| Orders fetches the identifier type from inventory, using | Navigate to inventory settings and select resource identifier types (or use | Â | @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. | 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. |  |
Â