Reference data values

On installation/upgrade/initialisation of mod-agreements and mod-licences we have a number of ways in which data may be populated. The aim is to document what data falls into each of these categories and make sure we are happy with this situation or if any of it should be changed.

Accessing reference data values

The controlled values can then be accessed through the URL pattern “/erm/refdataValues/domain/property i.e.

/erm/refdataValues/TitleInstance.Type

Additionally values can also be accessed by searching for refdata as such:

erm/refdata?filters=desc=TitleInstance.Type

Reference data default values

These reference data values are populated through the use of the @Defaults interface within the domain model, then upon the modules initialisation these values are automatically generated, these @Defaults are present within the code as follows:

@CategoryId(defaultInternal=true)
@Defaults(['Monograph', 'Serial'])
RefdataValue type

Reference data populated through defaults:

mod-agreements
Reference Data categoryDefault values
AgreementRelationship.Type@Defaults(['Supersedes', 'Provides post-cancellation access for', 'Tracks demand-driven acquisitions for', 'Related to', 'Has backfile in'])
DocumentAttachment.AtType@Defaults(['Licence', 'Misc', 'Consortium negotiation document'])
InternalContact.Role@Defaults(['Subject specialist'])
LicenseAmendmentStatus.Status@Defaults(['Current', 'Future', 'Historical', 'Does not apply'])
PersistentJob.Result@Defaults(['Success', 'Partial success', 'Failure', 'Interrupted'])
PersistentJob.Status@Defaults(['Queued', 'In progress', 'Ended'])
Pkg.LifeCycleStatus@Defaults(['Current', 'Retired', 'Expected', 'Deleted'])
Pkg.Type@Defaults(['Aggregated Full Text', 'Abstracts and Index', 'Package'])
Pkg.availabilityScope
@Defaults(['Global'])
RemoteLicenseLink.Status@Defaults(['Controlling', 'Future', 'Historical'])
StringTemplate.Context@Defaults(['urlProxier', 'urlCustomiser'])
SubscriptionAgreement.AgreementStatus@Defaults(['Draft', 'Requested', 'In negotiation', 'Active', 'Closed'])
SubscriptionAgreement.AgreementType@Defaults(['Draft', 'Trial', 'Current'])
SubscriptionAgreement.ContentType@Defaults(['Books', 'Journals', 'Database', 'Audio', 'Video'])
SubscriptionAgreement.ReasonForClosure@Defaults(['Cancelled', 'Ceased', 'Superseded', 'Rejected'])
SubscriptionAgreement.RenewalPriority@Defaults(['Definitely renew', 'For review', 'Definitely cancel'])
SubscriptionAgreementOrg.Role@Defaults(['Content provider'])
TitleInstance.Subtype@Defaults(['Print', 'Electronic'])
TitleInstance.Type@Defaults(['Monograph', 'Serial'])
mod-licenses

Reference Data categoryDefault values
DocumentAttatchment.AtType@Defaults(['Consortium authorization statement', 'Product data sheet', 'Vendor terms and conditions'])
InternalContact.Role@Defaults(['Subject specialist'])
License.Type@Defaults(['Local', 'Consortial', 'National', 'Alliance' ])
LicenseOrg.Role@Defaults(['Licensor'])
License.Status@Defaults(['In negotiation','Not yet active', 'Active', 'Rejected', 'Expired'])
License.EndDateSemantics@Defaults(['Explicit', 'Open ended', 'Implicit'])

Reference data value from services

Some reference data values are populated within a service through the lookupOrCreate function i.e

RefdataValue.lookupOrCreate(‘TitleInstance.PublicationType’, ‘Book’, ‘Book’)

For example, upon package ingest if an AvailabilityConstraint, AvailabilityScope or ContentType does not already exist within the reference data value, then it is created and added to the controlled values

Agreements
ServiceRefdata category
PackageIngestServiceAvailabilityConstraint.Body
PackageIngestServicePkg.AvailabilityScope
PackageIngestServicePkg.ContentType
IdentifierServiceIdentifierOccurrence.Status

onLoadReference

Upon creating or upgrading a tenant, the onLoadReference function for mod-argreements is called from within the ErmHouseKeepingService, for mod-licenses this is called from within LicenseHousekeepingService , along with other tenant configurations, this also populates various reference data values without an explicit domain model associated with them. For example:

RefdataValue.lookupOrCreate(FileStorageEngines, ‘LOB’)
RefdataValue.lookupOrCreate(FileStorageEngines, S3)
Agreements
Refdata categoryRefdata values

AuthIdent

Other, Email Domain, ORCID, Over Institute, Over IP Range, Ringgold ID, ROR ID

FileStorageEngines

LOB, S3

Yes/No/Other

Yes, No, Other (See notes)
Licenses
Refdata categoryRefdata values

FileStorageEngines

LOB, S3

Permitted/Prohibited

Permitted (explicit), Permitted (explicit) under conditions, Permitted (interpreted), Prohibited (explicit), Prohibited (interpreted), Unmentioned, Not applicable

Yes/No/Other

Yes, No, Other (See notes)