# Salesforce plugin
Integrates Salesforce (opens new window) CRM with the Epona provisioning service. The plugin syncs matters, leads, and custom objects from Salesforce to SharePoint.
DLL: Epona.Salesforce.dll
# What it does
- Object sync — reads any Salesforce object type (Lead, Case, Account, custom objects) via SOQL queries and creates or updates corresponding records in SharePoint.
- Field mapping — maps Salesforce fields to SharePoint properties with flexible query filtering and field selection.
- Multi-object support — configure multiple sync jobs for different Salesforce objects or queries.
# Deployment
- Copy
Epona.Salesforce.dllto the service's bin directory. - Restart the provisioning service.
- Open the Configurator, select the relevant
SharepointCfg, and configure the Salesforce section that now appears in the property grid.
# Configuration reference
# Connection settings
# Name
Type: string | Default: Salesforce
Display name for this plugin configuration.
# Debug
Type: boolean | Default: false
Enables verbose debug logging.
# Test
Type: boolean | Default: false
When enabled, exports source JSON and result JSON to the ./Monitor/Test directory for validation without modifying state.
# RedirectUrl
Type: string | Default: https://oauth2.eponalegal.com/
OAuth redirect URL. Change only if using a custom authentication endpoint.
# ClientId
Type: string
Salesforce OAuth client ID.
# SecretKey
Type: string
Salesforce OAuth secret key. Stored encrypted. Managed via the Secrets manager.
# Username
Type: string
Salesforce username for authentication.
# Password
Type: string
Salesforce password. Stored encrypted. Managed via the Secrets manager.
# SOQL query configuration
# QueryObjectType
Type: string
The Salesforce object type to fetch (e.g., Lead, Case, Account, or custom object name).
# QueryFields
Type: string | Default: FIELDS(STANDARD)
Fields to fetch, comma-separated. Use FIELDS(STANDARD) for standard fields or specify field names explicitly.
# QueryWhere
Type: string | Default: IsDeleted = false
SOQL WHERE clause to filter results. Example: Status = 'Active' AND CreatedDate > 2024-01-01.
# Default values
# DefaultClientCode
Type: string
Default client code used when a Salesforce record has no mapped client code.
# DefaultClientName
Type: string
Default client name used when a Salesforce record has no mapped client name.
# Field mapping
# MapFieldToClientCode
Type: string
Salesforce field name that maps to SharePoint client code.
# MapFieldToClientName
Type: string
Salesforce field name that maps to SharePoint client name.
# MapFieldToMatterCode
Type: string
Salesforce field name that maps to SharePoint matter code.
# MapFieldToMatterName
Type: string
Salesforce field name that maps to SharePoint matter name.
# FieldMappingMatter
Type: string
Maps Salesforce fields to SharePoint matter fields. Syntax: salesforceField=sharepointField;salesforceField2=sharepointField2.
# FieldMappingClient
Type: string
Maps Salesforce fields to SharePoint client fields. Same syntax as FieldMappingMatter.
# Scheduling
# IntervalInMinutes
Type: integer
How often the sync job runs.
# StartTime
Type: TimeSpan
Earliest time of day the job may run. Leave empty to run at any time.
# EndTime
Type: TimeSpan
Latest time of day the job may run. Leave empty to run at any time.
# LastRunDateTime
Type: datetime
Timestamp of the last successful sync. Updated automatically.
# Example configuration
| Property | Example value |
|---|---|
Name | Salesforce |
ClientId | your-client-id |
Username | api-user@company.salesforce.com |
QueryObjectType | Lead |
QueryFields | Id, FirstName, LastName, Company, Phone, Email |
QueryWhere | IsDeleted = false AND Status = 'Open' |
MapFieldToClientCode | Company |
MapFieldToClientName | Company |
MapFieldToMatterCode | Id |
MapFieldToMatterName | Name |
FieldMappingMatter | Phone=PhoneNumber;Email=EmailAddress |
IntervalInMinutes | 60 |
Debug | false |
# SOQL query examples
Fetch all open leads:
SELECT FIELDS(STANDARD) FROM Lead WHERE IsDeleted = false AND Status = 'Open'
Fetch cases with a specific status:
SELECT Id, CaseNumber, Subject, Status, Priority FROM Case WHERE Status = 'Open' AND Priority = 'High'
Fetch custom objects with date filtering:
SELECT Id, Name, Owner.Name, CreatedDate FROM Custom_Matter__c WHERE CreatedDate > 2024-01-01 AND Status__c = 'Active'
# Related
- Configuration reference — provisioning configuration reference
- Plugins index — list of available plugins