Enterprise Approvals Integration - Concur

Concur Expenses

Expense Report Approvals

  • View Expense Report - Redirects the user to the Concur Report, where they can view additional details for this or additional expense reports.


The below simplified diagram represents how Moveworks will integrate with your Concur instance.

To walk through the diagram above:

  1. Approval Detection Server - checks for updated approvals in Concur every 60s

    We use the /api/v3.0/expense/reports/{report_id} API response & filter it by modifiedDateAfter for reports with approvalStatusCode = A_PEND. This allows us to only fetch expense reports pending approvals.

  2. Approval Processor - get details for approval notifications where appropriate

    1. Approval processor filters out approval updates that do not result in notifications
    2. Approval processor fetches details for the notification from resource-specific endpoints
      1. However we haven’t found a Concur endpoint to retrieve additional expense report information from.
  3. Approval Queue - if qualified, the approval is stored in the Moveworks approval queue for the next 30 days. You can read more about the Approval Queue in the General Enterprise Approvals handbook.

  4. Conversation Engine - notifies the user & collects their response.

    1. Prepares a notification based on the results from the approval processor
    2. Applies the button action associated with the approval resource type (as defined above)


Q: Why are we not allowing users to approve/deny in chat?

A:Unfortunately Concur doesn’t allow processors to Approve/Send back /act on Expense Report Approvals so we deflect all actions to the Concur portal. We’re currently working with the Concur Dev team to validate if this could be possible using the workflowactions API & will update the pilot customers if the ticket gets resolved. [Latest update — this isn’t supported due to Concur API restriction]

Q: Why are my Concur user changes not reflected in the Moveworks environment?

A: Unfortunately Concur’s API for fetching user identities are currently unstable & time out non deterministically. We’re again working with their dev team & will make updates when it’s fixed on their end.

Q: What is the Approval Queue?

A: Generally, Moveworks will synchronizes approval records from all your systems and stores them in our Approvals Queue.

This provides many benefits:

  1. Employees don't get frustrated waiting tens of seconds for your systems to return necessary data (chat feels ~56x faster on average)
  2. We don't overburden your system health with calls for every single user
  3. Once an approval is in the queue, we offer some additional powerful interaction patterns for the user.


Approvals are removed from the approval queue if not updated in the last 30 days, or after they’ve been completed (approved, denied, or no longer required).

Q: What if I’m seeing approvals that do not belong?

A: Generally, users will not see approvals >30 days old.

There is a small risk that our approval queue may be slightly inconsistent with production (<1% of the time). Examples of these inconsistencies may include a missing approval or an approval that was already completed. We are actively making engineering investments to reduce the likelihood these appear.

If any inconsistencies are detected, please let us know and we can manually fix them with an internal tool.