Normalization (norm) rules are used to change and/or update metadata in MARC21 bibliographic (bib) and holdings records. Normalization rules are created in the MD Editor. Normalization rules require a normalization process for normalization rules to be run as a job or applied to import and integration profiles that import MARC records into Alma.
Normalization rules can be applied to MARC records:
Normalization rules can be applied by a SUNY institution to:
NOTE: Normalization rules can only be applied to NZ records by SUNY Library Services. When previewing a rule for a Network record, the following message is displayed: "Note that the rules will be applied only to local fields when the normalization process is run."
One of the following roles is required to create a normalization rule:
The following role is required to create a normalization process:
The placement of new rules is very important when creating normalization (norm) rules because it will impact what processes and functionality can use the norm rules in Alma. The "Placement of new rules" should be configured to local when creating or duplicating norm rules. A Network (network icon) or a local (house icon) norm rule can be used on a bib record in the MD Editor, but a Network created norm rule cannot be used in a norm process. Local rules can only be used on IZ only records when using "Enhance the record" in the MD Editor. Network rules can only be used on NZ linked bib records when using "Enhance the record" in the MD Editor.
To Change the "Placement of new rules" in the:
To Change the "Placement of new rules" in the current MD Editor:
To Change the "Placement of new rules" in the the New MD Editor:
The following steps are required to use a normalization rule on a set of bib records as a job, in an import or integration profile, and/or "Enhance the record" in the MD Editor:
The following steps are required to allow a norm rule to be applied to a set of records in Alma:
Normalization (norm) rules are written using drools logic. Indication rules contain:
Norm Rule Format and Order:
Norm Rule Format and Order | Notes |
|
|
Conditions are applied to record elements in a MARC record such as fields, indicators, subfields, field/subfield content. Conditions can be defined at the entire rule level (WHEN), or at a specific action level (IF). The following are conditions that can be used in an indication rule:
Norm Rule Conditions | Applied to Record Elements |
containsScript | Fixed list of languages |
exists |
Data fields:
|
existsControl |
Control fields (fixed fields):
|
not exists |
Data fields:
|
not existsControl |
Control fields (fixed fields):
|
existsMoreThanOnce |
Data fields:
|
TRUE |
True is a condition used at the record level
|
Types of elements:
Control fields are made up of the following elements:
Control Field Element | Definition | Notes |
Control Field (Fixed Field Tag) |
Three-letter or three-digit number assigned to fixed fields
|
|
Position |
The numeric value for the position in the control field
|
|
Length |
The length is the number of characters in the position
|
|
Value |
The content of the control field and position
|
|
NOTE: Control fields can be opened in a form editor in the MD Editor using Ctrl+F (Editing Actions>Open Form Editor). Open the fixed field in the MD Editor to view the position and length.
Data fields elements that are used in normalization rules:
Data Field Element | Definition | Notes |
Tag (MARC field) |
|
|
Indicator |
|
|
Subfield |
|
|
Value |
|
|
The following elements can be used in normalization rules conditions and actions:
Record Element | Example Using Elements in Conditions | Example Using Elements in Actions |
Control Field | existsControl "007" |
|
Control Field_Position_Length | existsControl "007.{0,4}" |
|
Control Field_Position_Length_Value | existsControl "007.{0,4}.v" |
|
Control Field_Value | not existsControlField "007.vd cvaizm" |
|
MARC Field | exists "986" |
|
MARC Field_Indicator | exists "650.{*,0}" |
|
MARC Field_Subfield |
exists "100.a" |
|
MARC Field_Indicator_Subfield | not exists "650.{*,0}.a" |
|
MARC Field_Indicator_Subfield_Value |
not exists "650.{*,0}.a.Graphic novels" |
|
MARC Field_Subfield_Value |
not exists "650.a.Graphic novels" |
|
Control Field (fixed field) actions should only be applied to IZ only records in Alma that are not linked to the NZ or the CZ.
Control Field Actions | Definition | Action Examples |
changeControlField |
|
changeControlField "<Fixed Field MARC Tag>" to "<New Fixed Field Tag>" changeControlField "007" to "008" |
addControlField |
|
addControlField "<Fixed Field Tag>.<Value>" addControlField "007.vd cvaizm
|
removeControlField |
|
removeControlField "<Fixed Field Tag>" removeControlField "003" removeControlField "008"
|
replaceControlContents |
|
replaceControlContents "<Fixed Field Tag>.{<Position,Length>}.<Value>" with "<New Value>" replaceControlContents "LDR.{17,1}.l" with " "
|
Use the data field actions in:
The following data field actions are available for use in Alma as of March April 2021:
Data Field Actions - Add | Definition | Action Examples |
addField |
|
addField "<MARC Tag>.{<Indicator 1,Indicator 2>}.<Subfield>.<Value>" addField "597.{1, }.c.Gift |
addSubField |
|
addSubField "<MARC Tag>.{<Indicator 1,Indicator 2>}.<Subfield>.<Value>" or addSubField "<MARC Tag>.<Subfield>.<Value>" addSubField "597.{*,*}.9.local" |
addSystemNumber |
|
addSystemNumber "<MARC Tag where the System Number will be added><Subfield to place the System Number>" from "<MARC Tag where the System Number is being copied from>" prefixed by "<MARC Tag with the Prefix> addSystemNumber "035.a" from "001" prefixed by "003" |
prefix |
|
prefix "<MARC Tag>.<Subfield>" with "<Value>" prefix "035.b" with "(OCoLC)" |
prefixSubField |
|
prefixSubField "<MARC Tag>.<Subfield>" with "<Source MARC Tag>.<Source Subfield>" prefixSubField "035.b" with "035.a" |
suffix |
|
suffix "<MARC Tag>.<Subfield>" with "<Value>" suffix "953.a" with "-NEW" |
suffixSubField |
|
suffixSubField "<MARC Tag>.<Subfield>" with "<Source MARC Tag>.<Source Subfield>" suffixSubField "935.a" with "035.a" |
Record Action - Copy Field | Definition | Action Examples |
copyField |
|
copyField "<MARC Tag>" to "<MARC Tag>" or copyField "597" to "590" |
Data Field Actions - Replace | Definition | Action Examples |
changeField |
|
changeField "<MARC Tag>" to "<New MARC Tag>" changeField "500" to "505" |
changeSubField |
|
changeSubField "<MARC Tag>.<Subfield>" to "<New Subfield>" changeSubField "597.a" to "b" |
changeSubFieldOnlyFirst |
|
changeSubFieldOnlyFirst "<MARC Tag>.<Subfield>" to "<New Subfield>" changeSubFieldOnlyFirst "597.a" to "b" |
changeSubFieldExceptFirst |
|
changeSubFieldExceptFirst "<MARC Tag>.<Subfield> to "<New SubField>" changeSubFieldExceptFirst "597.a" to "b" |
changeFirstIndicator |
|
changeFirstIndicator "<MARC Tag>" to "<Value>" changeFirstIndicator "597" to "0" |
changeSecondIndicator |
|
changeSecondIndicator "<MARC Tag>" to "<Value>" changeSecondIndicator "597 to " "
|
combineFields |
|
combineFields "<MARC Tag>" excluding "<Subfield>" or combineFields "<MARC Tag>" excluding "<Subfield,Subfield>" combineFields "597" excluding "c" |
Data Field Actions - Remove | Definition | Action Examples |
removeField |
|
removeFied "<MARC Tag>" removeField "986" |
removeSubField |
|
removeSubField "<MARC Tag>.<Subfield>" removeSubfield "590.b" |
Data Fields - Replace | Definition | Action Examples |
replaceContents |
|
replaceContents "<MARC TAG>.<Subfield>.<Value>" with "<New Value>" replaceContents "597.c.Gift" with "Purchase" |
replaceContentsOnlyFirst |
|
replaceContentsOnlyFirst "<MARC Tag>.<Subfield>.<Value>" with "<New Value>" replaceContentsOnlyFirst "592.a.Thesis" with "Dissertation" |
replaceContentsExceptFirst |
|
replaceContentsExceptFirst "<MARC Tag>.<Subfield>.<Value>" with "<New Value>“
|
replaceSubFieldContents |
|
replaceSubFieldContents "<MARC Tag>.<Subfield>" with "<MARC Tag>.<Subfield>" replaceSubfieldContents "500.a" with "590.b" |
Data Fields - Other Actions | Definition | Action Examples |
splitSubField |
|
splitSubField “<MARC Tag>.<{Indicator 1,Indicator 2}>.<Subfield>.<Punctuation>” to “<MARC Tag>>.<{Indicator 1,Indicator 2}>.<Subfield>” addSeq “<Subfield>” splitSubField “520.a.,” to “590.a” |
correctDuplicateSubfields |
|
correctDuplicateSubfields "<MARC Tag>" "<Subfields>" correctDuplicateSubfields "690" "z" |
moveSubfieldsToTheEndOfField |
|
moveSubfieldsToTheEndOfField "<MARC Tag>" "<Subfield or Subfields>" moveSubfieldsToTheEndOfField "690" "z"
|
correctDuplicateFields |
|
correctDuplicateFields "<MARC Tag>,<MARC Tag>" correctDuplicateFields "650,655" |
Wild Cards/Special Characters | Definition |
# (hash tag) |
|
* (asterisk) |
|
\ (backslash) |
|
. (period) |
|
" " (quotation marks) |
|
Boolan Operators |
|
Spaces |
|
| (Pipe) |
|
An "if" statements is a condition that is combined with an action:
How to use "if" statements in a norm rule:
"if" Statement with a Condition with Elements:
Rule Construction | Rule Example |
rule "rule name" |
rule "remove 597 Donor NOTE from bib"
|
"if" Statement Using the TRUE Condition:
Rule Construction | Rule Example |
rule "rule name" then condition TRUE when action "if(statement)" end |
rule "remove 597 Donor Note from bib" when TRUE then removeField "597" if(exists "597.a.Estate of Donor Name*") end |
Priorities (or saliences) can be applied to a rule when a rule contains multiple rules that apply actions to the same MARC fields.
Priority Information | Explained |
Priorities are written after the rule name and before "when" with the following pattern: priority # | rule "rule name" priority 10 when |
Priorities are performed in order of the highest priority first, followed by other priorities of a lower number |
A rule with priority 10 will be performed before a rule with priority 5 A rule with priority 5 will be be performed before a rule with priority 1 |
Priorities use whole numbers |
Do not use fractions or decimal points |
Rules using priorities do not need to be in order within the rule. Priorities will tell the rule which rule containing the priority should be run first for the MARC field. In the example, the rule with priority 2 will run before the rule containing priority 1. |
rule "Picture Book" rule "Picture book 2" |
Priority numbers do not have to be in numeric order. Numbers can be skipped |
rule "Picture book 2" rule "Picture Book" |
Priorities are only necessary when a rule contains multiple rules affecting the same MARC field. Where different actions are being applied to the same MARC field in one rule that contains multiple rules. |
rule "Picture Book" rule "Picture book 2" rule "Picture Book 3" |
To construct a norm rule:
To create a new norm rule in the MD Editor:
SUNY local fields are the only MARC fields that should be added, edited, or deleted from Network Zone (NZ) linked bib records.
Local extensions ($$9 local):
Creating a rule for SUNY local fields:
Normalization rules need to be constructed in a specific order when adding a local extension to a SUNY local MARC field. The local MARC field needs to be created first. The field must contain a value in order for it to be created. Then, the local extension subfield ($$9 local) can be added.
Add Local Extension - The Local Field Does Not Exist | Add Local Extensions - The Local Field Exists |
rule "add 597|c|Gift" when not exists "597.c.Gift" then addField "597.c.Gift" addSubfield "597.9.local" end |
rule "add 597|c|Gift" when TRUE then addField "597.c.Gift" if(not exists "597.c.Gift") addSubfield "597.9.local" if(exists "597.c.Gift") end |
Adding a local extension to an existing MARC field (must be a SUNY configure local field):
Local extensions ($$9) can be added to MARC fields that have been configured as local in Alma. If a user adds a local field using "Add Field" instead of "Add Local Extensions," the user can add the local extension using a norm rule if they do not want to delete the incorrect field and start over.
To add a local extension to a local MARC field:
To create a norm rule that add a local extension:
Add Local Extension - The Local Field Does Not Exist | Example | Notes |
rule "add local extension" |
rule "add local extension" when TRUE then addSubField "597.9.local" if(exists "597.c.Gift") end |
The rule can be edited:
|
Apply the Norm Rule from Preview:
Subfields can be added to existing MARC fields using the addSubField action in a norm rule:
Constructing a rule to:
Constructing a rule adding subfields and reordering the subfields:
Constructing a rule to reorder existing subfields in a MARC field:
Normalization (norm) rules should not be edited by a user who did not create the norm rule. Norm rules that begin with SUNY should never be edited by other users in SUNY because any changes made to the rule will impact all SUNY processes that use them. There is no way to prevent rules from being edited by other users in Alma. It is recommended that users duplicate norm rule created by another SUNY user when the user wants to use and/or edit the rule for their own purposes.
Norm rules can be duplicated:
To duplicate an existing bib record created by another user from the ruled list:
Normalization rules can be tested on a bib record in the MD Editor in the following manner:
To test a normalization rule when the bib record is opened in the MD Editor first:
To test a normalization rule when the rule is opened in the MD Editor first:
A normalization process is required to apply a norm rule to a set of records or to import processes.
Prerequisites to creating a norm process:
To create a norm process for bibliographic or holdings records:
Prerequisites for running a norm process on a set of record:
To run a norm process on a set of bib records:
Prerequisites for running a norm process on a set of record:
To run a norm process on a set of records:
A user may choose to delete a normalization process once they no longer need to use it.
To delete a bibliographic or holdings norm process:
Normalization rules should only be deleted by the user who created them. Never delete norm rules beginning with SUNY or that have been created by other users. Once a rule is deleted it cannot be restored.
Prerequisites for deleting norm rules:
You can delete a norm rule from either the main pain of the MD Editor or the Rules List:
"Enhance the record" allows users to enhance a MARC21 bib or holdings record using normalization processes.
The zone of the record impacts what norm processes display in the "Enhance the record" drop-down list under Editing Actions:
In order for normalization processes to display in the drop-down menu for "Choose Normalization Task" the following needs to exist:
To enhance a bib or holding record in the MD Editor: