26 May 2022
Koha is the first free and open source software library automation package (ILS). Development is sponsored by libraries of varying types and sizes, volunteers, and support companies from around the world. The website for the Koha project is:
Koha 22.05.00 can be downloaded from:
Installation instructions can be found at:
Koha 22.05.00 is a major release, that comes with many new features.
It includes 6 new features, 239 enhancements, 360 bugfixes.
You can learn about the system components (like OS and database) needed for running Koha here: https://wiki.koha-community.org/wiki/System_requirements_and_recommendations
[28786] Two-factor authentication for staff client - TOTP
Sponsored by Orex Digital
This new feature adds an initial optional implementation of two-factor authentication (2FA) to improve security when logging into the staff interface.
This implementation uses time-based, one-time passwords (TOTP) as the second factor, letting librarians use an application to handle it and provide them the code they need when logging in.
It is enabled using the new system preference "TwoFactorAuthentication".
Librarians can then enable 2FA for their account from More > Manage Two-Factor authentication. To setup: 1) Scan the QR code with an authenticator app. 2) Enter the one time code generated. For future logins, librarians are prompted to enter the authenticator code after entering their normal login credentials.
Any authenticator app, such as Google Authenticator, andOTP, and many others can be used. Applications that enable backup of their 2FA accounts (either cloud-based or automatic) are recommended.
[19532] Recalls for Koha
This new feature introduces the ability for patrons to place a recall on an item from the OPAC detail. Patrons can see details of their requested recalls in the OPAC and can cancel the recall before it is returned.
Librarians can view and administer the recalls in the Circulation interface of the staff interface which displays a list of recalls, overdue recalls, recalls awaiting pickup, recalls to pull, and old recalls.
The amount of time the recalled item has to be returned and the amount of time it will wait for pickup can be set in circulation and fine rules in the unit of days.
After an item is recalled it cannot be renewed. When the item is returned the recall can be confirmed or cancelled.
Recalls are marked as overdue by the overdue_recalls.pl cronjob or expired by the expired_recalls.pl cronjob. See https://wiki.koha-community.org/wiki/Catalyst_IT_Recalls
[6815] Capture member photo via webcam
Adds the option to take a photo of the patron via a webcam for patron photos.
[13952] Import and export of authority types
Sponsored by Catalyst
This feature allows the import and export of authority types to match the capabilities of biblio frameworks.
[26296] Use new table column selection modal for OPAC suggestion fields
This changes the selection of values for OPACSuggestionUnwantedFields and OPACSuggestionMandatoryFields from drop down lists to a modal.
[28082] Add acquisitions toolbar to vendors on vendor search page
This patch updates the vendor search results page in acquisitions so that a button toolbar is shown for each vendor in search results. This gives quick access to operations for each vendor, like editing the vendor, adding a basket, or receiving a shipment.
Now the number of open baskets and subscriptions is shown for each vendor in the search result, linking to the details of those entries.
Inactive vendors are now styled differently than active vendors in order to improve clarity.
[30130] Allow setting EDI type at the vendor level
There are two predominant competing EDI standards, EDItEUR and BiC, with subtle differences in how they interpret some EDI message fields.
This patch allows administrators to pick which standard the Vendor is conforming to rather than using a hardcoded and un-maintained SAN mapping in the module.
[30135] We should allow configuration of whether EDI LSQ segments map to 'location' or 'collection'
EDItEUR describes the LSQ segment as "A code or other designation which identifies stock which is to be shelved in a specified sequence or collection."
In Koha, this could be interpreted as either 'location' or 'ccode'; This bug makes that configurable for each EDI vendor, defaulting to location as that was the previously hard coded configuration.
[30510] Add a Patron reason column to the suggestion table in the staff interface
This adds the patron reason for a suggestion to the suggestions summary table in the staff interface.
[27266] Move C4::Biblio::GetMarcAuthors to Koha namespace
Sponsored by Bibliotheksservice-Zentrum Baden-Württemberg (BSZ)
This enhancment moves C4::Biblio::GetMarcAuthors to Koha::Biblio->get_marc_authors. This is so the method can be used in templates and notices.
[28617] misc/kohalib.pl no longer useful
This enhancement removes the script misc/kohalib.pl.
The purpose of this script was to load the relevant Koha lib for the different scripts (installation, cronjob, CLI, etc.). However, it is not used consistently and we prefer to rely on PERL5LIB.
If upgrading ancient Koha systems from tarballs double-check that PERL5LIB is set in crontab.
[28998] Encrypt borrowers.secret
Sponsored-by: Orex Digital
[29741] Add Koha::Patron->safe_to_delete
This enhancement adds a handy method for checking if a patron meets the conditions to be deleted. These conditions are:
- Has no linked guarantees
- Has no pending debts
- Has no current checkouts
- Is not the system-configured anonymous user
It also adapts the DELETE /patrons route to use the newly introduced Koha::Patron->safe_to_delete method.
[29746] Add a handy Koha::Result::Boolean class
This development introduces a new library, Koha::Result::Boolean, that will be used in method that need to return a boolean, but could also want to carry some more information such as the reason for a 'false' return value.
A Koha::Result::Boolean object will be evaluated as a boolean in bool context, while retaining its object nature and methods.
[30076] Add ability to check patron messaging preferences from a notice
This enhancement gives notices access to a patron's messaging preferences. For example, a hold slip could contain a line if the patron has requested SMS notifications for waiting holds, or perhaps phone notifications. The format for this new method is as follows: [% patron.has_messaging_preference({ message_name => 'Item_Checkout', message_transport_type => 'email' }) %]
[29873] 2FA: Generate QR code without exposing secret via HTTP GET
Instead of calling the (deprecated) Google Charts API and exposing our secret, we create the image ourself and push it as a data uri in the src attribute of the image (inline image).
[26587] Cache libraries in Branches TT plugin to improve performance
Sponsored by Lund University Library
[29391] Improve output of reservoir search
This patch makes the cataloging reservoir search results a configurable DataTable. This adds column configuration, export, and sorting. The empty edition and date columns are removed, and an import data column is added.
[29781] Allow item batch modification to use capturing groups in regex option
This enhancement adds support for capture groups in the regular expression option of batch item modification.
One may now use
(\d+)
for example to capture digits in the match and then the$1
placeholder in the replace.
[30604] Add value builders for UNIMARC 146 ($a, $h and $i)
This enhancement for UNIMARC field 146 adds value builders for subfields $a, $h, and $i. These are based on the official UNIMARC codes.
[29519] Add option to resolve a return claim at checkin
This enhancement adds the option to resolve a return claim upon the next check-in of the item.
[28962] Unverified self registrations should be removed shortly
This fixes the cleanup_database script so that the option to delete unverified self registrations (del-unv-selfreg) works. It also adds this option to the standard crontab, defaulting to 14 days (the default notice says unverified registrations will expire "shortly").
Note: If you don't use self registration with a verification email, this does not affect you. If you do use self registration, check the system preferences and settings - particularly PatronSelfRegistrationDefaultCategory.
[30511] Don't lock entire database when dumping Koha instance
Sponsored by Catalyst
[27868] Adding the Expiration Date to the Holds Awaiting Pickup report
This enhancement makes each hold's expiration date visible on the Holds Awaiting Pickup page. Since this is the date Koha uses to decide when a waiting hold should expire and be cancelled, making it visible decreases confusion.
[28377] Use the API to suspend/resume holds
This enhancement changes the patron page (detail and circulation) so that is uses the API to suspend and resume holds on the holds tab.
It also removes the svc/hold/{resume|suspend} files as they are no longer used.
[29346] Real-time holds queue update
Sponsored by Montgomery County Public Libraries
Enabled by default, this feature can be opted out using the RealTimeHoldsQueue system preference.
[29760] Show patron category in Holds queue
Adds the patron category as a new column to Circulation > Holds queue.
[26257] Move translatable strings out of subscription-add.tt and into subscription-add.js
This enhancement moves the definition of translatable strings for serial subscriptions (subscription-add.tt) out of templates and into the corresponding JavaScript file, using the new JS i81n function.
[29596] Add Yiddish language
Sponsored by Universidad Nacional de San Martín
This enhancement adds the Yiddish (יידיש) language to Koha. Yiddish now appears as an option for refining search results in the staff interface advanced search (Search > Advanced search > More options > Language and Language of original) and the OPAC (Advanced search > More options > Language).
[26346] Add option to make a public list editable by library staff only
Sponsored by Catalyst and Horowhenua District Council, New Zealand
Add a new option for staff users to manage the contents of public lists from the staff client and OPAC.
This patchset also allows superlibrarian users, or those with the 'edit_public_lists' sub-permission, to edit the configuration of existing public lists.
[28716] Hide toolbar and opaccredits when printing lists
This removes the toolbar (Advanced Search | Authority Search | etc) and opaccredits (where set) from printed lists. The printed lists are cleaner without these.
[11083] Authority search result display in staff interface should be XSLT driven
This enhancement enables customising the authority search results summary in the staff interface using XSLT (for MARC21 and UNIMARC).
Key features;
- Use the new system preference AuthorityXSLTResultsDisplay to set the location of the XSLT file, either the full path to a file on the Koha server or a URL.
- The system preference value can contain {langcode} and {authtypecode} which will be replaced by the appropriate value.
- If errors occur, the custom XSLT file is ignored and the default summary is displayed.
[29965] MARC preview for authority search results
Sponsored by Education Services Australia SCIS
This enhancement makes the authority MARC preview modal available for the general authority search results.
[29990] Show authority heading use in search results
Sponsored by Education Services Australia SCIS
Authority heading use is based on authority MARC 008/14-16. This could be useful to show on authority search results, if new system preference ShowHeadingUse is enabled.
[29491] Improve display of notices in patron details
In patron notices table, notices are now shown in a modal dialog instead of inline in the table. The "Resend" button is shown in the modal window controls.
[13188] Make it possible to configure mandatory patron data differently between OPAC registration and modification
Adds the system preference PatronSelfModificationMandatoryField in order to separate borrower registration from borrower modification. Initial value is a copy of system preference PatronSelfRegistrationBorrowerMandatoryField.
[14242] Use ISBN-field to fill out purchase suggestions using Google Books API
This patch adds a system preference, OPACSuggestionAutoFill, which enables a feature within the OPAC Purchase Suggestions where a user can enter an ISBN and use a Google API to pull the relevant data and input it into the form.
[15594] Sequence of MARC 260 subfields different on XSLT result list and detail page
This enhancement improves the display of MARC field 260 in the detail page for the OPAC and staff interface by using the order of subfields in the record. Previously, $a$b$a$b would display as aabb.
[17018] Split AdvancedSearchTypes for staff and OPAC
Add a new system preference, OpacAdvancedSearchTypes, as an OPAC-specific version of the AdvancedSearchTypes preference. Values from AdvancedSearchTypes are copied to OpacAdvancedSearchTypes so that behavior is consistent.
[24221] Convert OPACMySummaryNote system preference to news block
OPACMySummaryNote system preference is converted to a news block.
Note that its HTML id is now 'OpacMySummaryNote' instead of 'opac-my-summary-note'.
[28876] No renewal before advisory text not wrapped in selector
This enhancement adds more
<span>
s to the user summary page in the OPAC so that information about the renewal status can be targeted with CSS or JS. It adds each<span>
with a "usr-msg" class for general styling and a specific class for each renewal message, for example:
<span class="usr-msg no-renew-hold">Not renewable <span class="renewals">(on hold)</span></span>
These classes are added:
- no-renew-hold: Not renewable (on hold)
- no-renew-too-many: Not renewable (too many renewals)
- no-renew-unseen: Item must be renewed at the library
- no-renew-overdue: Not allowed (overdue)
- no-renew-too-late: No longer renewable
- auto-renew-fines: Automatic renewal failed, you have unpaid fines
- auto-renew-expired: Automatic renewal failed, your account is expired
- no-renewal-before: No renewal before [date]
- automatic-renewal: Automatic renewal
[29212] Use Flatpickr on OPAC pages
This enhancement replaces the jQueryUI date picker used on OPAC pages with Flatpickr. The jQueryUI date picker is no longer supported.
[29845] Styling OverDrive buttons is difficult
Adds ID's to the action buttons on the OverDrive results page in order to make them easier to individually style.
[29960] Remove Modernizr dependency in the OPAC
This patch refactors the code around JavaScript-driven responsive behavior in the OPAC. The use of Modernizr removed as it is no longer needed.
It also adds a missing entry for Enquire.js licensing on the About page.
[30243] When OPACSuggestionMandatoryFields includes branchcode the dropdown should default to an empty value
Creates an empty value and defaults to it when OPACSuggestionMandatoryFields includes branchcode. This forces users to make a choice regarding branch.
[30288] Provide links to OPACUserJS and OPACUserCSS from News/HTML customizations
Sponsored by Catalyst
[9097] Add option to trigger 'Welcome mail' manually
This enhancement adds a button to the more menu of the patron details page allowing staff to manually trigger sending the WELCOME notice to the user.
[15156] Get all Borrowers with pending/unpaid fines/accountlines
This enhancement adds an API call that returns patrons filtered by how much money they owe, between passed limits (for example less than $2.50 or more than $0.50). Optionally, can limit to debts of a particular debit_type and owed to a particular library.
[29005] Add option to send WELCOME notice for new patrons added via patron imports
This enhancement adds a new option to patron imports allowing imports to trigger sending the 'WELCOME' notice for new user accounts created via this mechanism.
[30237] Rename/rephrase AutoEmailOpacUser/ACCTDETAILS feature to clarify intended use
With the removal of patron plaintext passwords from the ACCTDETAILS notice in bug 27812 the feature effectively got repurposed to become a 'Welcome email'.
This enhancement rephrases the system preference description and replaces the ACCTDETAILS notice with a new WELCOME notice.
We keep the ACCTDETAILS notice for reference at upgrades, but it will not appear for new installations and it is not longer sent in any circumstances.
[30611] Add ability to trigger a patron password reset from the staff client
This enhancement adds a button to the patron details page in the client to allow librarians, with appropriate permissions, to trigger a password reset for patrons.
The result is a notice sent to the user with a fresh password reset link allowing the user to enter a new password for their account.
[30072] Add more holds hooks
This development adds plugin hooks for several holds actions. The hook is called after_hold_action and has two parameters
- action: containing a string that represents the action, possible values: fill, cancel, suspend and resume.
- payload: A hashref containing a hold key, which points to the Koha::Hold object.
[30180] Deprecate after_hold_create hook
The 'after_hold_create' hook is deprecated and scheduled for removal in the next major release.
If you find deprecation warnings for some plugin in your logs, please ask the plugin authors to update it to use the new 'after_hold_action' hook instead.
[28020] Error responses should return a code
This development makes our error responses include an
error_code
that will be documented on each route, allowing better API usage on error conditions.
[29620] Move the OpenAPI spec to YAML format
This enhancement moves all the Koha REST API specification from json to YAML format. It also corrects two named parameters incorrectly in camelCase to sanake_case (fundidPathParam => fund_id_pp, vendoridPathParam => vendor_id_pp).
[29810] Add embed options documentation
This patch adds documentation of the different embed options the REST API provides.
[30194] Update required JSON::Validator version
This development adapts Koha so it works with the latest versions of:
- Mojolicious
- JSON::Validator
- Mojolicious::Plugin::OpenAPI
[5697] Automatic linking in guided reports
This patch adds a feature to automatically link certain database columns in report results. If your report returns itemnumber, biblionumber, cardnumber, or borrowernumber, that cell in the report will contain a menu:
- borrowernumber: View, edit, check out
- cardnumber: Check out
- itemnumber: View, edit
- biblionumber: View, edit
A link at the top of the report results will toggle the new menus on and off in case you don't want to see the menus. Your choice will persist until you log out.
The feature works with column name placeholders, so if you want the table column to be a human readable label you can still get automatic linking, for example: [[items.itemnumber|Item number]]
[26370] Add ability to disable demagnetizing items via SIP2 based on patron categories
This patch adds a new option to the SIP config,
inhouse_patron_categories
. Adding a comma-separated list of patron category codes to this option will cause the SIP checkout to never send the 'demagnetize' command to the checkout preventing said users from removing the items from the library.
[29936] Add ability to disable hold capture via SIP checkin
Sponsored by Cheshire Libraries Shared Services
This enhancement adds a new
holds_get_captured
configuration option to SIP accounts.The new option defaults to enabled, as has been the case since bug 3638 was pushed. However, it allows for disabling hold capture so that items are not automatically assigned to holds at SIP check-in; The alerts messages will continue to show, however, to allow items to be put to one side and then captured by a subsequent staff check-in.
[23352] Define serial's collection in the subscription
Sponsored by Catalyst
[17748] Show due date in item search results
Sponsored by Bibliotheksservice-Zentrum Baden-Württemberg (BSZ)
This enhancement adds the due date of an item to the item search results. The due date column will also show when exporting results to a CSV file.
[20398] Add a system preference to disable search result highlighting in the staff interface
This enhancement adds a new system preference StaffHighlightWords. This enables highlighting of words in search results for the staff interface to be turned on or off.
[27631] Accessibility: Staff interface - h1
on each page is Logo but should be page description/title
Sponsored by Catalyst
This enhancement, as part of improving the accessibility of the staff interface, makes the main topic/title of the page the
h1
rather than the logo.
[29575] Add a JS render function equivalent of the patron-title.inc TT include
This enhancement adds a re-usable javascript render function that accepts a Koha REST APIi Patron object and outputs the HTML representation.
[7374] Add remote image option for authorized values
This patch updates authorized values management to add the option of specifying a remote image to be associated with an authorized value. This functionality matches what was already available for item types: The ability to specify a full URL to an image file. Modifying a collection code with a remote image will make the image visible on catalog advanced search pages in the OPAC and staff interface when the option to select a collection is enabled.
[29626] Map biblioitems.place to 264$a by default (MARC21)
This updates the default Koha to MARC mappings so that biblioitems.place maps to 264$a. Currently it only maps to 260$a, and RDA uses 264$a.
[29627] Map biblioitems.publishercode to 264$b by default (MARC21)
This updates the default Koha to MARC mappings so that biblioitems.publishercode maps to 264$b. Currently it only maps to 260$b,and RDA uses 264$b.
[29634] Map biblio.medium to 245$h by default (MARC21)
This updates the default Koha to MARC mappings so that biblio.medium maps to 245$h. The medium field was added in 19.11 but it was not linked to 245$h.
[27470] Improve link text for logging in
Sponsored by Catalyst
[28405] Add author info to the holds page in the staff interface
This patch adds the author name to place a hold page (request.tt)
[29406] Improve display of OPAC suppression message
This enhancement changes the way the "Suppressed in OPAC" message is shown on the staff interface search results and the bibliographic detail page. Now the information is displayed like other bibliographic details.
[20076] Overdues email to library for patrons without email should be optional
Currently, two print notices are generated when running overdue_notices.pl if a patron does not have an email address:
- a print overdue notice for the patron, and
- an email message to the library with all the print versions of the overdue notices.
Depending on a library's work processes, they may want both or only the patron print overdue notice generated.
This enhancement adds a new system preference, EmailOverduesNoEmail, that allows libraries to choose whether to send or not send overdue notices for patrons without an email address to library staff. The default is set to send, as this preserves the current behaviour.
[22827] Automatic item modifications by age: add age depencency on other field(s) than dateaccessioned
This enhancement enables librarians to automatically modify items based on date fields other than items.dateaccessioned.
The 'Automatic item modifications by age' tool can now key rules off any one the following: items.dateaccessioned, items.replacementpricedate, items.datelastborrowed, items.datelastseen, items.damaged_on, items.itemlost_on, items.withdrawn_on.
Existing rules will continue to key off the items.dateaccessioned field.
[29824] Allow for quick spine labels to be editable for printing
Adds the ability to edit quick spine labels after they have been generated.
[22347] Translatability of ILSDI results for getavaibility
Sponsored by University Lyon 3
[28238] Add itemcallnumber to ILS-DI GetAvailability output
Sponsored by University Lyon 3
This enhancement adds the item call number to the ILS-DI GetAvailability output. This is useful for libraries that use discovery tools as patrons often don't check further for the call number, and then they don't have it when they look for the item.
(This list includes all bugfixes since the previous major version. Most of them have already been fixed in maintainance releases)
[29464] GET /acquisitions/orders doesn't honour sorting
Sponsored by ByWater Solutions
[29670] Restore functionality broken by bug 27708 for AcqCreateItem set to "placing an order"
This patch restores the lost GIR segments in EDI messages generated by orders with items attached.
[29631] 21.06.000.12 may fail
This fixes an issue when upgrading from 21.05.x to 21.11 - the uniq_lang unique key is failing to be created because several rows with the same subtag and type exist in database table language_subtag_registry.
<branchcode>0001
option[29637] AutoSwitchPatron is broken since Bug 26352
This fixes an issue introduced by bug 26352 in 21.11 that caused the AutoSwitchPatron system preference to no longer work. (When AutoSwitchPatron is enabled and a patron barcode is scanned instead of a book, it automatically redirects to the patron.)
[30600] Recalls sync problem between DBIx and kohastructure.sql
Sponsored by Catalyst
[27801] Entering multiple lines of an item in Point of Sale can make the Collect Payment field off
This fixes the POS transactions page so that the total for the sale and the amount to collect are the same.
Before this a POS transaction with multiple items in the Sale box, say for example 9 x .10 items, the total in the Sale box appears correct, but the amount to Collect from Patron is off by a cent.
[29457] Fee Cancellation records the wrong manager_id
Prior to this patch inadvertently the field borrowers.userid was used to fill accountslines.manager_id. This should have been borrowernumber.
This report fixes that and prints a generic warning.
[29136] Patron search on request.pl has performance and display issues
This fixes the performance and display of patron search results when placing a hold from a record details page using the staff interface. Patron results are now paginated and all the results are now available - previously all results were listed on one page, which could cause performance issues.
[29349] Item-level holds should assume the same pickup location as bib-level holds
Up until Koha 20.11 the pickup location when placing item-level holds was the currently logged-in library.
From Koha 21.05 the holding branch was used as the default.
This restores the previous behaviour so that the logged-in library (if a valid pickup location) is selected as the default pickup location for item-level holds. When it is not, an empty dropdown is used as a fallback.
[29906] When changing hold parameters over API (PUT) it forcibly gets to "suspended" state
The PATCH/PUT /api/v1/holds/{hold_id} API endpoint allows for partial updates of Holds. Priority and Pickup Location are both available to change (though it is preferred to use the routes specifically added for manipulating them).
Suspend_until can also be added/updated to add or lengthen an existing suspension, but the field cannot be set to null to remove the suspension at present.
This patch restores the suspen_until function to ensure suspensions are not triggered by unrelated pickup location or priority changes.
[24001] Cannot edit card template
This fixes errors that caused creating and editing patron card templates and printer profiles to fail.
[29586] "Hold reminder" notice doesn't show in messaging preferences in new installation
This fixes an issue with the installer files that meant "Hold reminder" notices were not shown in messaging preferences for new installations.
[30354] AUTO_RENEWALS_DGST notices are not generated if patron set to receive notice via SMS and no SMS notice defined
If an SMS notice is not defined for AUTO_RENEWALS_DGST and a patron has selected to receive a digest notification by SMS when items are automatically renewed, it doesn't generate a notice (even though the item(s) is renewed). This fixes the issue so that an email message is generated.
[28955] Add option to set default branch from Apache
Add support for OPAC_BRANCH_DEFAULT as an environment option. It allows setting a default branch for the anonymous OPAC session such that you can display the right OPAC content blocks prior to login if you have set up per branch website.
[30488] Error when placing a recall in the OPAC
Sponsored by Catalyst
[28943] Lower the risk of accidental patron deletion by cleanup_database.pl
If you use self registration but you do not use a temporary self registration patron category, you should actually clear the preference PatronSelfRegistrationExpireTemporaryAccountsDelay.
[29018] Deleting patrons from REST API doesn't do any checks or move to deletedborrowers
This fixes the REST API route for deleting patrons so that it now checks for guarantees, debts, and current checkouts. If any of these checks fail, the patron is not deleted.
[29786] Holds to pull report shows incorrect item for item level holds
This patch corrects an issue with the Holds to Pull report in which an incorrect barcode number could be shown for an item-level hold. The correct barcode will now be shown.
[29755] SIP2 code does not correctly handle NoIssuesChargeGuarantees or NoIssuesChargeGuarantorsWithGuarantees
This fixes SIP2 so that it correctly determines if issues should be blocked for patrons when the NoIssuesChargeGuarantees and NoIssuesChargeGuarantorsWithGuarantees system preferences are set. Currently, it only checks the noissuescharge system preference as the limit for charges, and not the other 'No Issues charge' system preferences.
[27770] ES: Deprecated aggregation order key [term] used, replaced by [key]
Sponsored by Lund University Library
[28610] Elasticsearch 7 - hits.total is now an object
Sponsored by Lund University Library
This is one of the changes to have Koha compatible with ElasticSearch 7. This one also causes the full end of compatibility with ElasticSearch 5. Users are advised to upgrade as soon as possible to ElasticSearch 7 since version 5 and 6 are not supported anymore by their developers.
[30402] Authority import hanging when replacing matched record
Sponsored by Educational Services Australia SCIS
[30628] Batch borrower modifications only affect the current page
This fixes the batch patron modification tool (Tools > Patrons and circulation > Batch patron modification) so that the changes for all selected patrons are modified. Before this, only the patrons listed on the current page were modified.
(This list includes all bugfixes since the previous major version. Most of them have already been fixed in maintainance releases)
[24866] Display budget hierarchy in the budget dropdown menu used when placing a new order
This improves the display for selecting a fund when placing a new order in acquisitions. It now displays as a hierarchy instead of a list without any indentation, for example:
Budget 2021 -- Book -- -- Adult fiction
[28855] Purging suggestions test should not be on timestamp
This changes the date field that cronjob misc/cronjobs/purge_suggestions.pl uses to calculate the number of days for deleting accepted or rejected suggestions. It now uses the managed on date, as the last updated date that was used can be changed by other database updates.
[29336] Some authorised_value FKs are too short
This fixes the length of the field definitions in the database for several authorised_value and authorised_value_category columns as they are too short. It changes the value to varchar(32).
[29758] CGI::param in list context in boraccount.pl warning
This removes the cause of warning messages ([WARN] CGI::param called in list context from...) in the plack-intranet-error.log when accessing the accounting transactions tab for a patron.
[29806] ->pickup_locations should always be called in scalar context
The Koha::Biblio->pickup_locations and Koha::Item->pickup_location methods don't always honour list context. Because of this, when used, they should assume scalar context. If list context was required, the developer needs to explicitly chain a ->as_list call.
This patch tracks the uses of this methods and adjusts accordingly.
[29957] Cookies not removed after logout
This patch adds a new config variable to koha-conf.xml called do_not_remove_cookie. By default, all cookies are cleared now. But you could uncomment the KohaOpacLanguage entry to preserve it.
[29487] Set autocomplete off for userid/password fields at login
This turns autocompletion off for userid and password fields on the login forms for the OPAC and staff interface.
[9565] Deleting a record should alert or fail if there are current subscriptions
This change prevents the deletion of records with current serial subscriptions.
Selecting "Delete record" when there are existing subscriptions no longer deletes the record and subscription, and adds an alert box "[Count] subscription(s) are attached to this record. You must delete all subscriptions before deleting this record.".
It also:
- adds a "Subscriptions" column in the batch deletion records tool with the number of subscriptions and a link to the search page with all the subscriptions for the record, and
- adds a button in the toolbar to enable selecting only records without subscriptions.
[28853] Textarea in biblio record editor breaks authority plugin
This fixes an issue when adding or editing record subfields using the authority plugin and it has a value with more than 100 characters. (When a subfield has more than 100 characters it changes to a text area rather than a standard input field, this caused JavaScript issues when using authority terms over 100 characters.)
[30159] Fix display of validation of important fields when biblio cataloguing
Sponsored by Education Services Australia SCIS
This patch adds a check for both mandatory and important fields when validating bibliographic records during cataloguing.
[30224] Wrong important field shown in cataloguing validation
Sponsored by Education Services Australia SCIS
This patch fxes the cataloguing validation messages to show the correct tag, when the whole field is important (not just a subfield).
[30797] Subfields linked to the dateaccessioned.pl value builder on addbiblio.pl throw a JS error
Sponsored by Chartered Accountants Australia and New Zealand
[29220] Minor fixes and improved code readability in circulation.pl
Sponsored by Gothenburg University Library
[29889] Incorrect library check in patron message deletion logic
This fixes the logic controlling whether a patron message on the circulation or patron details page has a "Delete" link. An error in the logic prevented messages from being removed by staff who should have been authorized to do so.
[10517] koha-restore fails to create mysqluser@mysql_hostname so zebra update fails
Sponsored by Reformational Study Centre
[29054] Stop warns from advance_notices.pl if not running in verbose mode
Sponsored by Catalyst
[28481] Register details "Older transactions" search does not include the selected day in the "To" field in date range
This fixes the search and display of older transactions in the cash register so that items from today are included in the results. Previously, transactions for the current day were incorrectly not included.
[28663] One should not be able to apply a discount to a VOID accountline
This removes the display of the 'Apply discount' button for VOID transactions.
[29952] Filter Paid Transactions Broken on Transactions tab in Staff
This fixes the "Filter paid transactions" link in the staff interface on the Patron account > Accounting > Transactions tab. It now correctly filters the list of transactions - only transactions with an outstanding amount greater than zero are shown ("Show all transactions" clears the filter). Before this fix, clicking on the link didn't do anything and didn't filter any of the transactions as expected.
[29115] Placing a club hold is not showing warnings when unable to place a hold
This fixes placing club holds so that checks are correctly made and warning messages displayed when patrons are debarred or have outstanding fees and charges.
[29338] Reprinting holds slip with updated expiration date
This patch adds a "Print hold/transfer" button to request.tt so staff can reprint hold/transfer slips without re-checking an item.
[29040] Uninitialized value warning in Languages.pm
This removes the cause of the warning message "Use of uninitialized value $interface in concatenation (.) or string at /kohadevbox/koha/C4/Languages.pm line 121." when editing item types.
[29585] "Go to field" in cataloguing alerts is not translatable
This fixes the 'Go to field' and 'Errors' strings in the basic MARC editor to make them translatable. (This is a follow-up to bug 28694 that changed the way validation error messages are displayed when using the basic MARC editor in cataloging.)
[29588] Yesterday and tomorrow in datepicker don't translate
This fixes "or", "Yesterday", "Today" and "Tomorrow" in the flatpickr date selector so they can be translated. (This was because _ was used when _ should have been used (_ is for .js files only)).
[29557] Auto renew notices should handle failed renewal due to patron expiration
This enhancement updates the default auto-renewal notices to tell patrons that their renewals have failed because their account has expired.
[17127] Can't hide MARC21 500 and others with NotesToHide
This fixes hiding notes fields (5XX in MARC21 and 3XX in UNIMARC) using NotesToHide. Before this you could hide one field and it worked. However, when hiding multiple fields one field would still always be visible. Now hiding notes fields works as expected.
[29036] Accessibility: OPAC buttons don't have sufficient contrast
This improves the accessibility of the OPAC by increasing the contrast ratio for buttons, making the button text easier to read.
As part of this change the OPAC SCSS was modified so that a "base theme color" variable is defined which can be used to color button backgrounds and similar elements. It also moves some other colors into variables and removes some unused CSS.
[29482] Terminology: This item belongs to another branch.
This replaces the word "branch" with the word "library" for a self-checkout message, as per the terminology guidelines. ("This item belongs to another branch." changed to "This item belongs to another library".)
[29556] MARC21slim2MODS.xsl broken by duplicate template name "part"
This fixes an error when making an unAPI request in the OPAC using the MODS format. A 500 page error was displayed instead of an XML file. Example URL: http://your-library-opac-domain/cgi-bin/koha/unapi?id=koha:biblionumber:1&format=MODS
[29611] Clubs enrollment layout problem in the OPAC
This fixes a minor HTML issue with the clubs enrollment form in the OPAC. The "Finish enrollment" button is now positioned correctly inside the bordered area and uses standard colors.
[29795] If branch is mandatory on patron self registration form, the pull down should default to empty
Creates an empty value and defaults to it when PatronSelfRegistrationBorrowerMandatoryField includes branchcode. This forces self registering users to make a choice for the library.
[27812] Remove the ability to transmit a patron's plain text password over email
This bugfix/enhancement improves the default security of Koha by removing the pass of the plain text password to the ACCTDETAILS notice on patron creation.
WARNING: You will need to update your notice template if you were relying on
<<borrowers.password>>
in this notice.
[28576] Add patron image in patron detail section does not specify image size limit
This updates the add patron image screen to specify that the maximum image size is 2 MB. If it is larger, the patron image is not added.
[30214] Send WELCOME notice for new patrons added via self registration
This enhancement extends the 'AutoEmailOpacUser' feature to also send WELCOME notices to users who register via the opac self registration system.
[29593] Wrong tag in GET /public/libraries spec
This updates the tag in GET /public/libraries (api/v1/swagger/paths/libraries.json file) from library to libraries.
[28977] Most-circulated items (cat_issues_top.pl) is failing with SQL Mode ONLY_FULL_GROUP_BY
This fixes an error that causes the most circulated items report to fail when run on a database with SQL mode ONLY_FULL_GROUP_BY and in strict SQL mode.
[29488] NumSavedReports system preference doesn't work
This fixes the saved reports page so that the NumSavedReports system preference works as intended - the number of reports listed should default to the value in the system preference (the initial default is 20).
[29530] When NumSavedReports is set, show value in pull down of entries
This updates the way the NumSavedReports preference value is used on the saved reports page. For the "Show" dropwdown list:
- it now displays the number set in NumSavedReports (previously it showed 20)
- when expanded it now shows the number set in NumSavedReports sequentially (for example, if NumSavedReports is 78, the menu options should be "10, 20, 50, 78, 100, All"), and
- it now displays 'All' if NumSavedReports is blank.
It also updates the description for the NumSavedReports preference to clarify that all reports are shown when no value is entered.
[29679] Reports result menu shows too many dividers
This removes borders between sections that are not required. The SQL report batch operations dropdown menu has divider list items which add a border between sections (bibliographic records, item records, etc.). This element is redundant because the sections have "headers" which also add a border.
[30142] ElasticSearch MARC mappings should not accept whitespaces
Sponsored by Steiermärkische Landesbibliothek
[30153] FindDuplicate ElasticSearch should not use lowercase 'and'
Sponsored by Steiermärkische Landesbibliothek
[28216] Fix vendor list group by in serials statistics wizard
This fixes an issue where vendors are repeated in the serials report.
[30035] Wrong month name in numbering pattern
Sponsored by Orex Digital
Sponsored-by: Orex Digital
[30204] Add subtitle to serial subscription search
Adds the biblio.subtitle to the 'Title' column on serial-search.pl.
[30205] Add biblio.subtitle to the subscription-detail.pl page
Add the biblio.subtitle to the serial subscription details page.
[29092] Table settings for account_fines table is missing Updated on column and hides the wrong things
Sponsored by Koha-Suomi Oy
[30107] When editing a desk, the currently logged in library is selected
Corrects a problem on the administration page for circulation desks where the default library was always being set to the logged in library instead of the library of the desk.
[29513] Accessibility: Staff Client - Convert remaining breadcrumbs sections from div to nav blocks
This improves the accessibility of breadcrumbs so that they adhere to the WAI-ARIA Authoring Practices. It covers additional breadcrumbs that weren't fixed in bug 27486 in these areas:
- Home > Acquisitions > [Vendor name > [Basket name]
- Home > Administration > Set library checkin and transfer policy
- Home > Patrons > Merge patron records
[29514] ILL requests: Remove extraneous › HTML entity from breadcrumbs
This fixes a small typo in the breadcrumbs section for ILL requests - it had an extra › HTML entity after "Home".
[29528] Breadcrumbs on HTML customizations take you to news
This change removes the "Additional contents" breadcrumb when working with news items or HTML customizations. Since news and HTML customizations are separate links on the tools home page there's no reason to have the breadcrumbs imply the two sections are connected in any way. We already have the "See News" link, for example, for switching quickly between the two areas.
[29529] Fix \n in hint on Koha to MARC mappings
This fixes:
- a string in Koha to MARC mappings (koha2marclinks.tt:86) so that it can be correctly translated (excludes "\n" from what is translated), and
- capitalization for the breadcrumb link: Administration > Koha to MARC mappings.
[29571] Mainpage : "All libraries" pending suggestions are visible only if the current library has suggestions
This fixes the display of pending suggestions in the staff interface so that it now shows pending suggestions for all libraries, for example: "Suggestions pending approval: Centerville: 0 / All libraries: 1.". Previously suggestions pending approval was only shown if there were suggestions for the user's current library.
[29807] Branches template plugin doesn't handle empty lists correctly
The Branches TT plugin had wrong logic in it, that made it crash, or display wrong pickup locations when the item/biblio didn't have any valid pickup location.
[29967] Increase size of description fields for authorized values in templates
Extends the length of the description and OPAC description fields on authorised_values.tt making it easier to see and edit text that has longer descriptions.
[30632] Fix report author display in list of saved reports
This fixes the display of report authors in the list of saved reports to remove the extra space before the comma (Lastname, Firstname was displaying as Lastname , Firstname).
[29156] File missing warning in Koha::UploadedFile should be for permanent files only
This removes the warning from the log files when temporarily uploaded files are deleted and the file no longer exists (for example, when the temporary files are in /tmp directory and the system is rebooted they are deleted).
[29521] Patron Club name hyperlinks not operational + weird CSS behavior
This removes the link from thea patron club name on the patrons club listing page as it didn't work. It also improves the consistency of the table of patron clubs so that the interface is consistent whether you're looking at clubs during the holds process or during the clubs management view.
[29722] Add some diversity to sample quotes
Sponsored by Catalyst
This patch adds sample quotes from women, women of colour, trans women, Black and Indigenous women, and people who weren't US Presidents!
[30701] On small screens, upload tool buttons cannot be clicked
Sponsored by Chartered Accountants Australia and New Zealand
[29484] ListSets doesn't return noSetHierarchy when appropriate
This fixes Koha's OAI-PMH server so that it returns the appropriate error code when no sets are defined.
[19865] Side scroll bar in z39.50 MARC view
Makes the horizontal scroll bar of the MARC preview modal on cataloguing/z3950_search.tt always visible for an easier user experience.
The Koha manual is maintained in Sphinx. The home page for Koha documentation is
The Git repository for the Koha manual can be found at
Complete or near-complete translations of the OPAC and staff interface are available in this release for the following languages:
Partial translations are available for various other languages.
The Koha team welcomes additional translations; please see
For information about translating Koha, and join the koha-translate list to volunteer:
The most up-to-date translations can be found at:
The release team for Koha 22.05.00 is
Release Manager: Fridolin Somers
Release Manager assistants:
QA Manager: Katrin Fischer
QA Team:
Topic Experts:
Bug Wranglers:
Packaging Manager:
Documentation Manager: David Nind
Documentation Team:
Translation Managers:
Wiki curators:
Release Maintainers:
We thank the following libraries, companies, and other institutions who are known to have sponsored new features in Koha 22.05.00
We thank the following individuals who contributed patches to Koha 22.05.00
We thank the following libraries, companies, and other institutions who contributed patches to Koha 22.05.00
We also especially thank the following individuals who tested patches for Koha
And people who contributed to the Koha manual during the release cycle of Koha 22.05.00
We regret any omissions. If a contributor has been inadvertently missed, please send a patch against these release notes to koha-devel@lists.koha-community.org.
The Koha project uses Git for version control. The current development version of Koha can be retrieved by checking out the master branch of:
The branch for this version of Koha and future bugfixes in this release line is master.
Bug reports and feature requests can be filed at the Koha bug tracker at:
He rau ringa e oti ai. (Many hands finish the work)
Autogenerated release notes updated last on 26 May 2022 07:06:40.