Skip to content

[AA Hold] [Tracking] Hold for Advanced Approvals #56386

Description

@garrettmknight

Problem

When Hold is applied during pre-submission or at any step in a multi-level approval, it causes the system to bypass the hold state, which prevents approvers and submitters from pausing an expense and resuming review at the same approval step.

Solution

To remove duplication of efforts and ensure Hold works as intended at every level, we’ll update the Hold logic so that held expenses remain at their current status (either draft or submitted) when either submission or approval takes place, allowing unheld expenses to flow through the process without delay.

With this project, the following will happen when a report is approved and there are held expenses on it:

  • Create a new processing report at the current approval level and move the held expense onto it

    • This ensures that we’re not kicking back the held expense(s) back to the beginning of the workflow
  • Add a new system message to the new processing report that ensures a paper trail exists for auditing purposes

    • The message will link the new processing report to the original report, allowing customers to trace the flow of expenses and audit for approvals as necessary.
    • This ensures we’re not leaving any gaps in the workflow from an audit perspective
  • Have the approved, unheld expenses on the original report continue onwards to the next step in the approval chain

    • This ensures that we do not hold back any unheld expenses from moving forward in the workflow while waiting for the held expenses to be clarified/fixed.

To ensure consistent patterns, we’ll update the draft report/hold behavior to do the following when delay submission triggers:

  • Create a new draft report at the submitter level and move the held expenses onto it
    This ensures that we’re not submitting expenses when the submitter has intentionally held them back.

  • Move the unheld expenses and the original report to the next step as normal
    This ensures that our hold functionality is working as intended, pausing expenses at their current state while other expenses move forward.

Tracking issue for #migrate Hold for Advanced Approval

DESIGN DOC ➡️: Here

Figma Folder: Here

Proposal: Here!

Pre-design 1: Here

Pre-design 2: Here

Pre-design 3: Here

Implementation issues

TBD

Cleanup tasks

TBD

Tasks

  • Post Proposal (full Problem/Solution statement) in #whatsnext
  • Wait at least one full business day, and until the post has a majority (2/3) of positive reactions (👍)
  • Paste Proposal in the space above with a link to the Slack thread
  • Email strategy@expensify.com and paste in the Proposal
  • Fill out the High-level overview of the problem, Timeline, and Terminology sections of the Design Doc
  • Email strategy@expensify.com (continue the same email chain as before) with the link to your Design Doc
  • Host a pre-design meeting (example) in an appropriate slack channel to discuss any necessary details in public before filling out the High-level of proposed solution section.
  • Fill out the High-level of proposed solution section
  • Email stategy@expensify.com again with links to the doc and pre-design conversation in Slack
  • Add the DesignDocReview label to get the High-level of proposed solution section reviewed
  • Respond to any questions or concerns and bring up blockers in Slack to get a consensus if necessary
  • Confirm that the doc has the minimum necessary number of reviews before proceeding
  • Host another pre-design meeting in the appropriate slack channel to ask for engineering feedback on the technical solution.
  • Fill out the Detailed implementation of the solution and related sections.
  • Re-add the DesignDocReview label to this issue
  • Respond to any questions or concerns and bring up blockers in Slack to get consensus if necessary
  • Confirm that the doc has the minimum necessary number of reviews before proceeding
  • Email strategy@expensify.com one last time to let them know the Design Doc is moving into the implementation phase
  • Implement the changes

Backend issues

Frontend issues

Metadata

Metadata

Type

No type

Projects

Status
Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions