Reference Data Mapping#
Reference data mapping files connect values from your legacy system to FOLIO reference data (locations, material types, loan types, patron groups, etc.). This document explains the general concepts that apply across all migration tasks.
How Reference Data Mapping Works#
When migrating data to FOLIO, many fields require UUIDs that correspond to reference data configured in your FOLIO tenant. For example, an item’s materialTypeId must be a UUID matching a material type in FOLIO, not the legacy system’s material type code.
Reference data mapping files provide this translation layer:
Input: A value from your legacy data (e.g.,
BOOK)Lookup: Find the matching row in the mapping file
Output: The corresponding FOLIO value (e.g.,
book) which is then resolved to its UUID
File Structure#
Reference data mapping files are tab-separated (TSV) files with:
Header row: Column names that define the mapping structure
Data rows: One row per mapping
Fallback row (optional): A row with
*in legacy columns to specify a default
Basic Example#
ITYPE folio_name
BOOK book
DVD dvd
CD sound recording
* unspecified
In this example:
ITYPEis the legacy column (matches your source data field name)folio_nameis the FOLIO column (contains the FOLIO value to map to)The
*row provides a fallback when no match is found
Column Naming#
Legacy Columns#
Legacy column names are dynamic—they must match the field name(s) in your source data that you’ve mapped to the corresponding FOLIO field in your mapping file.
For example, if your item mapping file has:
{
"folio_field": "materialTypeId",
"legacy_field": "ITEM_TYPE"
}
Then your material types mapping file should use ITEM_TYPE as the legacy column:
ITEM_TYPE folio_name
BOOK book
FOLIO Columns#
The FOLIO column name depends on the type of reference data being mapped:
Reference Data Type |
FOLIO Column |
Description |
|---|---|---|
Locations |
|
Location code (not name) |
Material Types |
|
Material type name |
Loan Types |
|
Loan type name |
Call Number Types |
|
Call number type name |
Patron Groups |
|
Patron group name (the |
Departments |
|
Department name |
Statistical Codes |
|
Statistical code code |
Acquisition Methods |
|
Acquisition method value |
Organization Types |
|
Organization type name |
Fee/Fine Owners |
|
Fee/fine owner name (the |
Service Points |
|
Service point name |
Important
The FOLIO column value must exactly match the value in your FOLIO tenant. Values are case-sensitive.
Multi-Column Mapping#
You can map based on multiple legacy fields by adding additional columns. All values must match for the row to be selected.
LOCATION SUBLIBRARY folio_code
MAIN CIRC main-circ
MAIN REF main-reference
BRANCH CIRC branch-circ
* * main-stacks
This maps items based on both LOCATION and SUBLIBRARY fields from the source data.
Fallback Rows#
A fallback row uses * in all legacy columns to specify a default value when no match is found:
LOCATION folio_code
MAIN main-stacks
REF reference
* unmapped-location
Tip
Use a migration-specific fallback value (like unmapped-location or migration-default) so you can easily locate records that didn’t map correctly after migration.
Fallback Exceptions#
Some reference data types do not support fallback rows:
Reference Data Type |
Fallback Behavior |
|---|---|
Item Statuses |
Fallback is always |
Statistical Codes |
No fallback; unmapped records simply don’t get a code |
Item Status Mapping#
Item status mapping has special requirements:
Fixed column names: Must use exactly
legacy_codeandfolio_nameNo fallback rows: The
*wildcard is not allowedValid FOLIO statuses only: Must be one of the predefined FOLIO item statuses
legacy_code folio_name
AVAILABLE Available
CHECKED_OUT Checked out
IN_TRANSIT In transit
MISSING Missing
Valid FOLIO item statuses:
Available,Awaiting pickup,Awaiting delivery,Checked outClaimed returned,Declared lost,In process,In process (non-requestable)In transit,Intellectual item,Long missing,Lost and paidMissing,On order,Paged,Restricted,Order closedUnavailable,Unknown,Withdrawn
Troubleshooting#
Common Issues#
Issue |
Cause |
Solution |
|---|---|---|
“Unmapped (Default value was set)” in report |
Legacy value not in mapping file |
Add the missing value to your mapping file |
Wrong FOLIO value assigned |
Typo in |
Verify the value matches exactly what’s in FOLIO |
All records get fallback value |
Column name mismatch |
Ensure legacy column name matches source data field name |
“not a recognized field” error |
Missing column in mapping file |
Add the required legacy column |
Verifying Your Mappings#
Check the migration report: Look for the mapping statistics section to see which legacy values mapped to which FOLIO values
Review unmapped values: The report lists any values that fell through to the default
Validate FOLIO values: Query your FOLIO tenant to ensure the target values exist
See Also#
Mapping File Based Mapping - General mapping file syntax
Mapping Files for Inventory - Inventory-specific mapping files
Statistical Code Mapping - Detailed statistical code mapping