Migrate to Koha from Other ILS Systems — Sierra, Evergreen, Millennium & More

Step-by-step guide for librarians migrating from commercial ILS to open-source Koha. Includes pre-planning, data export, MARC import, and cost analysis for Sierra, Evergreen, Millennium, Alma, Voyager, and Polaris migrations.

Migrate to Koha from Other ILS Systems

Thousands of libraries have successfully migrated from commercial ILS platforms like Sierra, Evergreen, Millennium, and Alma to Koha. This guide walks you through the entire migration process, from pre-planning through go-live, with specific guidance for each major system.

Why Libraries Migrate to Koha

Libraries usually migrate to Koha because they want more control, a more flexible long-term cost model, and a system that can adapt to their library’s workflows.

  • No proprietary ILS license fee: Koha itself is free and open-source software. Libraries still need to budget for hosting, migration, support, training, and any custom work, but there is no traditional per-year Koha software license.
  • More control over the system: Koha can run in your own AWS account or on infrastructure you control, with KohaSupport available to help with setup, migration, configuration, and ongoing support.
  • Reduced vendor lock-in: Koha stores catalogue data using library standards such as MARC21 and UNIMARC, and bibliographic, item, and authority records can be exported in standard formats. Other data, such as patrons, loans, holds, fines, and local configuration, may require separate exports and mapping.
  • Full-featured library operations: Koha includes the core modules most libraries need, including cataloging, circulation, patron management, acquisitions, serials, authorities, notices, reports, and OPAC discovery.
  • Flexible configuration and customization: Libraries can adapt Koha through system preferences, reports, plugins, APIs, theme customizations, and custom development, without being limited to a single proprietary vendor roadmap.
  • Large global community: Koha is used by thousands of libraries worldwide, with community documentation, active development, and multiple professional support providers.

Migration Timeline & Scope

The technical migration is often faster than the decision-making process. For many libraries, the longest part is choosing a new ILS, getting approval, agreeing on the migration scope, and scheduling staff time.

Once export files are available, a straightforward Koha migration can often be completed in days or weeks rather than months. The exact timeline depends on the source system, data quality, and how much the library wants to migrate.

Factor Typical impact
Catalogue records Clean MARC bibliographic and item records can often be imported quickly once the export is available. Larger files mainly require more validation time, not necessarily months of technical work.
Patron data Usually imported from CSV or similar exports. The main work is mapping patron categories, branches, expiry dates, and required fields.
Current loans, holds, and fines Adds complexity because this data must be mapped carefully and validated before go-live.
Data cleanup Clean records may need only light normalization. Messier legacy data may need several rounds of cleanup, especially for duplicate barcodes, inconsistent locations, broken item types, or character encoding issues.
Customization Basic Koha setup can be completed quickly. More advanced workflows, reports, notices, OPAC design, authentication, or integrations may add days or weeks depending on scope.
Staff training Most libraries should plan focused training before go-live, usually over several sessions across 1-2 weeks.
Validation and go-live planning Staff review, test circulation, sample record checks, patron communication, and final cutover scheduling are often more important than the import itself.

Practical expectation

A simple catalogue-only migration can be completed very quickly after receiving clean export files. A typical live-library migration often fits within a 2-8 week implementation window. More complex institutional migrations can take longer, especially where procurement, approvals, integrations, serials, acquisitions, or extensive data cleanup are involved.

Phase 1: Pre-Migration Planning (Weeks 1–4)

1.1 Perform a Data Audit

Before you migrate anything, audit your current ILS:

Questions to answer:
├─ How many bibliographic records? (total count)
├─ How many item records? (holdings)
├─ How many patron records? (active + inactive)
├─ How many authority records? (if cataloging at that level)
├─ What custom fields exist? (local fields, subfields)
├─ How many outstanding patron fines/holds? (will they migrate?)
├─ What integrations exist? (self-checkout, RFID, payment processors)
└─ What reports do you rely on monthly/annually?

Action: Export a sample of 100 MARC records from your current ILS to examine:

  • MARC encoding (USMARC? UNIMARC?)
  • Special characters / diacritics
  • Custom fields and local practice
  • Item-level holdings structure

1.2 Assemble Your Migration Team

Minimum team for a library with 50K–500K records:

Role FTE Responsibilities
Project Lead 0.5–1.0 Timeline, vendor coordination, testing
Systems Librarian 0.5–1.0 Technical setup, data mapping, server management
Cataloging Lead 0.3–0.5 MARC validation, record cleanup, quality assurance
Circulation Lead 0.2–0.3 Patron/item rules, policy verification, testing

1.3 Choose Your Hosting Model

Model Best For Notes
Cloud-hosted (managed) Hands-off approach, no server expertise Provider handles most of the infrastructure and routine maintenance.
Self-hosted VPS Full control, cost-conscious Gives you more control, but also more responsibility for server administration.
On-premises Sensitive data, existing servers Best suited to libraries that already maintain local infrastructure or have policy requirements around hosting.
Community instance Testing/small pilots Availability, governance, and feature flexibility depend on the consortium or provider offering it.

For most migrations, cloud-hosted reduces operational burden and speeds up go-live by 2–4 weeks.

KohaSupport runs Koha on AWS — self-service deployment with no IT overhead. Start free to evaluate, move to Standard for a live library, or explore Enterprise for high-availability and point-in-time backup. Compare plans →

Phase 2: Prepare for Export (Weeks 2–5)

2.1 Export Your Data from Current ILS

From Sierra:

# Koha provides a Sierra MARC export profile
# Use Sierra's "Export" function with these settings:
# - Format: MARC21 (or USMARC)
# - Encoding: UTF-8
# - Include: All bibliographic records, holdings
# - File type: .mrc or .bnc

# If you need item-level holdings in MARC:
# Ensure items export as MARC 852 (holdings) + 949 (local item fields)

Key fields to preserve from Sierra:

  • Item barcodes (MARC 949 $p or local field)
  • Location/branch (MARC 852 $b)
  • Call number (MARC 852 $h / $i)
  • Status/loan type (custom mapping needed)

From Evergreen:

# Evergreen exports via its standard tools
# - Use "Export" → export to MARCXML or MARC binary
# - Include holdings data if available
# - Strip out Evergreen-specific fields (e.g., internal IDs)

Considerations: Evergreen’s item data is often separate; plan to import items in a second pass if needed.

From Millennium / Polaris:

# Millennium exports via Marc Batch Loader
# - Export as ISO 2709 MARC format
# - Ensure 245$a (title) and 050/090 (call numbers) are present
# 
# Polaris: Export via "Export Records" tool
# - MARC output preferred
# - Include item records with holdings

2.2 Validate Your Export

After exporting, validate your MARC file:

# Check file size is reasonable (typically 30–100 MB per 100K records)
$ ls -lh export_file.mrc

# Sample record count
$ marctools count export_file.mrc
Total records: 250,450

# Look for encoding or structural errors
$ marctools validate export_file.mrc | head -20

Common export issues to fix:

  • Missing leader data (first 24 bytes of MARC)
  • Truncated records (partial field data)
  • Non-UTF-8 encoding (convert to UTF-8 first)
  • Invalid subfield codes (must be $a–$z, not $0–$9)

Phase 3: Data Mapping & Cleanup (Weeks 3–8)

3.1 Map Your Data to Koha

Koha expects specific MARC fields. Create a mapping document:

Your ILS Field MARC Location Koha Behavior Notes
Title 245 Auto-indexed for search Must have $a
Author 100/110 Added entry search Standard authority linking
ISBN 020 Auto-indexed, linked to vendor records Use Z39.50 import tools
Item barcode MARC 949 $p (Koha default) Unique ID per item Cannot have duplicates
Item location MARC 852 $b Branch/shelving location Must match Koha branches
Call number MARC 852 $h–$i Sort key for spine labels Dewey or LC class supported
Due date Not in MARC Calculated on checkout Not needed; Koha uses rules
Patron ID Not in MARC Patron record field Separate file; not MARC

3.2 Clean Your MARC Records

Before importing, run cleanup:

Remove Koha-incompatible data:

  • Strip vendor-specific MARC fields (e.g., Sierra’s 949 $s, $t)
  • Remove internal control numbers that won’t translate
  • Flatten duplicate title/author data

Fix encoding:

# Convert to UTF-8 if needed
iconv -f ISO-8859-1 -t UTF-8 old_export.mrc > export_utf8.mrc

Verify required fields:

  • Leader bytes 0–5: Must be 000 + 5-digit record length
  • Leader bytes 6–7: Must specify record type (a = language material, g = projected medium, etc.)
  • 245 field: Required for all bibliographic records

3.3 Export Patron Data

Patron data is typically not in MARC format. Most ILS export patrons as CSV/TSV:

Minimum patron fields needed in Koha:

  • Surname, firstname, email, phone
  • Patron type (student, faculty, staff, community)
  • Library branch
  • Patron category (maps to Koha category codes like PT, ST, ADU, etc.)

Export from your ILS (e.g., Sierra patron list as .txt or .csv):

surname,firstname,email,phone,patron_type,branch
Smith,Alice,[email protected],555-1234,faculty,Main
Johnson,Bob,[email protected],555-5678,student,Branch1

Phase 4: Set Up Koha (Weeks 4–6)

4.1 Launch Your Koha Instance

Choose your hosting method:

  • Cloud-hosted: Sign up at a Koha hosting provider (ByWater, Equinox, Thirtybees, etc.)
  • Self-hosted: Install Koha on a VPS or server (Ubuntu 20.04+ recommended)

Most cloud providers pre-configure everything; you just add staff logins and customize settings.

4.2 Configure Koha Branches, Locations, Item Types

Before data import, set up these foundational elements:

Branches (locations in your library system):

Example: Main Library, Downtown Branch, East Campus

Shelving locations (where items sit physically):

Example: General Stacks, Reference, Audiovisual, Special Collections, ILL

Item types (material classification):

Example: Book, E-Book, DVD, Journal, Map, Kit

Patron categories (groups with different circulation rules):

Example: Faculty, Student, Staff, Community Borrower

4.3 Define Circulation Rules

Map your ILS circulation rules to Koha:

Patron Type Item Type Loan Duration Renewals Holds Fines/Day
Faculty Book 28 days 2 Unlimited $0.25
Student Book 21 days 1 Unlimited $0.10
Community DVD 7 days 0 1 $1.00

Koha’s circulation rules engine supports all these configurations and more.


Phase 5: Data Import (Weeks 5–7)

5.1 Import MARC Bibliographic Records

Using Koha’s Import tool (Cataloging → Import MARC records):

1. Upload your cleaned MARC file (.mrc format)
2. Koha performs character encoding validation
3. Preview first 5 records for accuracy
4. Click "Import" to insert all records into the catalog
5. Monitor progress (typically 1–10 records/second depending on file size)

After import, verify:

  • Record count matches your export (count should be exact)
  • Titles, authors, ISBNs display correctly
  • No encoding errors (garbled diacritics = encoding problem)

5.2 Import Item Records

If your item data is separate or needs special handling:

1. Prepare item CSV file with barcodes, locations, call numbers
2. Use Koha's Inventory → "Batch item modification" tool
3. Or use API/REST endpoints for programmatic import (advanced)
4. Verify item counts and barcode uniqueness

Example item import row:

biblio_id,barcode,location,itemtype,callnumber,homebranch,holdingbranch
12345,B001001,GeneralStacks,Book,813 SMITH,Main,Main
12346,B001002,Reference,Reference,REF 030.5,Main,Main

5.3 Import Patron Records

Using Koha’s Patron Import (Tools → Import patrons):

1. Upload CSV file with patron data
2. Map your CSV columns to Koha patron fields
3. Set default category if migrating all patrons to one type initially
4. Review sample records
5. Import (takes seconds to minutes depending on volume)

Critical: Patron IDs in your old ILS won’t carry over. Koha generates new IDs. Any system that references old patron IDs (fines, holds) will need updating.


Phase 6: Validation & Testing (Weeks 6–8)

6.1 Data Quality Checks

Run these validation tests:

Catalog verification:

✓ Can you search by title? Title → Results display?
✓ Can you search by author? Author → Results display?
✓ Do ISBNs work? Search ISBN → Correct record appears?
✓ Are call numbers displaying correctly? Item view shows call number?
✓ Do branch locations match? Location field correct for each item?

Patron verification:

✓ Patron login works? Try staff password → login successful?
✓ Patron checkout works? Scan barcode → item displays for checkout?
✓ Fines display correctly? Patron view shows any migrated fines?
✓ Holds system works? Can you place a hold on an available item?

6.2 Spot-Check Sample Records

Manually compare 20–50 records from your migration against your original ILS:

Check Original ILS Koha Match?
Record #1 (ISBN 978-0-12-345-678-9) Title: “PostgreSQL for Beginners” Title: “PostgreSQL for Beginners”
Record #2 (barcode B001234) Location: Downtown Branch Location: Downtown Branch
Record #3 (Author: Jane Doe) Author link works? Authority linked? ?

Document any discrepancies; most are fixable with data cleanup.

6.3 Test All Integrations

Before go-live, verify integrations with:

  • Self-checkout machine: Can it read barcodes?
  • RFID system: Does RFID tag data integrate with Koha?
  • Payment processor: Do fines/fees payments sync correctly?
  • Email notifications: Do holds notifications send?
  • Mobile app: Can patrons see their account and renew?

Phase 7: Staff Training (Week 8)

7.1 Prepare Training Materials

Create documentation for:

  • Catalog searching (same as old ILS, but search syntax may differ)
  • Item checkout/check-in (likely simpler than Sierra/Millennium)
  • Patron management (add new patron, reset password, verify borrowing privileges)
  • Report generation (where to find reports, how to run custom reports)
  • Copy cataloging with Z39.50 (optional advanced module)

7.2 Conduct Training Sessions

Hold 2–3 training sessions (1–2 hours each):

  1. Managers/supervisors: Focus on reports, statistics, patron management
  2. Circulation staff: Focus on checkout, check-in, holds, fines
  3. Cataloging staff: Focus on searching, creating records, copy cataloging (if applicable)

Keep staff engaged with hands-on labs: “You try searching the catalog. Find these 5 titles.”


Phase 8: Go-Live Checklist (Week 9)

8.1 Final Pre-Go-Live Tasks

  • All staff trained and comfortable with basic workflows
  • Patron and MARC data verified (spot checks complete)
  • Circulation rules tested with real scenarios
  • Mobile app tested by patrons
  • Self-checkout machine tested
  • Backup of Koha database created
  • IT team confirmed server uptime and monitoring
  • Staff knows how to report issues (support ticket/email)
  • Signage updated: “We’re now using Koha! Please report issues to [email]”

8.2 Go-Live Day

Morning (before opening):
  ✓ Verify database backup completed successfully
  ✓ Test patron login once more
  ✓ Verify catalog is searchable
  ✓ Run test checkout on a real item

Day of:
  ✓ Brief daily huddle with all staff at opening
  ✓ Have IT/systems person on standby for 4 hours
  ✓ Announce to patrons: "New catalog system today — we're here to help!"
  ✓ Monitor for circulation issues (holds, checkouts, returns)

End of day:
  ✓ Congratulations! You've gone live
  ✓ Document any issues that came up
  ✓ Plan follow-up training for anything that went wrong

Phase 9: Post-Migration (Weeks 9–12+)

9.1 Collect Feedback

First 2 weeks after go-live:

  • Circulation staff: Any checkout issues?
  • Patrons: Any problems searching or renewing?
  • Catalogers: Any issues with copy cataloging?

Create a shared spreadsheet or form for staff to log issues.

9.2 Fine-Tuning

Based on feedback:

  • Adjust circulation rules if loan periods don’t feel right
  • Fix any display issues (e.g., call numbers formatted strangely)
  • Add custom reports if staff miss reports from old ILS
  • Extend patron training if needed (follow-ups)

9.3 Optimize with Z39.50 Copy Cataloging

Now that you’re stable, set up copy cataloging to speed up acquisitions:

  • Configure Z39.50 servers (Library of Congress, OCLC, etc.)
  • Train catalogers on importing MARC records from Z39.50
  • Measure time savings: before (manual cataloging) vs after (Z39.50 import)

See our detailed guide: Copy Cataloging Workflow — Advanced Guide.


Migration Cost Considerations

Every library’s migration cost is different. Rather than publishing figures that may not apply to your situation, here are the key cost drivers a librarian needs to understand before budgeting for a migration.

For a full framework, see our dedicated guide: Calculating Total Cost of Ownership for Your Library ILS

One-Time Migration Costs to Account For

Staff time is typically the largest cost, and it’s often underestimated. Think through:

  • Who will lead the project, and what percentage of their time is realistic to allocate over the migration period?
  • Will your systems librarian be able to take on the technical setup alongside their existing responsibilities?
  • How many staff will need training, and how long will their productivity dip during the transition?

Data work varies enormously depending on the quality of your existing records:

  • Libraries with clean, consistent MARC records may need minimal cleanup
  • Libraries that have been through multiple migrations or used inconsistent local practices may face significant data remediation work
  • Don’t forget patron data—exporting, cleaning, and re-importing patron records is a separate effort from bibliographic records

External help is optional but worth pricing out:

  • Some libraries handle migration entirely in-house; others hire a migration specialist
  • Your Koha hosting provider may offer migration assistance as part of onboarding
  • Consortium members may be able to share expertise

Infrastructure, if you are self-hosting:

  • New server hardware or VPS costs
  • Ongoing maintenance and backup responsibilities fall to your IT team

Ongoing Costs to Compare Against Your Current ILS

When comparing Koha to your current system, look at these recurring cost categories:

Licensing and subscription structure: Commercial ILS products (Sierra, Alma, Millennium, Polaris) usually package costs around annual licensing or subscription agreements. Koha deployments should be evaluated as a mix of hosting, support, implementation, and migration costs. However, Evergreen is also open-source—if you are migrating from Evergreen, the primary driver is usually workflow differences or hosting considerations rather than a simple licensing comparison.

Support and maintenance: Factor in what level of professional support your library needs. Koha support ranges from self-directed community support to fully managed hosted services with SLAs. Your current vendor’s support costs are a direct line item to compare.

Hosting: If moving from on-premises to cloud-hosted Koha, your cost mix may shift away from internal infrastructure work and toward external hosting and service charges. If staying self-hosted, infrastructure and internal IT responsibilities remain a direct part of the equation.

Training and change management: Often overlooked in initial budgets. Staff will need time to learn a new system. This is a real cost whether you run formal training sessions or learn on the job.

What to Watch Out For

  • Hidden fees in commercial ILS contracts: Some vendors charge separately for add-on modules (acquisitions, serials, ILL) that are included in Koha at no cost
  • Data portability clauses: Confirm your current vendor’s terms for exporting your data—some charge extraction fees
  • Consortium obligations: If your library is part of a consortium, check whether migrating your ILS affects shared catalog or resource-sharing agreements
  • Going live is not the end: Budget for 3–6 months of post-migration support, data cleanup, and staff adjustment time

System-Specific Migration Notes

Migrating from Sierra:

  • Advantages: Koha handles MARC export cleanly from Sierra
  • Watch out for: Custom 9xx fields (local data). Create mapping document before export.
  • Timeline: 4–5 months typical
  • Support: ByWater, Equinox have Sierra-specialist librarians

Migrating from Evergreen:

  • Advantages: Both are open-source; easier staff transition if staff know Linux
  • Watch out for: Evergreen’s item model differs; may need data transformation
  • Timeline: 5–6 months (more data mapping needed)
  • Support: Community forums active, professional support available

Migrating from Millennium:

  • Advantages: Millennium’s MARC export is clean
  • Watch out for: Item data sometimes in separate system; plan dual import
  • Timeline: 4–5 months typical
  • Support: Many Koha implementers experienced with Millennium migrations

Migrating from Alma:

  • Advantages: Cloud-to-cloud (if moving to Koha cloud); both modern systems
  • Watch out for: Alma stores some data outside MARC; may lose customizations
  • Timeline: 4–6 months
  • Support: Established migration path; support available

Common Migration Pitfalls & Solutions

Pitfall Symptom Solution
Incomplete data audit Discovering 100K records nobody knew about Schedule audit 2 months pre-migration
Character encoding errors Titles show as “Mañana” → “Ma?ana” Convert all to UTF-8 before import
Duplicate barcodes Import fails on item #5,432 Run barcode uniqueness check before import
Wrong item locations All items show as “Unknown Branch” Verify location mapping in data cleanup phase
Staff don’t know new system Support tickets pile up post-go-live Conduct hands-on training 1–2 weeks before
Patrons can’t find records Search results empty even though records imported Rebuild search indexes after large import
Forgotten customizations Old reports don’t work in Koha Document custom fields/workflows in advance

Next Steps

  1. Schedule a consultation: Talk to a Koha hosting provider about your library’s specific migration
  2. Start data audit: Export a sample of 100 MARC records to understand your data quality
  3. Assemble your team: Identify project lead, systems librarian, cataloging lead
  4. Set timeline: Use this guide to draft a realistic migration schedule for your library

Once live, explore advanced features:


Resources

  • Koha Community Wiki: https://wiki.koha-community.org/
  • Migration Guides by Host: ByWater, Equinox, and others publish migration playbooks
  • MARC Record Standards: https://www.loc.gov/marc/ (Library of Congress MARC documentation)
  • Koha Support Forums: Community support + professional options

Next Steps

More in Koha System

Was this article helpful?

Thanks for your feedback!