When using the Veeva-SAP Concur Integration to post expenses from Veeva to SAP Concur, some customers require the ability to capture No Shows (attendees who did not show up for the call) to be posted to SAP Concur expense reports. The Veeva-SAP Concur connector can be customized to allow reps to mark attendees as No Shows.
A lunch and learn was planned for 3 attendees and a rep prepaid $60 for lunch. However, one of the attendees canceled last minute so only two attendees actually attended. By default, each of the present attendees would be allotted $30. By using the No Shows feature, the user can indicate that one attendee was a no show and SAP Concur would allocate $20 to each of the present attendees.
Configuring No Shows
To enable this feature:
- Add the No Shows Attendee Type: Setup-> App Setup-> Objects-> click Call
- Select Expense Attendee Type in the Custom Fields and Relationships section.
- Select the New button in Picklist Values section.
- Select the NOSHOWS picklist value. The spelling must match exactly.
- Select the appropriate boxes for the Record Types where you would like No Shows to be added. For standard configuration for Call Reports and Medical Events, select Call Report_vod and Event_vod.
- Click Save.
NOSHOWS attendee type should display in the Attendee Type drop down on the Call Report/Medical Event.
Optional configuration: Translation Workbench can be used to display a different label for NOSHOWS that is visible to the users.
To support Connected Lists in SAP Concur, the sequence of elements sent through the integration must match the sequence that SAP Concur is expecting. The order by which you set up the mappings in the SAP Concur Admin tab is the order that is sent to SAP Concur. Therefore, the field mapping order in Veeva must match the order in SAP Concur.
- Connected List mapping is set up in the Call to Expense Entry section on the SAP Concur Admin page
- SAP Concur does not support Connected Lists at the Attendee level, so no mapping are required in the Attendee related sections
The following mapping on SAP Concur Admin page results in the XML in the next image:
Updating Existing Parameters
Use the UpdateExisting parameter in the SAP Concur API to indicate whether or not Veeva integration should update an attendee with a matching External ID. If disabled, the request will not update a matching attendee. If not provided, enabled, the request will update a matching attendee.
In Veeva, on the SAP Concur Admin page, this new parameter is a new field in the Attendee Field Mapping section. If a customer does not want attendees sent from Veeva to overwrite attendee records in SAP Concur, the UpdateExisting field should be always be disabled. In addition, the SystemOwner field should always be enabled.
Additionally, if a customer is loading attendees from a customer master, the attendees are owned by the system, not individual reps. UpdateExisting needs to be disabled as reps do not have permission to modify system owned records.
To enable updating existing parameters:
- Create the Always_True__c field on the Call2_vod object. The default value is selected.
- Map the UpdateExisting SAP Concur field to the Always_True__c Veeva CRM field on the SAP Concur Admin tab in both the Call Primary Attendee to Expense Entry Attendee and Cal Attendees to Expense Entry Attendee sections.
System Owner Field
Attendees can be shared (display on multiple call reports submitted by different reps). You must set SystemOwner to Yes when posting these attendees to SAP Concur, otherwise they cannot be shared between the different reps.
Posting Attendees from Veeva can update fields on Shared Attendees. Veeva will only update a shared attendee (attendees indicated with System as the owner) if the following conditions are met:
- The request has SystemOwner element set to Yes
- The External IDs are the same between the imported Attendee record and the Attendee record from Veeva
- The request has the UpdateExisting element enabled, or does not include the UpdateExisting element
If an attendee is manually created by an individual user and does not have an External ID, an attendee record for the same individual, when sent from Veeva, will not be matched and therefore will create a new attendee record in SAP Concur.
When sending attendees through the SAP Concur integration, the owner of the attendee must match the owner of the expense report. SAP Concur uses the following logic:
- The Requests must have the <SystemOwner> Element enabled if the Attendee is part of a Shared List (i.e. loaded from a customer master)
- If the <SystemOwner> element is not sent in the Request, then it is assumed the Report Owner is the Attendee Owner. If they do not match, the following Error message displays:
- <Error><Message>The Report Owner is different than the Attendee Owner. When the <SystemOwner> element is set to No, the existing Attendee Owner must be the same user as the Report Owner in order to update the attendee.</Message><Server-Time>2013-05-21T12:17:16</Server-Time><Id>AEA5AA6D-79E1-47A6-A4E3-626C7D55866E</Id></Error>
To enable or disable, you need to add the following two new fields to the Call object:
- Always_False__c - Check box, default is deselected
- Always_Yes__c - Text formula field, default formula is Yes
The following screen shot shows where UpdateExisting field is mapped on Veeva’s SAP Concur Admin page. The second screen shot is an example with both fields mapped to prevent Veeva integration from updating attendees in SAP Concur.
Example of both new fields mapped to prevent updating attendees
- If an External ID is provided in the request but the UpdateExisting element is not included in the request body, the existing attendee is updated with the values provided in the request element
- If an External ID is provided in the request and the UpdateExisting element is provided and disabled, the existing attendee is not updated, regardless of the other fields provided
- If an attendee field does not need to be updated, do not send the element in the request unless it is required
- If an attendee field is a required element and the value does not need to be updated, send the element with the same value as the existing attendee record
- If the attendee field is not required and is sent in the request with no value, the API assumes that it needs to be updated to an empty value
Specifying Expense Reports
Users who enter expense information via the SAP Concur-CRM integration can now verify to which SAP Concur expense report those expenses are posted. The report name displays on the Call and Medical Event header pages, allowing users to verify expense records.
For example, Sarah Jones uses SAP Concur to record expenses incurred while on a Call with Dr. Ackerman. Later, she reviews the Call and can see the name of the SAP Concur report record.
Configuring Expense Reports
To enable this feature:
- Grant FLS permission to the Concur_Report_Name_vod field on the Call2_vod and Medical_Event_vod objects.
- Place the Concur_Report_Name_vod field on the appropriate page layouts.
With the integration of expenses with SAP Concur, iPad users can upload receipts associated with Calls prior to submitting the Call to SAP Concur. The uploaded receipts are automatically associated with the correct Call once it is submitted to SAP Concur. See Recording Call Expenses with SAP Concur for more information.