A toolkit that enables you to migrate data over from a legacy ILS system into FOLIO LSP
FOLIO Migration tools enables you to migrate libraries with the most common ILS:s over to FOLIO without data losses or any major data transformation tasks. The tools transforms and loads the data providing you and the library with good actionable logs and data cleaning task lists together with the migrated data.
FOLIO Migration Tools currently covers the following data sets:
- Catalog (Inventory and SRS in FOLIO terminology)
- Circulation transactions (Open loans and requests)
- Users/Patrons (In FOLIO, these share the same app/database)
- Courses and Reserves (Course reserves)
- Organizations (Vendor records)
- Orders (limited support)
This is the loose roadmap, in order of most likely implementations first
- ERM-related objects
- Financial records
The tools are primarliy maintained for performing initial data migrations. We recommend that you use native FOLIO functionality for ongoing loads where possible. In theory, these tools can be used for ongoing patron loads from systems like Banner, Workday, or PeopleSoft. But we recommend you to weigh your options carefully before going down this path.
Want to contribute? Read the CONTRIBUTING.MD
Report it on the Github Issue tracker
The scripts requires a FOLIO tenant with reference data properly set up. The script will throw messages telling what reference data is missing.
Make sure you are running Python 3.9 or above.
2.1. Create and activate a virtual environment
python -m venv ./.venv # Creates a virtual env in the current folder
source .venv/bin/activate # Activates the venv
python -m pip install folio_migration_tools
python -m folio_migration_tools -h
pipenv install folio-migration-tools
pipenv run python3 -m folio_migration_tools -h
This repo plays the main part in a process using a collection of tools. The process itself is documented in more detail, including example configuration files, at this template repository In order to perform migrations according to this process, you need the following:
- An Installation of FOLIO Migration Tools. Installation instructions above.
- A clone, or a separate repo created from migration_repo_template
- Access to the Data mapping file creator web tool
- A FOLIO tenant running the latest or the second latest version of FOLIO
This repo uses Python-i18n to translate reports between languages, and to handle large strings for templates.
Any English string which will end up in a report should be wrapped in the function i18n.t
from i18n
:
i18n.t("Reports")+":"
Templating is achieved with %{[key]}
blocks, and keyword arguments in the internationaliation:
i18n.t("Code '%{code}' not found in FOLIO",code=folio_code)
Long strings can use a placeholder key:
i18n.t("blurbs.Introduction.description")
With the full string in translations/en.json
:
"blurbs.Introduction.description": "<br/>Data errors preventing records from being migrated
Translation files live in the translations
directory, with en.json
as the default.
Extract template files with the extract_translations
script:
python scripts/extract_translations.py
Other langauges translations live in translations/[locale].json
.
For example, Spanish would be es.json
.
The keys must match the English keys, but the Values should be translated.
You can update a language file's keys with:
python scripts/update_language.py --target-lang [locale]
Translate all new strings, which begin with TRANSLATE
, then commit.
- Internationalize entire phrases or paragraphs, not just the constitutent words. Syntax and grammar vary significantly between languages.
- Name template variables as generically as possible in the circumstance, and check translations for reusable translations.
- In a block with sentences separately followed by values, such as a table, you only need to translate the sentences.
For information on syntax, what files are needed and produced by the toolkit, refer to the documentation and example files in the template repository. We are building out the docs section in this repository as well:Documentation ¨