Statistical Code Mapping#
Introduction#
FOLIO provides the ability to construct a controlled vocabulary of statistical codes that can be assigned to three principal inventory record types (Instances, Holdings, and Items). folio_migration_tools allows you to map legacy values from your MARC Bibs, MARC Holdings, CSV Holdings, or CSV Items to the list of statistical codes during the migration process. The tools also allow you to map statistical codes based on the source file of the records being migrated.
Mapping Statistical Codes for MARC-sourced Records (MARC Bib and MFHD)#
Mapping of MARC-source data is controlled by a MARC-to-FOLIO mapping rules config. However, this system does not allow you to map statistical codes directly. To map statistical codes from MARC data you will need the following:
A statistical code mapping file specified in your task configuration
TSV file with the following columns
legacy_stat_codeandfolio_code
A list of MARC fields tags (with option subfields) to pull legacy codes from
Note: when you specify the
legacy_stat_codevalue for these codes, you must prefix them with the MARC field tag (and subfield) from when they are taken (eg.998:archor998_a:arch, ifarchis the code in the MARC field/subfield)
A FileDefinition (the object in the
"files"array of a task configuration) with"statistical_code"set to code value(s) you want to assign to all records created from that file (eg."statistical_code": "arch")
Multiple codes from one field/subfield/file definition#
If you want to pull multiple legacy stat codes from the same MARC field, you can either provide them as repeating (or multiple different) subfields (eg. 998$a$b$c to pull codes from all three subfields) or use the multi_field_delimiter value specified in your project’s libraryConfiguration. Here is an example of a MARC field with statistical code data and the task configuration you’ll need to map them:
MARC field
=998 \\$aarch$bebooks$cebooks$cjournal
Statistical code map
legacy_stat_code folio_code
998_a:arch arch
arch arch
folios oversize
998_b:ebooks ebooks
998_c:ebooks ebooks-sub
998_c:journal journals-sub
Task configuration
{
"name": "bibs",
"migrationTaskType": "BibsTransformer",
"ilsFlavor": "sierra",
"statisticalCodeMapFileName": "statistical_codes.tsv",
"statistical_code_mapping_fields": [
"998$a$b$c"
],
"files": [
{
"file_name": "arch_collection.mrc",
"discovery_suppressed": false,
"statistical_code": "arch<delimiter>folios"
}
]
}
Assuming the codes in the folio_code column exist in FOLIO, they will appear in the FOLIO record created from the record containing that MARC field.
Mapping statistical code data from CSV/TSV data#
Mapping statistical code data from delimited data files (CSV/TSV) is somewhat more straightforward. You need:
A field mapping configuration that maps at least one legacy field to
statisticalCodeIdsA statistical code mapping file
Here is an example field mapping and it’s mapping TSV:
{
"folio_field": "statisticalCodeIds[0]",
"legacy_field": "icode1",
"value": "",
"description": "Mapping ICODE1 (normalized) to a statistical code"
}
legacy_stat_code folio_code
u weeding
g gift
$ facoffice
* gencol
Attention
Note: the wildcard fallback mapping will not be used, but must be included for the mapping file to be valid.
Notes and observations#
Mappings that result in the same FOLIO code being mapped more than once will be deduplicated
You can mix repeating and non-repeating subfields and
multi_field_delimiterwhen mapping from MARC fieldsUn-mapped legacy codes are dropped from the record and reported in the associated data issue log for your task