⚡ Workflows, UX iteration 3, English

Please note: This video presents our optimal vision for this feature in FOLIO; What you see in this prototype is what we are working towards in the long run, and might not all be present in the first, developed version. Please help us improve it — share your questions, constructive feedback and ideas in the comments below.


:warning: Note, this is not a call for technical assesment — right now, the focus is figuring out what would be the optimal way to build a Workflows app, UX wise. Technical assesment comes, but it comes later :slight_smile: !

Hi all,

UX questions to consider — feel free to comment on discuss with your ideas, advice, questions

  1. How granular should steps be?
  2. How meaningful is it to have logic related steps like if/else and loop?
  3. Which triggers would be meaningful for your work as an individual and for your particular group at your institution?
  4. Which steps would be meaningful for your work as an individual and for your particular group at your institution?
  5. How meaningful is the ability to add scripts you write yourself or get written by e.g. a more technical colleague?
  6. How meaningful is the ability to publish workflows for others to download?
  7. How meaningful is the ability to publish scripts you write for others to download?
  8. What’s missing from this prototype?
  9. What works well in this prototype?

In theory I feel all the features I present are meaningful, but in practice I don’t know — that’s what these questions above are meant to clarify :slight_smile:

EDIT, August 21, 2017:
• Name examples of workflows that could be done with this concept in a good way?
• Name examples of functions you would prefer were not tweakable in a concept like Workflows?

I think it would be useful to allow a trigger to be associated with several operators not just me or everyone. An example is a group working on a special project to change a set of bibliographic records. Just those records would be exported to a report when a field is changed.


I’m thinking about the workflows and have some thoughts: there are workflows that happen in the system, and where it really feels like this app will help the flow and automate the process when possible. Then there are workflows that happen outside of the system and maybe are more like checklists of tasks that need to done. E.g., I bought a new e-resource and as part of the set-up, I need to update the config file for EZProxy (maybe someday we’ll have this better integrated with FOLIO, but I don’t see it happening for a little while) and I need to send out some sort of publicity announcement. The “I” could be me or some member of a team. I’m not sure how these tasks fit in, under Create Task? I am liking the idea, but it still feels a bit abstract.

Can triggers also be a workflow step? E.g., a record field is change (item status to “lost”) and then a recall on item is cancelled, since it’s not available.


  1. How meaningful is it to have logic related steps like if/else and loop?

I like these, and could see the workflow app then also being used for batch updating of records. Like, maybe I need to change the vendor on a bunch of POs, could I feed in the list of POs and loop through them and update the fields? Or maybe I want to do a search for POs from a certain vendor, and update to a new vendor only those that are already open. I think the If/else would help here. (The example I think of is if a library switches subscription agents). Or maybe the loop could be used for the batch update of bib records. I’m not sure how bib records will be accessible to the workflow app, but it seems like there should be a connection.


  1. How meaningful is the ability to add scripts you write yourself or get written by e.g. a more technical colleague?

I suspect there a lot of libraries where people would like to be liberated from the systems department and be able to create the workflows directly. That said, I think there is probably a point where the workflow engine should focus on simplifying the most common basic steps and apps, and then leaving scripting for more complicated options. If the complicated options are common, then having an easier way besides scripting would be nice.


  1. How meaningful is the ability to publish workflows for others to download?
  2. How meaningful is the ability to publish scripts you write for others to download?

I can see a lot of value in sharing, but some things are going to be institution-specific. For example, if you made a group to be assigned tasks that doesn’t really exist in another library, then that workflow is going to fail. If workflows are shared, some things will break or need to customized to fit the new institution’s particular environment. Steps that don’t transfer to the new institution need to be identified so that the accepting institution can alter them and make sure they work. I see a lot of value in sharing scripts, especially if someone has more scripting experience compared to someone else, this will be an easy way to share that knowledge. It’s sort of like me Googling on Excel and Visual Basic, since I don’t really know VB well myself, but I am able to adapt code to accomplish things that I couldn’t program from scratch.


Thanks for sharing this Filip. I really like the overall concept. Here are some responses to your questions:

How granular should steps be?

I think the steps should be pretty granular. I could see wanting to be able to do things like create a record, add values to fields on a record, activate content in a knowledge base, etc. Another example of a step I could see would be someone (a selector or patron) filling out a form and having the values from the form populate a record.

I also agree with comments from others that it would be helpful to be able to string together granular steps into a block that could then be reused in various workflows. These steps should be able to span multiple workflows. For example, if a license status is changed to “approved,” then trigger a step for someone to pay for a purchase order.

Some notes on non-linear and variant workflows:

  • Here’s an example from our current CORAL implementation. Because CORAL really only does routing of high-level tasks, none of this process is automated or particularly granular. But I think it’s a good example of the type of workflow we commonly use.

  • After order records are created, the workflow breaks into two threads: ordering/access and licensing. These are often done truly concurrently – as in it doesn’t matter which one gets done first. But sometimes, we can’t actually place the order until the license is signed. We might know this ahead of time based on the vendor. But we might not find it out until we start the license process. Other times, we actually have to place the order first, because we’re facing spending deadlines. It can go either way (or no way). So we’ve set up the workflow not to illustrate a dependency. Basically the people performing these tasks have to coordinate with each other and make decisions accordingly. I’m really not sure how to solve this problem.

  • Another area of variance is whether a license is needed or not. Sometimes we know it’s not needed, so we start the workflow then delete this step immediately. Sometimes we think a license is needed, but later we find out it’s not. Then we delete the step later. We we think a license isn’t needed and we find out it is. So we might add it back in. CORAL allows us to modify the “workflow instance” after it’s been create/workflow started. We find this very helpful.

Tasks are very important b/c many workflow steps are manual. I’m OK with the idea that each step in a workflow is actually a to-do – either to be done by a person or the system. We still need stand alone to-dos.

Other thoughts:

  • A management view of tasks is also important.

  • There’s a danger in becoming too granular. The more granular you get, the less chance there is that your workflow will match any iteration of a process exactly. It also makes the workflows confusing to create and maintain.

  • Workflow steps and tasks should have a due date concept. However, the main purpose is to check in and make sure the step is not just languishing. There are often legitimate reasons that things don’t get done on time, so we’d need to be able to review and extend due dates.

How meaningful is it to have logic related steps like if/else and loop?

I really like these. I think they give non-programmers a chance to use some programmatic concepts in an easy way. I see the if/else being the most useful, since we have lots of exceptions and variations in our work.

Which triggers would be meaningful for your work as an individual and for your particular group at your institution?

From an acquisitions perspective, a few meaningful triggers would be:

  • A selector submits a request for a purchase or trial

  • An order gets paid

  • A license becomes active

  • A change occurs to one of our resources – e.g., a title is moving from Elsevier to Wiley – this might be info that could be pulled from a knowledge base

  • A resource subscription will expire in X days

  • Another user completes a task

  • An email is received

Which steps would be meaningful for your work as an individual and for your particular group at your institution?

Especially at first, we may have workflows that are predominately made up of assigning and completing tasks, rather than automating system-based activity. That’s most in line with our current conception of workflows.

As we get more comfortable with the tool, we may begin to understand how we can incorporate more automated actions. I also really like the form fill step that you showed. Currently, we have templates and macros for certain kinds of purchase orders – e.g., an order for a Springer title always has these values. It would be awesome to be able to put those directly into FOLIO and apply them with just one or two clicks.

The PO template example could be especially useful for automating work. A use case I shared on our call was the example of acquiring a large number of new titles as part of a journal package. For each title, we want to create a PO that has a fairly standard set of values. These might include:

  • Vendor
  • Order type
  • Material type
  • Notes
  • Fund

Each order would also have a few unique values:

  • Price
  • Vendor title number (a unique ID used to connect with our subscription agent’s system)

In the past, we have created macros to do this. We would search for a title, create a blank PO, then run the macro to fill in the default values and have it pause in the appropriate place for people to fill in unique values. This ensures consistency, but it’s slow. It would be great to automate this process.

How meaningful is the ability to add scripts you write yourself or get written by e.g. a more technical colleague?

This is very meaningful. Currently, we can actually automate processes in our ILS using the API. But only one person at our institution knows how to do this and has permissions to do it. This means that most things doesn’t get automated simply due to lack of resources. Anything that can democratize the ability to automate processes would be great.

How meaningful is the ability to publish workflows for others to download?

How meaningful is the ability to publish scripts you write for others to download?

I think it’s very meaningful. While it’s unlikely that a workflow/script will translate exactly between institutions, it’s often easier to start with something and tweak it, then to build it from scratch each time. The workflow store would provide an opportunity for people to share their solutions or get a leg up in creating their a new solution.

What’s missing from this prototype?

Some repetition, but things I’d like to see include:

  • Admin/tracking view of workflows
  • What does it look like when you’re viewing a record that has an active workflow? How can you navigate back and forth?
  • Workflow instance concept – how do you see this, how can you edit it?
  • What kind of notifications do people get when a workflow step is assigned to them? In-system notifications are good, but people probably want email too.

What works well in this prototype?

On the whole, I really liked this. I think it’s a very clever way to help people create complex workflows without having to be technical experts. The drag and drop UI is really nice. I would be excited to have a system with these capabilities.


Thank you for creating this. It looks really useful. Would these workflows be for individual items/users/orders/etc., or would we be able to apply the workflows to a large collection of items/users/orders/etc. that may be imported through a batch import, or are being removed/moved/otherwise updated in a global update?

1 Like

Thanks for your question, Steven @stbr2668

The idea is that users would be able to use it on both individual items or on multiple items at once. One could imagine that the batch import of e.g. items would happen through an automated workflow that pulls in a spreadsheet or a folder of files and turn them into records in FOLIO with the appropriate automated actions, and perhaps even creates tasks for manual review of the records that caused errors.

What do you think would make this concept useful?

Thanks for the clarification, Filip @filipjakobsen

I think this would be very useful for many groups (user management, cataloging, acquisitions, more).

1 Like

This workflow concept would be very useful for our aged bill cleanup processes. Currently, we use MS Access to run a monthly process to find aged bills that meet date and amount criteria. The bills are further sorted into type (regular overdue fine or lost item charge) and owning library. Owning libraries use the lists to either cancel the charges, to search the stacks for Lost items, or to send reminder letters about payment due. The oldest charges (for which the previous steps have already been done) are sent to a collections agency. All bills are annotated and updated as appropriate. I imagine that in the Workflow app, the steps involved in this process would have to be quite granular. The if/else logic would definitely apply. I’m certain it would be helpful to write scripts that could be customized for each library (or to be used centrally). I’m thinking a technically-minded person would be in charge of this broadly, rather than a person in a unit library who was not adept at scripting.

1 Like

Another process that would lend itself to Workflow scripting is the process of doing searches for missing books (tracers). After a pre-determined number of searches and amount of time, send the information about the missing item to a selector for a replacement decision. Triggers here would be item status, status date, location. (Notifying the requestor about the outcome of the searches and/or replacement decision would also be part of this sequence, needless to say.)

1 Like

[feedback out of hbz group meeting] The drag and drop surface looks great and is intuitive to work with. It is desirable to have this in the future LSP.

1 Like

[anonymized feedback out of the Reporting SIG discussion] Use Case 1: trigger will be the calendar (every three month, every year, …); step can be “give me all e-ressource records which I can use remotely (by license)”

1 Like

[anonymized feedback out of the Reporting SIG] Use Case 2: trigger will be the calendar (every year); “give me all items that have not been used in the last year within the signature space ‘X’”. Then these items will be removed manually.

1 Like

[anonymized feedback out of the Reporting SIG] Use Case 3: The DBS (German Library Statistics), which has the same variables / parameters every year. One figure of the DBS is, for example, “for the year 2016, please give me the number of loans there were”. This will be run every year in the same way. It is desirable to have templates for the reports of the DBS which can be used and edited by the libraries.

1 Like

[anonymized feedback out of the Reporting SIG] Use Case 4: The SCONUL Statistics in the U.K. (see https://www.sconul.ac.uk/), pulled every year from all academic libraries in the U.K. It is also desired to have templates for these statistics. The libraries run the reports, then report the results to SCONUL. The SCONUL statistics will be briefly presented in the Reporting SIG on Sep, 11th, 2017.

1 Like

[anonymized feedback out of the Reporting SIG] Outputs: Need to create output forms (as steps ? As Options / variables to steps ? Finally as Apps ??) like pie charts or bar charts. Implement different ways to visualize the (reported) data.

1 Like

[anonymized feedback out of the Reporting SIG] The (Reporting) system should be as accessible as possible. It should be operable by people who are not technical specialists.

1 Like

[anonymized feedback out of the Reporting SIG] Triggers should have help menus (drop down menus or else) for non experienced users. The parameters to the triggers should have help sections.

1 Like

[anonymized feedback out of the Reporting SIG] Permissions: It should be kept in mind that people, who are granted edit permissions to the Reporting app, will also be able to change bibliographic data sets (when they built scripts in the Reporting scripting language). Care must be taken during the process of developing, editing and debugging the scripts. It must not be possible to change real data during the development and testing of scripts. It must be possible to run the scripts against test data.

1 Like
  1. Being able to add logic if / else / loop is essential since being able to make decisions is in my mind what workflow is for.

5, 6, 7) go hand in hand. Being able to export / publish a workflow for others to use is beneficial for sharing with other libraries. If you can publish then most libraries would like the ability to modify / change code directly after export or before import.