In many libraries, newly arrived books are displayed for a few days before being issued to users. This helps promote new arrivals and ensures fair visibility among readers.
Recently, Litty V.J., Librarian at Amala Institute of Medical Sciences Library, reached out with an interesting question:
“Is there a way in Koha to restrict the issuing of newly added books for a few days and then automatically make them available? Currently, the ‘Not for Loan’ option is being used, but it requires manually identifying accession numbers and updating their status each time.”
This is a very practical requirement in academic libraries. However, Koha does not provide a direct built-in feature to restrict circulation based on accession date.
So, here is a simple and effective workaround using the “Not for Loan + Automatic Update” approach.
The Idea
The workflow is straightforward:
- When a new book is added → mark it as Not for Loan
- After 7 days → automatically make it available for issue
This avoids manual intervention and ensures consistency.
Step 1: Configure “Not for Loan” Status
Koha uses the notforloan field to control circulation.
Go to: Administration → Authorized values → NOT_LOAN
Add a new value:
| Code | Description |
|---|---|
| -2 | New Arrival (Restricted for 1 week) |
This creates a dedicated status for newly added books.
Step 2: Apply Status While Adding Books
While cataloguing items: Set: Not for Loan = New Arrival (Restricted for 1 week), then item cannot be issued, but it remains visible in OPAC, allowing users to discover new arrivals
Instead of manually updating items, use the following SQL query:
UPDATE items
SET notforloan = 0
WHERE notforloan = -2
AND dateaccessioned <= CURDATE() - INTERVAL 7 DAY;
What this does:
- Finds items marked as New Arrival
- Checks if they were added 7 or more days ago
- Makes them available for issue automatically
Step 4: Schedule Using Cron Job
To automate this process: Open crontab:
crontab -e
Add:
0 10 * * * mysql -u root -pYOURPASSWORD koha_db -e "UPDATE items SET notforloan=0 WHERE notforloan=-2 AND dateaccessioned <= CURDATE() - INTERVAL 7 DAY;"
Explanation:
- Runs daily at 10:00 AM
- Releases eligible books automatically
Complete Workflow
- Day 1: Book added → marked as Not for Loan
- Days 2–6: Book remains restricted
- Day 7: Cron job runs → book becomes available for issue


