Skip to content

ILLDEV-570 additional LMS profiles - #828

Merged
adamdickmeiss merged 2 commits into
mainfrom
ILLDEV-570-further-lms-profiles
Oct 27, 2026
Merged

adamdickmeiss merged 2 commits into
mainfrom
ILLDEV-570-further-lms-profiles

Conversation

@adamdickmeiss

Copy link
Copy Markdown
Contributor

Implement Evergreen, Horizon, Polaris and Symphony as configurable profiles, including the catalog and circulation options. NCIP transport remains unchanged.

  • Add fixture regressions, override tests, persistence/import tests, and migration rollback coverage.
  • Broker, Directory and illmock checks pass; builds, lint and focused race checks pass. One broker event-order failure passed on rerun.
  • Live vendor compatibility remains unverified.

Apply migration 021_catalog_identifier_options and deploy the updated broker before enabling the profiles. Details are in
host-profiles.md.

Implement Evergreen, Horizon, Polaris and Symphony as configurable profiles,
including the catalog and circulation options. NCIP transport remains unchanged.

- Add fixture regressions, override tests, persistence/import tests, and migration
  rollback coverage.
- Broker, Directory and illmock checks pass; builds, lint and focused race checks pass.
  One broker event-order failure passed on rerun.
- Live vendor compatibility remains unverified.

Apply migration 021_catalog_identifier_options and deploy the updated broker
before enabling the profiles. Details are in
[host-profiles.md](/home/adam/proj/crosslink/directory/host-profiles.md).
Copilot AI balanced review requested due to automatic review settings October 26, 2026 13:06
@adamdickmeiss
adamdickmeiss marked this pull request as draft October 26, 2026 13:06

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

New vendor defaults and coordinated Directory/broker deployment warrant human sign-off while live vendor compatibility remains unverified.

No open issues 🎉

What changed in this PR

Extends CrossLink’s existing host-profile system with Evergreen, Horizon, Polaris and Symphony catalog and circulation settings, while retaining the current NCIP transport.

Changes:

  • Adds vendor defaults, identifier transformations, and configurable holdings availability and loan-policy extraction.
  • Extends Directory validation, persistence and imports, with migration 021 for catalog identifier options.
  • Adds fixture regressions, override and rollback tests, and deployment guidance.
File Description
directory/​test/​import_test.go Tests importing and clearing new overrides.
directory/​test/​host_profiles_test.go Tests profile persistence, PATCH behavior and validation.
directory/​test/​host_profiles_migration_test.go Tests migration preservation and rollback.
directory/​RELEASE-NOTES.md Announces profiles and deployment prerequisites.
directory/​README.md Updates vendor-specific NCIP defaults.
directory/​query.sql Persists identifier transformation options.
directory/​migrations/​021_catalog_identifier_options.up.sql Adds nullable identifier-option columns.
directory/​migrations/​021_catalog_identifier_options.down.sql Removes identifier-option columns on rollback.
directory/​import/​model/​config.go Adds import fields and validation.
directory/​import/​db/​entry.go Stores imported identifier options.
directory/​host-profiles.md Documents defaults, overrides and deployment order.
directory/​api/​import_contract_test.go Checks compatibility of additive import fields.
directory/​api/​entries.go Returns stored identifier options.
directory/​api/​catalog_config.go Maps new options and validates predicates.
directory/​api.yaml Defines vendor profiles and configuration contracts.
broker/​profiles/​resolve.go Supports new profiles and query-language overrides.
broker/​profiles/​resolve_test.go Tests validation and explicit overrides.
broker/​profiles/​builtin_test.go Expands built-in and concurrent-resolution coverage.
broker/​ncipclientv1/​README.md Documents vendor-specific version selection.
broker/​lms/​profiles_test.go Tests adapter defaults and identifier normalization.
broker/​lms/​lms_adapter_ncip1.go Uses shared normalization for NCIP 1 requests.
broker/​lms/​lms_adapter_ncip1_test.go Tests new-profile NCIP 1 request fields.
broker/​lms/​lms_adapter_ncip.go Uses shared normalization for NCIP 2 requests.
broker/​lms/​bib_identifier.go Centralizes circulation identifier normalization.
broker/​catalog/​testdata/​host-profiles/​symphony-stanford.xml Supplies a Symphony holdings fixture.
broker/​catalog/​testdata/​host-profiles/​polaris-with-out-item-status.xml Supplies a checked-out Polaris fixture.
broker/​catalog/​testdata/​host-profiles/​polaris-with-in-item-status.xml Supplies an available Polaris fixture.
broker/​catalog/​testdata/​host-profiles/​polaris-with-held-item-status.xml Supplies a held Polaris fixture.
broker/​catalog/​testdata/​host-profiles/​horizon-jhu.xml Supplies a Horizon shelving-data fixture.
broker/​catalog/​testdata/​host-profiles/​horizon-hennepin.xml Supplies another Horizon holdings fixture.
broker/​catalog/​testdata/​host-profiles/​evergreen-traverse-de-sioux-with-available-item-status.xml Supplies an available Evergreen fixture.
broker/​catalog/​testdata/​host-profiles/​evergreen-north-west-with-available-item-status.xml Supplies an available Evergreen fixture.
broker/​catalog/​testdata/​host-profiles/​evergreen-lake-agassiz-with-available-item-status.xml Supplies an available Evergreen fixture.
broker/​catalog/​testdata/​host-profiles/​evergreen-east-central-with-in-transit-item-status.xml Supplies an in-transit Evergreen fixture.
broker/​catalog/​testdata/​host-profiles/​evergreen-east-central-with-checked-out-item-status.xml Supplies a checked-out Evergreen fixture.
broker/​catalog/​query_builder_general.go Transforms identifiers before query escaping.
broker/​catalog/​holdings_parser_opac.go Adds exclusions, trimming and loan-policy sources.
broker/​catalog/​holdings_parser_marc.go Adds presence/exclusion predicates and loan-policy mapping.
broker/​catalog/​additional_profiles_test.go Tests fixtures, predicates, policy sources and queries.

Review effort: Balanced

@adamdickmeiss
adamdickmeiss marked this pull request as ready for review October 26, 2026 13:14
@jakub-id

Copy link
Copy Markdown
Contributor

@adamdickmeiss Looks good but can you please make sure the profiles are used during export (in a separate PR)

@adamdickmeiss
adamdickmeiss merged commit ad0fde5 into main Oct 27, 2026
9 checks passed
@adamdickmeiss
adamdickmeiss deleted the ILLDEV-570-further-lms-profiles branch October 27, 2026 10:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants