[Spike] Investigate options for cross tenant harvesting

MODOAIPMH-478 - Getting issue details... STATUS - [SPIKE]: SPIKE- investigate options for cross tenant harvesting

RolePersonComments
Solution Architect
Java Lead
UI Lead
Product Owner

Harvesting across tenants

This activity diagram represents the high-level overview of Orchestrator logic for harvesting.


Expected components:

Orchestrator - sequential harvesting across tenants from Consortia. This should be component of edge-oai-pmh - without changing existing API. Orchestrator should automatically determine if tenant is consortial or no and execute corresponding logic.

Orchestrator should control the following steps:

1) Extract tenantId from apiKey.

2) Make call to the ConsortiaTenant API (expected) to determine if tenant is consortial or no - this call should be cached to not save data in edge module and have possibility to not make a call each time when tenant info is needed.

3) If tenant is Consortial Tenant (not Central Tenant) - orchestrator should proxy request to mod-oai-pmh and return response with resumptionToken. This case harvesting should work as usually not taking into account that it is a sub-tenant of Central Tenant

4) If tenant is Central Tenant - orchestrator should start full harvesting for first tenant.

5) Orchestrator should verify tenants list at the end of first harvesting (resumptionToken is empty) and, if list still contains non-processed Consortial Tenant and last resumptionToken="", then it should start harvesting for new Consortial Tenant and return first response from second harvesting with non-empty resumptionToken of the first request of second harvesting.

6) In case tenant is Consortial Tenant (not Central Tenant) and resumptionToken is presented - orchestrator should prepare and make request for corresponding tenant. This case harvesting should work as usually not taking into account that it is a sub-tenant of Central Tenant.

7) Process termination criterion - all the Consortial Tenants from list are processed and resumptionToken of last harvesting is empty.

Resumption token mechanism - including information of tenant in the resumption token.

Terminology

NameExplanation
Central TenantConsortia main Tenant that include Consortial Tenants 
Consortial TenantMember of Consortia, i.e Sub-Tenant of Central Tenant