Overview

This page will host the documentation for all the Concur Expense related events that are publicly available on the public.concur.expense.report topic in the Event Subscription Service (ESS). Subscribers will be able to subscribe to these events by following the steps described on the Event Subscription Service v4 page.

Limitations: This event subscription is only available to partners who have been granted access by SAP Concur. Access to this documentation does not provide access to the subscription.

Scope Usage

Name Description
expense.report.read Get information about expense reports.
expense.report.readwrite Read and write expense report headers.

Events

This section lists all the publicly available events.

Report Status Changed Event

The statusChanged event is intended to publish a message whenever the status of an expense report changes as it traverses the approval workflow during its life cycle. Subscribers of the event are able to leverage the data in the message to perform synchronous or asynchronous actions depending on their business processes. For example, this could trigger an application to make API calls to Concur Expense or start of a process in a third party application.

The statusChanged event will always be published for the following status changes without any additional configuration:

  • Whenever a report is submitted.
  • Whenever a report is sent back to the employee by an approver/processor.
  • Whenever a report is recalled by the employee.
  • Whenever a report stops in the legacy external validation step that is configured using the application connector.
  • Whenever a report is paid.

In addition to the above, any workflow step configured for notifications by the administrator will also be published. Please refer to the Procedure: Creating External Validations and Workflow Event Notifications section of the Workflow General - Setup Guide for more information on how the events can be configured and optimized.

Filtering of events by subscribers:

  • Subscribers only interested in the report submitted event should filter by previousApprovalStatus attribute in the payload and should specifically filter for values A_NOTF and A_RESU.
  • Subscribers interested in the report recalled or sent back events should filter by the stepCode attribute in the payload with a value of SENDBACK.
  • Subscribers interested in the reports that are pending processing in the legacy external validation step events should filter by the stepCode attribute in the payload with a value of EXTVAL.
  • Subscribers interested in the paid report events should filter by the currentPaymentStatus attribute in the payload with a value of P_PAID.
  • Subscribers interested in all other events can filter by the stepCode attribute with the values entered by the administrator in the workflows Admin UI screens.

Schema

statusChangd Event Payload Schema

Name Type Format Description
id UUID RFC 4122 Required Randomly generated unique identifier of this event.
correlationId UUID RFC 4122 Required Unique identifier used for logging/traceability.
eventType string string Required Event Type: statusChanged - Identifies the event type on the topic.
topic string enum Required Identifies the topic that the event belongs to public.concur.expense.report.
subtopic string - Required Subtopic is assigned the company ID, which is also populated as companyId.
timeStamp timeStamp RFC 3339 Required Current system time (UTC) when the event notification is issued.
Facts map Facts Schema Required Key-value pairs providing the content of the event.
transactionTimestamp string dateTime A key linking to a definition for the format.
arrayOfThings array Schema Two A key linking to another schema for the format.

Status Changed Facts Schema

Name Type Format Description
companyId UUID RFC 4122 Required Company unique identifier from profile service.
userId UUID RFC 4122 Unique identifier from profile service for the User acting on the report resources. This may or may not be the report owner depending on the status change. This could be NULL when a system acts on the report.
actingUserId UUID RFC 4122 User unique identifier from profile service - If delegate or expense proxy is working on report resources on behalf of the user then this will be populated, else it will be NULL.
reportId String alphanumeric Required Unique identifier of the expense report whose status has changed. Maximum characters: 20
previousApprovalStatus String enum Required Unique identifier of the previous approval status of the expense report whose status has changed. Supported values:
Not Submitted - A_NOTF,
Sent Back to Employee - A_RESU,
Recalled by Employee - A_RESU,
Submitted & Pending Approval - A_PEND,
Approved - A_APPR,
Pending External Validation - A_EXTV,
Pending Budget Approval - A_PBDG,
Pending Cost Object Approval - A_PECO,
Approved & In Accounting Review - A_ACCO
currentApprovalStatus String enum Required Unique identifier of the current approval status of the expense report whose status has changed. Supported values:
Sent Back to Employee - A_RESU,
Recalled by Employee: A_RESU,
Submitted & Pending Approval: A_PEND,
Approved: A_APPR,
Pending External Validation: A_EXTV,
Pending Budget Approval: A_PBDG,
Pending Cost Object Approval: A_PECO,
Approved & In Accounting Review: A_ACCO
previousPaymentStatus String enum Required Unique identifier of the previous payment status of the expense report whose status has changed. Supported values:
Not Paid - P_NOTP,
Processing Payment - P_PROC,
Payment Confirmed - P_PAYC (may depend on configuration)
currentPaymentStatus String enum Required Unique identifier of the current payment status of the expense report whose status has changed. Supported values:
Not Paid - P_NOTP,
Processing Payment -P_PROC,
Paid - P_PAID,
Payment Confirmed - P_PAYC(may depend on configuration)
stepCode String enum Code provided by the admin that the client can use to differentiate between the steps.
Report Submit - If the target step (the next workflow step that the report stops at) is not configured for notifications, then step code will be NULL.
Report Send Back or Report Recall - SENDBACK
Legacy External validation post submit - EXTVAL
Legacy External validation pre-extract - EXTVAL
Report Paid - If the target step (the next workflow step that the report stops at) is not configured for notifications, then step code will be PAIDREPORT.
All other cases code step code as configured by admin in workflow configuration will be populated.
href string RFC 3986 URI of the report resource that can be called via the Expense v4 API.

Sample Events

{
  "id": "0490b3fb-04ad-4919-b299-afb9fa75e07c",
  "correlationId": "7e38939d-62f1-4bb4-9eef-5ea71fcbb1d8",
  "eventType": "statusChanged",
  "topic": "public.concur.expense.report",
  "timeStamp": "2021-03-18T23:11:51.034Z",
  "subtopic": "685fa226-b72d-47f9-b9ad-e621de12d094",
  "facts": {
    "currentApprovalStatus": "A_PEND",
    "companyId": "685fa226-b72d-47f9-b9ad-e621de12d094",
    "reportId": "57EE1FDA348046E8A08B",
    "stepCode": null,
    "currentPaymentStatus": "P_NOTP",
    "previousApprovalStatus": "A_NOTF",
    "actingUserId": null,
    "href": "https://us.api.concursolutions.com/expensereports/v4/users/08a39ab2-9998-465d-b2f7-588dbe636ce2/context/TRAVELER/reports/57EE1FDA348046E8A08B",
    "userId": "08a39ab2-9998-465d-b2f7-588dbe636ce2",
    "previousPaymentStatus": "P_NOTP"
  }
},
{
  "id": "3eabdcbf-07df-4acd-99de-7f5aef0f673d",
  "correlationId": "Viswa-test",
  "eventType": "statusChanged",
  "topic": "public.concur.expense.report",
  "timeStamp": "2021-03-19T00:37:39.550Z",
  "subtopic": "0ffa9ce0-f00b-408a-8344-8eaad502b0d7",
  "facts": {
    "currentApprovalStatus": "A_APPR",
    "companyId": "0ffa9ce0-f00b-408a-8344-8eaad502b0d7",
    "reportId": "1B5A6194DFB047DAB0BD",
    "stepCode": "EXRTREADY",
    "currentPaymentStatus": "P_PROC",
    "previousApprovalStatus": "A_ACCO",
    "actingUserId": null,
    "href": "https://us.api.concursolutions.com/expensereports/v4/users/22f91cc6-581c-488c-8573-d2c208136d8b/context/TRAVELER/reports/1B5A6194DFB047DAB0BD",
    "userId": "13fa626b-9563-4013-886c-9fd730545277",
    "previousPaymentStatus": "P_NOTP"
  }
},
{
  "id": "be3a6976-00e7-4b06-9c95-b4f2c3330ea6",
  "correlationId": "Viswa-test",
  "eventType": "statusChanged",
  "topic": "public.concur.expense.report",
  "timeStamp": "2021-03-19T01:11:57.169Z",
  "subtopic": "0ffa9ce0-f00b-408a-8344-8eaad502b0d7",
  "facts": {
    "currentApprovalStatus": "A_RESU",
    "companyId": "0ffa9ce0-f00b-408a-8344-8eaad502b0d7",
    "reportId": "1B5A6194DFB047DAB0BD",
    "stepCode": "SENDBACK",
    "currentPaymentStatus": "P_NOTP",
    "previousApprovalStatus": "A_ACCO",
    "actingUserId": null,
    "href": "https://us.api.concursolutions.com/expensereports/v4/users/22f91cc6-581c-488c-8573-d2c208136d8b/context/TRAVELER/reports/1B5A6194DFB047DAB0BD",
    "userId": "22f91cc6-581c-488c-8573-d2c208136d8b",
    "previousPaymentStatus": "P_NOTP"
  }
}