Download data from SuiteCRM.

Parameters:

Parameters:
See dedicated page for more information.
The SuiteCRM Download action pulls records from a SuiteCRM instance through OAuth-secured REST calls and outputs them as rows into the pipeline. It supports all standard modules (e.g., accounts, contacts, leads, opportunities, cases, documents, emails, etc.) and accepts verbatim API filter strings, so you can pass SuiteCRM REST query parameters exactly as documented by SuiteCRM (limit, offset, order, where filters…).
Use this action to:
This action also works when accessing the web through a PROXY server.
To use this action, you’ll need to get your credentials from your SuiteCRM Website.
Before using the SuiteCRM actions inside ETL, you need to get these 2 parameters:
• the Client ID (Parameter P4)
• the Client Secret (Parameter P5)
…from the SuiteCRM website. Here are the steps to get these 2 parameters:




5. Inside the next form, you must enter a name (you can choose any name) and a “secret”. The “secret” is the parameter “Client Secret” (parameter P5 from ETL):

This action does not require upstream rows. It acts as a source and produces rows.
All configuration is done via parameters.
| Name (UI) | Id | Type | Required | Default | Description |
|---|---|---|---|---|---|
| Module to list | idModule |
Enum (SuiteCRM module) | ✅ | — | The SuiteCRM module to export. Examples: accounts, contacts, leads, opportunities, cases, documents, emails, etc. |
| idFilter | idFilter |
String | ❌ | (empty) | Passed verbatim as the query part for the SuiteCRM REST endpoint. Use it to set filter[limit], filter[offset], filter[order_by], and filter[where] conditions, etc. See Filter cookbook below. |
| URL | url |
String (URL) | ✅ | — | Base URL of your SuiteCRM, e.g., https://acme.suiteondemand.com. No trailing slash needed. |
| Client ID | CID |
String (secret) | ✅ | — | OAuth Client ID obtained from SuiteCRM Admin → OAuth Clients. |
| Client secret | CS |
String (secret) | ✅ | — | OAuth Client Secret obtained from SuiteCRM Admin → OAuth Clients. |
| Debug information level | idDebug |
Enum | ❌ | nothing |
Logging verbosity for this action. Options: nothing, verbose. |
| Optional: extra parameters for cURL | idOptional |
String | ❌ | (empty) | Advanced: extra flags appended to cURL (e.g., timeouts, TLS versions). Leave empty unless directed by support. |
| Number of retries on connection error | nRetry |
Integer | ❌ | 3 |
Retry attempts for transient network errors. |
Each SuiteCRM entity returned becomes one row in the pipeline. Columns are the fields exposed by the module. Examples:
accounts (typical columns)
id, name, website, industry, phone_office, phone_alternate,billing_address_street, billing_address_city, billing_address_state, billing_address_postalcode, billing_address_country,shipping_*, assigned_user_id, date_entered, date_modified, deletedcontacts (typical columns)
id, first_name, last_name, title, email1, email2, phone_work, phone_mobile,primary_address_*, assigned_user_id, account_id, date_modified, deletedAdd the action suiteCRMDownload to your pipeline.
Set parameters:
Module to list: accounts
URL: https://acme.suiteondemand.com
Client ID / Client secret: paste values from SuiteCRM (Admin → OAuth Keys → OAuth Clients).
parameters.idFilter:
filter[limit]=500&filter[order_by]=date_modified:DESC
(Optional) Filter further using a downstream Filter/Where action if you prefer ETL-side filtering.
Write the data with a writeCSV action (example settings):
assets/SuiteCRM_Accounts_YYYYMMDD.csv,UTF-8Run the pipeline.
Post-run validation
id column has no nulls and is uniquedate_modified max value is recentThe idFilter string is appended as the query string to the REST endpoint. Keep it URL-encoded. Common patterns:
Limit & paging
First page of 500:
filter[limit]=500
Page 2 (offset 500):
filter[limit]=500&filter[offset]=500
Sort
filter[order_by]=date_modified:DESC
Where conditions (examples)
Name starts with “Acme”:
filter[where][0][field]=name&filter[where][0][operator]=starts&filter[where][0][value]=Acme
Industry equals “Technology” AND not deleted:
filter[where][0][field]=industry&filter[where][0][operator]=eq&filter[where][0][value]=Technology&filter[where][1][field]=deleted&filter[where][1][operator]=eq&filter[where][1][value]=0
Modified since a date (UTC ISO 8601 recommended):
filter[where][0][field]=date_modified&filter[where][0][operator]=gte&filter[where][0][value]=2025-09-01T00:00:00Z
ID in list:
filter[where][0][field]=id&filter[where][0][operator]=in&filter[where][0][value]=["a1","a2","a3"]
accounts, contacts, opportunities to a lakehouse.cases with SLA fields for dashboards.documents and metadata for compliance review.