Koha Upgrades

Koha 21.11: Release Notes

Koha Community Documentation

Koha 21.11 includes 4 new features and 196 enhancements! New features, enhancements, and changes to system preferences, authorized value categories, and letter codes are linked below, and full 21.11 release notes are available at koha-community.org.

New Features

System Preferences, Authorized Value Categories, and Letter Codes

21.11 manuals:
Full list of available languages

Return to the upgrades hub

New features


[11175] Show the parent record’s component parts in the detailed views

[14957] Write protecting MARC fields based on source of import
Sponsored by Catalyst, Gothenburg University Library and Halland County Library

Course reserves

[14237] Allow bibs to be added to course without items
Sponsored by Bibliotheksservice-Zentrum Baden-Württemberg (BSZ)


[28180] Use a lightbox gallery to display the images on the detail pages in OPAC
Sponsored by Gerhard Sondermann Dialog e.K. (presseplus.de, presseshop.at, presseshop.ch)



[29209] Credits for Saxion in Dutch (NL) translation


[24190] Add additional Acquisition logging

[27287] Make note fields from orders searchable
Sponsored by Bibliotheksservice-Zentrum Baden-Württemberg (BSZ)

[28508] Use “Invoice number” instead of “Invoice no” on the invoice search filter

[28640] Add EDI order status to basket details display

Architecture, internals, and plumbing

[17600] Standardize the EXPORT

[26326] Add Koha Objects for Import Records and Import Record Matches

[27032] CanBookBeRenewed is not understandable and needs refactoring

[27526] Remove Mod/AddItemFromMarc from additem.pl

[28306] Allow to query database with minimal memory footprint

[28374] Convert pos/printreceipt.pl to use GetPreparedLetter

[28413] background job worker is running with all the modules in RAM

[28417] Authen::CAS::Client always loaded even if CAS is not used

[28445] Use the task queue for the batch delete and update items tool

[28514] Replace C4::Letters::getletter with Koha::Notice::Templates->find_effective_template

[28519] Add a 2nd directory for Perl modules

[28565] Adding a new syspref for sharing through HEA should be simpler

[28572] Replace C4::Debug with Koha::Logger->debug

[28588] Add Koha::Checkouts::ReturnClaim->resolve

[28590] get_shelves_userenv and set_shelves_userenv not used

[28591] debug passed to get_template_and_user but not used

[28606] Replace $ENV{DEBUG} and $DEBUG with Koha::Logger->debug

[28624] Smart::Comments not used and not installed

[28765] sub find_value not used in tools/batchMod.pl

[28769] tabloop not used in cataloguing plugins

[28785] Code in C4::Auth::checkauth is copy pasted
Sponsored by Orex Digital

[28893] Unused opac/rss directory can be removed

[28959] virtualshelves.category is really a boolean

[29082] Add filtering methods to Koha::ArticleRequests

[29083] Update article requests-related Koha::Patron methods to use relationships

[29084] Update article requests-related Koha::Biblio methods to use relationships

[29086] Reuse article request filtering methods in Biblio template plugin

[29288] Add current_checkouts and old_checkouts methods to Koha::Biblio


[24674] Uncertain years for publicationyear/copyrightdate — corrected

[27520] Adding new itemtype images boardgame, zoom-in, and zoom-out to carredart

[27522] Add a new itemtype info image to carredart

[27523] Adding new itemtype lock image to carredart

[27985] Add option for using a MARC modification template on a single record from the details page

[28543] Clicking on ‘New record’ will use default framework

[28694] Check alert in cataloguing should be a static message


[10902] Highlight patrons from logged-in library in patron searche

[20472] Add digital scan as optional format to Article Requests

[20688] Add accesskeys for hold confirmation boxes

[25883] Highlight transfers on checkin screen table

[27296] Return claims should be filtered by default to show unresolved claims

[27944] Add new stages to the article request process
Sponsored by Rijksmuseum

[27945] Limit the number of active article requests per patron category
Sponsored by Rijksmuseum

[27947] Add default cancellation reasons to article requests
Sponsored by Rijksmuseum

[27948] Add disclaimer text to article requests feature
Sponsored by Rijksmuseum

[27949] Batch printing of article request slips
Sponsored by Rijksmuseum

[28695] Add shelving location column to overdue report (overdue.tt)

[28810] Housebound details should be textarea not text inputs

[29093] Article requests: Checkbox for table of contents

Command-line Utilities

[18631] cleanup_database.pl should take an option for modules in action_logs

[25429] cleanup_database.pl should remove resolved claims returned after X days

[28456] Add option to use a WHERE statement in membership_expiry.pl cronjob

Developer Documentation

[27375] Set YAML file settings in .editorconfig
Sponsored by Koha-Suomi Oy

Fines and Fees

[22435] Clarify account_offset types by converting them to clear codes

[27583] Clarify how cash management fits together

[28346] Action buttons should have a class per action type

[28389] One should be able to see details for refunds on the register summary page

[28421] Add tests for Voided Payment and Voided Writeoff.

Hold Requests

[23678] Cancel holds in bulk

[28261] Add visual feedback on overridden pickup locations on patron’s page

[28816] Improve the display of multiple holds during hold process

[29015] Add option to limit Holds Queue report by shelving location / collection

[29116] request.pl re-invents Koha::Patron::is_expired accessor

[29404] Add infinite scrolling to pickup location dropdowns

[29407] Make the pickup locations dropdown JS reusable


[27170] ILL availability should be able to display arbitrary links to related resources

[28340] Provide improved display of ILL request metadata in notices

[28879] Display of metadata with long label names looks terrible

Installation and Upgrade (web-based installer)

[25078] Update DB process – wrap each DBRev inside a transaction and better error handling

[27101] Remove fr-CA installer data

[27622] Remove nb-NO installer data

[27823] List upcoming steps during installation process

[28978] Convert installer CSS to SCSS

Label/Patron Card Printing

[26340] When printing labels from a barcode range, keep zero padding

MARC Bibliographic Data Support

[18984] Remove support for NORMARC

[27850] Search link for 260 a and c in MARC21 XSLT display

MARC Bibliographic Record Staging/Import

[26402] Add –framework parameter to commit_file.pl


[28153] Add ‘Hold reminder’ messaging preference


[15067] Add additional languages to advanced search language search

[20310] Article requests: Use details from the host record when submitting an article request on an analytic record without attached items

[24223] Convert OpacNav system preference to news block

[24224] Convert OpacNavBottom system preference to news block

[26302] OPAC XSLT Results: List variable number of itemcallnumbers

[26761] Use aria-disabled attribute in OPAC cart for disabled links

[27360] Libraries should be able to pick which branches display on the public ‘Libraries’ page

[27445] OPAC header tweaks for non-JavaScript users

[27882] Move external search results links out of page heading

[28101] Accessibility: OPAC – Breadcrumbs should be more accessible
Sponsored by Catalyst

[28142] Accessibility: OPAC Cart/basket checkboxes are not labelled

[28536] Move translatable strings into overdrive.js

[28537] Improve HTML generated by OverDrive integration

[28720] Update the process of adding a checkout note in the OPAC

[28821] OPAC Advanced search: Improve operation of button plus/less

[28831] OPAC XSLT Results: Allow unavailable item grouping on status only for large consortia

[28838] SCO impossible errors are hard to target with CSS/JS

[28933] Hard to parse OPAC-detail subscription information

[29006] Make GoogleOpenIDConnect options consistent in the OPAC

[29162] Change template structure on OPAC library page so that a single library can easily be hidden


[11879] Add a new field to patron record: main contact method
Sponsored by Centre collégial des services regroupés

[15788] Split borrowers permission into create/edit and delete

[24406] Add a span to patron category category type codes in patron search result lists

[26544] Make housebound module show delivery preferences when scheduling

[27725] Use JavaScript to set history state during patron search

[27873] Make display of patron restrictions, charges, notes, etc. consistent for check out and patron details screens

[28073] Make patron modifications auto-open panel for referring patron record

[28450] Make Account summary print tables configurable

[28867] Use Bootstrap button menu and modal for adding patrons to lists

Plugin Architecture

[26351] Add plugin hooks to transform item barcodes

[26352] Add plugin hooks to transform patron barcodes

[27173] Add plugin hooks for authority record changes

[28026] Add a ‘call_recursive’ method to Koha::Plugins

[28211] Replace use of call_recursive() with call()

[28474] Pass process_message_queue.pl params to before_send_messages plugin hooks


[17314] Routes to create, list and delete a purchase suggestion

[27358] Add GET /public/biblios/:biblio_id/items

[27931] Add GET /items/:item_id/pickup_locations

[28412] Add supported authentication methods documentation

[28948] Add a /public counterpart for the libraries REST endpoints

[29107] item_type should be item_type_id on item response object

[29108] Add q parameters to items routes

[29183] Add query options documentation

[29290] Add routes to fetch checkouts for a given biblio


[27747] Add CodeMirror custom syntax highlighting for column placeholders

[28454] Add Koha version number to database schema link in reports

[29186] Move reports result limit menu into toolbar

[29201] biblio_framework missing form list of runtime parameters when editing SQL reports


[12169] Improve reliability of sip_shutdown script

[25464] Add ability to specify client IP and SIP account used in SIP2 logging

[28730] Add option to format AH field (due date) in SIP checkout response


[27848] Elasticsearch – include 245b subtitle and 245p part subfields in the default title index mappings

[28384] Add ‘no_items’ option to TransformMarcToKoha

[28830] Add CNI (Control Number Identifier) search index (MARC21)

Searching - Elasticsearch

[28339] Elasticsearch – Add 8XX to default title-series index mappings (MARC21)

[28378] Elasticsearch – Add 264c to default copydate mappings (MARC21)

[28379] Elasticsearch – Add 710 to author-name-corporate index (MARC21)

[28381] Elasticsearch – Add 710 and 711 to default mappings for author index (MARC21)

[28391] Elasticsearch – Add 264b to publisher index mapping (MARC21)

[28393] Elasticsearch – Add 050a to lc-call-number index mapping (MARC21)

[28736] Better error message when ES fails to understand the syntax of the search query

Searching - Zebra

[20463] Create an index for LDR, pos 19 – Multipart resource record level
Sponsored by Bibliotheksservice-Zentrum Baden-Württemberg (BSZ)

[28337] Add System-control-number index for authorities to MARC21 indexes

Staff Client

[28356] Consolidate header catalogue search box code

[28390] Transaction timestamps should be part of the transaction grouping row instead of repeated for each breakdown row

[28677] Add the word “calendar” to the description for ExpireReservesOnHolidays

[28819] Add link to item search from mainpage.pl

[29369] Use Flatpickr in dateaccessioned cataloging plugin

System Administration

[27505] Add new itemtype controller image for carredart

[27521] Adding new itemtype headset image for carredart

[28347] Add DataTables, additional information to patron attribute types management

[28563] Add AllowHoldItemTypeSelection to Hea

[29149] Background job detail view needs more flexibility


[12561] Remove non-XSLT views

[26838] Improve styling of checkin message

[26949] Upgrade TinyMCE in the staff interface from 5.0.16 to 5.9.2

[28084] Standardize: Cardnumber, Card number, Card

[28321] Use template block for display of items in search results

[28376] Flatpickr introduction for datetime picker

[28394] Improve style of patron category entry form

[28843] Add view and edit buttons to result of MARC record import

[28937] Use Flatpickr on circulation and patron pages

[28942] Use Flatpickr on acquisitions pages

[28945] Use Flatpickr on administration pages

[28949] Use Flatpickr on reports pages

[28958] Use Flatpickr on serials pages

[28961] Use Flatpickr on tools pages

[28963] Use Flatpickr on calendar page

[28982] Use Flatpickr on onboarding pages

[28983] Use Flatpickr on various pages

[28988] Reindent calendar template

[29041] Improve specificity of breadcrumbs in Additional Contents

[29042] Improve formatting of entry form in Additional Contents

[29052] Make consistent use of spans and div with hint class

[29229] Use Flatpickr in suggestion search sidebar filter

[29231] Add missing Flatpickr to inventory page

[29270] Use flatpickr and futuredate on reserve/request.tt

[29299] Reindent serials search template

Test Suite

[19185] Web installer and onboarding tool selenium test

[19821] Run tests on a separate database

[28615] Add a simple way to mock Koha::Logger


[16446] Allow librarians to add borrowers to patron lists by borrowernumber

[22544] Move C4:NewsChannels to Koha namespace

[24019] Patron batch modification based on borrowernumber

[24387] Rename News tool

[26080] Use the task queue for the batch delete records tool

[27883] Add ability to preserve patron field from being overwritten by import

[28175] Usability improvements to uploads page

[28177] Add date column and column configuration to uploads

[28839] Better texts in stage MARC for import

[29265] Can’t pick editor to use when adding new news or HTML customization entries

Web Services

[26195] Add a way to specify authorised values should be expanded [OAI]

[28630] ILSDI::AuthenticatePatron should set borrowers.lastseen

Z39.50/SRU/OpenSearch Servers

[8280] SRU should be filterable by Koha Item Type

System Preferences, Authorized Value Categories, and Letter Codes

New System Preferences


Renamed System Preferences

RequestOnOpac => OPACHoldRequests

NewsToolEditor => AdditionalContentsEditor

Deleted System Preferences

OpacNav (moved to HTML customizations)
OpacNavBottoma (moved to HTML customizations)

New Authorized Value Categories


New Letter Codes


Read more by Sara Brown

Tags 21.11, upgrades