Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Laser/ERM integration is a collection of features aimed at allowing a LASER site to synchronize their subscriptions (Content Lists) and licenses with the FOLIO ERM Agreements and Licenses apps. The integration works via a new backed module : mod-remote-sync (https://github.com/folio-org/mod-remote-sync) and related UI: ui-remote-sync (https://github.com/folio-org/ui-remote-sync). Taken together, remote-sync is general purpose scriptable ETL tool for FOLIO into which arbitrary configurations can be loaded and used to keep FOLIO in sync with a remote data source. Whilst remote-sync itself is intended to be general and reusable, the configuration for LASER is solution specific and can be found here (https://raw.githubusercontent.com/k-int/folio-sync-tools/main/laser/laser_registry.json).

...

On the left side, the record source is listed. Boxes in this column represent the actual raw records which will be / have been collected from a remote source. Remote sync runs on a cron schedule which is invoked every 60 minutes. If a previous extract job has not yet completed, the task is skipped. This means remote-sync will try to synchronize with a remote source once per hour. Because some sources (LASER) do not provide a good cursor mechanism the only way to tell if a record has changed is to download the content and compare the current version with the previous one. That is exactly the process which takes place in this box for LASER. The main aim of the first column is to take a datasource with heterogeneous cursor semantics and turn it into a record stream which can be enumerated. The boxes on the left hand side correspond to the "source" record types in the registry. 

...

agreementUpdate procedure

  1. lookUp any existing controlling license
  2. If the existing (FOLIO) license data is different to the new (LASER) license data unlink the existing controlling license and link the new controlling license
  3. update periods
    1. for each period in the FOLIO agreement. If the FOLIO period DOES NOT overlap with the period from the LASER agreement
      1. Add the agreement period as a new period to the FOLIO agreement
    2. if it DOES overlap
      1. We cannot continue, ask the user to rectify the dates
  4. Check that there is an AL for the package attached to this sub - if not - add a new AL for the package (Title list changed at laser effectively)
  5. post updated subscription information

buildPeriods procedure

  1. clear any existing periods from the FOLIO record
  2. replace that period with a new period as per
  3.     Map newPeriod = [

          startDate: subscription.startDate,

          endDate: subscription.endDate

        ]








we should set up a (semi-technical) documentation document in google, where you can explain the different workflows in that data is processed in the app. Things like the queue (that I learned about only today Image Modified ), things like "when does something  fail", things like "when do we need to retrigger after a change to a mapping" and so on. You will have it somewhere, surely.
And then, I think, we should get to the point to say that "this is it", every other expected behaviuor will be future features for a future development phase. And only real bugs, where the app doesn't behave as the document describes, will be things to work on in this project.