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

79 Built (42.0%)45 Built, extended beyond Koha (23.9%)45 Planned (23.9%)19 Not planned (10.1%)

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.

Koha todayLumina
Koha pain points and how Lumina approaches each
TopicKohaLumina
PreferencesAbout 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 rulesA 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 statesMagic numbers: notforloan, itemlost, a flags bitmask.Named enums, booleans, and a role plus an explicit permission list.
MoneyDebits 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 deskStacked dialogs and a switch per preference.Three-state results with reason codes and permission-gated overrides, inline in the desk.
Offline circulationThe web offline mode was removed in 23.11.Idempotent client ids, a mobile action queue, and reconcile on reconnect.
NoticesTemplate 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 setupElasticsearch 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 capabilities and their status in Lumina
Koha capabilityStatus in LuminaNotesKoha tier
Circulation · 25 features
Checkout by patron card and item barcodeDue date from circulation rules and calendar; hard due date; hourly loansBuilt (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 checkoutSpecifyDueDateBuiltP1
Batch checkoutBarcode list, file or RFID padPlannedRows 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 flyPlannedToday the clerk opens the catalogue form in another tab.P2
Checkout notes and patron notes on a loanAllowCheckoutNotesBuiltP1
Warnings, blocks and overridesToo many, restricted, expired, fines over limit, held for another patron, not for loan, age restrictionBuilt (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, SwitchOnSiteCheckoutsBuiltPer-rule on-site limit is maxOnsiteCheckouts .P2
Previous checkout warningcheckprevcheckoutPlannedNeeds a per-patron flag and a history lookup.P2
Check-in (return)Backdate, forgive fines, transfer and hold prompts, claim resolutionBuilt (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_limitsPlannedKoha returnbranch is ignored on import; floating collections are on the "later: scale" roadmap.P2
Claims returnedreturn_claimsBuiltP2
Manual renewalsrenewalsallowed, renewalperiod, norenewalbefore; blocked by holds, fines, restrictionsBuilt (extended)Prefs AllowRenewalLimitOverride , AllowRenewalIfOtherItemsAvailable , RenewalChargesOverdueFine , RenewalPeriodBase .P1
Automatic renewalauto_renew, cron automatic_renewals.plBuiltnoautorenewalbefore and no_auto_renewal_after* are not carried by the importer.P2
Unseen renewals limitunseen_renewals_allowedNot plannedNiche counter for renewals without seeing the item; the renewal limit covers the common case.P3
Renewal logcheckout_renewalsBuiltPer-renewal rows are not stored separately; statistics and audit carry each event.P2
Lost itemsReplacement and processing fee, refund on returnBuilt (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*BuiltP2
Item bundlesitem_bundles (22.11)Not plannedRare in target libraries. Multi-part sets use volume, copy number and holdings fields.P3
Checkout history and reading historyold_issues, privacy levelsBuiltPrivacy 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)BuiltP1
Self checkout and self check-inSelfCheckoutByLogin, SCI module, SIP2 kiosksPlannedKiosk web mode is planned together with the SIP2 server.P2
Circulation desksUseCirculationDesks, desksNot plannedPickup 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 sessionloggedinlibraryBuiltP2
Holds, transfers and recalls · 21 features
Place hold: title level and item levelStaff, OPAC, API; pickup library choiceBuiltVolume-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 plannedItem groups are not modelled; volume-level holds cover the common case.P3
Place holds on several records at onceDisplayMultiPlaceHoldPlannedVia lists ("hold all available") and the OPAC cart.P3
Hold policy enginereservesallowed, max_holds, holds_per_record, onshelfholds, damaged itemsBuiltholds_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, ConfirmFutureHoldsPlannedThe model has expiry and suspend-until but no start date.P3
Holds queue and prioritiespriority 1..n, reorder, lowestPriority, nightly queue builderBuilt (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 reportsBuiltP1
Hold fulfilment and slipsfound W/T/P, hold slipBuilt (extended)Explicit status enum replaces found plus priority 0 encoding.P1
Expire unpicked holdscancel_expired_holds.pl, ReservesMaxPickUpDelayBuiltRule holds_pickup_period is not carried; use the preference.P1
Suspend and resume holdssuspend_until, auto resumeBuiltP2
Hold feesHoldFeeMode, hold_fee ruleBuiltPer-category fee, charged when placed or when collected.P2
Local holds priority, split queue, transport cost matrixLocalHoldsPriority*, HoldsSplitQueue, UseTransportCostMatrixPlannedBelongs with consortium and multi-library hold targeting.P3
Club holdsclub_holdsNot plannedRare; clubs exist as a separate engagement feature.P3
Batch modify holdsTools > batch modify holds (25.11)PlannedP3
Item transfers between librariesbranchtransfers, transfer slip, receiveBuiltReasons: HOLD, RETURN_TO_HOME, STOCK_ROTATION, MANUAL, RECALL, COURSE_RESERVE.P1
Transfer limits and transport cost matrixbranch_transfer_limits, transport_costPlannedNot imported today.P2
Recallsrecalls (22.05), recall rulesPlannedPref 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_* noticesBuiltP3
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 itemsPlannedP3
Curbside pickupcurbside_pickup* (22.11)Not plannedThe hold shelf with a pickup deadline covers the need.P3
Fines, fees and money · 9 features
Overdue finesfines.pl, fine x chargeperiod, grace, cap, suspensionBuilt (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, manualBuiltFixed 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_offsetsBuilt (extended)Explicit allocations (offsets), partial payments, voids, receipts numbered per payment.P1
Receipts and statementsACCOUNT_CREDIT, RECEIPT, ACCOUNTS_SUMMARYBuiltEmail, SMS, WhatsApp, push and print variants.P1
Cash registers and cash-upcash_registers, cash_register_actionsBuiltPref UseCashRegisters .P2
Point of sale (sell items)EnablePointOfSale, RECEIPT slipsNot plannedMerchandise 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)BuiltFines are INR; acquisitions can hold vendor currencies.P2
Patrons · 24 features
Patron categoriescategories (A, C, S, I, P, X types, enrolment, fees, limits)BuiltTypes: ADULT, CHILD, PROFESSIONAL, STAFF, INSTITUTIONAL, STATISTICAL.P1
Patron record~90 columns in borrowersBuiltFlatter 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 XBuiltPrefs autoMemberNum , CardNumberPrefix , CardNumberPadding .P1
Extended patron attributesborrower_attribute_types, borrower_attributesBuiltRepeatable, unique, authorised-value-backed, per category.P1
Guarantors and guaranteesborrower_relationships (many to many)BuiltOne guarantor per patron; Koha allows several. The importer keeps the first relationship.P1
Linked accountspatron_account_linksNot plannedNiche; guarantors cover family accounts.P3
Staff roles and permissionsuserflags bitmask plus ~150 granular permissionsBuilt (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_typesBuiltKoha user-defined restriction types collapse into the fixed set.P1
Patron messages and notesmessages, borrowernotes, opacnoteBuiltP1
Notification preferencesborrower_message_preferences, digests, days in advanceBuilt (extended)Channels EMAIL, SMS, WHATSAPP, PUSH, PRINT; quiet hours and double opt-in are design goals.P1
Membership renewal and expiryRenew account, expiry noticesBuiltP1
OPAC self-registrationPatronSelfRegistration, verify by email, moderationBuiltP2
Self-edit with staff moderationborrower_modificationsPlannedStructured change-request workflow.P2
Merge, delete and anonymise patronsmerge_borrowers, delete_patrons, anonymisePlannedDowngraded 2026-10-12: delete and anonymise have UI; the merge API exists but no screen calls it.P1
Patron searchStandard, contains, attribute, advancedBuilt (extended)As-you-type with block badges in the result row.P1
Patron cards and digital cardCard creator, OPAC virtual cardBuilt (extended)Offline-capable digital card in the patron app.P2
Privacy levelsprivacy, OPACPrivacy, AnonymousPatronBuiltP2
Consent ledger and data subject toolingpatron_consent, pseudonymised statsPlannedFull DPDP consent ledger, export and erase requests: see Standards and India .P2
Two-factor and OTPStaff TOTP (2FA), email tokenPlannedKoha 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, importBuiltCSV import with matching and attribute columns.P1
Patron photopatronimage, batch uploadBuiltBatch photo upload is a candidate for the bulk framework.P2
Discharge (no dues clearance)useDischarge, DISCHARGE noticePlannedA "No Dues Certificate" is a common Indian academic need.P3
Housebound servicehousebound_*Not plannedNiche regional feature.P3
Clubs and enrolmentclubs, club_templatesBuiltP3
Cataloguing, items and authorities · 29 features
MARC21 bibliographic recordsbiblio, biblioitems, biblio_metadata (MARCXML)BuiltMARC is authoritative; search columns are re-derived from MARC. Items live in their own table, never inside the stored MARC.P1
UNIMARC and NORMARCmarcflavourPlannedUNIMARC conversion at the edge is planned; NORMARC is not (no demand).P3
MARC frameworksbiblio_framework, tag and subfield structureBuiltA fixed canonical item and biblio schema; mapping is versioned configuration, not Perl value builders.P1
Form editor with MARC expert viewBasic editor, pluginsBuilt (extended)A form first, MARC behind a toggle, with validation (indicators, repeatability).P1
Advanced editor and macrosadvanced_editor_macrosPlannedText-based editing for expert cataloguers.P2
Staged MARC import with matchingimport_batches, marc_matchers, overlayBuiltISO 2709 and MARCXML, match rules, revert batch. Field-level overlay protection is not carried.P1
Z39.50 and SRU copy cataloguingz3950serversPlannedSee search protocols .P2
Batch edit and delete itemsitems_batchmod, items_batchdelBuiltRuns as a background job with a result log.P2
Batch modify records, MARC modification templatesmarc_modification_templatesPlannedP2
Merge bibliographic recordsmerge toolPlannedMove items, holds and subscriptions.P2
Delete and restore recordsdeletedbiblio*, records_restorePlannedSoft 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 profilesBuiltMARC, MARCXML and CSV.P1
Covers and attachmentscover_images, uploads, 856 linksBuilt (extended)Open Library and Google providers with a deterministic typographic fallback.P3
Report a concern on a recordtickets (23.05)PlannedP3
Catalogue audit trailaction_logs CATALOGUINGBuilt (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 rulesBuiltPref ClassificationDefault (DDC by default). See classification .P1
Item typesitemtypes (fees, replacement cost, notforloan, icons)BuiltP1
Collections and shelving locationsAV CCODE, LOCBuiltFirst-class tables instead of authorised-value strings.P1
Authorised valuesauthorised_value_categories, authorised_valuesBuiltP1
Item groupsitem_groups (22.11)Not plannedVolume field covers display and volume holds.P3
Barcode generation and batch addautoBarcode, quick add copiesBuilt (extended)Accession numbers with a configurable format (register-friendly).P1
Rotating collections and stock rotationcollections, stockrotation*PlannedP3
Inventory (stocktake)Tools > InventoryBuilt (extended)Scan results FOUND, NOT_IN_CATALOG, WRONG_LOCATION, CHECKED_OUT, WITHDRAWN, LOST_FOUND, DUPLICATE; mobile shelf-reading.P2
Spine labels and barcodescreator_* label creatorBuilt (extended)Every book and patron card is scannable as Code 128 and as QR.P2
Authority recordsauth_header, auth_types, linker, mergeBuiltHeading maintenance cascades; authority merge and external imports (LC, VIAF) are planned.P2
Search engineElasticsearch or Zebra; field mapping adminBuilt (extended)No external index to run or rebuild. OpenSearch is an option for scale later.P1
Facets, saved searches, historyFacets, search filters, EnableSearchHistoryBuiltP1
Shelf browserBrowse shelf by call numberPlannedPlanned for the OPAC record page.P2
Serials · 7 features
Subscriptionssubscription, frequency, numbering patternsBuiltFrequency enum plus pattern fields instead of three-level numbering formulas; a visual pattern builder is a design goal.P2
Issue prediction and receivingserial, subscriptionhistory, serialitemsBuiltStatuses EXPECTED, ARRIVED, LATE, MISSING, CLAIMED, NOT_PUBLISHED, DELETED.P2
Claimsclaimissues letters, claim countsBuiltP3
Routing listssubscriptionroutinglistBuiltP3
Renew, expire, closeRenewal, expiry reportBuiltP2
OPAC serial holdings and patron alertsSERIAL_ALERT, alert tablePlannedP2
Mana knowledge baseMana, mana_idNot plannedCommunity KB sharing has little uptake.P3
Acquisitions and suggestions · 8 features
Vendorsaqbooksellers, contacts, contracts, interfacesBuiltAliases, interfaces and contracts are not modelled; delivery days feed late-order lists ( AcqDefaultDeliveryDays ).P2
Funds and budgetsaqbudgetperiods, aqbudgets (hierarchical)BuiltCommitments and spend are reported per fund. Financial year April to March supported.P2
Baskets and ordersaqbasket, aqorders, basket groupsBuiltCSV import and export of basket lines; basket groups are not modelled.P2
Receiving and invoicesPartial receipts, shipping, invoices, adjustmentsBuiltCreates items on receipt with generated accession numbers ( item-numbers.ts ).P2
Late order claimsACQCLAIM, aqorders_claimsBuiltVendor claim email is planned.P3
EDIFACT (QUOTES, ORDERS, INVOIC)edifact_*PlannedMost Indian vendors use CSV, Excel and PDF; EDI is a later phase.P3
Purchase suggestionssuggestions, status noticesBuiltP2
Acquisitions reportsStatistics wizards, ordered by fundBuiltP3
Course reserves, lists and social · 4 features
Course reservescourses, course_items, instructors, temporary item overridesBuiltTemporary overrides while on reserve are restored when removed.P3
Lists (private, shared, public)virtualshelves, shares, send and downloadBuiltKoha share invitations map to the SHARED visibility.P2
Reviews, ratings and tags with moderationreviews, ratings, tags_allBuiltP3
Reading challenges and engagementNot in Koha corePlannedDowngraded 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 wizardBuiltP1
SQL reportssaved_sql, runtime parametersBuiltRestricted to super librarians; read-only execution.P2
Built-in report catalogue and KPI dashboardStatistics wizards, circulation statsBuilt (extended)Curated, schema-independent reports so internal changes do not break them.P1
Scheduled and emailed reportsrunreport.pl plus cronPlannedP2
Report dictionary and Mana reportsreports_dictionaryNot plannedP3
Accreditation report packs (NAAC, NBA, accession register)Not in KohaPlannedSee Standards and India .EXTRA
Tools, notices and content · 13 features
Calendar (holidays)library_hours, closuresBuiltSingle, 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, restrictBuiltThree levels by default ( OVERDUE_1..3 ).P1
Message queue and deliverymessage_queue, process_message_queue.plBuilt (extended)Retries, skip and cancel states, delivery status per channel.P1
News and announcementsadditional_contents (news)BuiltP2
Custom pages and HTML customisationsPages (22.11), OPACUserCSS and JSPlannedTheme tokens and blocks instead of raw CSS and JS.P2
Quote of the dayquotesNot plannedP3
Scheduled tasks and cronAbout 50 cron scripts, at-based schedulerBuilt (extended)Built-in scheduler with run history instead of external cron.P1
Background jobsbackground_jobsBuiltP2
Import and export toolsStage MARC, patron CSV, export, CSV profilesBuiltP1
Log vieweraction_logs viewerBuilt (extended)Always-on structured audit; every state-changing staff action is logged.P2
File uploadsuploaded_filesBuiltP3
Perl plugin systemHooks, tool and report pluginsNot plannedReplaced by webhooks and scoped API clients; no in-process plugin runtime.P3
Administration and security · 18 features
System preferences~910 untyped values in 21 tabsBuilt (extended)A curated, typed set with categories and choices. See preference mapping .P1
Libraries and library groupsbranches, library_groupsBuiltPer-library timezone-aware hours.P1
Debit and credit typesaccount_debit_types, account_credit_typesBuiltUser-defined types are not planned: fixed enums keep ledger reports stable.P1
Record matching rules, frameworks, authority typesmarc_matchers, frameworks, auth_typesBuiltP1
Record overlay rules and OAI setsmarc_overlay_rules, oai_setsPlannedPlanned with the OAI-PMH provider.P2
Additional fieldsadditional_fields (custom fields on orders, subscriptions)Not plannedTyped columns and patron attributes cover real needs; avoids untyped sprawl.P2
Cities, SMS provider table, item circulation alertscities, sms_providers, item_circulation_alert_preferencesNot plannedAddresses are free text with state and PIN; SMS providers are configured by preference.P3
Local authentication, lockout and password policyFailedLoginAttempts, minPasswordLength, RequireStrongPasswordBuilt (extended)Koha bcrypt, pbkdf2 and legacy MD5 hashes verify at first login and are upgraded.P1
Single sign-on (OIDC, CAS, LDAP, Shibboleth)identity_providersPlannedGoogle and Microsoft Workspace sign-in is the first target for colleges.P2
API clients and tokensapi_keys, OAuth2 client credentialsBuilt (extended)Scoped clients, revocable.P1
WebhooksNone in coreBuilt (extended)EXTRA
Email and SMS deliverysmtp_servers, SMSSendDriverBuilt (extended)Per-library SMTP is not planned; one sender plus per-library reply details.P1
SIP2 serversip_institutions, sip_accountsPlannedHighest-value interoperability item; see SIP2 .P2
Interlibrary loanill* tables, backends, ISO 18626BuiltStructured manual workflow today; ISO 18626 and DELNET adapters planned.P3
E-resource managementerm_* agreements, licences, packages, usageBuiltCOUNTER and SUSHI harvesting are planned.P3
Preservation modulepreservation_*Not plannedNiche archival workflow.P3
Interface and languagei18n, TranslateNotices, keyboard shortcutsBuilt (extended)Locale en-IN , DD-MM-YYYY. Language coverage to be verified.P2
Audio alerts and column settingsAudio alerts, table settingsPlannedVerdict sounds are specified in the design system.P3
OPAC and patron account · 12 features
Search, facets and sortingSimple and advanced search, facets, RSS, historyBuiltAvailability on every result; filters for branch, format, language.P1
Record detail and holdingsHoldings by library, due dates, MARC views, 856BuiltP1
Enhanced contentGoogle, Open Library, Syndetics, NovelistBuiltCommercial enrichment is not planned.P3
Account: loans, holds, fines, renewalsopac-user.pl, Renew, Holds, FinesBuilt (extended)Renew all with per-item reasons in plain language.P1
Pay fines onlineNot in coreBuilt (extended)EXTRA
Reading history (opt-in)opacreadinghistoryBuiltP1
Notification preferences and inboxMessaging preferencesBuilt (extended)In-app inbox and push.P1
Purchase suggestionsOPAC suggestionsBuiltP2
Events, rooms and courses in the OPACNot in coreBuilt (extended)EXTRA
Custom OPAC blocks and CSSOpacNav, OpacMainUserBlock, OPACUserCSSPlannedPlanned as tokens plus content blocks.P2
Self-checkout in the OPACOPAC self-checkout (23.11)PlannedP3
Bot protection on registration and loginReCAPTCHA prefsPlannedA privacy-friendly challenge (for example Turnstile) is planned.P2
Integrations and services · 12 features
REST API/api/v1, Basic, OAuth2 client credentialsBuilt (extended)Uniform pagination envelope, error codes, idempotent offline sync. Koha-compatible API shim is not planned.P1
ILS-DIilsdi.plNot plannedLegacy interface superseded by REST.P3
OAI-PMH provider and harvesteroai.pl, harvest_oai.plPlannedP2
SRU and Z39.50 serverZebra, ES-backed SRUPlannedP2
SIP2See administrationPlannedP2
NCIPSeparate NCIPServer projectPlannedP3
RFIDVia SIP2 and RFID padsPlannedISO 28560 tag programming workflow later; see barcodes and RFID .P3
Email, SMS, WhatsApp, push, phoneSMS gateways, TalkingTech voiceBuilt (extended)WhatsApp and push are first-class. Voice notices are not planned.P1
Digital lending (OverDrive, Libby, Hoopla)OverDrive prefsPlannedP3
Elasticsearch and OpenSearchrebuild_elasticsearch.plNot plannedReplaced by Postgres search.P1
Staff and patron mobile appsNo native Koha appsBuilt (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

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.