Koha How-To

Preparing for Library Closures

Last updated 8:45 am CDT, 4/2/24

You can access a recording of our town hall on library closures here.

For Multi-Branch or Multi-Library Systems

Many of these questions are significantly more complicated for multi-branch or multi-library systems. We've attempted to note those areas below, but please don't hesitate to contact us with questions.

Changes to Existing Checkouts

For all items that are currently checked out, any changes that you make to circ rules will not be retroactive. We can change the due dates for you, just let us know!

UPDATE: Changing circ rules will not impact due dates of existing checkouts or whether or not those checkouts can automatically renew. However, changes to circ rules *can* change how many renewals an existing checkout is allowed, how much more time each renewal adds to the checkout period, and what fines are charged on the item if it becomes late.

Automatic Renewal

Libraries may wish to start using automatic renewal in order to allow patrons to keep materials longer. This blog post walks through the circulation rules and other elements required to set this up. Part of the setup involves turning on a cronjob, which we'll need to do for you.

Koha records whether or not a given checkout is eligible for auto-renew at time of checkout. If you want existing checkouts to start auto-renewing, we'll need to edit those checkouts in your database. We're happy to do so, but suggest you give some thought to specifically which patron categories and item types you want this to apply to.


Self-registration can allow new patrons to access downloadable materials without coming to the library. This blog post explains how to set it up.

Marking the Library Closed on the Calendar

This is an important first step toward getting ready to close and will take care of a lot of things for you. Kelly wrote a blog post about the Koha calendar in 2017. Here’s the part about marking closures:

How to add closed dates/holidays to your Calendar in Koha:

You can access the calendar by going to more > Tools > Additional Tools > Calendar.

  • To add events, click on the date on the calendar that you would like to apply the closing or holiday to.
  • In the form that appears, enter the closing information – this will allow you to add a title to your closing date and a description.
  • Next, specify what type of holiday it is- this could be a one time holiday, holiday repeated on the same day weekly, holiday repeated on the same day yearly, etc. For each type of holiday- there is a question mark that will further explain each choice.
  • Click Save to finish.
  • The calendar is also color-coded- so you can see what days are which type of holidays.
  • There is also a display of all the days you are closed on the right-hand side of the screen organized by type of holiday if you so desire to see it that way.

System Preferences

Once Koha knows you’re closed, there are a handful of system preferences that control what Koha does with that information:

  • finesCalendar - This asks whether or not you want fines to accrue while the library is closed. Set it to “Calculate fines based on days overdue not including days the library is closed” if you want your fines to not increase while you’re closed.
  • OverdueNoticeCalendar - This asks whether or not you want overdue notices to send while the library is closed. Set it to “Use calendar when working out the period for overdue notices” if you don’t want overdue notices to send while the library is closed.
  • ExpireReservesOnHolidays - Controls whether or not holds can be automatically canceled on days the library is closed. Set it to “Don’t allow expired holds to be canceled on days the library is closed” if you want your holds to not get canceled while you are closed. This system preference is irrelevant if you have ExpireReservesMaxPickUpDelay set to “Don’t allow.”

The preceding three system preferences all deal with what Koha does while you are closed. There are also two important system preferences that control how Koha thinks about dates on which you will be closed in the future. These may not be relevant in the case of a sudden closure but will have a bearing if you have some forewarning of upcoming closure.

  • useDaysMode - This controls how Koha calculates due dates. Set it to either “Calculate the due date using the calendar to skip all days the library is closed” or “Calculate the due date using the calendar to push the due date to the next open day” to make sure nothing gets set to be due while you’re closed.
  • ExcludeHolidaysFromMaxPickUpDelay - This controls how Koha calculates hold expiration dates. Set it to “Don’t allow closed days to be taken into account in reserves max pickup delay” to make sure no holds get set to expire on days you’re closed.

Due dates are calculated at checkout and renewal, so changing useDaysMode doesn’t impact items already checked out until they’re renewed. Hold expiration dates are calculated when a hold is captured, so changing ExcludeHolidayFromMaxPickUpDelay doesn’t impact items already on hold.

Cron Jobs

While the calendar and these system preferences give us a lot of control over how Koha will act, we can go a step further if we disable some of Koha’s cron jobs. Most of the processes that happen regularly within Koha are instigated by cron jobs scheduled on your Koha server. Disabling these scheduled jobs prevents Koha from executing those processes. Some of the relevant cron jobs and recommended settings include:

  • fines.pl - Generates accruing fines on overdue items, based on your circulation and fine rules. This cron cannot be customized per branch.
  • overdue_notices.pl - Generates overdue notices based on your overdue notice triggers. Your triggers can be customized per branch, or the cron can be set to exclude a branch entirely.
  • advance_notices.pl - Generates pre-due and due notices based on the messaging preferences for individual patrons. There is no mechanism within the staff interface to turn these off in bulk and the cron cannot be customized per branch.
  • process_message_queue.pl - Sends notices generated by the previous crons. This cron cannot be customized per branch.
  • longoverdue.pl - Marks long-overdue items as lost and charges patrons the replacement price. This cron does not consult the library calendar and cannot be customized per branch.

Preventing or Altering Holds

Some libraries may wish to make changes to their holds process. Here are some relevant system preferences:

  • RequestOnOPAC - This asks whether or not patrons are allowed to place holds via the online catalog. Set it to “Don’t allow” to prevent new holds from being placed by patrons. Note: This system preference was renamed OPACHoldRequests in 21.11.
  • ReservesMaxPickUpDelay - When a hold is captured and put on the hold shelf, it is given an expiration date. This system preference controls how many days out that expiration date is. Increase it to give holds more time.
  • ExpireReservesMaxPickUpDelay - This controls whether or not holds are automatically cancelled when they reach that expiration date. Set this to “Don’t allow” to prevent automatic cancellation of expired holds.
  • ExcludeHolidaysFromMaxPickUpDelay / ExpireReservesOnHolidays - See the section of this blog post about the calendar for more information about these.

If you want to continue to allow holds only on items that are currently checked out or otherwise unavailable, you’ll need to edit your circulation rules. The relevant value is in the On Shelf Holds Allowed column of the circ rules matrix. If set to "Yes," patrons can place holds on items currently checked in. If set to "If any unavailable," patrons can only place holds on items that are not unavailable. If set to "If all unavailable," patrons can only place holds on items where *all* items on the bib are unavailable.

Remember that holds rules are checked in Koha both when a hold is placed and again when an item is checked in. If you edit your circulation rules to prevent the creation of new holds, your existing holds will not trigger when items are checked in. (This behavior is considered a bug and is in the process of being patched so that rule-violating holds will trigger at check-in.) For this reason, we recommend using OPACHoldRequests to turn off the ability to place new holds via the OPAC but not preventing all holds via circ rules changes.

If needed, we can edit existing holds to suspend un-captured holds or change the expiration dates of captured holds. Please let us know how we can help.


You may not wish to send notices while closed. Turning off the cron jobs above (advance notice, overdue, process message queue) will stop your notices from going out, but this approach applies system-wide.

Overdue notices can be altered per-branch in the Overdue Notice & Status Triggers. We can help you save a copy of your pre-closure settings to make it easier to revert your settings when you reopen. Or, if you wish to exclude a branch from overdues entirely, we can do that via your cron.

UPDATE: A previous version of this blog suggested disabling notices per-branch by creating blank branch-specific notices. On further testing, this does not work. We can prevent notices from generating by creating a blank notice for All Libraries. However, if Koha finds a blank branch-specific notice it will default to the All Libraries notice if one exists.

Using the News Feature to Communicate the Closure

Within the tools module, libraries can use the News feature to put a notice on the OPAC for patrons to see.

Here is a helpful blog post about using the News Feature.

Setting Items to Quarantine Status on Return

In our town hall about dealing with COVID-19 closures, several partners mentioned that their libraries are quarantining returned items for several days before they're allowed to go out again. I've sketched out a way to make Koha help with that. You can see that process in its own blog post.

When the Library Re-opens

Once you re-open, overdue notices will not be generated retroactively. We can work with you to send a special notice alerting patrons to items that may have gone overdue while overdue notices were disabled.

When we turn the long-overdue cron back on, it will take care of catch-up on its own. For example, if you have it set to mark things lost at 40 days, this technically translates to "mark items long overdue if the date due is between 40 and 365 days ago." So a lot of things will go to long-overdue the first day we turn the cron back. Although most of them won't have generated any sort of billing notice, we can take care of that, too.

Remember that patrons will get charged for whatever time items were overdue before the first day of your closure, but not for anything after (assuming you've set your calendar and system preferences appropriately). Once the fines cron is off you will not see new accruing fines in your system and fines will not start accruing again until the cron is enabled and system preference updated. Regardless of your fines cron, if the FinesMode system preference is set to calculate and charge those pre-existing fines will appear when an item is checked in and new fines will calculate for any days on which you were not marked closed in the calendar. You may want to use the forgive fines functionality when checking items in once you re-open.

Sending out a Notice to All Patrons

Koha has tools to send out notices outside of the normal notice process (such as Advanced Notices and Overdues), however, we do not recommend you use this tool for sending out a mass email to your patrons. For a library to go outside their standard amount of emails sent daily could throw up flags to indicate that this a spammer. Once this flag has gone up, your library's email address will appear on Deny-Lists, and then future emails will be refused.

We would recommend looking into email marketing software to do this type of mass email, such as Mail Chimp or Constant Contact. We can easily retrieve all your patron emails through a report and then using this outside software will be easy. Please let us know if you need assistance accessing a list of your patron's emails for this purpose.

The Most Important Things to Remember

  • If you are part of a consortium, and all the libraries in the consortium are not closing, please let us know and we will work with you to determine what changes need to be made
  • ByWater is here to help you!
  • Ask questions, no matter how insignificant you think it might be
  • Let us know how we can help
  • Be well!

Read more by Andrew Fuerste-Henry

Tags closing