Troubleshooting Omni Exporter for Salesforce
Omni Exporters push data from Medallia Experience Cloud into Salesforce's REST APIs to create Response records and to update Invitation records. The table below outlines common errors that Salesforce returns when there are issues with Omni Exporter setup.
To find the error messages the Salesforce's REST API return to Omni Exporter:
-
Sign in to Medallia Experience Cloud and go to Integrations > Omni Exporter > Events. Any Events that have errors are highlighted in purple.
-
For failed events, links in the Details column provide information about the event.
-
Request shows the API request sent to Salesforce.
-
Response reports the information returned from Salesforce.
Click the Response link to analyze the
Contentof the Response message. The message contains the error message from Salesforce. -
-
After locating the
Contentfrom Salesforce, refer to the table below to resolve the error.
Common Omni Exporter errors
| Status Code | Content | Cause | Solution |
|---|---|---|---|
| 401 (Unauthorized) | [{"message":"This session is not valid for use with the REST API", "errorCode":"INVALID_SESSION_ID"}] | The OAuth access token being passed into the HTTP Request is not valid. This could be because the OAuth setup in the ‘Login’ section is pointing to a different Salesforce environment than where the HTTP Requests are pointed in your Omni Exporter Setup. | Verify the Login URL in the ‘Login’ section and the URL in the ‘HTTP Request Assembly’ section point to the same location. For example, if the Login URL is pointing to login.salesforce.com, ask with the client to verify the URL parameter is also a production environment. |
| 401 (Unauthorized) | [{"message":"INVALID_HEADER_TYPE", "errorCode": "INVALID_AUTH_HEADER"}] | The OAuth access token being passed into the HTTP Request is not valid. This could be because the Bearer token in the Headers parameter is corrupted and needs to be reset. This can happen when Omni Exporter is manually created or cloned. |
Verify the Headers parameter is set to Authorization: Bearer $TOKEN$. Then verify, after copying and pasting the value into the Headers parameter and saving the configuration, that the value is masked like this: |
| 400 (Bad Request) | [{"message":"entity type cannot be inserted: Response", "errorCode": "CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY","fields":[]}] | The Salesforce integration user has no access to certain objects or fields, such as the Response or Invitation object. | Ask the Salesforce admin to verify the Integration User permission set has been assigned to the integration user. |
| 400 (Bad Request) |
[{"message":"medallia_xm.MedalliaFeedbackTrigger: execution of BeforeInsert caused by: System.DmlException: Insert failed. First exception on row 0; first error: | The Salesforce integration user does not have access to standard objects like Contact or Account, which is needed to tie new Response records to Contacts and Accounts. |
Ask the Salesforce admin to verify the Integration User permission set has been assigned to the integration user. If the permission set is assigned, then the Salesforce admin may need to clone the Integration User permission set and add the View All permission to the Contact and/or Account objects. |
| 400 (Bad Request) | [{"message":"No such column 'xyz' on subject of type medallia_xm__Medallia_Feedback__c", "errorCode":"INVALID_FIELD"}] | The xyz field mentioned in the error message either 1) does not exist on the Response object, or 2) the appropriate FLS (Field Level Security) for that field has not been granted to the integration user. |
|
| 400 (Bad Request) | [{"message":"Cannot deserialize instance of double from VALUE_STRING value…, "errorCode": "JSON_PARSER_ERROR"}] | A text value is being passed for a field that is of Integer type rather than a String type. |
Verify the Q-field is mapped to the Salesforce field as a Text alt-set. If you are trying to send "N/A" as a value for a question field, either convert the value to null in Omni Exporter mapping or ask the Salesforce team to change the field type of the field to Text. |
| 400 (Bad Request) | {"message":"xyz: data value too large: … (max length=32)", "errorCode":"STRING_TOO_LONG", "fields":["medallia_xm__Contact_Firstname__c"]}] | The value being passed for the xyz field is too large for the particular Salesforce field to accept. | Truncate the field values being passed from the Omni Exporter using a K-field, or ask the Salesforce team to increase the field length or create a new field with increased length. |
| 404 (Not Found) | {"errorCode":"NOT_FOUND","message":"The requested resource does not exist"}] | The URL endpoint Omni Exporter is trying to post payloads to either is invalid, or the objects have not been made available to the integration user because the client admin has not been assigned the integration permission set. |
|
