ARCH-338: Exclusion DCB Holding & Instance from discovery / bulk edit

ARCH-338: Exclusion DCB Holding & Instance from discovery / bulk edit

Submitted

Mar 13, 2026

Approved

 

Status

DONE

Impact

medium

Arch Ticket

https://folio-org.atlassian.net/browse/ARCH-338

Prod Ticket

https://folio-org.atlassian.net/browse/UXPROD-5791

Table of Contents

Overview

The DCB Entities: Instance and Holding across all tenants are available in the inventory application and for bulk editing.

The spike aims to investigate moving such entities from inventory/inventory-storage to mod-circulation-item module.

Problem Statement

Inventory instances and holdings are searchable and editable. Although editing has minimal impact on the DCB circulation, exclude them from discovery and edit operations via the UI and Bulk Operations.

DCB Holding & Instance Dependencies

  • Circulation items are created in mod-circulation-item and has references to the instance and holding without validation

  • mod-dcb creates circulation requests with fields: instanceId and holdingId; there fields are processed in mod-circulation to validate created request

Solution Options

#

Option

Description

Pros & Cons

Decision

#

Option

Description

Pros & Cons

Decision

1

Moving DCB Instance and Holding to mod-circulation-item

This option will move affected instance and holding to dedicated module which will exclude them from discovery/bulk edit operations: see diagram below for affected areas only for request creation.

  • Discovery modules are unaffected; instance and holding will move from mod-inventory-storage, making them not modifiable by existing tools.

  • The most complicated solution, because it will adds conditional branching in mod-circulation to query instance & holdings from 2 sources: mod-inventory and mod-circulation-item

  • Requires full regression testing for circulation, slips, etc.

NOT_APPLICABLE

The solutions seems complicated and requires extensive regression testing

2

Exclude instances and holdings by using NOT clause by ID

  • DCB Instance ID is always hard-coded as: 9d1b77e4-f02e-4b7f-b296-3f2042ddac54

  • DCB Holding Record ID is always hard-coded as: 10cd3a5a-d36f-4c7a-bc4f-e1ae3cf820c9

  • Query clauses for id exclusion:

    // instances: id <> "9d1b77e4-f02e-4b7f-b296-3f2042ddac54" //holdings: id <> "10cd3a5a-d36f-4c7a-bc4f-e1ae3cf820c9"

These IDs can be excluded from bulk operations search queries by using NOT clause: {filed} <> {value}

  • The simplest approach in bulk edit - adjusting the search query for affected instances & holdings with preserving initial functionality:

  • Hard-coding functionality in other modules complicates future maintenance (comments must clarify these IDs belong to mod-dcb managed entities)

  • This approach will require bulk edit functionality re-testing for instances & holdings

  • DCB functionality is not affected

PROPOSED

This solutions is the simplest of the 3 proposed, but in long term could be less maintainable

3

Suppressing Instance from Staff & Discovery

Instance & Holdings contains two fields:

  • staffSupress

  • discoverySuppress

  • Similar to the solution above, but it’s not clear if bulk edit operation respect the mentioned fields

  • mod-dcb must update DCB entities to set new properties, newly created entities must contain that fields

  • Regression testing is required for DCB and Bulk Edit functionality

NOT_APPLICABLE

FQM ignores staffSuppress & discoverySuppress flags

4

Exclude instances & holdings using source: DCB

Adding source field: DCB will clearly mark this instance and holding pair as belonging to DCB. This field has type String without additional validation.

Further adjustment involves excluding instances and holdings with source DCB from discovery (search).

  • This requires a minor enhancement in mod-search to filter instances and holdings by source field value.

  • Also, it requires that mod-dcb will create instance and holding with source field = DCB

  • Search query clause by inventory instances & holdings can be used in mod-inventory & mod-inventory-storage

    source <> "DCB"
  • Clear entity mark for DCB functionality

  • Can be excluded from mod-search via blacklisting by source field

  • Many affected modules:

    • mod-inventory-storage - validate that new source does not break existing functionality

    • mod-search - exclude DCB sourced entities from discovery

    • mod-dcb - update existing holding & instance, create new entities with source: DCB

    • bulk-edit - add search query clause to exclude entities with source: DCB

PROPOSED

This solution is more complicated than #2, but it’s more maintainable and understandable in future

Rough estimate: 20 days of development

5

Leave the functionality as is

Existing entities: Holding Record & Instance has small impact on system, it they will recreated if DCB_ENTITIES_RUNTIME_VERIFICATION_ENABLED is enabled (which is true by default) on the environment. The modification on them, including adding new holdings to the instance, or adding items to the holding records does not affect DCB functionality.

  • No changes needed

  • Entities should be excluded from harvesting by mod-oai-pmh

APPROVED

Mar 26, 2026

This solution is approved for Trillium release with requirement to exclude DCB instance & holding from harvesting in mod-oai-pmh

 

Comments