Deprecation of obsolete Acquisition Methods

Deprecation of obsolete Acquisition Methods

Summary

Acquisition administrators should be able to mark obsolete acquisition methods as deprecated, so that staff users can recognize such unused methods and they do not pollute their user interface.

It should not be possible to select deprecated methods on new/edited PO lines or order templates, but they should stay visible on existing records and searchable/filterable (suffixed ‘(deprecated)’).

The Acquisition SIG already includes the story in their requested enhancements. FOLIO already provides the option to mark order prefixes as deprecated. The proposed implementation for the deprecation of acquisition methods works mostly analogous.

Functional Requirements

Open Questions

  • Currently system acquisition methods can’t be edited nor deleted. When enabling editing in order to be able to set them to deprecated, changing the names is also possible. They do have a UUID by which they are usually resolved but it could cause issues when they are resolved by name (e.g. mod-gobi). How should this be mitigated?

    • Proposed: keep name editing disabled. If wanted, it should be implemented as a separate feature.

  • Currently ui-inventory shows raw the acquisition method value. It is not part of the scope of the story yet - no deprecated suffix would appear here. Is that on purpose?

    • Proposed: out of scope.

Implementation

Summary

The implementation will be similar to the Order Prefix/Suffix deprecation feature. That feature adds a deprecated boolean to a controlled-vocabulary value so it can no longer be selected for new records, but remains visible (suffixed ‘(deprecated)’) and searchable on records that already reference it. Acquisition Method deprecation works the same way.

Changes:

  1. acq-models

    1. Add a deprecated boolean (default: false, optional) to the acquisition_method schema.

    2. Update the example samples.

  2. mod-orders-storage

    1. Bump the acq-models submodule and regenerate the model.

    2. Add a data-migration script that backfills deprecated = false on all existing acquisition-method rows. This is required so deprecated == false queries match pre-existing rows.

    3. Register the migration in schema.json and bump the provided acquisition-methods interface.

  3. mod-orders

    1. Bump the acq-models submodule and regenerate the POJO.

    2. Bump the provided acquisition-methods interface and the required orders-storage.acquisition-methods interface.

    3. Add no validation (soft enforcement); keep the existing delete rules (system methods stay non-deletable).

  4. stripes-acq-components

    1. Extend the shared acquisition-method options helper to exclude deprecated methods (keeping the currently-selected one) and to suffix deprecated labels.

    2. Add a (deprecated) suffix translation key.

  5. ui-orders

    1. Add a Deprecated column to the Acquisition methods settings page (read-only checkbox in view, editable checkbox in edit) and allow editing of predefined (System) methods to toggle it, while keeping System methods non-deletable and the name unchangeable.

    2. Exclude deprecated methods from the PO-line Acquisition method dropdown (keeping the value already on the line), and suffix it (deprecated) in the PO-line view.

    3. Apply the same exclusion in the Order template editor, and clear the prefilled method when creating an order from a template whose method has since been deprecated (forcing the user to pick a non-deprecated one).

  6. ui-plugin-find-po-line

    1. Show deprecated methods (suffixed (deprecated)) in the order-lines Acquisition method search filter, keeping them selectable.

Assumptions

See Open Questions and proposed solutions.

Work Breakdown Structure

Mod Stories

Title / Ticket

Description

Module

Title / Ticket

Description

Module

https://folio-org.atlassian.net/browse/MODORDSTOR-521

acq-models

  1. Add a deprecated boolean (default: false, optional) to the acquisition_method schema.

  2. Update the example samples.

 

https://folio-org.atlassian.net/browse/MODORDSTOR-522

mod-orders-storage

  1. Bump the acq-models submodule and regenerate the model.

  2. Add a data-migration script that backfills deprecated = false on all existing acquisition-method rows. This is required so deprecated == false queries match pre-existing rows.

  3. Register the migration in schema.json and bump the provided acquisition-methods interface.

 

https://folio-org.atlassian.net/browse/MODORDERS-1463

mod-orders

  1. Bump the acq-models submodule and regenerate the POJO.

  2. Bump the provided acquisition-methods interface and the required orders-storage.acquisition-methods interface.

  3. Add no validation (soft enforcement); keep the existing delete rules (system methods stay non-deletable).

 

UI Stories

Title / Ticket

Description

Module

Title / Ticket

Description

Module

https://folio-org.atlassian.net/browse/UISACQCOMP-301

stripes-acq-components

  1. Extend the shared acquisition-method options helper to exclude deprecated methods (keeping the currently-selected one) and to suffix deprecated labels.

  2. Add a (deprecated) suffix translation key.

 

https://folio-org.atlassian.net/browse/UIOR-1157

ui-orders

  1. Add a Deprecated column to the Acquisition methods settings page (read-only checkbox in view, editable checkbox in edit) and allow editing of predefined (System) methods to toggle it, while keeping System methods non-deletable and the name unchangeable.

  2. Exclude deprecated methods from the PO-line Acquisition method dropdown (keeping the value already on the line), and suffix it (deprecated) in the PO-line view.

  3. Apply the same exclusion in the Order template editor, and clear the prefilled method when creating an order from a template whose method has since been deprecated (forcing the user to pick a non-deprecated one).

 

https://folio-org.atlassian.net/browse/UIPFPOL-95

ui-plugin-find-po-line

  1. Show deprecated methods (suffixed (deprecated)) in the order-lines Acquisition method search filter, keeping them selectable.