Field Mapping profiles: MARC

Looking for EDIFACT fields?

These tips and videos focus on mapping MARC into FOLIO. For EDIFACT field mapping details, see Field Mapping profiles: EDIFACT

Reference videos

Field mapping profile syntax video: https://drive.google.com/file/d/1kFh6Lo8N-Ko8Fpq8OPDZqiutAXUW2WoU/view

Field mapping profile syntax for repeatable fields video: https://drive.google.com/file/d/1eJadAePoD1CN7IweYAZ1ht1rsD1iabCI/view


Required fields when creating records

The field mapping profile screen does not indicate which fields are required in various record types. If a field mapping profile is being used to update a record, the updates may not apply to required fields, so we have opted not to indicate them. If a field mapping profile is used to create a new Inventory record, ensure these required fields are mapped, either with values from the incoming records or defaults.

  • Instance records (Note: these fields will be mapped automatically from the MARC Bibliographic record, based on in the library's default MARC-to-Instance map)
    • Resource title
    • Resource type
  • Holdings records
    • Permanent location
  • Item records
    • Permanent loan type
    • Material type
    • Status (Note: Not all item statuses can be created or updated via Data Import. This is controlled partly by which statuses appear in the dropdown list in the field mapping profile, and partly by logic that is invoked when Data import is updating an item record.)

How to map static/default data or data from a drop-down list into a FOLIO field. 

To map static, or default, data into a FOLIO field, wrap the data in quotation marks.

For example, to create a holding that doesn't yet have a call number, you could enter "Needs call number" into the call number field of a mapping profile.

To map data from one of the drop down lists into a FOLIO field, just select the item from the drop list and the appropriate text will be copied into the field for you. When you do that, you'll notice that FOLIO puts quotation marks around the data from the drop-down list.

Did a drop-down value change?

If you use data from a drop down list and that information changes (e.g. a location gets renamed), you will need to manually update the profile to reflect the new name. It is not automatically updated.



Mapping data from a MARC field into a FOLIO field

To map data from a MARC field into a FOLIO field use the syntax: field$subfield. For instance, enter 856$u into the Electronic Access URI field of a FOLIO holdings mapping profile.

You can insert a space between MARC data being mapped into a field. You could enter 090$a “ “ 090$b into the call number field of the mapping profile to put a space between the values in the 090$a and 090$b. You must include a space between the subfields and the quotation marks.

Use "Else" syntax to map MARC value only if value exists, if not map a static value

To map either data from a MARC field or a static value into a FOLIO field, depending on whether the value exists in the MARC use the else syntax. For instance 980$a; else "1"

You can create a complex chain of elses if needed. For instance you could enter 090$a “ “ 090$b; else 050$a ” “ 050$b; else “Needs call number” into the call number field of the mapping profile.

Put your "default" value at the end

If you chain together several "elses" in one mapping, any default value (the one in quotation marks) must always be the last value in the chain. 



Removing existing values from records with data import

To remove an existing value from the records you are acting on, enter ###REMOVE### into the field. For instance, to remove a temporary location, enter ###REMOVE### into the temporary location field in your mapping profile.


Mapping a date into a data picker field

Date picker fields are the fields that look like calendars, like this (for "Cataloged date" on an Instance record):


When mapping into these fields, you can enter ###TODAY### to input the current day, or select a date from the calendar drop-down, or enter a MARC field mapping.

If using a date from a MARC subfield, the date must be in standard FOLIO format (YYYY-MM-DD)


Mapping a repeatable field

  • For repeatable fields, the user must select one of four options for how the field mapping data will act during the import:
    • Add these to existing: When creating a record, all mapped values will be added to the field. When updating a record, all existing values will be retained, and all newly-mapped values will be added.
    • Delete all existing values: When creating a record, this action has no effect. When updating a record, all existing values will be removed, and none will be added.
    • Delete all existing values and add these: When creating a record, all newly-mapped values will be added. When updating a record, all existing values will be deleted, and then all newly-mapped values will be added. If there are no new values on the incoming record, any values in the existing record will be retained.
    • Find and remove these: When creating a record, this action has no effect. When updating a record, if the mapped value exists, it will be removed from the field. No new values will be added. 

Validation in MARC field mapping profiles

Inventory field mapping profiles that are used for importing MARC files have validation to ensure that the entered data is an accurate MARC field, a valid default value in quotation marks (if the field is validated), a free-text default value in quotation marks (if the field is not validated), a special mapping value, or a combination of the above. If a user enters invalid values or syntax, they will see a message such as Non-MARC value must use quotation marks or Please correct the syntax to continue. The user will be unable to save the field mapping profile until the error is corrected.

Type of dataValid mapping syntax exampleMeaningNotes
MARC control fields, without subfields (LDR, 001, 003, 005, 006, 007, 008)

007  


Include all data from the 007
MARC control fields, without subfields (LDR, 001, 003, 005, 006, 007, 008)

LDR/5

Include byte 5 from the Leader field (note that the first byte of MARC control fields is 0, not 1. Thus, LDR/5 is actually the 6th position in the Leader stringThe slash indicates that the next value is a byte or a range of bytes. If no hyphen, then it is a single byte
MARC control fields, without subfields (LDR, 001, 003, 005, 006, 007, 008)008/14Include byte 14 from the 008 control field (which is position 15 in the string)The slash indicates that the next value is a byte or a range of bytes. If no hyphen, then it is a single byte
MARC control fields, without subfields (LDR, 001, 003, 005, 006, 007, 008)007/4-6Include bytes 4-6 (which are positions 5-7 in the string)The / (slash) indicates that the next value is a byte or a range of bytes. If there is a hyphen, that indicates a string of bytes, starting with the first position and ending with the last indicated position
MARC variable fields (010-999), with all subfields

300

If the mapping is a 3-digit MARC field number without any subfields, data from all the subfields in the field are included in the Inventory record field, in the same order as shown in the MARC field. There is no space or indication between each subfield's data in the Inventory record field. This is not a common mapping. 
MARC variable fields (010-999), with specific subfields980$aData from the specified subfield in the specified field is included in the Inventory record field. The $ (dollar sign) indicates that the next value is a subfield letter or number. A single alphanumeric character must follow the dollar sign. If there no character or multiple characters following the dollar sign, a validation error message displays.
MARC variable fields (010-999), with specific subfields300$a 300$cData from each specified subfield in the specified field(s) is included in the Inventory record fieldA space must separate each field$subfield pair from any other in the mapping profile. The $ (dollar sign) indicates that the next value is a subfield letter or number. A single alphanumeric character must follow the dollar sign. If there no character or multiple characters following the dollar sign, a validation error message displays. The subfields do not have to be from the same field. There is no space or indication between each subfield's data in the Inventory record field. This is not a common mapping.
MARC variable fields (010-999), with specific subfields, separated by specified punctuation050$a " " 050$bData from each specified subfield in the specified field(s) is included in the Inventory record field. The data from the subfields is separated by a space.Without the " " indication, the data from 050$a and 050$b will be entered into the Inventory record field without a space between the subfields' data. The " " (a space surrounded by quotation marks) indicates that a space should be included between the data from the subfields
Default text (field does not have validation reference values)"Purchased with gift funds"Default data that is not retrieved from the incoming MARC record. The exact default data (without quotation marks) will be placed in the specified Inventory record field for every record that is created or updated by the data import job. If there is a beginning quotation mark or ending quotation mark without its counterpart, a validation error message displays.
MARC fields and default text090$a " " 090$b; else 050$a " " 050$bThe mapping presents a 2-value cascade of options for retrieving the data from the MARC record. If there are values in 090$a and 090$b, include those values in the Inventory record field. If not, then check the 050$a and 050$b field for data. And if no data in 050$a and 050$b, then leave the field blank; else (semicolon (space) else) indicates the following value is a fallback value, which is only inspected or included in the Inventory record field if there is no available value in the preceding field
MARC fields and default text090$a " " 090$b; else 050$a " " 050$b; else "NEEDS CALL NUMBER"The mapping presents a 3-value cascade of options for retrieving the data from the MARC record. If there are values in 090$a and 090$b, include those values in the Inventory record field. If not, then check the 050$a and 050$b field for data. And if no data in 050$a and 050$b, then insert default data of NEEDS CALL NUMBER.; else (semicolon (space) else) indicates the following value is a fallback value, which is only inspected or included in the Inventory record field if there is no available value in the preceding field. If a fallback value is a default value (in quotation marks) rather than a MARC field, the default must be the last value in the cascade.
(empty the field)###REMOVE###Empty whatever value was previously in the specified Inventory record fieldThis would only be applicable in a field mapping profile used for updates.
Today's date###TODAY###Assign today's date in the Inventory record fieldThis is only applicable to "date picker fields" such as Cataloged date
A specific date"2021-06-07"Assign this exact date in the Inventory record fieldThis is only applicable to "date picker fields" such as Cataloged date. This mapping is not commonly used. Note that the data must be entered in the default FOLIO format of "YYYY-MM-DD" no matter what the library's localized date format is.
A field with a validation (or dropdown or reference value) list

952$a

"ONLINE (E)"

If the Inventory record field can only contain specific values, such as  Permanent location or Item status, the data retrieved from the specified MARC field and subfield or entered as default text must match one of the specific values exactly, in spelling, case, and punctuation.

The only exception is Location data retrieved from a MARC field, which can be the Location name, Location code, or Location name (code).

If the value is selected from the field's dropdown list in the field mapping profile, it will be populated into the mapping field with the proper punctuation and value details.

If a default value is typed into the mapping field and does not match a valid value from the dropdown list, an error message displays.

Restrictions on Item Statuses when Creating Item Records

In the Data Import Field mapping profile for Inventory Item records, some item statuses are restricted, and cannot be assigned.

The following statuses can be assigned via Data Import, when the Item action is Create

  • Available
  • In process
  • In process (non-requestable)
  • In transit
  • Intellectual item
  • Long missing
  • Missing
  • On order
  • Order closed
  • Restricted
  • Unavailable
  • Unknown
  • Withdrawn

The following statuses cannot be assigned via Data Import: 

  • Aged to lost
  • Awaiting delivery
  • Awaiting pickup
  • Checked out
  • Claimed returned
  • Declared lost
  • Paged

When the item action is Update, if the existing Item record has any of the following statuses, the status will not be updated via Data Import. Any other fields in the item record will be updated, but the status field will be skipped, and an error returned to the Data Import log.

  • Aged to lost
  • Awaiting delivery
  • Awaiting pickup
  • Checked out
  • Claimed returned
  • Declared lost
  • Paged

This is an example of what the error looks like: