Spike: MODKBEKBJ-331 - How to store multiple HoldingsIQ/RM API credentials in mod-configuration

IN REVIEW

MODKBEKBJ-331 - Getting issue details... STATUS

Goal: provide a possible solution to have the ability to store multiple RM API credentials

Initial info: 

  • Solution should support following use cases (based on this document):

  • Consortium/Multiple universities sharing same tenant 

  • A university with multiple libraries managed separately AND in same tenant  

University

KB CREDENTIALS (api key)

University of Massachusetts - Amherst  (UMASS)



https://test.url.io

Smith College (SM)

Hampshire College (HC)

Mt. Holyoke (MH)

Amherst College (AC)

University

KB CREDENTIALS (api key)

Duke University(DU)

https://test.url.io1

TAMU(TAMU)

https://test.url.io2

Proposed solution:

 To bind RM API credentials to an institution we need to define some parameter, which uniquely describes particular institution. From existing configuration we have following options:

  • UUID - unique

  • institution code - not unique, may have duplicates.

  • with institution UUID 
{
    "id": "22222222-2222-2222-2222-222222222222",
    "code": "kb.ebsco.url.33333333-3333-3333-3333-333333333333",
    "value": "https://test.url.io",
    "module": "EKB",
    "enabled": true,
    "metadata": {
        "createdDate": "2019-12-20T13:27:31.139",
        "updatedDate": "2019-12-20T13:27:34.647+00",
        "createdByUserId": "11111111-1111-1111-1111-111111111111",
        "updatedByUserId": "11111111-1111-1111-1111-111111111111"
    },
    "configName": "api_access",
    "description": "EBSCO RM-API URL"
}
  • with institution code (if made it unique) 
{
    "id": "22222222-2222-2222-2222-222222222222",
    "code": "kb.ebsco.url.umass",
    "value": "https://test.url.io",
    "module": "EKB",
    "enabled": true,
    "metadata": {
        "createdDate": "2019-12-20T13:27:31.139",
        "updatedDate": "2019-12-20T13:27:34.647+00",
        "createdByUserId": "11111111-1111-1111-1111-111111111111",
        "updatedByUserId": "11111111-1111-1111-1111-111111111111"
    },
    "configName": "api_access",
    "description": "EBSCO RM-API URL"
}

To conform existing requirements, usage of institution seems not enough, in case of multiple libraries managed separately, we can not manage RM API Credentials for them with this approach.  

Instead of it we can use a combination of   

university.campus.library

to uniquely identify credentials for both cases.

Use cases:

Consortium/Multiple universities sharing same tenant 

University (code)

Campus (code)

Library (code)

KB CREDENTIALS (api key)

Config Name(mod-configuration)

University of Massachusetts - Amherst  (UMASS)

City Campus (CC)

Library 1




https://test.url.io

kb.ebsco.url.umass.cc.l1

Smith College (SM)

Online (O)

Library 2

kb.ebsco.url.umass.o.l2

Hampshire College (HC)

Lancaster Campus (LC)

Library 3

kb.ebsco.url.umass.lc.l3

Library 4kb.ebsco.url.umass.lc.l4

Mt. Holyoke (MH)

Canterbury Campus (CaC)

Library 5

kb.ebsco.url.umass.cac.l5

Amherst College (AC)

York Campus (YC)

Library 6

kb.ebsco.url.umass.yc.l6

A university with multiple libraries managed separately AND in same tenant

University (code)

Campus (code)

Library (code)

KB CREDENTIALS (api key)

Config Name(mod-configuration)

Duke University(DU)

Nottingham Campus(NC)

Library 6

https://test.url.io1

kb.ebsco.url.du.nc.l6

Library 7https://test.url.io2kb.ebsco.url.du.nc.l7

TAMU(TAMU)

Brighton Campus (BC)

Library 8

https://test.url.io3

kb.ebsco.url.tamu.bc.l8

Updates to existing functionality: 

  • Made university/campus/library codes unique and have a restriction to code length(right now it is possible to create a code with 500 characters length) 
  • Made location code as a combination of university.campus.library + unique location code instead of manual input.

Advantages:

  • Covers both initial use cases
  • Covers situation with mixed use cases(if it is  an option in future)

Disadvantages:

  • Configuration duplicates in case of consortia

#QuestionAnswer
1How user can change his/her Service point?
2Is it possible to have consortia and separate universities at the same time? This means in the scope of storing RM API credentials.