# Implement plugin
Customer-specific plugin for syncing customers, projects, vendors, and employees from SQL Server to SharePoint. Includes scheduled imports from source system and exports of user matter lists and project contacts to destination system.
DLL: Epona.Implement.dll
# What it does
- Customer sync — imports customers/clients from SQL Server
- Project sync — imports projects and assignments
- Vendor sync — imports vendor information
- Employee sync — imports employee and user data
- Matter list export — exports user-assigned matters back to SQL Server
- Project contact export — exports project contact information
- Bidirectional sync — enables integration between SharePoint and legacy systems
- Scheduled execution — periodic imports and daily scheduled exports
# Prerequisites
- SQL Server instance with source customer/project data
- Second SQL Server instance for export destination (optional)
- Network connectivity to both database servers
- Target SharePoint site collections for matter sites
# Configuration
# Import source settings
# Disabled
Type: boolean | Required: No
Disable all Implement functionality
# SqlServer
Type: string | Required: Yes
Source SQL Server hostname or IP
# SqlDatabase
Type: string | Required: Yes
Source database name
# SqlUser
Type: string | Required: Yes
Source database login username
# SqlPassword
Type: string | Required: No
Source database password (encrypted)
# Import queries
# SqlCustomer
Type: string | Required: No
SQL query or file path for customer/client import
# SqlVendor
Type: string | Required: No
SQL query or file path for vendor import
# SqlProject
Type: string | Required: No
SQL query or file path for project import
# SqlProjectEmployees
Type: string | Required: No
SQL query for project-employee relationships
# SqlCustomerContacts
Type: string | Required: No
SQL query for customer contact information
# SharePoint column mapping
# MatterListParticipantsColumnName
Type: string | Default: ProjectEmployee | Required: No
SharePoint column name for project participants/employees
# ProjectExternalAccessColumnName
Type: string | Default: __externalaccess | Required: No
SharePoint column name for external access flag
# Execution schedule
# IntervalInMinutes
Type: int | Required: Yes
How often to import customer/project data (in minutes)
# Export destination settings
# ExportMyMattersTimespans
Type: TimeSpan (list) | Required: No
Times of day to export user matter lists (e.g., ["08:00:00", "17:00:00"])
# ExportProjectContactsTimespans
Type: TimeSpan (list) | Required: No
Times of day to export project contacts
# SqlServerExport
Type: string | Required: No
Destination SQL Server hostname for exports
# SqlDatabaseExport
Type: string | Required: No
Destination database name for exports
# SqlUserExport
Type: string | Required: No
Destination database login username
# SqlPasswordExport
Type: string | Required: No
Destination database password (encrypted)
# Query file format
SQL queries can be embedded or referenced as files:
{
"SqlCustomer": "SELECT ClientCode, ClientName, ContactEmail FROM Clients WHERE Active = 1",
"SqlProject": "queries/project-import.sql"
}
If a file path is provided (contains dot like queries/project.sql), the provisioning service reads from {bin-directory}/{path}.
# Synchronization flow
# Import cycle (periodic)
- Provisioning service starts Implement plugin
- Plugin connects to source SQL Server
- Executes customer, vendor, project, and employee queries
- Updates SharePoint site collections with imported data
- Waits for next interval before repeating
# Export cycle (scheduled times)
- At configured export times of day:
- Plugin reads matter assignments from SharePoint
- Connects to destination SQL Server
- Exports user-to-matter assignments
- Exports project contact listings
# Multiple export times
Define multiple daily export windows:
{
"ExportMyMattersTimespans": ["08:00:00", "12:00:00", "17:00:00"]
}
Matter lists are exported at 8am, noon, and 5pm daily.
# Security
Database passwords are encrypted using the provisioning service's encryption key:
- Source password encrypted at configuration time
- Export password encrypted separately
- Passwords decrypted only when establishing connections
- Passwords never logged or exposed in files
# Example configuration
| Property | Example value |
|---|---|
Disabled | false |
SqlServer | sqlserver.company.com |
SqlDatabase | Legal |
SqlUser | svc_epona |
SqlPassword | EncryptedPassword123 |
SqlCustomer | SELECT ClientCode, ClientName FROM Clients |
SqlProject | SELECT ProjectCode, ProjectName, ClientCode FROM Projects |
IntervalInMinutes | 120 |
ExportMyMattersTimespans | 08:00:00, 17:00:00 |
SqlServerExport | sqlserver-export.company.com |
SqlDatabaseExport | SharePointSync |
SqlUserExport | svc_export |
SqlPasswordExport | EncryptedPassword456 |
# Troubleshooting
# Common issues
| Issue | Cause | Resolution |
|---|---|---|
| Cannot connect to source | Wrong hostname or credentials | Verify SQL Server address, database name, username, and password |
| Customer/project import fails | SQL query error or schema change | Check SQL query syntax; verify source database columns exist |
| Export not running | Export time not configured or Disabled=true | Verify ExportMyMattersTimespans is set and Disabled=false |
| Missing data | Query not selecting all needed columns | Review and update SQL queries to include all required fields |
# Related
- Configuration reference — provisioning configuration reference
- Plugins index — list of available plugins