# 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

  1. Copy Epona.Salesforce.dll to the service's bin directory.
  2. Restart the provisioning service.
  3. 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'
Last Updated: 4/15/2026, 8:56:27 AM