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:

  1. Sign in to Medallia Experience Cloud and go to Integrations > Omni Exporter > Events. Any Events that have errors are highlighted in purple.

    Error event IDs are listed in purple color

  2. 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 Content of the Response message. The message contains the error message from Salesforce.

    Response Content contains the error message from Salesforce

  3. After locating the Content from Salesforce, refer to the table below to resolve the error.

Common Omni Exporter errors

Status CodeContentCauseSolution
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: 

The Bearer token is masked after saving the configuration

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:
INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY, insufficient access rights on cross-reference id: 0012K00001lyNcD: (medallia_xm)",
"errorCode": "CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY",
"fields":[]}]

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. 
  1. Confirm with the Salesforce admin that the field exists on the Response object and verify the exact field name.

  2. If that fails, ask the Salesforce admin to provide Edit Access to the field via the Integration user permission set (admin may need to clone the permission set).

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.
  1. Confirm with the Salesforce admin that the right instance variable is being used. If this checks out, check the syntax of the overall request URL.

  2. Confirm with the Salesforce admin that the permission set for the integration user has been assigned.

  3. If 1 and 2 have been confirmed, then the client admin must clone the integration user permission set and add the following object access to that cloned permission set. This is needed because of how the org-wide objects settings are configured.

    1. Set Modify All access on the Response object.

    2. Set View All access on the Contact object.

    3. Set View All access on the Account object.