[ERM-2514] License terms are not displayed in Publication Finder when a journal title is directly linked to an agreement Created: 04/Nov/22  Updated: 27/Jun/23  Resolved: 30/Jan/23

Status: Closed
Project: ERM Platform
Components: mod-agreements
Affects versions: None
Fix versions: None

Type: Bug Priority: P3
Reporter: Masami Assignee: Owen Stephens
Resolution: Done Votes: 0
Labels: Support, erm, licences
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original estimate: Not Specified

Attachments: PNG File 1_linked_to_title_20230615.png     PNG File 2_linked_to_title_and_package_20230615.png    
Issue links:
Defines
defines ERM-2492 mod-agreements release. Fix version: ... Closed
Relates
relates to ERM-361 Support API for retrieving license te... Closed
Sprint: ERM Sprint 157
Development Team: Bienenvolk
Release: Orchid (R1 2023)
Affected Institution:
!!!ALL!!!
RCA Group: TBD

 Description   

Overview:

License terms for a journal title are not displayed in Publication Finder if a journal title is directly linked to an agreement and a package does not have an agreement line. This indicates if a title has a different agreement from a linked package, there is no option to display license terms for a title.
**

Steps to Reproduce:

  1. Create a license and set a value for at least one term and make visibility of that term 'public'
  2. Create an agreement and link the license as the 'Controlling' license
  3. Add an agreement line and choose to link an eHoldings resource
  4. search for a Title (e.g. Acta Academica) in the eHoldings search plugin and select
  5. create the agreement line
  6. make a call to erm/sas/publicLookup?referenceId=<eholdings title id> (e.g. for Acta Academica it is erm/sas/publicLookup?referenceId=66-542-91425)

Expected Results:
The call should retrieve a list of agreements with the license and license terms (custom properties). Even if there are zero agreements the call should still get a results list just an empty one

Actual Results:
Instead of a valid response we get an error.
Note that the error seems to occur once you have a three part referenceId. So
/erm/sas/publicLookup?referenceId=66-542 -> get a results set
/erm/sas/publicLookup?referenceId=66-542-91425 ->gets an error

{
    "error": 500,
    "message": "groovy.lang.MissingPropertyException: No such property: disjunctiveReferences for class: org.olf.SubscriptionAgreementController",
    "stackTrace": [
        "grails.artefact.gsp.TagLibraryInvoker$Trait$Helper.propertyMissing(TagLibraryInvoker.groovy:123)",
        "org.olf.SubscriptionAgreementController$__tt__publicLookup_closure14.doCall(SubscriptionAgreementController.groovy:56)",
        "org.olf.SubscriptionAgreementController.$tt__publicLookup(SubscriptionAgreementController.groovy:52)",
        "grails.gorm.transactions.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:94)",
        "org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)",
        "grails.gorm.transactions.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:91)",
        "grails.gorm.multitenancy.Tenants$_withId_closure2$_closure6.doCall(Tenants.groovy:265)",
        "org.grails.orm.hibernate.GrailsHibernateTemplate.doExecute(GrailsHibernateTemplate.java:297)",
        "org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:241)",
        "org.grails.orm.hibernate.GrailsHibernateTemplate.executeWithNewSession(GrailsHibernateTemplate.java:153)",
        "org.grails.orm.hibernate.GrailsHibernateTemplate.executeWithExistingOrCreateNewSession(GrailsHibernateTemplate.java:207)",
        "org.grails.orm.hibernate.AbstractHibernateDatastore.withNewSession(AbstractHibernateDatastore.java:369)",
        "grails.gorm.multitenancy.Tenants$_withId_closure2.doCall(Tenants.groovy:258)",
        "grails.gorm.multitenancy.Tenants$CurrentTenant.withTenant(Tenants.groovy:358)",
        "grails.gorm.multitenancy.Tenants.withId(Tenants.groovy:236)",
        "org.grails.datastore.gorm.services.DefaultTenantService.withCurrent(DefaultTenantService.groovy:71)",
        "org.grails.core.DefaultGrailsControllerClass$MethodHandleInvoker.invoke(DefaultGrailsControllerClass.java:223)",
        "org.grails.core.DefaultGrailsControllerClass.invoke(DefaultGrailsControllerClass.java:188)",
        "org.grails.web.mapping.mvc.UrlMappingsInfoHandlerAdapter.handle(UrlMappingsInfoHandlerAdapter.groovy:90)",
        "org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1043)",
        "org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)",
        "org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)",
        "org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)",
        "org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)",
        "io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)",
        "io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)",
        "io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)",
        "io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)",
        "org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)",
        "org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)",
        "org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)",
        "org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
        "org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)",
        "grails.plugin.springsecurity.web.UpdateRequestContextHolderExceptionTranslationFilter.doFilter(UpdateRequestContextHolderExceptionTranslationFilter.groovy:64)",
        "org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
        "org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
        "grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.groovy:54)",
        "org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
        "org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:150)",
        "org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
        "org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)",
        "org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
        "org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)",
        "org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
        "grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.groovy:64)",
        "org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
        "org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)",
        "org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
        "grails.plugin.springsecurity.web.SecurityRequestHolderFilter.doFilter(SecurityRequestHolderFilter.groovy:58)",
        "org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
        "com.k_int.okapi.springsecurity.OkapiAuthenticationFilter.successfulAuthentication(OkapiAuthenticationFilter.groovy:87)",
        "org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:240)",
        "org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)",
        "org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)",
        "org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)",
        "io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)",
        "io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)",
        "org.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:77)",
        "io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)",
        "io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)",
        "org.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:67)",
        "io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)",
        "io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)",
        "io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)",
        "io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)",
        "io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)",
        "io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)",
        "io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)",
        "io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)",
        "io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)",
        "io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)",
        "io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)",
        "io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)",
        "io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)",
        "io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)",
        "io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)",
        "io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)",
        "io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)",
        "io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)",
        "io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)",
        "io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)",
        "io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)",
        "io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)",
        "io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)",
        "io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:269)",
        "io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78)",
        "io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133)",
        "io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130)",
        "io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)",
        "io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)",
        "io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249)",
        "io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78)",
        "io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99)",
        "io.undertow.server.Connectors.executeRootHandler(Connectors.java:376)",
        "io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)"
    ]
}


 Comments   
Comment by Anya [ 05/Dec/22 ]

Support believes this might be a  get licensing API issue - if you link it at a package works but if you link it to a title it doesn't. 

 

Khalilah Gambrell and Owen Stephens 

Comment by Anya [ 12/Dec/22 ]

Support : Tagging Owen Stephens  and Khalilah Gambrell 

Comment by Charlotte Whitt [ 19/Dec/22 ]

Support SIG: Owen Stephens - will this bug be solved for Orchid or Poppy?

Comment by Charlotte Whitt [ 09/Jan/23 ]

Support SIG: Owen Stephens - will this bug be solved for Orchid or Poppy?

Comment by Owen Stephens [ 10/Jan/23 ]

Former user I need to do some investigation and work out what the issue is before we can schedule a fix. We'll look at this next sprint and see what needs to be done, then we can schedule the fix

Comment by Masami [ 15/Jun/23 ]

Hi Owen Stephens, Kyushu University is saying this is not fixed in Orchid. Can this ticket be re-opened?

Comment by Futoshi Tanuma [ 15/Jun/23 ]

As Masami-san wrote, Kyushu University is thinking this is not yet fixed.
Adding 2 screen shot images.
1. linked title.

2. linked to title and package.

Could you please look into this and reopen this issue?

Comment by Owen Stephens [ 16/Jun/23 ]

Hi Masami and Futoshi Tanuma

I've taken a look and I can see that the issue we identified and fixed is definitely fixed on our Orchid test installation https://bugfest-orchid.int.aws.folio.org/. So whatever is causing the problem now is different to the bug we already fixed. There are two questions I have:

1. Can you confirm the version of mod-agreements installed to make sure there are no differences between our test environment and what you are running? You can see this in Folio Settings -> Software versions and then find 'mod-agreements' in the list
2. Is there any information available on how Publication Finder does the lookup to display the data - I wonder if the issue is that it is only making a request for the package ID not the journal ID?

Comment by Masami [ 21/Jun/23 ]

Hi Owen Stephens, I checked the tenant today. The version of mod-agreements was

  • mod-agreements (mod-agreements-5.5.2)

 FOLIO version is Orchid-SP-1.

Futoshi Tanuma - Would you be able to answer question 2.? Thank you.

Comment by Futoshi Tanuma [ 21/Jun/23 ]

Sorry Masami san and Owen Stephens san

Unfortunately I don't have answer to Q 2.

Comment by Owen Stephens [ 21/Jun/23 ]

Thanks Masami Futoshi Tanuma 

From everything I can see the Agreements application works as expected and you are running the appropriate version. To do any further analysis we will need information on what request is being made to the Agreements application from publication finder. If this is being done in the browser it's possible it could be observed in the Developer tools in a browser like Chrome. But it would probably be best to get someone from the Publication Finder side involved. I don't have any contacts though - Masami is this something you can arrange?

Comment by Masami [ 22/Jun/23 ]

Khalilah Gambrell - Is there a way to get someone from the Publication Finder side involved as Owen Stephens suggests? Thank you.

Comment by Khalilah Gambrell [ 22/Jun/23 ]

Hey Masami  - I recommend creating an EBSCO Connect ticket. It is possible that the person who implemented this link on the Publication detail record might need to modify but I am unsure. 

Comment by Masami [ 23/Jun/23 ]

Thanks Khalilah Gambrell!

Futoshi Tanuma - Will you please create an EBSCO Connect ticket for the issue? Thank you! 

 

Comment by Futoshi Tanuma [ 27/Jun/23 ]

Thanks Masami san, Khalilah Gambrell san, Owen Stephens san
I believe the license term showing in Publication Finder is done by server side, not browser side, so developer's tool won't be anything we can know something.
I have initiated EBSCO Service Issue for Publication Finder.
SI 2803221
FOLIO ERM's License terms are not displayed in Publication Finder when a journal title is directly linked to an agreement

Generated at Thu Feb 08 22:22:50 UTC 2024 using Jira 1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d.