Help with "Are updates allowed?" Formula Logic — Lock Submitted Requests but Allow New Adds

Hi Community,

I'm building an internal procurement workflow app on AppSheet for our organization. The app manages requests that go through multiple approval stages (Line Manager, Procurement, VP Implementation, Finance, and finally Payment by Accountant). Each request has a status field to track its lifecycle — e.g., "Draft", "Pending Procurement", "Approved for Payment", etc.

I’m trying to control edit permissions using the Are updates allowed? formula at the table level in the Requests table. My goal is to:

  • Allow initiators to add and edit requests while they are in Draft.

  • Allow Procurement and Accountant to edit only during their respective stages.
  • Prevent everyone (including the requester) from editing after submission.
  • Admins can always edit.
  • Ensure new requests can still be added.

Formula That Locks Everything Except Admin — but blocks even new adds:

 

IFS(
  AND([Status] = "Draft", [Requested_By] = USEREMAIL()), 
    "ALL_CHANGES",

  AND([Status] = "Pending Procurement", 
      LOOKUP(USEREMAIL(), "Users", "Email", "Role") = "Procurement"), 
    "UPDATES_ONLY",

  AND([Status] = "Approved for Payment", 
      LOOKUP(USEREMAIL(), "Users", "Email", "Role") = "Accountant"), 
    "UPDATES_ONLY",

  LOOKUP(USEREMAIL(), "Users", "Email", "Role") = "Admin", 
    "ALL_CHANGES",

  TRUE, "READ_ONLY"
)

 

Formula That Allows Adds — but doesn’t fully prevent editing of submitted requests:

 

IFS(
  ISBLANK([Request_UID]), 
    "ALL_CHANGES",

  AND([Status] = "Draft", [Requested_By] = USEREMAIL()), 
    "ALL_CHANGES",

  AND([Status] = "Pending Procurement", 
      LOOKUP(USEREMAIL(), "Users", "Email", "Role") = "Procurement"), 
    "UPDATES_ONLY",

  AND([Status] = "Approved for Payment", 
      LOOKUP(USEREMAIL(), "Users", "Email", "Role") = "Accountant"), 
    "UPDATES_ONLY",

  LOOKUP(USEREMAIL(), "Users", "Email", "Role") = "Admin", 
    "ALL_CHANGES",

  TRUE, "READ_ONLY"
)

 

The issue with this version is that it fails to block editing of already submitted requests (e.g., when status is “Pending Procurement”) even by the initiator.

Question:
Is there a reliable way to:

  1. Allow new request creation,

  2. Lock editing after submission for the initiator,
  3. Still allow stage-based edits by Procurement/Accountant/Admin?

Would appreciate any guidance or alternative suggestions!

Thanks in advance 🙏

0 2 55
2 REPLIES 2

Table level Change control is not a row level setting, meaning you cannot modify access levels based on the status field values.

I would use a combination of Security filter and field level edit controls to achieve what you want. I assume even a Procurement officer should not be able to change field values other than the status field, which certainly requires field edit control.

Another approach would be to control views. Show a Form (edit) under certain conditions  (Owner, Admin, Status: Draft, etc.) only. Use actions to change the Status field.

Top Labels in this Space