Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

...

Jira Legacy
server

...

FOLIO Issue Tracker
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId6ccf3fe4-3301-368a-983e-20c466b11a49
keyUXPROD-2273

Jira Legacy
serverFOLIO Issue Tracker
serverId

...

6ccf3fe4-

...

3301-

...

368a-

...

983e-

...

20c466b11a49
keyMODSOURMAN-262

Requirements

Required to enable quickMarc updates.

Whenever an SRS MARC Bib record is updated, then the corresponding changes need to be made in the Instance fields that are controlled by the tenant's default map.

The default MARC Bib-Inventory Instance map may vary from tenant to tenant. Updates should be made based on the Instance fields mapped/controlled by the specific Tenanttenant's default map.

The FOLIO-supplied default MARC-Instance map: https://github.com/folio-org/mod-source-record-manager/blob/master/mod-source-record-manager-server/src/main/resources/rules/rules.json

Required to enable quickMarc updates.

Approach & Design

Info
iconfalse

SRS is short for mod-source-record-storage

SRM or CM (Change Manager) can be used interchangeably and refer to mod-source-record-manager

...

MethodPathPermissionsRequestResponseDescriptionNotes
GET

change-manager/parsedRecords?instanceId={instanceId}

change-manager.parsedrecords.getNA

200 OK

(ParsedRecordDto)

(A) GET MARC record{instanceId} - corresponding Instance id
PUT/change-manager/parsedRecords/{id}change-manager.parsed-records.put

Updated 

ParsedRecordDto

204 UPDATED (B) Update MARC record{id} - record id

...

Drawio
bordertrue
diagramNameChange Manager functionality triggered by quickMarc
simpleViewerfalse
width600800
linksauto
tbstyletop
diagramDisplayNameChange Manager functionality triggered by quickMarc
lboxtrue
diagramWidth1071
revision12

Info
iconfalse

SRS/SRM do not perform any validation of the updated MARC record, MARC Leader value should be recalculated on the quickMarc side

The actual update of the SRS MARC Record and the corresponding inventory Instance happens using pub-sub approach.

Drawio
bordertrue
diagramNameQM events
simpleViewerfalse
width500
linksauto
tbstyletop
diagramDisplayNameQM events going through pubsub
lboxtrue
diagramWidth531
revision1

1) Upon receiving the request for update of the MARC record - 204 response is sent and , a new QM_RECORD_UPDATED event is formed and published to mod-pubsub. Event payload contains the following data

  • PARSED_RECORD_DTO - received from quickMarc ParsedRecordDto containing updated MARC record
  • MAPPING_RULES - MARC-to-Instance default mapping rules
  • MAPPING_PARAMS - mapping parameters for populating reference data
  • SNAPSHOT_ID (optional) - new Snapshot id to which the updated MARC record will be linked

2) SRS subscribes is subscribed to QM_RECORD_UPDATED eventType. When SRS receives the event the following operations are performed:  

  1. a new Snapshot is created 
  2. a new Record is created with incremented generation value and status state ACTUAL
  3. status state of the original Record is set to OLD

Steps 2 and 3 are executed in transaction.

3) After the Record was is successfully “updated” (records in SRS are not overwritten, new Record is being saved with higher generation, and all the others are marked as OLD), a new QM_SRS_MARC_BIB_RECORD_UPDATED event is published to mod-pubsub with payload:

  • MAPPING_RULES (received from SRM) - MARC-to-Instance default mapping rules
  • MAPPING_PARAMS (received from SRM)- mapping parameters for populating reference data
  • MARC - updated SRS MARC Record

4) mod-inventory subscribes is subscribed to QM_SRS_MARC_BIB_RECORD_UPDATED event. When event is received, a new Instance entity is mapped from MARC record using Mapper from data-import-processing-core library. The original Instance is retrieved from mod-inventory-storage, compared to the newly mapped one and updated accordingly.