Lumina vs Koha · 025.04 KOH
Koha is the benchmark, and Lumina was built to be Koha-compatible. We reviewed 188 Koha features and marked each Built, Built (extended), Planned or Not planned. Here is the whole list, and the honest summary.
The summary
In short: 124 of 188 are in the product today, 45 are on the roadmap, and 19 are things we have chosen not to do. Statuses were verified against the code on 2026-10-12.
Where Koha is ahead
What twenty years buys.
- A 20-year community. Koha has a large, global community, a long track record and a deep bench of consultants and integrators. Lumina is a new product.
- A plugin ecosystem. Koha's plugin system and its many community plugins have no equivalent in Lumina yet. Lumina deliberately does not carry the Perl plugin runtime.
- Standards and integrations. SIP2, a Z39.50/SRU server, OAI-PMH, NCIP, EDIFACT and RFID are mature in Koha and Planned in Lumina.
- Translations. Koha ships in dozens of languages. Lumina ships in English and Hindi.
- Batteries around circulation. Batch checkout, recalls, transport cost matrices, float groups, hold start dates and bookings are all Planned in Lumina.
- Cataloguing standards. UNIMARC, Z39.50 copy cataloguing, an advanced editor with macros, and record overlay rules are Planned in Lumina.
Where Lumina is ahead
What a fresh start buys.
- A quieter desk. A three-state checkout with reason codes and inline overrides, a command palette and a keyboard-first desk.
- Mobile, both ways. A staff app with role-based tabs and a guard-only gate check, and a member app with a digital card.
- Foundations you can read. Typed settings instead of about 910 untyped preferences, named states instead of magic numbers, proper foreign keys, UTC timestamps.
- Money that adds up. Always-positive amounts, cash register sessions, INR with Razorpay and UPI, numbered receipts.
- Offline that survived. Idempotent offline operations and a mobile queue, where Koha removed its web offline mode.
- Search with nothing to rebuild. Postgres full-text and trigram search maintained by a trigger, with Devanagari-friendly matching.
- Events and rooms. Events with registration and room booking are first-class.
- Reports without SQL. 34 built-in reports and a guided builder.
Design choices
Flip the switch to see how Koha and Lumina each approach a handful of well-known pain points.
| Topic | Koha | Lumina |
|---|---|---|
| Preferences | About 910 untyped preferences; several "control library" prefs pick different libraries. | Typed, categorised preferences with choices and defaults, and one setting for each control library. |
| Circulation rules | A wildcard matrix with no simulator; blank and missing mean different things. | One typed rule per scope, resolved by library, patron category and item type, most specific first. |
| Item and patron states | Magic numbers: notforloan, itemlost, a flags bitmask. | Named enums, booleans, and a role plus an explicit permission list. |
| Money | Debits and credits share one signed table; statuses are text; one currency. | Always-positive amounts, explicit credit and debit types, cash register sessions, a Currency model. |
| Overrides at the desk | Stacked dialogs and a switch per preference. | Three-state results with reason codes and permission-gated overrides, inline in the desk. |
| Offline circulation | The web offline mode was removed in 23.11. | Idempotent client ids, a mobile action queue, and reconcile on reconnect. |
| Notices | Template Toolkit, a row per code, transport and language, no preview. | One code with channel variants, a preview with sample data, and a retry queue. |
| Search setup | Elasticsearch mappings and rebuild lag, plus legacy Zebra. | Postgres full-text and trigram search kept current by a trigger; nothing to rebuild. |
Koha is the mature, proven system with a 20-year community. These are the design choices Lumina made differently, from reading Koha's schema, preferences and release notes.
The full table
Filter by status, module or any word. Each row is a Koha capability; the notes say what is different or missing in Lumina.
| Koha capability | Status in Lumina | Notes | Koha tier |
|---|---|---|---|
| Circulation · 25 features | |||
| Checkout by patron card and item barcodeDue date from circulation rules and calendar; hard due date; hourly loans | Built (extended) | Three-state result ( OK , NEEDS_CONFIRMATION , BLOCKED ) with reason codes. Koha daysmode values beyond Calendar and Days (Datedue, Dayweek) are not carried; the importer ignores the per-rule daysmode . | P1 |
| Choose a due date at checkoutSpecifyDueDate | Built | P1 | |
| Batch checkoutBarcode list, file or RFID pad | Planned | Rows resolve optimistically at scanner speed. File upload of a barcode list is not a separate screen. Downgraded 2026-10-12: no barcode-list, file or RFID batch mode exists. Repeated scanning at the desk and the staff-mobile offline queue only. | P2 |
| Fast cataloguing at the deskFastAdd framework creates a record on the fly | Planned | Today the clerk opens the catalogue form in another tab. | P2 |
| Checkout notes and patron notes on a loanAllowCheckoutNotes | Built | P1 | |
| Warnings, blocks and overridesToo many, restricted, expired, fines over limit, held for another patron, not for loan, age restriction | Built (extended) | One policy-check panel with reason codes instead of per-preference override switches; overrides are permission-gated and audited. | P1 |
| On-site (in-house) checkoutonsite_checkout, SwitchOnSiteCheckouts | Built | Per-rule on-site limit is maxOnsiteCheckouts . | P2 |
| Previous checkout warningcheckprevcheckout | Planned | Needs a per-patron flag and a history lookup. | P2 |
| Check-in (return)Backdate, forgive fines, transfer and hold prompts, claim resolution | Built (extended) | Prefs AutomaticItemReturn , RecordLocalUseOnReturn , BlockReturnOfLostItems , BlockReturnOfWithdrawnItems . Undo of a return is a UX goal; backdating to be confirmed in the verification pass. | P1 |
| Return policy and float groupsreturnbranch rule, library_float_limits | Planned | Koha returnbranch is ignored on import; floating collections are on the "later: scale" roadmap. | P2 |
| Claims returnedreturn_claims | Built | P2 | |
| Manual renewalsrenewalsallowed, renewalperiod, norenewalbefore; blocked by holds, fines, restrictions | Built (extended) | Prefs AllowRenewalLimitOverride , AllowRenewalIfOtherItemsAvailable , RenewalChargesOverdueFine , RenewalPeriodBase . | P1 |
| Automatic renewalauto_renew, cron automatic_renewals.pl | Built | noautorenewalbefore and no_auto_renewal_after* are not carried by the importer. | P2 |
| Unseen renewals limitunseen_renewals_allowed | Not planned | Niche counter for renewals without seeing the item; the renewal limit covers the common case. | P3 |
| Renewal logcheckout_renewals | Built | Per-renewal rows are not stored separately; statistics and audit carry each event. | P2 |
| Lost itemsReplacement and processing fee, refund on return | Built (extended) | Typed statuses instead of magic integers. Pref WaiveFinesOnLostItemReturn . The lost_item_processing_fee rule is not carried; use a PROCESSING debit. | P1 |
| Long overdue (auto-lost)longoverdue.pl, DefaultLongOverdue* | Built | P2 | |
| Item bundlesitem_bundles (22.11) | Not planned | Rare in target libraries. Multi-part sets use volume, copy number and holdings fields. | P3 |
| Checkout history and reading historyold_issues, privacy levels | Built | Privacy policy per patron (DEFAULT, FOREVER, NEVER). | P1 |
| Offline circulationLegacy .koc upload (web offline removed in 23.11) | Built (extended) | Koha abandoned offline mode. Lumina queues operations per device with replay and conflict reporting. | P3 |
| Circulation messages to patrons and staffmessages (L/B) | Built | P1 | |
| Self checkout and self check-inSelfCheckoutByLogin, SCI module, SIP2 kiosks | Planned | Kiosk web mode is planned together with the SIP2 server. | P2 |
| Circulation desksUseCirculationDesks, desks | Not planned | Pickup is per pickup library; per-desk granularity is rarely used. | P2 |
| Door guard gate checkNo Koha core equivalent (SIP2 gates only) | Built (extended) | A guard scans an item or card and sees whether it left the library lawfully, with no other access. | EXTRA |
| Set library for the sessionloggedinlibrary | Built | P2 | |
| Holds, transfers and recalls · 21 features | |||
| Place hold: title level and item levelStaff, OPAC, API; pickup library choice | Built | Volume-level holds via Hold. volume ; patron blocks and limits are explained before the hold is placed. | P1 |
| Item-group holds and hold groupsEnableItemGroupHolds, hold_groups (25.11) | Not planned | Item groups are not modelled; volume-level holds cover the common case. | P3 |
| Place holds on several records at onceDisplayMultiPlaceHold | Planned | Via lists ("hold all available") and the OPAC cart. | P3 |
| Hold policy enginereservesallowed, max_holds, holds_per_record, onshelfholds, damaged items | Built | holds_per_day , holdallowed , hold_fulfillment_policy , opacitemholds are not carried (reported by the importer). ReservesControlBranch picks the rule library. | P1 |
| Hold start date in the futureAllowHoldDateInFuture, ConfirmFutureHolds | Planned | The model has expiry and suspend-until but no start date. | P3 |
| Holds queue and prioritiespriority 1..n, reorder, lowestPriority, nightly queue builder | Built (extended) | Allocation is a service, not a cron-built tmp_holdsqueue ; the queue is derived, never imported. | P1 |
| Holds to pull and holds awaiting pickuptmp_holdsqueue reports | Built | P1 | |
| Hold fulfilment and slipsfound W/T/P, hold slip | Built (extended) | Explicit status enum replaces found plus priority 0 encoding. | P1 |
| Expire unpicked holdscancel_expired_holds.pl, ReservesMaxPickUpDelay | Built | Rule holds_pickup_period is not carried; use the preference. | P1 |
| Suspend and resume holdssuspend_until, auto resume | Built | P2 | |
| Hold feesHoldFeeMode, hold_fee rule | Built | Per-category fee, charged when placed or when collected. | P2 |
| Local holds priority, split queue, transport cost matrixLocalHoldsPriority*, HoldsSplitQueue, UseTransportCostMatrix | Planned | Belongs with consortium and multi-library hold targeting. | P3 |
| Club holdsclub_holds | Not planned | Rare; clubs exist as a separate engagement feature. | P3 |
| Batch modify holdsTools > batch modify holds (25.11) | Planned | P3 | |
| Item transfers between librariesbranchtransfers, transfer slip, receive | Built | Reasons: HOLD, RETURN_TO_HOME, STOCK_ROTATION, MANUAL, RECALL, COURSE_RESERVE. | P1 |
| Transfer limits and transport cost matrixbranch_transfer_limits, transport_cost | Planned | Not imported today. | P2 |
| Recallsrecalls (22.05), recall rules | Planned | Pref RecallsMaxPickUpDelay . Other recall rules are not carried. Downgraded 2026-10-12: the Recall model, service and API routes exist, but no web or mobile screen places or manages recalls. | P3 |
| Article requestsarticle_requests, AR_* notices | Built | P3 | |
| Room and equipment bookingNot in Koha core (Koha bookings reserve catalogue items) | Built (extended) | Capacity, hours, advance days, no-show grace, ICS export, conflict detection. | EXTRA |
| Bookings of catalogue itemsbookings (23.11), bookable items | Planned | P3 | |
| Curbside pickupcurbside_pickup* (22.11) | Not planned | The hold shelf with a pickup deadline covers the need. | P3 |
| Fines, fees and money · 9 features | |||
| Overdue finesfines.pl, fine x chargeperiod, grace, cap, suspension | Built (extended) | Calendar-aware ( finesCalendar ), mode finesMode off/test/production. chargeperiod_charge_at is not carried. | P1 |
| Fees and chargesRental, hold, lost, processing, new card, account, manual | Built | Fixed debit types keep ledger reports stable (custom Koha codes import as OTHER with the code in the note). | P1 |
| Payments, credits, write-off, forgive, refundaccountlines plus account_offsets | Built (extended) | Explicit allocations (offsets), partial payments, voids, receipts numbered per payment. | P1 |
| Receipts and statementsACCOUNT_CREDIT, RECEIPT, ACCOUNTS_SUMMARY | Built | Email, SMS, WhatsApp, push and print variants. | P1 |
| Cash registers and cash-upcash_registers, cash_register_actions | Built | Pref UseCashRegisters . | P2 |
| Point of sale (sell items)EnablePointOfSale, RECEIPT slips | Not planned | Merchandise sales are out of scope; use manual fees. | P2 |
| Online paymentsPlugins only (PayPal, Stripe) | Built (extended) | UPI through Razorpay; sandbox provider for demos. Only the Razorpay and sandbox adapters exist; STRIPE is accepted in the API contract but has no adapter yet ( OnlinePaymentSandbox ). | P3 |
| Circulation and fine rules matrixcirculation_rules EAV (library x category x item type) | Built (extended) | Same specificity order (library, category, item type). See rules mapping . A rule-explain tester is a design goal. | P1 |
| Currenciescurrency (acquisitions) | Built | Fines are INR; acquisitions can hold vendor currencies. | P2 |
| Patrons · 24 features | |||
| Patron categoriescategories (A, C, S, I, P, X types, enrolment, fees, limits) | Built | Types: ADULT, CHILD, PROFESSIONAL, STAFF, INSTITUTIONAL, STATISTICAL. | P1 |
| Patron record~90 columns in borrowers | Built | Flatter model: alternate address and contact in JSON, statistical codes as attributes, no legacy guarantor free text. | P1 |
| Add, duplicate, quick add, statistical patronsQuick add, duplicate, category X | Built | Prefs autoMemberNum , CardNumberPrefix , CardNumberPadding . | P1 |
| Extended patron attributesborrower_attribute_types, borrower_attributes | Built | Repeatable, unique, authorised-value-backed, per category. | P1 |
| Guarantors and guaranteesborrower_relationships (many to many) | Built | One guarantor per patron; Koha allows several. The importer keeps the first relationship. | P1 |
| Linked accountspatron_account_links | Not planned | Niche; guarantors cover family accounts. | P3 |
| Staff roles and permissionsuserflags bitmask plus ~150 granular permissions | Built (extended) | Roles with explicit extra permissions, queryable ("who can delete patrons?"). Importer maps flag bits and granular codes ( packages/koha-import/src/mapping/permissions.ts ). | P1 |
| Restrictionsborrower_debarments, restriction_types | Built | Koha user-defined restriction types collapse into the fixed set. | P1 |
| Patron messages and notesmessages, borrowernotes, opacnote | Built | P1 | |
| Notification preferencesborrower_message_preferences, digests, days in advance | Built (extended) | Channels EMAIL, SMS, WHATSAPP, PUSH, PRINT; quiet hours and double opt-in are design goals. | P1 |
| Membership renewal and expiryRenew account, expiry notices | Built | P1 | |
| OPAC self-registrationPatronSelfRegistration, verify by email, moderation | Built | P2 | |
| Self-edit with staff moderationborrower_modifications | Planned | Structured change-request workflow. | P2 |
| Merge, delete and anonymise patronsmerge_borrowers, delete_patrons, anonymise | Planned | Downgraded 2026-10-12: delete and anonymise have UI; the merge API exists but no screen calls it. | P1 |
| Patron searchStandard, contains, attribute, advanced | Built (extended) | As-you-type with block badges in the result row. | P1 |
| Patron cards and digital cardCard creator, OPAC virtual card | Built (extended) | Offline-capable digital card in the patron app. | P2 |
| Privacy levelsprivacy, OPACPrivacy, AnonymousPatron | Built | P2 | |
| Consent ledger and data subject toolingpatron_consent, pseudonymised stats | Planned | Full DPDP consent ledger, export and erase requests: see Standards and India . | P2 |
| Two-factor and OTPStaff TOTP (2FA), email token | Planned | Koha offers 2FA to staff only; Lumina includes OTP sign-in and templates OTP . Downgraded 2026-10-12: API (setup, enable, disable, login challenge, OTP sign-in) and the sign-in step exist; there is no enrolment screen, only an admin 2FA reset. | P2 |
| Patron lists and batch toolspatron_lists, batch modify, import | Built | CSV import with matching and attribute columns. | P1 |
| Patron photopatronimage, batch upload | Built | Batch photo upload is a candidate for the bulk framework. | P2 |
| Discharge (no dues clearance)useDischarge, DISCHARGE notice | Planned | A "No Dues Certificate" is a common Indian academic need. | P3 |
| Housebound servicehousebound_* | Not planned | Niche regional feature. | P3 |
| Clubs and enrolmentclubs, club_templates | Built | P3 | |
| Cataloguing, items and authorities · 29 features | |||
| MARC21 bibliographic recordsbiblio, biblioitems, biblio_metadata (MARCXML) | Built | MARC is authoritative; search columns are re-derived from MARC. Items live in their own table, never inside the stored MARC. | P1 |
| UNIMARC and NORMARCmarcflavour | Planned | UNIMARC conversion at the edge is planned; NORMARC is not (no demand). | P3 |
| MARC frameworksbiblio_framework, tag and subfield structure | Built | A fixed canonical item and biblio schema; mapping is versioned configuration, not Perl value builders. | P1 |
| Form editor with MARC expert viewBasic editor, plugins | Built (extended) | A form first, MARC behind a toggle, with validation (indicators, repeatability). | P1 |
| Advanced editor and macrosadvanced_editor_macros | Planned | Text-based editing for expert cataloguers. | P2 |
| Staged MARC import with matchingimport_batches, marc_matchers, overlay | Built | ISO 2709 and MARCXML, match rules, revert batch. Field-level overlay protection is not carried. | P1 |
| Z39.50 and SRU copy cataloguingz3950servers | Planned | See search protocols . | P2 |
| Batch edit and delete itemsitems_batchmod, items_batchdel | Built | Runs as a background job with a result log. | P2 |
| Batch modify records, MARC modification templatesmarc_modification_templates | Planned | P2 | |
| Merge bibliographic recordsmerge tool | Planned | Move items, holds and subscriptions. | P2 |
| Delete and restore recordsdeletedbiblio*, records_restore | Planned | Soft delete is the default; queries filter deletedAt: null . Downgraded 2026-10-12: soft delete exists for records and items; restore exists for items only, not bibliographic records. | P2 |
| Export recordsexport.pl, CSV profiles | Built | MARC, MARCXML and CSV. | P1 |
| Covers and attachmentscover_images, uploads, 856 links | Built (extended) | Open Library and Google providers with a deterministic typographic fallback. | P3 |
| Report a concern on a recordtickets (23.05) | Planned | P3 | |
| Catalogue audit trailaction_logs CATALOGUING | Built (extended) | Always on; structured entries. | P2 |
| Item recorditems (barcode, libraries, type, location, call number, statuses, prices, notes) | Built (extended) | Replaces signed-integer status columns. onloan is never stored: one active checkout per item is guaranteed by activeItemId . | P1 |
| Call numbers and classification sourcesclass_sources, sort and split rules | Built | Pref ClassificationDefault (DDC by default). See classification . | P1 |
| Item typesitemtypes (fees, replacement cost, notforloan, icons) | Built | P1 | |
| Collections and shelving locationsAV CCODE, LOC | Built | First-class tables instead of authorised-value strings. | P1 |
| Authorised valuesauthorised_value_categories, authorised_values | Built | P1 | |
| Item groupsitem_groups (22.11) | Not planned | Volume field covers display and volume holds. | P3 |
| Barcode generation and batch addautoBarcode, quick add copies | Built (extended) | Accession numbers with a configurable format (register-friendly). | P1 |
| Rotating collections and stock rotationcollections, stockrotation* | Planned | P3 | |
| Inventory (stocktake)Tools > Inventory | Built (extended) | Scan results FOUND, NOT_IN_CATALOG, WRONG_LOCATION, CHECKED_OUT, WITHDRAWN, LOST_FOUND, DUPLICATE; mobile shelf-reading. | P2 |
| Spine labels and barcodescreator_* label creator | Built (extended) | Every book and patron card is scannable as Code 128 and as QR. | P2 |
| Authority recordsauth_header, auth_types, linker, merge | Built | Heading maintenance cascades; authority merge and external imports (LC, VIAF) are planned. | P2 |
| Search engineElasticsearch or Zebra; field mapping admin | Built (extended) | No external index to run or rebuild. OpenSearch is an option for scale later. | P1 |
| Facets, saved searches, historyFacets, search filters, EnableSearchHistory | Built | P1 | |
| Shelf browserBrowse shelf by call number | Planned | Planned for the OPAC record page. | P2 |
| Serials · 7 features | |||
| Subscriptionssubscription, frequency, numbering patterns | Built | Frequency enum plus pattern fields instead of three-level numbering formulas; a visual pattern builder is a design goal. | P2 |
| Issue prediction and receivingserial, subscriptionhistory, serialitems | Built | Statuses EXPECTED, ARRIVED, LATE, MISSING, CLAIMED, NOT_PUBLISHED, DELETED. | P2 |
| Claimsclaimissues letters, claim counts | Built | P3 | |
| Routing listssubscriptionroutinglist | Built | P3 | |
| Renew, expire, closeRenewal, expiry report | Built | P2 | |
| OPAC serial holdings and patron alertsSERIAL_ALERT, alert table | Planned | P2 | |
| Mana knowledge baseMana, mana_id | Not planned | Community KB sharing has little uptake. | P3 |
| Acquisitions and suggestions · 8 features | |||
| Vendorsaqbooksellers, contacts, contracts, interfaces | Built | Aliases, interfaces and contracts are not modelled; delivery days feed late-order lists ( AcqDefaultDeliveryDays ). | P2 |
| Funds and budgetsaqbudgetperiods, aqbudgets (hierarchical) | Built | Commitments and spend are reported per fund. Financial year April to March supported. | P2 |
| Baskets and ordersaqbasket, aqorders, basket groups | Built | CSV import and export of basket lines; basket groups are not modelled. | P2 |
| Receiving and invoicesPartial receipts, shipping, invoices, adjustments | Built | Creates items on receipt with generated accession numbers ( item-numbers.ts ). | P2 |
| Late order claimsACQCLAIM, aqorders_claims | Built | Vendor claim email is planned. | P3 |
| EDIFACT (QUOTES, ORDERS, INVOIC)edifact_* | Planned | Most Indian vendors use CSV, Excel and PDF; EDI is a later phase. | P3 |
| Purchase suggestionssuggestions, status notices | Built | P2 | |
| Acquisitions reportsStatistics wizards, ordered by fund | Built | P3 | |
| Course reserves, lists and social · 4 features | |||
| Course reservescourses, course_items, instructors, temporary item overrides | Built | Temporary overrides while on reserve are restored when removed. | P3 |
| Lists (private, shared, public)virtualshelves, shares, send and download | Built | Koha share invitations map to the SHARED visibility. | P2 |
| Reviews, ratings and tags with moderationreviews, ratings, tags_all | Built | P3 | |
| Reading challenges and engagementNot in Koha core | Planned | Downgraded 2026-10-12: staff UI and public API exist; no patron-facing screen in the OPAC or patron mobile app. | EXTRA |
| Reports and dashboards · 6 features | |||
| Guided reportsGuided report wizard | Built | P1 | |
| SQL reportssaved_sql, runtime parameters | Built | Restricted to super librarians; read-only execution. | P2 |
| Built-in report catalogue and KPI dashboardStatistics wizards, circulation stats | Built (extended) | Curated, schema-independent reports so internal changes do not break them. | P1 |
| Scheduled and emailed reportsrunreport.pl plus cron | Planned | P2 | |
| Report dictionary and Mana reportsreports_dictionary | Not planned | P3 | |
| Accreditation report packs (NAAC, NBA, accession register)Not in Koha | Planned | See Standards and India . | EXTRA |
| Tools, notices and content · 13 features | |||
| Calendar (holidays)library_hours, closures | Built | Single, weekly and yearly repeats; drives due dates, fines and hold pickup. | P1 |
| Notice and slip templatesletter (module, code, library, transport, language) | Built (extended) | One code with channel variants, preview with sample data. See notice mapping . | P1 |
| Overdue notice triggersoverdue_X_delay, notice, mtt, restrict | Built | Three levels by default ( OVERDUE_1..3 ). | P1 |
| Message queue and deliverymessage_queue, process_message_queue.pl | Built (extended) | Retries, skip and cancel states, delivery status per channel. | P1 |
| News and announcementsadditional_contents (news) | Built | P2 | |
| Custom pages and HTML customisationsPages (22.11), OPACUserCSS and JS | Planned | Theme tokens and blocks instead of raw CSS and JS. | P2 |
| Quote of the dayquotes | Not planned | P3 | |
| Scheduled tasks and cronAbout 50 cron scripts, at-based scheduler | Built (extended) | Built-in scheduler with run history instead of external cron. | P1 |
| Background jobsbackground_jobs | Built | P2 | |
| Import and export toolsStage MARC, patron CSV, export, CSV profiles | Built | P1 | |
| Log vieweraction_logs viewer | Built (extended) | Always-on structured audit; every state-changing staff action is logged. | P2 |
| File uploadsuploaded_files | Built | P3 | |
| Perl plugin systemHooks, tool and report plugins | Not planned | Replaced by webhooks and scoped API clients; no in-process plugin runtime. | P3 |
| Administration and security · 18 features | |||
| System preferences~910 untyped values in 21 tabs | Built (extended) | A curated, typed set with categories and choices. See preference mapping . | P1 |
| Libraries and library groupsbranches, library_groups | Built | Per-library timezone-aware hours. | P1 |
| Debit and credit typesaccount_debit_types, account_credit_types | Built | User-defined types are not planned: fixed enums keep ledger reports stable. | P1 |
| Record matching rules, frameworks, authority typesmarc_matchers, frameworks, auth_types | Built | P1 | |
| Record overlay rules and OAI setsmarc_overlay_rules, oai_sets | Planned | Planned with the OAI-PMH provider. | P2 |
| Additional fieldsadditional_fields (custom fields on orders, subscriptions) | Not planned | Typed columns and patron attributes cover real needs; avoids untyped sprawl. | P2 |
| Cities, SMS provider table, item circulation alertscities, sms_providers, item_circulation_alert_preferences | Not planned | Addresses are free text with state and PIN; SMS providers are configured by preference. | P3 |
| Local authentication, lockout and password policyFailedLoginAttempts, minPasswordLength, RequireStrongPassword | Built (extended) | Koha bcrypt, pbkdf2 and legacy MD5 hashes verify at first login and are upgraded. | P1 |
| Single sign-on (OIDC, CAS, LDAP, Shibboleth)identity_providers | Planned | Google and Microsoft Workspace sign-in is the first target for colleges. | P2 |
| API clients and tokensapi_keys, OAuth2 client credentials | Built (extended) | Scoped clients, revocable. | P1 |
| WebhooksNone in core | Built (extended) | EXTRA | |
| Email and SMS deliverysmtp_servers, SMSSendDriver | Built (extended) | Per-library SMTP is not planned; one sender plus per-library reply details. | P1 |
| SIP2 serversip_institutions, sip_accounts | Planned | Highest-value interoperability item; see SIP2 . | P2 |
| Interlibrary loanill* tables, backends, ISO 18626 | Built | Structured manual workflow today; ISO 18626 and DELNET adapters planned. | P3 |
| E-resource managementerm_* agreements, licences, packages, usage | Built | COUNTER and SUSHI harvesting are planned. | P3 |
| Preservation modulepreservation_* | Not planned | Niche archival workflow. | P3 |
| Interface and languagei18n, TranslateNotices, keyboard shortcuts | Built (extended) | Locale en-IN , DD-MM-YYYY. Language coverage to be verified. | P2 |
| Audio alerts and column settingsAudio alerts, table settings | Planned | Verdict sounds are specified in the design system. | P3 |
| OPAC and patron account · 12 features | |||
| Search, facets and sortingSimple and advanced search, facets, RSS, history | Built | Availability on every result; filters for branch, format, language. | P1 |
| Record detail and holdingsHoldings by library, due dates, MARC views, 856 | Built | P1 | |
| Enhanced contentGoogle, Open Library, Syndetics, Novelist | Built | Commercial enrichment is not planned. | P3 |
| Account: loans, holds, fines, renewalsopac-user.pl, Renew, Holds, Fines | Built (extended) | Renew all with per-item reasons in plain language. | P1 |
| Pay fines onlineNot in core | Built (extended) | EXTRA | |
| Reading history (opt-in)opacreadinghistory | Built | P1 | |
| Notification preferences and inboxMessaging preferences | Built (extended) | In-app inbox and push. | P1 |
| Purchase suggestionsOPAC suggestions | Built | P2 | |
| Events, rooms and courses in the OPACNot in core | Built (extended) | EXTRA | |
| Custom OPAC blocks and CSSOpacNav, OpacMainUserBlock, OPACUserCSS | Planned | Planned as tokens plus content blocks. | P2 |
| Self-checkout in the OPACOPAC self-checkout (23.11) | Planned | P3 | |
| Bot protection on registration and loginReCAPTCHA prefs | Planned | A privacy-friendly challenge (for example Turnstile) is planned. | P2 |
| Integrations and services · 12 features | |||
| REST API/api/v1, Basic, OAuth2 client credentials | Built (extended) | Uniform pagination envelope, error codes, idempotent offline sync. Koha-compatible API shim is not planned. | P1 |
| ILS-DIilsdi.pl | Not planned | Legacy interface superseded by REST. | P3 |
| OAI-PMH provider and harvesteroai.pl, harvest_oai.pl | Planned | P2 | |
| SRU and Z39.50 serverZebra, ES-backed SRU | Planned | P2 | |
| SIP2See administration | Planned | P2 | |
| NCIPSeparate NCIPServer project | Planned | P3 | |
| RFIDVia SIP2 and RFID pads | Planned | ISO 28560 tag programming workflow later; see barcodes and RFID . | P3 |
| Email, SMS, WhatsApp, push, phoneSMS gateways, TalkingTech voice | Built (extended) | WhatsApp and push are first-class. Voice notices are not planned. | P1 |
| Digital lending (OverDrive, Libby, Hoopla)OverDrive prefs | Planned | P3 | |
| Elasticsearch and OpenSearchrebuild_elasticsearch.pl | Not planned | Replaced by Postgres search. | P1 |
| Staff and patron mobile appsNo native Koha apps | Built (extended) | Offline queue, camera barcode scanning, digital card. | EXTRA |
| Koha import moduleNot applicable (migration into Lumina) | Built (extended) | Idempotent through ImportMapping , dry run, reject reports, rollback. See the database reference . | EXTRA |
No features match. Try clearing a filter.
Source: Lumina's docs/koha-feature-parity.html, built from a Koha 26.05 feature inventory. "Koha tier" is Koha's own scope grouping from that inventory (P1, P2, P3 or Extra).
Questions
Why compare against Koha specifically?
Because Lumina is Koha-compatible: it was designed so a Koha library can move in, keeping its data and its vocabulary. Koha is also the right yardstick: it is the most widely used open-source ILS.
What do the statuses mean?
Built: the capability exists in Lumina. Built (extended): built, and Lumina goes beyond Koha. Planned: not built yet. Not planned: deliberately left out, usually with a reason in the notes. Statuses were verified against the code on 2026-10-12, and rows with a missing piece were downgraded to Planned.
Why is a feature I saw in the product marked Planned?
The table is deliberately conservative. A capability counts as Built only when the whole path (API, screen and rules) is there. Early or partial pieces, such as parts of the engagement module and the kiosk, are listed as Planned until they are complete.
Next step
If the gaps are not your gaps, let us talk.
Tell us which Koha features you rely on. We will say plainly whether Lumina covers them today, and rehearse your migration with you.