New field in the item record: Source ID - Functional analysis

This page describes the functional analysis regarding "New field in item record: Source ID".

Inhalt

Übersicht und Status

Status


Kategorie

FUNKTION

Ersteller

VZG/UB MAINZ 

Unterstützer


Beginn

 

Funktionsanalyse

Description

  • In the instance and holdings there are fields that indicate the source of the record:
    • Instance field name source. Is a mandatory field of type string. Accepts any text supplied during creation and update. Not repeatable. See instance schema.
    • Holdings field name sourceId. Is currently not a required field and of type string, but will validate to the pattern of a UUID. Not repeatable. Holdings sources can be configured in the settings. See Holdings schema.
  • There is no analogous field in the Item yet to specify the source of the record. Probably because the US libraries always have Items created directly in FOLIO. There is no MARC standard for items, only for bibliographic records and holdings records.
  • Side note: The meaning of Source is not clear and therefore usage is not consistent. The issue was described in 2020 in this document. On the one hand, the instance source describes the system in which the data was created (if source=FOLIO), on the other hand the metadata format (if source=MARC).
  • In GBV and in Hebis (represented by UB Mainz) instances, holdings and items are transferred from the connected union catalog CBS to FOLIO via CBS2FOLIO,and kept up-to-date there. As a rule, a holdings and an item are generated in FOLIO from a CBS copy record (EPN). There are deviations in the case of "barcodes in sequence" and in these cases a Holdings with n Items is created from an EPN. In all cases, Instance and Holdings have the source of the union catalog, i.e. K10plus or Hebis. In the Items this source information is missing.
  • Both consortia want to enable the network libraries to create items locally in FOLIO as well. Conceivably an alternative to CBS volume records (002@ $0 item 2 = v) or for local items such as borrowable iPads, power cords, etc. These items must be distinguishable from items from the federated system, so that they are not overwritten and thus deleted during mod-inventory-update (part of the CBS2FOLIO process).

Examples:

# Instance
"source" : "MARC",

# Holdings
"sourceId": "fa687f33-aab5-4119-b0ad-05afe8de4d92"


Required fields

  • Implementation of the field sourceId in the item. Ideally this should be mandatory in order to ensure that every item record contains a source. Having it non-mandatory would work for use cases at GBV/Mainz as well.
  • Should also contain a UUID like on holdings level and be configurable in the Inventory settings.
  • Not repeatable.
  • If an item is created directly in the FOLIO UI, the UUID that represents the value FOLIO should be included. When creating and updating the item from a third party system, it should be possible to include any UUID that has been configured in the settings, analogous to the Holdings source.
  • (info) The introduction of a new mandatory field is a breaking change and will result in the need to migrate existing records during a system upgrade. The migration will take a very long time for institutions with millions of items, this is not acceptable because of the long down-time. Likewise, any apps that have transactions (create/update) with items will need to be adjusted. Possibly introduce the field as optional in one flower release and make it mandatory in the next flower release to allow for a transition period; this will also allow to migrate the items asynchronously without down-time.
  • A solution where sourceId will be optional forever can be accomplished by defining that a missing sourceId means "FOLIO" (created in FOLIO UI).
# Item
"sourceId": {
    "description": "(A reference to) the source of an item record",
    "type": "string",
    "$schema": "http://json-schema.org/draft-04/schema#",
    "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
    }
...
# if mandatory, then
"required": [
    "sourceId",
    ...
]

Challenges

  • Type your task here, using "@" to assign to a user and "//" to select a due date

Further information

Requirement analysis

  • ...

Relevant existing Jira tickets

  • UXPROD-4345 GBV. CBS2FOLIO: Overwrite protection of inventory fields. Add Item source field
    • MODINV-822 Inventory. Item. BE: Add data property item source id (required, not repeatable)
    • UIIN-2213 Inventory. Item. FE: Add data property item source id (required, not repeatable)

Follow up on

  • Holdings interactions in Bulk edit, Data Import, Data Export, maybe OAI-PMG, Orders, Receiving, Courses