Update to MARC Bib-to-Instance Default map changes to support Authority control feature

MODSOURMAN-924 - Getting issue details... STATUS

Updates to the default MARC Bib-to-Inventory Instance MAP:

These changes are required to support the Authority control feature

Mandatory or Optional: Mandatory

Steps:

  1. If no changes were made to default mapping rules then call PUT  /mapping-rules/marc-bib/restore
  2. If changes were made to default mapping rules then follow next steps:
    1. Send a GET request to /mapping-rules/marc-bib to retrieve the mapping rules
    2. Update rules for alternativeTitles. Under fields 130, and 240 add a new "target":

      {
        "target": "alternativeTitles.authorityId",
        "description": "Authority ID that controlling the alternative title",
        "subfield": [
          "9"
        ]
      }

      Result example: 

      "130": [
          {
            "entity": [
              {
                "target": "alternativeTitles.alternativeTitleTypeId",
                "description": "Alternative Title id",
                "subfield": [
                  "a",
                  "n",
                  "p",
                  "d",
                  "f",
                  "g",
                  "h",
                  "k",
                  "l",
                  "m",
                  "o",
                  "r",
                  "s",
                  "t"
                ],
                "applyRulesOnConcatenatedData": true,
                "rules": [
                  {
                    "conditions": [
                      {
                        "type": "set_alternative_title_type_id",
                        "parameter": {
                          "name": "Uniform title"
                        }
                      }
                    ]
                  }
                ]
              },
              {
                "target": "alternativeTitles.alternativeTitle",
                "description": "Alternative Title",
                "subfield": [
                  "a",
                  "n",
                  "p",
                  "d",
                  "f",
                  "g",
                  "h",
                  "k",
                  "l",
                  "m",
                  "o",
                  "r",
                  "s",
                  "t"
                ],
                "applyRulesOnConcatenatedData": true,
                "rules": [
                  {
                    "conditions": [
                      {
                        "type": "remove_ending_punc, trim"
                      }
                    ]
                  }
                ]
              },
              {
                "target": "alternativeTitles.authorityId",
                "description": "Authority ID that controlling the alternative title",
                "subfield": [
                  "9"
                ]
              }
            ]
          }
        ]
    3. Update rules for contributors. Under fields 100, 110, 111, 700, 710, and 711 add a new "target":

              {
                "target": "contributors.authorityId",
                "description": "Authority ID that controlling the contributor",
                "applyRulesOnConcatenatedData": true,
                "subfield": [
                  "9"
                ]
              }

      Result example: 

      "700": [
          {
            "entity": [
              {
                "target": "contributors.authorityId",
                "description": "Authority ID that controlling the contributor",
                "applyRulesOnConcatenatedData": true,
                "subfield": [
                  "9"
                ]
              },
              {
                "target": "contributors.contributorNameTypeId",
                "description": "Type for Personal Name",
                "applyRulesOnConcatenatedData": true,
                "subfield": [
                ],
                "rules": [
                  {
                    "conditions": [
                      {
                        "type": "set_contributor_name_type_id",
                        "parameter": {
                          "name": "Personal name"
                        }
                      }
                    ]
                  }
                ]
              },
              {
                "rules": [
                  {
                    "conditions": [
                      {
                        "type": "set_contributor_type_id_by_code_or_name",
                        "parameter": {
                          "contributorCodeSubfield": "4",
                          "contributorNameSubfield": "e"
                        }
                      }
                    ]
                  }
                ],
                "target": "contributors.contributorTypeId",
                "subfield": [
                  "4",
                  "e"
                ],
                "description": "Type of contributor",
                "alternativeMapping": {
                  "target": "contributors.contributorTypeText",
                  "subfield": [
                    "e"
                  ],
                  "ignoreSubsequentSubfields": true
                },
                "applyRulesOnConcatenatedData": true
              },
              {
                "target": "contributors.primary",
                "description": "Primary contributor",
                "applyRulesOnConcatenatedData": true,
                "subfield": [
                ],
                "rules": [
                  {
                    "conditions": [],
                    "value": "false"
                  }
                ]
              },
              {
                "target": "contributors.name",
                "description": "Personal Name",
                "subfield": [
                  "a",
                  "b",
                  "c",
                  "d",
                  "f",
                  "g",
                  "j",
                  "k",
                  "l",
                  "n",
                  "p",
                  "q",
                  "t",
                  "u"
                ],
                "applyRulesOnConcatenatedData": true,
                "rules": [
                  {
                    "conditions": [
                      {
                        "type": "trim_period, trim"
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
    4. Update rules for series. Under fields 800, 810, 811, 830 do:
      1. Surround it with "entity"
      2. Change target from series to series.value
      3. add a new target:

                {
                  "target": "series.authorityId",
                  "description": "Authority ID that controlling the series",
                  "subfield": [
                    "9"
                  ]
                }

        Result example: 

        "800": [
            {
              "entity": [
                {
                  "target": "series.value",
                  "description": "Series Statement",
                  "applyRulesOnConcatenatedData": true,
                  "subfield": [
                    "a",
                    "b",
                    "c",
                    "d",
                    "e",
                    "f",
                    "g",
                    "h",
                    "j",
                    "k",
                    "l",
                    "m",
                    "n",
                    "o",
                    "p",
                    "q",
                    "r",
                    "s",
                    "t",
                    "u",
                    "v",
                    "w",
                    "x",
                    "3",
                    "5"
                  ],
                  "rules": [
                    {
                      "conditions": [
                        {
                          "type": "remove_ending_punc, trim"
                        }
                      ]
                    }
                  ]
                },
                {
                  "target": "series.authorityId",
                  "description": "Authority ID that controlling the series",
                  "subfield": [
                    "9"
                  ]
                }
              ]
            }
          ]
    5. Update rules for subjects. Under fields 600, 610, 611, 630, 650, 651, 655 do:
      1. Surround it with "entity"
      2. Change target from subjects to subjects.value
      3. add a new target:

                {
                  "target": "subjects.authorityId",
                  "description": "Authority ID that controlling the subject",
                  "subfield": [
                    "9"
                  ]
                }

        Result example: 

        "600": [
            {
              "entity": [
                {
                  "target": "subjects.value",
                  "description": "Subject Headings",
                  "applyRulesOnConcatenatedData": true,
                  "subfield": [
                    "a",
                    "b",
                    "c",
                    "d",
                    "e",
                    "f",
                    "g",
                    "h",
                    "j",
                    "k",
                    "l",
                    "m",
                    "n",
                    "o",
                    "p",
                    "q",
                    "r",
                    "s",
                    "t",
                    "u",
                    "v",
                    "x",
                    "y",
                    "z"
                  ],
                  "rules": [
                    {
                      "conditions": [
                        {
                          "type": "trim_period, trim"
                        }
                      ]
                    }
                  ],
                  "subFieldDelimiter": [
                    {
                      "value": " ",
                      "subfields": [
                        "a",
                        "b",
                        "c",
                        "d",
                        "j",
                        "q",
                        "t",
                        "f",
                        "g",
                        "k",
                        "l",
                        "m",
                        "n",
                        "o",
                        "p",
                        "r",
                        "s"
                      ]
                    },
                    {
                      "value": "--",
                      "subfields": [
                        "x",
                        "y",
                        "z",
                        "v"
                      ]
                    },
                    {
                      "value": "--",
                      "subfields": []
                    }
                  ]
                },
                {
                  "target": "subjects.authorityId",
                  "description": "Authority ID that controlling the subject",
                  "subfield": [
                    "9"
                  ]
                }
              ]
            }
          ]
    6. Send PUT request to /mapping-rules/marc-bib and put in the body the updated JSON