Enabling SAP Concur API Version 3
New SAP Concur APIs enable admins in Veeva CRM to configure additional mappings between the two systems, as well as configure the integration to support submitting multiple call expenses.
Considerations When Upgrading to API Version 3
Admins should consider the following when integrating with SAP Concur using API Version 3:
- Starting with the 25R1 release, API Version 3 will be the only supported API version when integrating with SAP Concur
- Call Expenses or Medical Event Expenses must be enabled
- Single Expense Call Reports can be submitted
- If Multiple Expense Call Reports are enabled, multiple expense lines can be submitted
- PaymentTypeId is required when using API Version 3
- Veeva CRM end users cannot submit expenses against attendees configured in a Private List in SAP Concur unless the attendee was created by the user. See SAP Concur Attendees in a Private List for more information.
- The following features are not supported: and are ignored if they remain mapped when updating the integration to API Version 3
- No Shows as an Attendee Type
- Update Existing Parameters
- Mapping the System Owner field
-
Concur custom fields that are configured with a Connected List must be updated with a Concur List in the mapping. See Connected List Mapping
Updating SAP Concur Version
To update the SAP Concur version:
-
Grant integration users the following permissions:
Object
OLS
Record Types
Fields
FLS
Expense_vod
R
n/a - Amount_vod
- Call2_vod
- Transaction_Date_vod
- Expense_Type_vod
Read
Expense_Type_vod
R
n/a Expense_Code_vod Read
- Populate the Concur API Version Concur Setting with a value of 3.
Mapping to SAP Concur in API Version 3
Updates to Available Mappings
Certain field mappings between Veeva CRM and SAP Concur are available and automatically updated when API Version 3 is enabled. These mappings can be reviewed on the Concur Admin tab:
- CrnCode – Relabeled to TransactionCurrencyCode
- ExpKey – Relabeled to ExpenseTypeCode
- AttendeeType – Relabeled to AttendeeTypeCode
- Custom1-20 – Updated to include Custom1-25
- SystemOwner – Field removed
- UpdateExisting – Field removed
Fields removed or relabeled only apply to default mappings and custom mappings created after updating the API version. Custom field mappings created prior to updating the API version are unaffected and do not affect the ability to submit expenses.
Mapping the AssociatedAttendeesCount Field
The AssociatedAttendeesCount field in SAP Concur enables admins to map a number count when syncing expenses. This is useful when specifying a number of people instead of named attendees for expenses.
To configure mapping the number count:
- Navigate to the Attendee Mapping section of the Concur Admin page.
-
Populate the following fields:
- Concur Field – Enter AssociatedAttendeesCount
- Veeva Field – Enter the appropriate Veeva CRM field to map
- Select the + button to add the mapping.
- Select Save.
Connected List Mapping
To correctly send the appropriate value mapped between fields in Veeva CRM and SAP Concur, mapped SAP Concur fields must be mapped with an SAP Concur Connected List. Connected Lists can be mapped for both call and medical event expenses and are used when syncing with SAP Concur to retrieve the List Item matching the mapped field value in Veeva CRM.
If the List Item is not found, the raw Veeva Field value is synced.
To configure the SAP Concur List for a custom field mapping:
- Navigate to the appropriate mapping section of the Concur Admin Page.
-
Populate the following fields:
- Concur Field – Populate with the appropriate field from SAP Concur
- Veeva Field – Populate with the appropriate field from Veeva CRM
- Concur List – Select the corresponding list that is mapped to the SAP Concur Field
- Select the + button to add the mapping.
- Select Save.
To identify the appropriate SAP Concur List for mapping, in SAP Concur:
- Navigate to Forms and Fields in Expense Administration.
- Select the appropriate Form Type.
-
Select the Form Fields tab.
- Select the appropriate Form Field record.
- Select the field to map in Veeva CRM.
-
Select Modify Form Fields. The appropriate list to use when mapping this field in Veeva CRM displays in the List field.
See SAP Concur Technical Documentation for more information.
Sync Details in the SAP Concur Sync Log
To troubleshoot SAP Concur Sync, a sync log is available with information to review expense information that is submitted through the connector to SAP Concur. The file contains details about each expense, attendee, receipt images, and error messages.
To download a sync log, select the appropriate row in the Concur Sync History table on the Concur Admin tab.
The sync log downloads as a CSV file with the following columns:
- ObjectType – Can be either Call or Medical Event
- ObjectId – The specific Call2_vod or Medical_Event_vod record
- OwnerId / Concur User – The owner of the record in Veeva CRM and their corresponding user ID in SAP Concur
- Response – Information returned by SAP Concur on the specific expense, attendee, or other synced record
- Error – Displays any error messages for the synced row, if applicable
Troubleshooting SAP Concur Errors
When troubleshooting Concur Sync for SAP Concur API Version 3, the sync log CSV file contains error messages for the specific process and Veeva CRM record that failed. The table below provides additional information on description of the error and possible resolutions for troubleshooting.
Error |
Description |
Resolution |
---|---|---|
Internal Server Error |
A general error response from SAP Concur that may be due to an outage or a configuration preventing an expense or attendee creation. |
Log a product support ticket. Veeva will investigate with SAP Concur to identify the root cause. |
Failed to Retrieve Open Reports |
Occurs when the integration is unable to find any SAP Concur reports for the submitting user. |
In Veeva CRM, verify that the Concur User ID field is populated with a correct value on the user record. |
Invalid List item ID |
Occurs when a mapped SAP Concur field is configured as a List and an incorrect Veeva CRM field value is mapped. SAP Concur requires using ListItemId when creating the attendee or expense. |
In Veeva CRM, evaluate which mapped SAP Concur field is configured with a List. For Call, ensure the SAP Concur List is selected for the mapped Veeva CRM field. For Events, ensure the ListItemId is passed for mapped Veeva CRM field. |
Missing required field: <Field Name> |
Occurs when an attendee or expense is submitted and is missing required fields. |
Check the attendee or expense and ensure the mapped Veeva CRM field is populated. |
Field description exceeds the maximum length of <char limit> |
A Veeva CRM field is mapped to an SAP Concur field with a character limit and that the Veeva CRM value exceeds that limit. |
Ensure the Veeva CRM field does not exceed the character limit designated in the SAP Concur sync message. |
Missing attendee last name / first name |
The integration is creating an Attendee in SAP Concur with the specified mappings of the related Veeva CRM object, however, the attendee is missing requiring first or last name information. |
Check the attendee record and ensure the mapped Veeva CRM field has values populated. |
Failed to Retrieve Existing Attendees |
The integration is unable to query the SAP Concur attendee database to determine which attendees must be created. |
In Veeva CRM, review the configured Attendee Types. In SAP Concur, ensure they are valid and active in the SAP Concur policy by working with your Concur Administrator. Ensure that Attendee Types are configured with an External Id field on the Expense Attendee Form and that the field is available in the Duplicate Search setting. |
An attendee with the specified External ID already exists |
The integration is attempting to create an Attendee in SAP Concur with the External Id mapping when there is already an existing Attendee with the same Attendee Id. This indicates an attendee visibility issue in Concur. |
In SAP Concur, update the configuration to remove the Created By (Private List) field from the Expense Attendee form for that Attendee Type. |
You do not have permission to access the requested resource(s) |
The integration is unable to associate an attendee to the submitted expense. This is because the integration is unable to access that attendee based on External Id. |
In SAP Concur, ensure that the Attendee with the specified External Id is Active. Update Concur configuration to remove the Created By (Private List) field from the Expense Attendee form for that Attendee Type. |
Missing attendee ID |
An attendee is missing an External Id value. |
Review the attendee mapping for ExternalId field. Ensure that all attendees under the expense have the mapped Veeva CRM field populated. |
PaymentTypeID was not specified |
Payment Type was included in the expense mapping. |
In Veeva CRM, ensure Payment Type is mapped correctly with a value. |
The payment type isn’t available for this user |
A payment type was specified, however, it is not configured in the end user’s policy in SAP Concur. |
In SAP Concur, ensure that the end user is tied to the Policy the Payment Type belongs to. |
The expense type isn’t active in the Policy associated with this expense report. |
The expense has a mapped expense type that the user does not have access to. |
In SAP Concur, ensure the mapped Expense Type is valid for the end users’ policy. |
The specified Expense Type Code doesn’t match an Expense Type for this user’s Expense Group |
The expense has a mapped expense type that the user does not have access to. |
In SAP Concur, ensure the mapped Expense Type is valid for the end users’ policy. |
ExpenseTypeCode was not specified |
The expense was not created because it did not have an expense type mapped correctly. |
In Veeva CRM, review the expense mapping for ExpenseTypeCode and ensure a value is populated. |
Input string was not in a correct format |
One of the mapped fields is sending a value that does not match the expected format in SAP Concur. For example, the number field in SAP Concur cannot include a decimal point. |
In Veeva CRM, Review the mapped fields and ensure they are sending the expected field values. Log a Veeva Support ticket if further investigation is needed. |