Use LocationID to determine agency
Activity
Tim Auger March 25, 2025 at 4:25 PM
Tested across the board for all member libraries. Corresponding configuration updated in staging and production.
Jag Goraya February 17, 2025 at 2:36 PM
Via @Ian Ibbotson (Use this one) on commit commit 0853448:
Adds the optional capability for the Polaris client to use LocationId per DCB-1675 as a strategy for resolving an item agency whilst retaining the current code strategy as a default.
Notes:
Behaviour is set via the HostLMS setting
clientConfig.item.item-agency-resolution-method
which defaults to "Legacy" (The current behaviour). Correct function of LocationId strategy depends upon the presence of mappings (direct_mappings.tsv) which map LocationId as a string to agency. For exmaple:fromContext fromCategory fromValue toContext toCategory toValue
RIVERSHARE Location 16 DCB AGENCY 6davn
It is crucially important to remember that when resolving an agency as a part of the Search/RTAC flow the HostLMS adapter used will be the "Catalog" role. For instances of locate based on a shared system, this will be the HostLMS of the "Shared" system, and NOT the "Circulation" LMS for each library. Note also that the fromContext in this scenario is the shared system not the target library - as we are trying to derive from a shared system which of the member libraries a given item belongs to.
When LocationID agency resolution is enabled the concept of "Default Agency" for Polaris systems is not used when mapping items - we either know the agency explicitly or we don't and whilst we will return information about the item, we cannot use it in subsequent flows.
Options for clientConfig.item.item-agency-resolution-method
are:
case "LocationId" -> enrichItemWithAgencyUsingLocationId(itemGetRow, item, hostLmsCode);
case "Legacy" -> legacyEnrichItemWithAgency(item, hostLmsCode);
default -> Mono.just(item);
@Ian Ibbotson (Use this one) to apply this now, do we need to
explicitly set
clientConfig.item.item-agency-resolution-method
for the RIVERSHARE host lms to “LocationID”?explicityly make no changes to the DAVENPORT and BETTENDORF host lms config?
optionally set that config property on non-Rivershare libraries to “Legacy” now (but optionally because the next line defaults to that anyway)?
@JsonProperty("item-agency-resolution-method")
private String itemAgencyResolutionMethod="Legacy";
Tim Auger November 6, 2024 at 4:32 AMEdited
@Jag Goraya Created this issue to articulate the need to use LocationID
to determine an agency. We need to prioritize this for the current sprint. As you know, St. Louis Co. is disabled as a supplier until we can introduce a capability that ensures that a given branch is associated with an agency.
Jag Goraya November 5, 2024 at 9:29 AMEdited
Is this a duplicate of https://openlibraryfoundation.atlassian.net/browse/DCB-1674 ?
Current situation
When introducing suppression by shelf location for Polaris libraries, the capability to identify agencies by
LocationID
was removed. This story is to reintroduceLocationID
to affiliate a branch (via the value inLocationID
) to an agency. As part of this effort, we also need to clarify the role of shelf location and agency.LocationID
is the branch location identifier exposed via the Polaris API for item records. TheLocationID
is populated by the associatedOrganizationID
.OrganizationID
's are used to identify the system (e.g. RIVERSHARE), the library (e.g. Davenport) and the branch (e.g. Fairmont) in Polaris records and, for our purposes, used to populate both the item record owning branch (which branch owns the item) and assigned branch (where the item currently resides).Assumptions
LocationID
is the only data element procured from the corresponding API method needed to determine agency affiliation.ShelfLocation
will no longer be used to determine agency affiliation.LocationID
toagency
mappings stored in the DCB hub will be used to associateLocationID
toagency code
.A given
LocationID
can only be affiliated with oneagency code
but oneagency code
can have manyLocationID
s.Requirements
If
LocationID
isnull
in a Polaris item record, then do not associate the item with an agency.If
LocationID
is found in a Polaris item record but theLocationID
is not mapped to an agency, then do not associate the item with an agency.Any item not explicitly affiliated with an agency will not be
displayable
in Locate DCB and will not beselectable
for requests.An item with a
LocationID
mapped to an agency will bedisplayable
in Locate DCB and subject to availability and selectability criteria.LocationName
must be displayed in Locate DCB’s summary holdingsLocation
field (see attached). Currently, this displays the Polaris ShelfLocation. [It is ok to strike this requirement from this story in lieu of creating a new story]In Scope
Polaris LMS
Out of Scope
DCB admin module changes would fall under a different Jira.