Forum Discussion

ScottPugh's avatar
ScottPugh
Qrew Cadet
6 years ago

Approval Workflow for Data Changes

I am looking for best practices on how to create an approval process which determines whether proposed changes to data values in a record should be committed or rejected.

example process:

A user wants to add a new 'product' record to the products table.   The user populates all fields and clicks 'Save'   instead of actually committing this record to the products table I would first like another user (the approver) to either approve or reject the record.   If approved the record gets committed, if the approver rejects a record they should be able to add a comment as to why its rejected (thus maintaining a record of the rejection with comment).

Similar capability must be available if a user attempts to edit an existing record.  For example, user tries to change the color field in a product record.   Before the change is made an approver must approve or reject the change (similar flow to above)

Thanks for the help.

5 Replies

  • For new record, a solution would be to have a status field as to if the change was accepted.  Then you would set up a Notification and a safety net subscription report of Open New product requests.  These type of records would need to be filtered off most users' reports and drop down lists.

    The Edit issue is interesting.  One idea is to make a duplicate set of fields beside the real fields, and have the users fill out the duplicate column for any changes.  Then the Approver can see the old and new value.

    The Approver could then push a URL formula button to copy the new fields to the real fields if they were to be accepted.  Or alternatively change the status to rejected.
  • Thanks for the direction.  I will investigate further.  The issue I'm hitting now (focusing on the edit piece) is how to automatically change a 'Status' field on the record to 'Awaiting approval' when any field changes- but then not do that auto-update when an 'approver' sets that field value to 'approved'.  I've tried quick base actions on tables and Automations at the app level and neither seem to do what I need
  • Is your issue how to edit the record that triggered the Action or Automation or is it getting the logic to trigger at the correct situation?
  • Here's the outcome I'm trying to achieve:

    1.  User edits any field on a record, that causes a the 'record status' field on that record to flip to 'Awaiting Approval'
    2.  Approver reviews the change and then changes the 'record status' field on that record to either approved or unapproved.   

    The challenge I'm having is any of the methods I have tried for item #1, is then getting triggered again when the approver changes the 'record status' field to either approved or unapproved.

    A few things I've tried
    • Quick base actions at the table level don't allow me to edit a record in the same table as the field being changed
    • Automation-  I can't figure out how to have the field update (record status) occur on the record which had a field changed
    • Form Rules- this approach works but then can't figure out how to have the approver updates occur differently.  I assume a 2nd form is needed for the approver updates but then its a matter of understanding how do I ensure a user in the approver role only ever sees the 'Approver Form' if that user is also in other roles which are directed to see the 'main' form (which has the form rules to update 'record status' upon save)
  • There is a valid cheat to use to edit the record you are in, using an action.

    Make a report link field and on the left have [Record ID#] and on the right navigate to the same app, same table same [Record ID#] field.  then you can edit the record you are in.  Just be sure that you do not make an endless loop as the Action editing a record is an edit to the record.  So you will need to have some filers on the trigger.

    A form rule can be based on the Role is the user, so you should be able to differentiate between a regular Participant and a high level Approver.