Skip to main content
SugarCRM is a CRM platform for sales, marketing, and customer service (Sugar Sell, Sugar Serve, Sugar Enterprise, and Sugar Professional), available in SugarCRM’s cloud or installed on your own servers. This connector reads your instance through the official SugarCRM REST API and brings one table per module: accounts, contacts, leads, opportunities, cases, calls, meetings, tasks, notes, quotes, products, your custom modules, and everything else the connector’s user can list, with all their fields, custom fields included.
The connector only reads data. It never creates, changes, or deletes anything in SugarCRM.

Configuring SugarCRM as a Source

In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the SugarCRM option from the list of connectors. Click Next and you’ll be prompted to add your access.

1. Prepare SugarCRM

The SugarCRM API always acts as a SugarCRM user and sees exactly what that user’s role allows. Before you add the source:
1

Choose the user

We recommend a user dedicated to this integration, with a role that has Access and List rights on every module you want to sync. The user must log in with a SugarCRM password: users that only sign in through single sign-on (SAML, Google, Microsoft) cannot be used by the API.
2

Register the API platform

A SugarCRM administrator opens Admin > Configure API Platforms, adds a platform named nekt, and clicks Save. The connector logs in on this platform so it does not end the user’s SugarCRM web session.
SugarCRM keeps one session per user per platform. If you cannot register the nekt platform, set API Platform to base, but then use a user nobody logs in with: on base, every sync logs that user out of SugarCRM, and a person logging in with that user interrupts the sync.

2. Add account access

  • Instance URL: the address you open SugarCRM with, for example https://yourcompany.sugarondemand.com. It must start with https://.
  • User Name and Password: the SugarCRM user chosen above.
  • API Platform (default nekt): the platform registered above, or base.
  • Start Date (optional): only records modified since this date are loaded on the first sync and on full syncs. Leave it empty to load every record. Modules without a modification date are always loaded whole.
On large SugarCRM instances, set a Start Date. A first sync without it reads every record of every selected module, and if it stops halfway the next sync starts it over from the beginning.
Advanced settings, which you normally keep as they are:
  • OAuth Client ID (default sugar) and OAuth Client Secret (empty): the OAuth key the connector logs in with. sugar exists on every SugarCRM instance; use another pair only if your administrator created one under Admin > OAuth Keys.
  • API Version (default v11_4): the SugarCRM REST API version. Works on SugarCRM 9 and later; older installations may need v11 or v10.
  • Page Size (default 200): records read per request. Lower it if SugarCRM times out on modules with many fields.
Once you’re done, click Next.

3. Select streams

The connector lists one stream per SugarCRM module the user can access, so the list depends on your instance and on the user’s role. For faster extractions, select only the modules that are relevant to your analysis.
Tip: The stream can be found more easily by typing its name.
Select the streams and click Next.

4. Configure data streams

Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.
  • Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
  • Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
  • Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
  • Sync Type: keep the suggested type. Modules with a modification date (almost all of them) are Incremental: each sync reads only the records changed since the previous one and merges them into the table. Modules without it are Full table: each sync reads them whole and replaces the table.
Once you are done configuring, click Next.

5. Configure data source

Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). Records are read incrementally, so an hourly or daily sync works well. Optionally, you can configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here. Once you are ready, click Next to finalize the setup.

6. Check your new source

You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.
For you to be able to see it on your Catalog, you need at least one successful source run.

Streams and Fields

Available streams

Each SugarCRM module becomes one stream, named after the module in lowercase with underscores (Accounts becomes accounts, RevenueLineItems becomes revenue_line_items, a custom module abc_Projects becomes abc_projects). The slug is the exact identifier to pass when creating the source via API. Every stream has the primary key id. The most common modules are listed below. Which ones exist depends on your SugarCRM edition, your configuration, and the user’s role. Modules that hold no business records or hold credentials are not offered: Home, Calendar, the activity stream, administration and configuration modules, OAuth keys and tokens, email account settings, schedulers, trackers, user preferences, and forecast worksheets. Records link to each other through their *_id fields: for example contacts.account_id, opportunities.account_id, cases.account_id, and assigned_user_id = users.id in every module. Activities (calls, meetings, tasks, notes) point to their record with parent_type (the module) and parent_id.

Fields by stream

Each table has a column for every field of its module that SugarCRM stores, including custom fields (their names end in _c), plus a few computed fields that are useful as they are: the names of related records (for example account_name and assigned_user_name), the email addresses of people and companies, teams, and tags. Relationship links and password fields are not loaded. Columns are named like the SugarCRM fields. Dates and times are in UTC. Fields marked String (JSON) hold a list as JSON text; use your warehouse’s JSON functions to read them.
Table: one per module · Primary key: id · Sync: Incremental (date_modified), or Full table for modules without it
Table: accounts · Primary key: id · Sync: Incremental (date_modified)Typical standard fields, in addition to the fields of every module:
Tables: contacts, leads · Primary key: id · Sync: Incremental (date_modified)
Table: opportunities · Primary key: id · Sync: Incremental (date_modified)
Table: cases · Primary key: id · Sync: Incremental (date_modified)
Tables: calls, meetings, tasks · Primary key: id · Sync: Incremental (date_modified)

Implementation Notes

Data Quality Considerations

  • What the user sees is what you get. The connector reads as the configured user. Modules the user’s role cannot list are not offered or, if access is removed later, show as failed with a message saying so while the other tables keep syncing. Fields hidden by field-level security come empty.
  • How tables stay up to date. SugarCRM updates a record’s date_modified whenever it changes. Each sync reads the records modified since the previous one, starting 10 minutes earlier to cover saves that finish late, and merges them into the table. A record edited while a sync runs is read again with its newest version.
  • Names of related records and email addresses. Columns such as account_name, assigned_user_name, parent_name, and email are filled by SugarCRM from the related record when the record is read. Renaming an account or a user, or changing an email address’s opt-out or invalid flag, does not change the modification date of the records that point to it, so Incremental tables keep the value as of each record’s last modification. For the current value, join on the *_id fields (account_id, assigned_user_id, parent_id) with the related table, or run a full sync periodically.
  • Deleted records. SugarCRM does not list deleted records. A record deleted in SugarCRM stays in an Incremental table as it was last loaded; run a full sync of the source to remove it. Full table tables drop it on the next sync.
  • Relationships between modules. Many-to-many relationship tables (for example, which contacts take part in which opportunities) are not modules and are not loaded. One-to-many links are in the *_id fields of each record.
  • New fields. A field added in SugarCRM appears in the table after you refresh the stream’s columns in Nekt. A field deleted or renamed in SugarCRM comes empty, and the sync log names it.
  • Values that do not fit their type. A value that cannot be read as its column type (for example, letters in an integer field) is loaded empty, and the sync log says how many values in which columns.
  • Full table tables are never half updated. The connector reads all the data of a full table table before writing any of it. If SugarCRM fails while it is read, nothing of that table is sent and the sync shows it as failed.

API Limits & Performance

  • SugarCRM does not document a request limit for its REST API. When an instance asks the connector to slow down, it waits and tells you in the sync log.
  • Records are read 200 per request by default, one request at a time. Modules with many fields or very long texts (such as emails) take longer per record.
  • The list of modules and fields is read when you set up or edit the source. Each sync only reads the definitions of the selected modules.