25 Apr 2025
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 24.11.04 can be downloaded from:
Installation instructions can be found at:
Koha 24.11.04 is a bugfix/maintenance and security release.
It includes 22 enhancements, 97 bugfixes and 2 security fixes.
System requirements
You can learn about the system components (like OS and database) needed for running Koha on the community wiki.
This patch updates the ILS-DI authorized IPs preference to deny all IPs not listed in the preference.
Previously if no text was entered the ILS-DI service was accessible by all IPs, now it requires explicitly defining the IPs that can access the service.
Upgrading libraries using ILS-DI should check that they have the necessary IPs defined in the system preference.
This fixes the table name in the warning about auto increment and biblioitems on the About Koha > System information page.
If the system identifies auto increment issues, the message is now "The following IDs exist in both tables biblioitems and deletedbiblioitems", instead of "...tables biblio and deletedbiblioitems".
38423 EDIFACT invoice files should skip orders that cannot be receipted rather than failing to complete
This fixes loading EDIFACT invoice files so that it skips a problematic order (usually a cancelled order or a deleted bibliographic or item record), reports any problem orders, and completes the processing of other orders. Previously, the EDIFACT page would get "stuck" and display as "Processing" for problematic orders, then the remainder of the orders in the file had to be manually receipted by library staff (as vendors are reluctant to re-process part invoices).
Sponsored by PTFS Europe
This fixes an issue that occurs in Acquisitions when adding an order from a new or staged file. If the system preference AcqCreateItem is set to create items when the order is placed, and item information is not imported from the uploaded MARC file, then the librarian would enter the item information in the "Item information" tab when confirming the order. The information from this tab was not getting processed correctly, which led to "empty" items being created.
This fixes the "Basket created by" search when duplicating existing orders in acquisitions - it now returns results, previously no results were returned.
This fixes the order of the daily cron jobs (/etc/cron.daily/koha-common) so that koha-run-backups is run first.
Reasons for this include:
The koha-run-backups cron job takes a backup before running scripts that change database contents. If there is a problem with those scripts, you'll have a very recent backup on which to fallback.
It's a resource intensive job. If you have a lot of Koha instances, this means you're running your most intensive job at the end of the job run, which might be a lot later in the day than you anticipate. (Of course, you can update /etc/crontab to change when /etc/cron.daily is run, but this will help reduce impact in the meantime.)
Deployment of this change: - New installations: This change will seamlessly apply for new installations. - Existing installations: . You HAVEN'T manually modified the crontab: it will seamlessly apply. . You HAVE manually modified the crontab: you will be prompted, and will need to decide about applying the change. . Where deployment tools are used (such as Ansible): this will depend on what tools you use and how they are configured.
This fixes authentication checking so that the $sessionID is consistently returned (sometimes it was returning the session object). (Note: $sessionID is returned on a successful login, while $session is returned when there is a cookie for an authenticated session.)
This fixes a regression. When an item in transit was checked in at a library other than the destination, it was not generating the "Wrong transfer" dialog box.
This fixes the dropdown list for holds pickup locations in the staff interface - it now shows the complete list of libraries. Previously, in some circumstances, it was not showing the complete list of pickup locations (for example, with RESTdefaultPageSize = 5 and AllowHoldPolicyOverride = Allow, it would only show the final page of libraries instead of the full list of libraries).
If the "Forgive overdue charges" option was selected (shown when the finesMode system preference is set to "Calculate and charge"), this selection was not remembered after checking in an item with a materials specified note (952$3).
38853 'Cancel selected' on holds table does not work
This fixes the "Cancel selected" button for a records' holds table in the staff interface - it now cancels the selected holds. Previously, after you confirmed the hold cancellation nothing happened (the background jobs didn't run and the holds were not cancelled). (This is related to the CSRF changes added in Koha 24.05 to improve form security.)
Sponsored by Chetco Community Public Library
When the longoverdue cron is limited by library, it follows the CircControl system preference. When CircControl is set to "the item's library," this patch allows the HomeOrHoldingBranch system preference to further specify either the item's homebranch or the item's holdingbranch. This makes the longoverdue cron consistent with the application or circulation and fine rules.
This fixes the scripts so that these cataloging cronjobs are now logged when run: - misc/link_bibs_to_authorities.pl - misc/cronjobs/merge_authorities.pl - misc/migration_tools/remove_unused_authorities.pl
Notes: - This changed all the cronjobs in misc/cronjobs that had the 'cronlogaction'. - It also changed misc/maintenance/fix_invalid_dates.pl (not a cronjob, but now only logs if confirmed - similar to misc/import_patrons.pl). - For misc/cronjobs/purge_suggestions.pl, a verbose option was added for consistency.
This fixes the ERM usage statistics import logs table to show who manually imported the SUSHI data. For eUSage > Data providers > [Name] > Import logs, the "Imported by" column now shows the staff patron, instead of just "Cronjob".
This fixes multiple translation issues for the ERM module, including missing strings and following the coding guidelines.
Example: - In English: "4 of 5 renewals remaining" - In Turkish: . was incorrectly translated as "4 uzatma hakkınızdan 5 tane kaldı" . is now correctly translated as (5 uzatma hakkınızdan 4 tane kaldı"
This fixes some database update messages to improve their consistency with the database update guidelines.
39268 When switching tabs between 'My lists' and 'Public lists' incorrect lists can be displayed
Sponsored by Athens County Public Libraries
Thus fixes a typo in the subfield description for authority framework 090$t - "Field suppresion" to "Field suppression". (This change only affects new installations - existing installations will need to manually update their authority frameworks.)
33268 Overlay rules don't work correctly when source is set to *
This enhancement changes how marc overlay rules are evaluated.
Before the change rules with filter set to '*' (wildcard) where only applied when no other rules had been defined for a specific filter value, regardless of if any of the rules with that filter value matched or not.
With this change we fallback to the wildcard filter rules even though rules with a matching filter value do exists, if no rule for that filter value matches. This resolves the issue of having to repeat the same default rules for each filter value rule set. If for some filter value the wildcard filter rules should be overridden, a wildcard tag rule for that filter value can be defined which will have higher precedence and override all the filter wildcard rules.
In summary, the rules will applied as follows:
A matching rule is looked for based on context (module and filter value), if multiple contexts matches rules for the module with highest priority are used. The module priority is (from highest to lowest) "User name", "Patron category" and "Source".
If no matching rule is found, we fallback to the wildcard filter rules of the current context module.
For Koha installations where marc overlay rules is in use a database migration will run that creates new rules if necessary to preserve the current behavior, so no user action needs to be taken in order to correct for this change.
Sponsored by Gothenburg University Library
This updates the HOLD letter to use the reply to email address of the library the hold is waiting at instead of the patron library to ensure replies go to the correct branch for the hold.
This fixes the contents of the BibTeX file downloaded from an OPAC cart - it now correctly shows the record number, instead of Koha::Hash(xxx).
Example of incorrect BibTeX file format: @book{Koha::Biblio=HASH(0x560e89ade4b8), <--- should have been 262 author = {Christiansen, Tom. and Foy, Brian D.}, title = {Programming Perl /}, publisher = {O'Reilly,}, year = {c2012.}, address = {Beijing ;}, edition = {4th ed.}, note = {Rev. ed. of: Programming Perl / Larry Wall, Tom Christiansen & Jon Orwant. 2000. 3rd ed.} }
38077 Minor spacing issue in self checkout login page
This fixes a minor spacing issue on the self checkout login page. The login form is now arranged vertically and includes more padding.
Sponsored by Athens County Public Libraries
38462 Remove unused code for pagination in OPAC authority search
This removes unused code for OPAC authority search results pagination. (There are no visible changes for patrons.)
Sponsored by Chetco Community Public Library
38753 Missing table cells breaks OPAC charges table
This fixes the charges table for a patron in the OPAC (Your account > Charges). It didn't display correctly in some circumstances (there were missing empty table cells, resulting in empty and misaligned cells at the end of the table).
Sponsored by Athens County Public Libraries
REVERTED, REMOVE FROM RELASE NOTES
(This is related to bug 28633 - Add a preferred name field to patrons, a new featured added in Koha 24.11.00.)
38667 Point of sale transaction history should not appear to be sortable
This removes the column sorting icons from the point of sale "Transactions to date" and "Older transactions" tables. The sort order for these tables is fixed, and clicking the icons had no effect.
Sponsored by Athens County Public Libraries
This fixes the browser window/tab page title when viewing the SQL for a report (Reports > Saved reports > Actions > View) - it now includes the report name and number.
This fixes item search results when ordering the results by the call number. They are now correctly ordered using cn_sort, instead of a basic "alphabetical" order (cn_sort uses the appropriate sorting rules for the classification scheme).
This should also help improve performance - this might be minor on a quiet system, but it could have an impact on a busier system (and reduces unnecessary database calls).
This fixes the holdings table - clicking "Show filters" was incorrectly displaying all columns.
37761 Tabs on curbside_pickups.tt page not styled right after Bootstrap 5 update
This fixes the curbside pickups page (Circulation > Holds and bookings > Curbside pickups) so that the tabs are correctly styled (instead of plain links), and the automatic refresh works as expected (you stay on the currently selected tab). (This is related to the OPAC and staff interface Bootstrap 5 upgrade in Koha 24.11.)
Sponsored by Athens County Public Libraries
This patch adds a new system preference called 'AlwaysShowHoldingsTableFilters'. This system preference allows staff to control the behavior of the filters on the items detail page. It can be set to either always show the filters by default or to never show the filters by default.
38711 Wrong font-weight in tables during printing from staff interface
This fixes the print style sheet for tables in the staff interface - the last column is no longer printed in bold. This was affecting various pages when printed, such as notices and slips, and pages.
Sponsored by Deutsches Elektronen-Synchrotron DESY, Library
This fixes the holdings table. If you clicked "Columns" and you added or removed a column, it was automatically showing the column filters - but it didn't toggle "Hide filters" and you had to click twice to hide them.
36163 Can't select a country for usage statistics
Sponsored by Ignatianum University in Cracow
This fixes a spelling mistake in the EmailAddressForPatronRegistrations system preference description - "chooose" -> "choose".
This fixes the labels used for the type options when configuring Elasticsearch search fields - they now use sentence case and the full name (instead of abbreviations): - Default (instead of being blank) - Identifier (instead of Std. Number) - Call number (instead of Call Number)
38285 Replace instances of obsolete Bootstrap class "pull-right"
This fixes some CSS from the Bootstrap 5 upgrade:
- Removes instances of the pre-Bootstrap-5 class "pull-right" (Bootstrap 5 menus have better responsive behavour).
- Adds "dropdown-item" classes to some menu items that lacked it.
- Adds some custom style for the "Filter" form in the patron permissions toolbar (it is now correctly aligned). (This is related to the OPAC and staff interface Bootstrap 5 upgrade in Koha 24.11.)
Sponsored by Athens County Public Libraries
38349 Fix style of sidebar form submit button on tags review page
This fixes the "Apply filter(s)" button on the tags review page in the staff interface (Tools > Patrons and circulation > Tags). It now has the same yellow "primary" style as other submit buttons - the text is slightly larger, and the button now fills the entire width of the sidebar.
Sponsored by Athens County Public Libraries
38502 Use Bootstrap alert info class for messages on table settings page
This fixes the styles for informational messages on the table settings page (Administration > Additional parameters > Table settings). It updates the existing class (class="alert"), which doesn't add any style, to the Bootstrap 5 class (class="alert alert-info") - which now has a light blue background.
Sponsored by Athens County Public Libraries
38665 Markup error in additional fields template title
This fixes a markup error in the browser page title for the additional fields page - there was an additional caret (>) at the start (> Additional fields > Administration > Koha, instead of Additional fields > Administration > Koha).
Sponsored by Athens County Public Libraries
This fixes the display of item type images in the staff interface's advanced search. The noItemTypeImages system preference now correctly controls the display of the item type images. Previously, it was incorrectly controlled by the OpacNoItemTypeImages system preference.
38921 Remove unused href from Cancel hold link
Sponsored by Chetco Community Public Library
This fixes deleting catalog search history in the staff interface (when the EnableSearchHistory system preference is set to 'Keep') - the delete button now works. Previously, selected search terms could not be deleted. (This is related to the DataTables upgrade in Koha 24.11.)
This fixes the log viewer authentication module "Log not enabled" warning message for the log viewer. If either AuthFailureLog or AuthSuccessLog system preferences are set to "Don't log", the "Log not enabled" warning icon is now shown. Previously, if one of the system preferences was set to "Log", no warning icon was shown.
38870 Remove overflow scroll from batch patron modification
Sponsored by Athens County Public Libraries
This enhancement makes the misc/maintenance/audit_database.pl script (added in Koha 23.11) available in the staff interface - About Koha > Database audit tab. The script compares the instance's database against kohastructure.sql and identifies any differences that need fixing. This is useful for identifying database issues that should be addressed before running a maintenance or release update.
This enhancement changes the way EDI logging is done - it now uses the improved Koha::Logger, instead of Log::Log4perl.
38483 C4::Heading::preferred_authorities is not used
This removes an unused method 'preferred_authorities' (Return a list of authority records for headings that are a preferred form of the heading).
Sponsored by Ignatianum University in Cracow
This enhancement adds the date picker by default to all item date and datetime fields.
This enhancement improves the translatability of the tool tips for 'Edit > Delete record' on the record details page in the staff interface. It makes it easier to translate the singular and plural forms of items and subscriptions.
This enhancement adds a confirmation step when deleting a list from the "Your lists" and "Public lists" tabs in the staff interface. Previously, you were not asked to confirm the list deletion. This also makes it consistent with deleting a list from its contents page, where you are asked to confirm the list deletion.
This enhancement adds age verification checking to the self-registration and personal details forms. A message is now shown if the date of birth entered doesn't match with the patron category age range, "Patron's age is incorrect for their category. Please try again.".
35808 Remove obsolete responsive table markup from several pages in the OPAC
This enhancement removes obsolete responsive table markup (span.tdlabel) from several OPAC pages, as the tables now use the DataTables responsive features.
Sponsored by Athens County Public Libraries
This fixes the breadcrumbs for patron lists (Tools > Patrons and circulation > Patron lists) so that they are now more consistent with other breadcrumbs, and improves their translatability (Tools > Patron lists > Add patrons to 'List name', instead of Tools > Patron lists > List name).
39405 Add plugin hook overwrite_calc_fine
to override fine calculation
This new hook allows to overwrite the internal Koha standard calculation of fines. This can be useful if your library needs to implement its own algorithm. For example, if it has a fine policy with graduated fines per overdue letter.
Sponsored by Karlsruhe Institute of Technology (KIT)
38905 Updating an item of a bibliographic record should use edit_items instead edit_catalogue permission
Sponsored by Koha-Suomi Oy
This enhancement adds 028$a (MARC21 - Publisher or distributor number) to the standard number (standard-identifier) search index, searchable using the Advanced search > Standard number (in the staff interface and OPAC).
Note: This change only affects new installations, or when resetting mappings. To update existing installations, either manually make the change and reindex, or reset the mappings and reindex. It may also require updating your bibliographic frameworks.
This enhancement to the Administration > Additional parameters > Additional fields page makes it easier to read. The tables are now grouped and listed alphabetically by module and table name, instead of alphabetically by database table name.
Record information: - Biblionumber: biblionumber - Item type: itemtype - Rental charge: rentalcharge - Daily rental charge: rentlcharge_daily - Hourly rental charge: rentalcharge_hourly - ISBN: isbn - Publication details: publication_details - Volume: volume - Physical details: physical_details - Notes: biblio_note - No. of items: item_count Item information: - Home library: homebranch - Item type: itype - Collection: ccode - Item call number: itemcallnumber - Copy number: copynumber - Shelving location: location - Replacement price: replacementprice - Materials specified: materials Statuses: - Current library: holdingbranch - Current renewals: renewals_count - Lost status: lost - Damaged status: damaged - Withdrawn status: withdrawn Priority: - Exclude from local holds priority: local_holds_priority - Bookable: bookable History: - Order date: order_info - Accession date: dateaccessioned - Invoice number: invoice - Total checkouts: issues - Last seen: datelastseen - Last borrowed: datelastborrowed - Last borrower: previous_borrowers - Paid for?: paidfor - Serial enumeration: enumchron - Public note: itemnotes - Non-public note: itemnotes_nonpublic
37826 Remove the use of the script_name variable where it is unnecessary
This enhancement removes the $script_name variable from several pages where it is unnecessary, and updates the corresponding template with the URL itself. (Most of the places where a $script_name variable was used was not strictly necessary. It was also used inconsistently.)
Sponsored by Athens County Public Libraries
38221 Add Bootstrap styling to pagination in authority plugin search results
This enhancement updates the style of the pagination links in the cataloging authority search popup (for example, 100$a). The style is now consistent with other pages (such as catalog search results), instead of plain links for result page numbers and angle brackets for next, last, first, and previous page links.
Sponsored by Athens County Public Libraries
This enhancement adds the ability to generate sample ILL requests for the test suite.
The Koha manual is maintained in Sphinx. The home page for Koha documentation is
Koha Documentation As of the date of these release notes, the Koha manual is available in the following languages:
Armenian (hy_ARMN) (100%)
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 24.11.04 is
Release Manager: Katrin Fischer
Release Manager assistants:
QA Manager: Martin Renvoize
QA Team:
Security Manager: Tomás Cohen Arazi
Topic Experts:
Bug Wranglers:
Packaging Manager: Mason James
Documentation Manager: Philip Orr
Documentation Team:
Wiki curators:
Release Maintainers:
We thank the following libraries, companies, and other institutions who are known to have sponsored new features in Koha 24.11.04
We thank the following individuals who contributed patches to Koha 24.11.04
We thank the following libraries, companies, and other institutions who contributed patches to Koha 24.11.04
We also especially thank the following individuals who tested patches for Koha
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 main branch of:
The branch for this version of Koha and future bugfixes in this release line is 24.11.x.
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 25 Apr 2025 09:40:51.