How are we using Library Open Workflows?
Answer
The Los Rios Libraries adopted Library Open Workflows (LibOW) in August 2025. We are using it to automate tasks in a variety of areas. The list below is intended to help people at Los Rios understand what the tool is capable of; if you have ideas about other tasks we currently do, or should do, that might be aided by the tool, please contact your college's systems librarian.
All but a few of these workflows take action on behalf of each library.
Some links have been added to the end of this page to resources that will help illuminate how the tool works. There are also some links to lists of workflows from other institutions.
The categories below are of course very loose and often a workflow touches multiple functional areas.
About triggers
Triggers are how workflows are initiated.
- Alma
- This means the workflow is triggered by an Alma webhook. Webhooks take place automatically when certain things happen; for instance, when a loan transaction takes place, Alma can send out a data packet related to the transaction.
- Workflow
- This means that the workflow is triggered by a different workflow, i.e. it is a sub-workflow. We are currently establishing workflows specifically for Alma triggers and routing these workflows to sub-workflows. The rationale for doing this is that if you want to view execution history, it is very difficult to do so if the workflow contains an Alma trigger, since the workflow will be executed very frequently.
- Form
- Forms are accessed via the LibOW cloud app. In the Form Trigger node, authentication is set to Alma.
- Schedule
- This means the Schedule node in LibOW, which can be set very flexibly.
- Webhook
- This does not mean Alma webhook, rather it means that a script somewhere else calls LibOW to execute a workflow. This typically means we have some JavaScript or PHP on a web page that makes an HTTP request to LibOW.
Some workflows include more than one trigger; for instance, some have a schedule trigger to refresh data and a webhook trigger to serve data.
Workflows
| Category | Name | Trigger | Description |
|---|---|---|---|
| Alma triggers | Loan trigger | Alma | Receives loan webhooks to distribute to various sub-workflows if certain conditions are met. Doing it this way because otherwise browsing execution history is very difficult. |
| Alma triggers | Request trigger | Alma | Receives request webhooks to distribute to various sub-workflows if certain conditions are met. |
| Users, fines, blocks | Waive fees on item return | Workflow | Receives Loan trigger if it is a return with FOUND_ITEM; queries Alma Analytics to connect loan ID to fine/fee ID; waives associated fee with Waive reason Lost Item Was Found. Our bursar integration required us to stop using the "refund on return of lost item" functionality; instead fees must be waived so that they match the fee at the bursar. |
| Users, fines, blocks | Waive fees based on Analytics report | Schedule | To address scenarios where the real-time approach fails. Retrieves an Analytics report showing replacement fees connected to not-lost barcodes; queries Alma APIs to verify the current situation; waives fees with waive reason Lost item was found. |
| Users, fines, blocks | Add user block on lost loan | Workflow + schedule | When an item goes to lost, Alma (puzzlingly) removes any circulation block it had previously added. This workflow adds users to a local data table when an item turns to lost as part of the overdue and lost loan profiles. Then on a schedule it reads the table, checks the users' accounts via API and adds a block if needed (i.e. they have overdues and do not already have a block). |
| Users, fines, blocks | Clear blocks after item return | Schedule | Checks a local data table updated by the Waive fees on item return workflow and, if the user has no outstanding overdues/fees, clears their circulation block. |
| Users, fines, blocks | Correct user blocks based on Analytics reports | Schedule | For cases where real-time processes fail, checks two Analytics reports designed to detect cases where a block has not properly been applied or removed, checks the situation in real time, adds or removes blocks as appropriate, and emails a report. |
| Users, fines, blocks | Reconcile transferred Alma fees with PeopleSoft | Schedule | 2x/week, ingests an Excel-formatted report sent from the bursar and then uses an Analytics report combined with API queries to find discrepancies between fees currently residing at the bursar and fees Alma thinks are currently at the bursar (in transferred status). Emails a report showing fees that only exist in Alma, or only at the bursar, or that have different balances in the two systems. |
| Users, fines, blocks | Send notification to users who paid fees in previous week | Schedule | Retrieves Analytics report showing fees paid in previous week and sends an email to each user showing details of items that were paid, also encouraging them to return the items for a refund. Also attaches copy of the notification to user record. |
| Users, fines, blocks | Import payments and export waivers | Schedule | The bursar export/import integration profile jobs can only be scheduled to run once per day. This workflow runs them once per hour during our open hours, so that for instance when we waive a fee, the bursar reflects the credit promptly. |
| Users, fines, blocks | Remove unneeded user notes | Schedule | Once/week, retrieves Analytics report showing users without current loans/fees and notes not matching particular patterns. Removes the notes once/week. |
| Users, fines, blocks | Delete "profile name" notes | Schedule | Once/week, queries Analytics report filtered to current users and removes notes of type "Profile name: Patron, Profile ID: 13110570000231" |
| Users, fines, blocks | Set expiration date for non-current employees | Form | Receive form upload derived from SIS sync file, which provides all current employees; query Analytics report filtered to employees with no expiration date and very old status date; compare to find user IDs not present in uploaded file; set expiration date for those users via Alma API. |
| Electronic resources | Process EBSCO DDA dropped titles | Form | Copy-paste EBSCO accession IDs from dropped-title email into form in LibOW cloud app. Workflow locates matching portfolio via Analytics report, deactivates and adds "dropped title" to portfolio internal description, deletes portfolio. More info |
| Electronic resources | Set coverage of Overdrive Magazines portfolios | Schedule | On daily basis, checks set containing recently created Overdrive Magazine portfolios with periodical resource type; adds local coverage going back 38 months. On monthly basis, does this for entire collection based on Analytics report. |
| Electronic resources | Log needhost errors to Alma | Webhook | Receive webhook from EZproxy needhost.htm file; save certain data to Alma parameters. |
| Electronic resources | Send needhost errors to LibAnswers queue | Schedule | Once/week, retrieve data from Alma parameters, format HTML table, and create LibAnswers ticket. Clear Alma parameters. |
| Electronic resources | Set portfolio Activation Date based on Available From Date | Schedule | 2x/week, retrieve Analytics report showing active portfolios with null activation dates in particular e-collections. This happens when a portfolio is scheduled to become active at a later date—Alma does not update the activation date. The workflow checks the Available From date, updates the activation date, and sends an email report. |
| Fulfillment | Update stuck-in-transit spreadsheet | Schedule | Once a day in the morning, retrieves an Analytics report showing items that have been in transit beyond a certain threshold and updates a spreadsheet with the current report data while preserving columns meant for staff to leave notes. Hourly throughout the workday, queries Alma to get current status and updates a cell if the item is no longer in transit. More info |
| Fulfillment | SCC morning overdues report | Schedule | Checks a logical set of overdue items in particular short-term-reserve locations. Generates an email to designated staff showing item information and due dates so they can check shelves. |
| Fulfillment | Report transit from SCC to SCC Lockers | Schedule | Checks Analytics report and sends email to designated if any items are in transit from SCC Circ Desk to SCC Lockers library (this only happens as a result of error). |
| Fulfillment | Change loan due dates based on Excel file or user ID | Form | Changes a set of due dates based on user ID + loan ID (file) or user IDs (text input). If only user ID is provided, all the user's loans will be changed. Unlike UI, can due date may be later than user expiration date. |
| Fulfillment | Add users to Luxer One locker database | Workflow, form | Sub-workflow: in cases where request is made designating locker pickup, add user to Luxer One database for relevant "building" (if user already exists, update). Form: enter a user ID to add / update the user in Luxer. |
| Fulfillment | Retrieve Luxer token | Workflow | Luxer credential type is not supported by n8n (it's similar to OAuth but not quite that), so Alma parameters are used to store/retrieve the token for Luxer's API |
| Fulfillment | Email and attach laptop agreement to borrower (SCC-only) | Workflow, schedule | Workflow: receives Alma data from loan workflow if it matches particular MMS IDs and adds user ID to local data table. Schedule: once per day, retrieves user IDs from table, retrieves PDF file from Google Drive, emails users with PDF attachment, attaches file to their user account in Alma, clears table. |
| Fulfillment | Process ILL submissions | Webhook | Receives webhook from our custom ILL form, creates HTML table. Depending on college, sends email to designated recipients or creates a ticket in LibAnswers. |
| Fulfillment | Export current SCC hotspot availability | Schedule, workflow | Once/day Mon-Fri, queries Alma and exports current number of SCC hotspots (which are suppressed from discovery) to Google Sheet. Workflow receives Alma trigger data if MMS ID matches hotspot bib and updates the Google Sheet. |
| Fulfillment | Send notice to users with ASHE/RAZA lost loans | Schedule | Once/month, query an Analytics report showing lost items from certain locations that do not generate lost-item replacement fees and send a custom notice to users asking them to return items. Since we do not send out regular activity reports and these lost loans did not generate fees, without this workflow the users would not receive any further notifications from us. |
| Fulfillment | Correct item policies | Schedule | Once/day, query a series of Analytics reports that identify mismatches in our item policy / physical location mapping. Use Alma APIs to adjust the item policy and send an email report of items edited. |
| Fulfillment | Items currently at IT | Schedule | Once/day, retrieve Analytics report showing SCC items currently in IT Maintenance work order and update spreadsheet. Later in day, check status of each item in Alma and update again. Preserve columns where Library and IT staff enter notes. |
| Reserves | Create empty reading lists for courses without one | Schedule | Checks set showing active courses without a reading list and creates one, so that if citations need to be added, there's one less step (also used manually for bulk creation of reading lists after rollover for coming term) |
| Discovery | Send problem report to LibAnswers | Webhook | Receives submissions from our custom Primo problem reporter and sends them to a designated queue using the LibAnswers API. More info |
| Discovery | Fix sticky reserve records | Schedule | During intersession periods where no courses are active, searches Primo "textbook" profiles to find titles still showing as reserves, adds them to an itemized set, and runs the Recalculate Local Resource Types job |
| Discovery | Run recalculate job on all citations | Schedule | Early in term, retrieve Analytics reports of all titles attached to reading lists, add them to a set, and run the Recalculate Local Resource Types job |
| Discovery | Send professor names to web server | Schedule | For the autocomplete in the instructor field of the textbook search form, retrieve an Analytics report of all instructor last names on reading lists that have citations, generate files with JSON array, and send to our web server. These are done for each college and college / department. |
| Discovery | LibAnswers FAQ items for NDE | Webhook | Respond to GET call in NDE custom component that shows selection of college-level FAQs with short list of FAQ data cached to a local data table. Periodically refresh cache by retrieving current API response when cache is old, condensing it, and updating the data table. |
| Discovery | Refresh and serve collections data for NDE widgets | Schedule, webhook | Scheduled: update cache containing information about various Alma collections (collection discovery) for each college. Webhook: serve JSON file of information about various collections for use in NDE custom component that displays a random selection of 4 collections on the home page |
| Discovery | Send new titles lists to Alma Collections | Schedule | Check Google Sheet containing parameters for a number (50+) of Alma collection focusing on new acquisitions. Workflow retrieves parameters from sheet, queries Analytics reports, processes results, and sends to Process collections from Analytics data sub-workflow. More info |
| Discovery | Process collections from Analytics data (sub-workflow) | Workflow | Receives collection ID and array of MMS IDs and maintains given collection by removing titles no longer needed and adding new ones. |
| Discovery | Populate Alma collection with most-used journals | Schedule | Once/month, retrieve Analytics report showing most-used journals (TR, unique item requests, title has ISSN); query Primo Search API, journal search scope, to retrieve MMS IDs; dedup; send to Process collections from Analytics data sub-workflow. Output (SCC) |
| Discovery | Find new titles collections with less than 10 members | Schedule | Once/week, check itemized set and query Alma collections managed by Send new title lists to Alma collections workflow; if any have fewer than 10 titles, notify librarian in charge of that college's collections. |
| Discovery | Send Vea data to Google Sheet | Schedule, webhook | Query our people-counter vendor's API to retrieve various stats and update a Google Sheet, which then supplies graphs called into a web page at LibAnswers. Also store the data output in the workflow to supply Excel files on request for accessibility. Output |
| Discovery | Refresh and serve new titles lists for Primo VE display | Schedule, webhook | Schedule: once/day, query Analytics union report of newly added physical and electronic titles; update local data table. Webhook: serve JSON file to AngularJS component used in ARC and SCC's Primo VE (not NDE), resulting in widget on home page. |
| Discovery | Provide SCC "on order" via LibGuides | Schedule, webhook | Schedule: once/day, query Analytics report showing SCC active monograph orders and save to local data table. Webhook: serve JSON to web page. Result |
| Discovery | Refresh and serve vendor privacy / accessibility data | Webhook | Listen for webhook coming from web page (in Libguides) and serve JSON from local data table. If contents are stale, query Alma vendor records to refresh data. More info |
| Discovery | Retrieve, cache, and serve LRSA faq items for web display | Schedule, webhook | Schedule: query LibAnswers API to get any entries in our Los Rios Libraries System Alerts faq group and update local data table. Webhook: serve this as JSON to scripts in NDE header and LibGuides A-to-Z page. |
| System administration | Add AI-generated quote to Analytics letter | Schedule | Once/day, query an LLM using free tier from CloudFlare or GitHub to produce an obviously anachronistic quote from a historical figure that mentions data, analytics, reporting, etc. Replace a label in the Analytics letter with this quote so that it is included in the next morning's Analytics letters. |
| System administration | Set new end-of-term event | Schedule | Here we need to update the desired end-of-term date and the date the workflow is to run once per term. After end-of-business on last day of term, update the end-of-term event in our institution-level Opening Hours table and send an email to systems librarians indicating that this was done. |
| Metadata | Delete bibs without inventory | Schedule | Once/month, retrieve a set of All Titles - Has Inventory: No; Has Orders: No. Retrieve bibs from Alma and parse the Availability area of the bib record to confirm that there are indeed no holdings/portfolios/representations, since the set often contains titles with inventory. Delete bibs confirmed not to have inventory. Email a report showing which MMS IDs were deleted. |
| Metadata | Unset WorldCat holdings - withdrawn titles | Schedule | This is done because Alma's standard OCLC publishing does not handle removing holdings well when there are multiple OCLC symbols in an institution. Once/month, retrieve a date timestamp saved in an Alma parameter, and retrieve an Analytics report, filtering with that date timestamp. The report shows deleted holdings, filtered to exclude bibs with other active holdings. Use OCLC API to remove holdings from WorldCat. Email a report to systems librarians. The workflow does this for each college/OCLC symbol. |
| Acquisitions | Create COUNTER-type reports from Overdrive "insights" file | Form | Receives a file upload of an Overdrive Insights report and produces a JSON file imitating a TR or TR_B1 report for any of the four colleges. More info |
| Acquisitions | Create IR_M1 from Swank csv file | Form | Receives a file upload of a Swank video Monthly Usage Date Report (1 or more months) and produces a JSON file imitating an IR_M1 report. |
| Acquisitions | Create IR_M1 from Kanopy spreadsheet | Form | Receives a file upload of a Kanopy Analytics - Video report for 1 month and produces a JSON file imitating an IR_M1 report. |