Koha Upgrades

19.11 Upgrade Notes

Koha 19.11

The Koha Community has released Koha 19.11.00. 19.11 is a major release, that comes with many new features. It includes 7 security fixes, 20 new features, 146 enhancements, 367 bugfixes.

19.11 Resources

Koha 19.11 Release Notes

Koha Community 19.11 Manual

Koha Community 19.11 Schema- not yet released

Security Bugs


  • [22543] Patron might be logged in again using browser back button
  • [23025] security vulnerability detected in fstream < 1.0.12 defined in yarn.lock
  • [23042] Local login attempt populates shibboleth url with userid and password in plain text
  • [23058] Cross-site scripting in OPAC search
  • [23329] tracklinks.pl accepts any url from a parameter for proxying if not tracking
  • [23451] Reflected XSS in opac-imageviewer.pl
  • [23836] tracklinks.pl should not forward if TrackClicks is disabled

New features


  • [17179] Advanced editor: Add keyboard shortcuts to repeat (duplicate) a field, and cut text. Sponsored by Round Rock Public Library
  • [22445] Ability to define a URL for custom cover images. Sponsored by Orex Digital

Fines and fees

  • [23228] Add option to automatically display payment receipt for printing after making a payment
    This enhancement adds the optional ability to automatically popup the receipt print dialogue upon successful payments.

Hold requests

  • [19618] Add ‘Club Holds’ feature. Sponsored by South East Kansas Library System


  • [22581] Add support for Plaine & Easie musical incipits rendering in OPAC
    Sponsored by Biblioteca Provincial Fr. Mamerto Esquiú (Provincia Franciscana de la Asunción)

  • [23214] Add ability to pay guarantees fines


  • [14570] Make it possible to add multiple guarantors to a record
    Sponsored by Northeast Kansas Library System and Vermont Organization of Koha Automated Libraries

Plugin architecture

  • [22706] Add plugin hooks to allow custom password strength checking modules

  • [22709] Add hooks to notify plugins of biblio and item changes

  • [22834] Add a method for plugins to return the absolute path for bundled files

  • [22835] Serve static files from plugins through the API. Sponsored by Theke Solutions

  • [23050] Add hook to add a tab in intranet biblio details page

  • [23237] Add support for [% INCLUDE %] in plugin templates


  • [16825] Add API route for getting an item. Sponsored by Koha-Suomi Oy
  • [17003] Add API route to get checkout’s renewability
  • [23517] Add API route to update a holds priority
  • [23584] Add public API routes to change privacy settings
  • [23677] Add API route to get a bibliographic record

Staff Client

  • [23321] Add ‘cash registers’ to the accounts system
    Sponsored by Cheshire Libraries Shared Services and PTFS Europe

Z39.50 / SRU / OpenSearch Servers

  • [13937] Add an Elasticsearch-compatible Z39.50/SRU daemon. Sponsored by National Library of Finland

New Enhancements


  • [14669] Search orders by managing library
  • [20254] Forbid the download of duplicate EDI messages
  • [20595] EDI: Add support for LRP (Library Rotation Plan) for Koha with Stock Rotation enabled.Sponsored by PTFS Europe
  • [23522] Show “Actual price” in basket when available. Sponsored by Virginia Tech

Architecture, internals, and plumbing

  • [18928] Move holdallowed, hold_fulfillment_policy and returnbranch into the circulation_rules table.
  • [18930] Move ‘refund lost item fee rules’ into the circulation_rules table
  • [22563] Convert lost handling to use ‘status’ instead of multiple accounttypes
  • [22610] SIP Payment Types should be moved out of accountype
  • [22721] Normalize GetMarcFromKohaField calls
  • [22837] Koha::Account::Line->apply should not require a ‘set’ of debits
  • [23068] Add ability for Koha to handle X-Forwarded-For headers so REMOTE_ADDR features work behind a proxy
  • [23152] koha_object[s]_class methods must be implemented when needed
  • [23230] Make Koha::Plugins::Base::versioncompare OO
  • [23272] Koha::AuthorisedValue should use Koha::Object::Limit::Library
  • [23281] Add Koha::Objects::Limit::Library
  • [23414] Improve performance of C4/XSLT/buildKohaItemsNamespace
  • [23580] Add C4::Context->yaml_preference
  • [23623] Use the new API and remove /svc scripts for privacy settings
  • [23770] Add Koha::Object(s)->to_api method. Sponsored by ByWater Solutions
  • [23793] Add an EmbedItems RecordProcessor filter for MARC::Record objects
  • [23807] Add Koha::Item->as_marc_field
  • [23843] Make existing endpoints use Koha::Object(s)->to_api


  • [23146] Add support for Basic auth on the OAuth2 token endpoint. Sponsored by ByWater Solutions


  • [15497] Limit item types by library
    Sponsored by Central Kansas Library System, Northeast Kansas Library System and South East Kansas Library System
  • [17178] Add a popup/keyboard shortcuts for diacritics and symbols in the advanced cataloging editor
    Sponsored by Round Rock Public Library
  • [23602] Library limitations should display in the item types table


  • [14697] Extend and enhance “Claims returned” lost status
    Sponsored by Fargo Public Library and North Central Regional Library System

  • [17492] Show warning if patron’s age is out of category limit
  • [20194] Display both biblioitems.itemtype and items.itype in circulation screens
  • [20959] Style checkin form more like the checkout form, with collapsed settings panel
  • [23328] Some check-in messages should be dismissable
  • [23507] Add ability to show and print change given on fee receipt from FinePaymentAutoPopup
  • [23686] Check onsite checkout when the last checkout was an onsite one

Command Line Utilities

  • [16219] Runreport.pl should allow SQL parameters to be passed on the command line
  • [17168] Add a command line script for updating patron category based on status
    Sponsored by Round Rock Public Library

  • [22509] Add a script to generate MARC fields containing date formatted strings
    Sponsored by Orex Digital
  • [23346] Add without-db-name parameter to koha-dump

Fines and Fees

  • [6759] Use a different account type for account renewals than for new accounts
  • [22627] Rephrase ‘your fines and charges’ tab in OPAC
    Sponsored by Catalyst
  • [23049] Replace MANUAL_INV authorised value with a dedicated table
  • [23805] Add a dedicated credit_types table

Hold Requests

  • [22922] Allow to modify hold and hold expiration date in staff


[15260] Option for extended loan with useDaysMode
Sponsored by Cheshire East Council, Cheshire West and Chester Council, Newcastle City Council and Sefton Council


  • [23631] fr-CA translation of NEW_SUGGESTION notice
  • [23983] Contextualization of “Order” (verb) vs “Order” (noun)

Label/patron card printing

  • [23464] Update the process of quick spine label printing

MARC Bibliographic data support

  • [18309] UNIMARC update from IFLA for new Koha installations
  • [20364] Show languages from MARC21 field 041 in intranet
  • [20434] UNIMARC update from IFLA for existing Koha installations
  • [22884] Remove ending . from XSLT templates
  • [23731] Display LC call number in OPAC and staff detail pages


  • [21180] Allow Talking Tech outbound script to limit based on patron home library branchcode
  • [23278] Reopen last panel upon “Save and continue” in notices


  • [5287] Add floating toolbar to search results in OPAC
  • [8778] Add Keyword phrase search to OPAC search
  • [20691] Add ability for guarantors to view guarantee’s fines in OPAC
  • [21701] Have PayPal optionally return to originating OPAC url rather than OPACBaseURL
  • [23096] Add floating toolbar to OPAC lists
  • [23299] Switch address1 and streetnumber for German address format on opac-memberentry
  • [23392] Support MARC21 indicators for private note fields
  • [23566] Continue on device – with QR codes
  • [23633] Filter out historical charges by default on a users ‘your charges’ page
  • [23694] Author “By” should have its own class
  • [23720] Add div wrapper to search results to make moving cover images easier
  • [23791] Allow granular control of social networks enabled by SocialNetworks syspref
  • [23903] Replace OPAC icons with Font Awesome
  • [23955] Replace famfamfam icon in OPAC holds template


  • [23400] Add –status to koha-indexer


  • [23219] Show a warning about canceling their holds before a patron is deleted
  • [23697] Add autocomplete for patron search in patron module

Plugin Architecture

  • [21073] Improve plugin performance
  • [23191] Administrators should be able to install plugins from the command line
  • [23213] Add hook to OPAC payments to allow plugins to set minimum payment threshold

Rest API

  • [17005] Extend /checkouts route to list circulation history
  • [23667] Add API route for listing items


  • [15422] Number of items to order on holds ratio report will not fulfill the holds ratio
  • [23206] Batch patron modification from reports which return cardnumber
  • [23389] Add ‘All’ option to report value dropdowns
  • [23390] Add placeholder syntax for column names


  • [20292] Filter/censor info sent via SIP
    Sponsored by Duchesne County Library and Uintah Library System

  • [20954] Add ability to set syspref overrides in SIP as we can in Apache
    Sponsored by South East Kansas Library System
  • [22540] Add ability to place holds using SIP CLI emulator


  • [23386] Add language of original in advanced search – staff client
  • [23543] Adding withdrawn to the item search

Searching - Elastic

  • [17851] Add Elasticsearch config to koha-conf.xml. Sponsored by Koha-Suomi Oy
  • [20334] Elasticsearch – Option for escaping slashes in search queries
  • [20589] Add field boosting and use elastic query fields parameter instead of deprecated _all
  • [20607] Elasticsearch – ability to add a relevancy weight in mappings.yaml file
  • [22592] Elasticsearch – Support for index scan
  • [22826] Allow indexing of individual authority records in Elasticsearch


  • [21588] Add “Collapse/Expand” options on subscription-detail page
  • [23435] Add multiple copies of an item when receiving in serials. Sponsored by Brimbank City Council

Staff Client

  • [18421] Make Coce cover images available for staff search
  • [21245] Move ‘Last patron’ button inside of the ‘breadcrumb’ bar
  • [23711] Icons on staff main page should be font icons
  • [23803] Add Font Awesome icon to cart in staff interface

System Administration

  • [11529] Add subtitle, medium and part fields to biblio table. Sponsored by National Library of Finland
  • [21574] Local use system preferences page doesn’t have the system preferences menu
  • [23179] Add ‘Edit subfields’ to framework management tag dropdown and clarify options
  • [23606] Add columns configuration and export options to item types administration
  • [23611] Add export option to authorized values administration
  • [23866] HEA submission preferences should prompt similar to ManaKB


  • [7074] Show subtitle, part and number of a record in list of checkins
  • [17057] Remove event attributes from holds template
  • [21058] Missing class for results_summary spans
  • [21824] Add ability to format dates in various formats in templates
  • [21852] Add more columns and column configuration to overdues report
  • [22209] Move stock rotation stage and item forms into modals
  • [22897] Switch two-column templates to Bootstrap grid: ILL requests
  • [22935] Improve style of Bootstrap pagination
  • [22999] Switch two-column templates to Bootstrap grid: Circulation
  • [23013] Upgrade DataTables in the staff client
  • [23094] Use Bootstrap-style pagination on staged MARC records page
  • [23159] Reindent addbiblio.tt
  • [23183] Reindent cataloging.js
  • [23196] Reindent tools/batch_record_modification.tt
  • [23197] Add more batch operation options to SQL report results
  • [23221] Reindent tools/manage-marc-import.tt
  • [23259] Remove reset-fonts-grids.css
  • [23286] Improve style of hold confirmation modal
  • [23304] Reindent cataloguing/z3950_search.tt
  • [23307] Add columns configuration to cataloguing/z3950_search.tt
  • [23339] Reindent addbooks.tt
  • [23351] Clean up localization template
  • [23399] Reindent returns.tt
  • [23438] Use Font Awesome icons in intranet search results browser
  • [23444] Terminology: Use library instead of branch
  • [23448] Clean up subscription detail template
  • [23458] Clean up holds template in the staff client
  • [23834] Add default ESLint configuration
  • [23958] Use Font Awesome icon to replace “new window” icon image
  • [24034] Capitalization on suggestion edit form: No Status
  • [24076] Remove inline CSS to center patron home library in search results

Test Suite

  • [23280] Warning in t/db_dependent/selenium/patrons_search.t
  • [23284] Duplicate test in t/db_dependent/Plugins.t
  • [23994] AdditionalFields.t is failing randomly (U18)


  • 13552] Add debar option to batch patron modification
  • [22272] Calendar: When entering date ranges grey out dates in the past from the start date
  • [22888] Use DataTables for Koha news table filtering
  • [22996] Move barcode separators to a preference
  • [23279] In news management interface, sort news by publication date descending
  • [23385] Hide default value fields by default on patron import
  • [23512] Reindent notices and slips page (letter.tt)

Web Services

  • [22677] Include hint on OAI-PMH URL for Koha in system preference
  • [23154] Add pagination to /api/v1/checkouts
  • [23156] Add pagination to checkouts in ILS-DI GetPatronInfo service

Critical Bugs

Critical bugs fixed

(This list includes all bugfixes since the previous major version. Most of them have already been fixed in maintainance releases)


  • [18743] Filter suggestion lists correctly for IndependentBranches. Sponsored by BULAC
  • [21316] Adding controlfields to the ACQ framework causes issues when adding to basket
  • [23397] Order lines can be duplicated in acqui scripts spent.pl and ordered.pl
  • [23854] Cannot edit a suggestion
  • [23855] Cannot mark the selected suggestion as “pending”
  • [23863] Editing a basket clears create_items value
  • [23927] Duplicate a “Complete” order link the “New” one to the invoice

Architecture, internals, and plumbing

  • [22857] Entries missing in koha-conf.xml
  • [23095] Circulation rules not displayed (empty vs null)
  • [23316] GetFine needs updating for bug 22521
  • [23599] Koha::Objects::Limit::Library fails if no library passed
  • [23655] Errors when running on Debian Jessie
  • [23723] Using exit inside eval to stop sending output to the browser doesn’t work under Plack
  • [23867] fails with “Truncated incorrect DOUBLE value”


  • [22585] Fix remaining double-escaped CAS links
  • [23526] Shibboleth login url with query has double encoded ‘?’ %3F
  • [23771] CAS/Shib Authentication can fail when multiple users with no userid/cardnumber defined and one of them is locked


  • [23045] Advanced cataloging editor (rancor) throws a JS error on incomplete/blank lines
  • [23252] Pressing enter should not submit form in item editor
  • [23851] Auto generate accession number format yymm0001 fails to add branchcode prefix(branchcode) for multiple item addition


  • [13958] Add a suspensionsCalendar syspref
    Sponsored by Universidad Nacional de Córdoba

  • [20086] AddRenewal is not executed as a transaction and can results in partial success and doubled fines
  • [22877] Returning a lost item not marked as returned can generate additional overdue fines
  • [23018] Refunding a lost item fee may trigger error if any fee has been written off related to that item
  • [23079] Checkouts page broken because of problems with date calculation (TZAmerica/Sao_Paulo)
  • [23103] Cannot checkin items lost by deleted patrons with fines attached
  • [23120] Internal server error when checking in item to transfer and printing slip
  • [23145] Confirming transfer during checkin clears the table of previously checked-in items
  • [23293] OPACFineNoRenewals always compares against ‘balance’ not ‘outstanding’
  • [23382] Issuing rules failing after bug 20912
  • [23404] Circulation::TooMany error on itemtype when at biblio level
  • [23405] Circulation autocomplete for patron lookup broken if cardnumber is empty
  • [23518] Problem with borrower search autocomplete
  • [23551] Problem with renewal period when using the renewal tab
  • [23774] When placing a hold editing using Inspect Element allows addition to the code of non listed library
  • [23938] Title missing from Checked out box
  • [23985] The method Koha::Item-> is not covered by tests!
  • [24013] Transferring a checked out item gives a software error
  • [24075] Backdating a return to the exact due date and time results in the fine not being refunded

Command-line Utilities

  • [22566] Stock rotation cronjob reporting has issues
  • [23933] commit_file.pl Can’t call method “get_effective_marcorgcode” on an undefined value at /usr/share/koha/lib/C4/AuthoritiesMarc.pm line 578.

Course reserves

  • [22142] An item’s current location changes to blank when it is removed from Course Reserves
  • [23083] Course reserve item edit fails if one does not set all values


  • [23265] Update to DB revision fails: Unknown column ‘me.item_level_hold’
  • [23579] error during web install: ‘changed_fields’ can’t have a default value
  • [23809] Update to DB revision fails

Fines and fees

  • [19919] Writing off a Lost Item Fee marks as “Paid for by patron”
  • [23826] Manual Invoice does not use new accounttype and status for fines
  • [24100] “Pay selected” is broken

Hold requests

  • [13640] Holds To Pull List includes items unreserveable items
  • [14549] Hold not removed when item is checked out to patron who is not next in priority list
  • [23116] Cannot place overridden holds
  • [23484] Holds to pull (pendingreserves.pl) uses removed default_branch_item_rules table
  • [23710] Holds broken on intranet, displays a JSON page with an error
  • [23964] An item level hold when placed is set to Waiting, if ReservesNeedReturn is set to Automatic


  • [23713] Subscription add form broken for translations


  • [23229] “Get all requests” API call fired when loading any ILL page
  • [23529] Interlibrary loan javascript is broken

Installation and upgrade (command-line installer)

  • [23090] MySQL validate_password plugin breaks koha-create
  • [23168] Database Updates broken due to conflicts in bug 21073 and bug 22053
  • [23250] koha-create generates broken mysql password
  • [23813] DB error on

Installation and upgrade (web-based installer)

  • [23353] ACQ framework makes fr-CA web installer explode
  • [23396] Rancor fails to load: insert_copyright is not defined

Label/patron card printing

  • [23289] Label Template – Creation not working (MariaDB >= 10.2.4)
  • [23455] Patron card printing from Patron lists is broken


  • [17526] OPAC lists sortfield breaks with a (

MARC Authority data support

  • [23053] Local-Number cannot be used for authority matching due to non-existence of ‘phrase’ index

MARC Bibliographic record staging/import

  • [23846] Handle records with broken MARCXML on the bibliographic detail view


  • [22210] ManaKB should not require firstname and lastname for signup
  • [22915] Cannot subscribe to Mana-KBNotices
  • [23181] Unable to use payment library in ACCOUNT_PAYMENT or ACCOUNT_WRITEOFF notices
  • [23765] After TranslateNotices is set to ‘Don’t allow’, email settings still show multiple languages
  • [24064] DUEDGST typoed as DUEGST
  • [24072] Typos in advance_notices.pl causes DUEDGST not to be sent


  • [23150] GDPR feature breaks patron self modification on OPAC
  • [23151] Patron self modification sends null dateofbirth
  • [23194] Public notes items in the OPAC should allow for HTML tags
  • [23225] OPAC ISBD view returns 404 when no item attached
  • [23253] OpacNavRight does not display correctly for opacuserlogin disabled or self registration
  • [23428] Self registration with a verification by email is broken
  • [23431] having Date of birth in PatronSelfModificationBorrowerUnwantedField causes DOB to be nullified
  • [23467] Duplicated screen if error in opac-reserve.pl
  • [23530] Opac-basket.pl script accidentally displays ‘hidden’ items
  • [23868] PayPal payment button is never enabled


  • [17140] Incorrect rounding in total fines calculations, part 2
  • [23082] Fatal error editing a restricted patron
  • [23822] Regression: As of 19.05.04 deletion of patrons with outstanding credits is silently blocked
  • [23905] Button “Search to add” doesn’t work on Quick add new patron
  • [24113] guarantor info lost when a duplicate is found


  • [23597] Holds API is missing reserved parameters on the GET spec


  • [23626] Add a system preference to limit the number of rows of data used when charting or exporting report results
    Sponsored by Fenway Library Organization and Higher Education Libraries of Massachusetts
  • [23730] Exporting reports is broken
  • [23982] Count/pagination broken for reports with duplicated column names


  • [23057] If checked_in_ok is set and item is not checked out, alert flag is supressed for any reason


  • [11677] Limit to Only items currently available for loan or reference not working
  • [23425] Search explodes with “invalid data, cannot decode object”

Searching – Elasticsearch

  • [22997] Searching gives no results in auth_finder.pl
  • [23004] Missing authtype filter in auth_finder.pl
  • [23089] Elasticsearch – cannot sort on non-text fields
  • [23322] Elasticsearch – Record matching fails when multiple keys exist
  • [23630] Elasticsearch indexing is removing field 999
    In Koha::SearchEngine::Elasticsearch::Indexer::update_index() first arg record ids is now mandatory
  • [23719] Record matching for authorities using defined fields is broken under ES
  • [23986] Batch Record Deletion does not remove records from Elasticsearch search index

Staff Client

  • [23315] Some system preferences are no longer editable

System Administration

  • [23104] Regression (18925) in circ rules – unlimited vs 0
  • [23309] Can’t add new subfields to bibliographic frameworks in strict mode
  • [23398] Exporting/Reimporting frameworks in XML format will give incomplete results
  • [23772] Itemtype icons not showing in table
  • [23804] Itemtype not checked when editing
  • [24026] Wrong parameters in Koha/Templates/Plugin/CirculationRules.pm and smart-rules.tt

Test Suite

  • [21985] Test t/db_dependent/Circulation.t fails if SearchEngine is set to elasticsearch
  • [23234] Circulation.t failing when comparing dates that seem identical
  • [24022] Z3950Responder tests are failing randomly


  • [11642] Improve Batch patron deletion and anonymization GUI to make consequences clearer
  • [15814] Templates for MARC modification: Edit action does not work when Description contains ‘
  • [17359] Patron import results use wrong encoding
  • [18707] Background jobs post disabled inputs
  • [18710] Wrong subfield modified in batch item modification
  • [23093] Error during upgrade of OpacNavRight preference to Koha news
  • [23963] Visible reduction in image quality

Web services

  • [22249] Error when submitting Mana comment

Read more by Kelly McElligott

Tags 19.11, upgrades, release