Library Data Platform

In order for LDP software to connect to FOLIO, it needs read-only access to Okapi and the FOLIO database. The LDP can be hosted and administered locally by an institution’s own staff or by contracting hosting services out to a third party. You can find specific system requirements in the LDP documentation.

Installing and configuring the LDP

For detailed information about how to set up and configure the LDP, please review any of the guides linked below that are available in the LDP repository. There you also will find the latest versions and fixes of the LDP.

Administration Guide

Configuration Guide

  • Foreign keys: enabling capability to infer foreign keys
  • Reference: reference for the configuration file: dbconfig.general

Setting up derived tables

To let report users take full advantage of the community-developed report queries as well as having a good starting point for ad hoc querying, it is strongly recommended to set up a nightly update on derived tables. Note that the use of views and materialized views is not supported in LDP databases and may cause the LDP software to be unable to perform data updates.

You can find instructions in Github on how to set up FOLIO Reporting Derived Tables.

Data privacy

The LDP is designed to support GDPR and other data privacy requirements. Administrators can exclude a predefined set of tables.

See the Anonymization Guide for information on how to activate and configure these features.

The pages linked below list attributes that contain potential personal data:

Adding local data

As documented in the user guide, it is also possible to load and create local data into your LDP. Besides using the local schema, you might consider setting up separate schemas for different user groups or purposes.

Using schemas

The concept of schemas allows you to organize tables and permissions within one database. In LDP we have initially four relevant schemas:

  • public: contains all extracted tables and its current data from the bound FOLIO tenant
  • history: stores data that have been updated in the past or may no longer exist
  • folio_reporting: contains all derived tables created and supported by the community
  • local: common area for report users to create or import own data

Beside existing schemas, you are free to create more schemas for your local needs (e.g., to provide data for different departments, to separate and protect sensitive data).

Learn more about the schema concept and how to configure schemas using Postgres’s Schema Documentation.

For a granular set up of permissions see also the built-in Roles and Privileges concepts of Postgres.

Moving and loading data

Loading and moving data into LDP is as simple as it is for databases in general.

For Postgres there are two common approaches:

  • COPY: SQL command for moving table data via csv files
  • pg_dump / pg_restore: Postgres command line tools for importing and exporting data

FOLIO Data Coverage in the LDP

The LDP utilizes the FOLIO APIs to get most of its content. To see more details about the APIs can be found at FOLIO Developers API documentation.

As of version 1.3.0, the LDP pulls data from the following FOLIO modules:

  • mod-audit
    • /audit-data/circulation/logs
  • mod-circulation-storage
    • /cancellation-reason-storage/cancellation-reasons
    • /check-in-storage/check-ins
    • /fixed-due-date-schedule-storage/fixed-due-date-schedules
    • /loan-policy-storage/loan-policies
    • /loan-storage/loans
    • /loan-storage/loan-history
    • /patron-action-session-storage/patron-action-sessions
    • /patron-notice-policy-storage/patron-notice-policies
    • /request-policy-storage/request-policies
    • /request-preference-storage/request-preference
    • /request-storage/requests
    • /scheduled-notice-storage/scheduled-notices
    • /staff-slips-storage/staff-slips
  • mod-configuration
    • /configurations/entries
  • mod-courses
    • /coursereserves/copyrightstatuses
    • /coursereserves/courselistings
    • /coursereserves/courses
    • /coursereserves/coursetypes
    • /coursereserves/departments
    • /coursereserves/processingstatuses
    • /coursereserves/reserves
    • /coursereserves/roles
    • /coursereserves/terms
  • mod-email
    • /email
  • mod-feesfines
    • /accounts
    • /comments
    • /feefines
    • /feefineactions
    • /lost-item-fees-policies
    • /manualblocks
    • /overdue-fines-policies
    • /owners
    • /payments
    • /refunds
    • /transfer-criterias
    • /transfers
    • /waives
  • mod-finance-storage
    • /finance-storage/budgets
    • /finance-storage/expense-classes
    • /finance-storage/fiscal-years
    • /finance-storage/fund-types
    • /finance-storage/funds
    • /finance-storage/group-fund-fiscal-years
    • /finance-storage/groups
    • /finance-storage/ledgers
    • /finance-storage/transactions
  • mod-inventory-storage
    • /alternative-title-types
    • /call-number-types
    • /classification-types
    • /contributor-name-types
    • /contributor-types
    • /electronic-access-relationships
    • /holdings-note-types
    • /holdings-storage/holdings*
    • /holdings-types
    • /identifier-types
    • /ill-policies
    • /instance-formats
    • /instance-note-types
    • /instance-relationship-types
    • /instance-statuses
    • /instance-storage/instance-relationships
    • /instance-storage/instances*
    • /instance-types
    • /item-damaged-statuses
    • /item-note-types
    • /item-storage/items*
    • /location-units/campuses
    • /location-units/institutions
    • /location-units/libraries
    • /loan-types
    • /locations
    • /material-types
    • /modes-of-issuance
    • /nature-of-content-terms
    • /service-points
    • /service-points-users
    • /statistical-code-types
    • /statistical-codes
  • mod-invoice-storage
    • /invoice-storage/invoice-lines
    • /invoice-storage/invoices
    • /voucher-storage/voucher-lines
    • /voucher-storage/vouchers
  • mod-notes
    • /notes
  • mod-orders-storage
    • /acquisitions-units-storage/memberships
    • /acquisitions-units-storage/units
    • /orders-storage/alerts
    • /orders-storage/order-invoice-relns
    • /orders-storage/order-templates
    • /orders-storage/pieces
    • /orders-storage/po-lines
    • /orders-storage/purchase-orders
    • /orders-storage/receiving-history
    • /orders-storage/reporting-codes
  • mod-organizations-storage
    • /organizations-storage/addresses
    • /organizations-storage/categories
    • /organizations-storage/contacts
    • /organizations-storage/emails
    • /organizations-storage/interfaces
    • /organizations-storage/organizations
    • /organizations-storage/phone-numbers
    • /organizations-storage/urls
  • mod-source-record-storage
    • srs::marc_records_lb*
    • srs::records_lb*
  • mod-users
    • /addresstypes
    • /departments
    • /groups
    • /proxiesfor
    • /users

* - The LDP supports direct extraction for these tables, rather than using the module APIs.

Last modified October 18, 2022