Introduction

Qobra connects to Salesforce through a connected app, which needs to be installed via an Oauth check. The integration is used to synchronize all objects, their fields and their content. The integration supports standard or custom objects, and standard or custom fields in those objects. This integration is readonly and does not write anything in your Salesforce.

Access

Oauth authentication & scopes

To connect your Salesforce to Qobra, you’ll need to go through an Oauth flow, granting us access to two Salesforce scopes:
  • Perform requests at any time (refresh_token, offline_access)
  • Manage user data via APIs (api)
You’ll find more information about Salesforce connected app scopes here.

Access restriction

The Qobra integrations has access to all the data the user who connected has access to. A common practice for our customers is to create an API only user in Salesforce to give Qobra’s access through this user (unlimited, enterprise, and performance Salesforce edition orgs get five free API only licenses). You can restrict this user’s access to Salesforce data, and then give us access through the Oauth flow to restrict Qobra’s access to a part of your Salesforce. Follow this tutorial to implement Salesforce’s best security practices.

Synchronization

Refresh Frequency

Qobra keeps your Salesforce data up to date through regular synchronizations:
  • Daily Full Refresh: Every night, we perform a complete sync of all your Salesforce data
  • Bi-hourly Updates: Every 2 hours throughout the day, we sync any recent changes
  • On-Demand Updates: Need the latest data right away? Just click the refresh button in your integration settings

Incremental synchronization

This integration is an incremental synchronization. This means that all imports are based on each record last modified date, and that we only refresh what has been modified in the system since the previous import. When an import is launched, we thus refresh all records that have been modified since the start of the last successful import. Once we have refresh range, synchronization work is split and parallelized in smaller tasks for performance enhancement. The synchronization tasks are split according to the last modified date. It is important to note that Qobra admin can manually trigger complete synchronization in the application. For Salesforce, we base this synchronization on the LastModifiedDate field, present in each table.

Supported types

You’ll find below the fields types supported by the Qobra integration, and their mapping to Qobra types.
Salesforce typeQobra type
intnumber
doublenumber
percentpercentage
currencyamount
picklistpicklist
multipicklistmultipicklist
textareastring
stringstring
comboboxstring
phonestring
booleanbool
datedate
datetimedate
referenceobject
reference > useruser
Qobra integration supports multi-currency synchronization, based on the CurrencyIsoCode field, present in each Salesforce object.

Custom querying

With this integration, you can apply a custom query to your table synchronization, to avoid synchronizing too much information, consequently making synchronization quicker. Custom queries are based on SOQL where conditions. For instance, you could add as a custom query StageName = 'Closed Won’ to filter your Opportunity object.

Polymorphic References

Salesforce uses polymorphic references (also known as “polymorphic lookup fields” or “WhoId/WhatId fields”) in certain objects like Events and Tasks. These special reference fields can point to multiple types of entities. For example:
  • The WhoId field can reference Leads, Contacts, or Users
  • The WhatId field can reference Accounts, Opportunities, Cases, and other custom objects
Unfortunately, Qobra does not currently support polymorphic references due to their complex nature. When synchronizing objects that contain these fields, the references will not be properly resolved.

Workarounds

To handle this limitation, here are some suggested workarounds:
  1. Create Separate Fields: Instead of using the polymorphic fields, you can create separate lookup fields for each type of entity you need to reference. For example:
    • Account__c
    • Opportunity__c
    • Lead__c Then use Process Builder or Flow to automatically populate these fields based on the WhatId/WhoId values.
  2. Use Record Types: Create different record types for your Events/Tasks based on the type of entity they’re related to. This allows you to have different page layouts and field sets for each type of relationship.
  3. Custom Junction Objects: For complex relationships, consider creating custom junction objects that explicitly define the relationships between your records.
Contact Qobra support for more information.