Please note: This content is intended for Practifi System Administrators and is technical. The steps described in this article may not be completed without System Administrator permissions. Please discuss your integration installation plans with your Practifi Customer Support Team for their assistance.
Overview
The Black Diamond integration connects Practifi with Black Diamond’s wealth management platform, enabling bidirectional synchronization of client portfolios, assets, holdings, and contact information. This integration automatically keeps client financial data up to date across both systems, reduces manual data entry, and gives advisors a comprehensive view of clients in Practifi so that they can spend more time on client relationships and less on data reconciliation.
This article guides System Administrators through the complete enablement process, including prerequisites, authentication configuration, custom settings, and scheduled job setup. The integration uses OAuth 2.0 authentication and connects via Black Diamond’s Portfolio API and Client Relationship API.
For instructions on synchronizing large amounts of Black Diamond records with automation, see Using Black Diamond Automated Bulk Sync.
Please note: To enable this integration, you'll need to coordinate with the Practifi Support Team to get the required authentication credentials. Please contact your CSM or Practifi Support before beginning the enablement process.
- Prerequisites
- Understanding the Integration Architecture
- Assigning Permission Sets
- Creating the Auth Provider
- Configuring Remote Site Settings
- Creating Named Credentials
- Configuring Practifi Trigger Settings
- Configuring Black Diamond Integration Settings
- Adding Black Diamond as a Source Value
- Scheduling the Synchronization Job
- Enabling the Client Relationship API
- Understanding Data Mappings
- Understanding Portfolio Deletion Behavior
- Monitoring and Troubleshooting
- Security Considerations
- Data Removal Limitations
Prerequisites
Before beginning the enablement process, ensure you have the following:
- Salesforce System Administrator access
- A Practifi license for the integration user
- An active Black Diamond subscription with valid credentials
- Black Diamond username and password for initial OAuth setup
- Coordination with the Practifi Support Team to obtain Partner Consumer Key and Secret credentials
The integration requires both the Partner Consumer Key and Partner Consumer Secret issued by Black Diamond to Practifi. These credentials are shared across all mutual client firms and must be obtained through the Practifi Support Team.
Understanding the Integration Architecture
The Black Diamond integration uses two API endpoints to synchronize data between systems. Understanding these APIs helps you configure the integration appropriately for your firm’s needs.
Legacy Portfolio API
The Legacy Portfolio API synchronizes portfolio data, including account information and asset details. This API provides the foundation for financial data synchronization and is required for all Black Diamond integrations. The Legacy API endpoint is https://api.bdreporting.com.
Client Relationship API
The Client Relationship API extends the integration capabilities to include comprehensive client and contact synchronization, holdings data, and bidirectional sync functionality. When enabled, this API allows Practifi to send entity and contact updates back to Black Diamond, keeping client information consistent across both platforms without duplicate data entry. The Client Relationship API endpoint is https://api.blackdiamondwealthplatform.com.
Please note: The Client Relationship API covers all data points available in the Legacy API, plus additional data. New implementations should enable the Client Relationship API for the most comprehensive synchronization capabilities. The only reason to use only the Legacy API is if it meets all your firm’s data requirements and you want to avoid reconfiguring an existing integration.
Data Flow Summary
Inbound data (Black Diamond to Practifi) includes portfolios, client relationships, accounts, and holdings.
Outbound data (Practifi to Black Diamond) includes entity, contact, and address data. Outbound synchronization requires the Client Relationship API.
| Black Diamond |
|
Practifi | |
|
The integration uses two API endpoints to enable comprehensive bidirectional data synchronization.
Assigning Permission Sets
Users who need to access Black Diamond integration features require appropriate permission sets. The permission set you assign depends on which API version your firm uses.
To assign permission sets:
- Navigate to Setup by clicking the gear icon in the upper right-hand corner and selecting Setup.
- Use the Quick Find search bar to search for and select Users.
- Click on the name of the user who needs the permission set.
- In the Permission Set Assignments section, click Edit Assignments.
- Add one of the following permission sets to the Enabled Permission Sets list:
- Practifi - Integrations - Black Diamond (Portfolio) for firms using only the Legacy API
- Practifi - Integrations - Black Diamond (Client Relationship) for firms using the Client Relationship API
-
Click Save.
Select the appropriate Black Diamond permission set based on your firm’s API configuration.
Please note: While you can technically add both permission sets, this is not recommended. Enabling both permission sets displays two data tables within Settings > Integrations, which may confuse users.
Creating the Auth Provider
The Auth Provider configuration establishes the OAuth 2.0 authentication connection between Practifi and Black Diamond.
To create the Auth Provider:
- In Salesforce Setup, use the Quick Find search bar to search for and select Auth. Providers.
- Click New.
- Configure the following fields:
| Field | Value |
|---|---|
| Provider Type | BlackDiamondAuthProvider |
| Name | Black Diamond (or another meaningful name) |
| URL Suffix | BlackDiamond (auto-created from Name) |
| Access Token URL | https://login.bdreporting.com/connect/token |
| Callback Url | https://login.bdreporting.com |
| Client Id | (obtain from Practifi Support) |
| Client Secret | (obtain from Practifi Support) |
| Password | Your Black Diamond Portal Password |
| Username | Your Black Diamond Portal Username |
| Execute As | Any user with the Manage Users permission |
- Click Save.
-
After saving, copy the Callback URL displayed on the page. You will need this value for the Custom Settings configuration.
Please note: Choose the Name value carefully and do not delete and recreate this record after initial creation. Salesforce retains references to the original name, and changes may cause authentication issues.
Configuring Remote Site Settings
Remote Site Settings authorize Practifi to communicate with Black Diamond’s API endpoint.
To configure Remote Site Settings:
- In Salesforce Setup, use the Quick Find search bar to search for and select Remote Site Settings.
- Click New Remote Site.
- Configure the following fields:
| Field | Value |
|---|---|
| Remote Site Name | Black_Diamond |
| Remote Site URL | https://login.bdreporting.com |
| Active | Checked |
-
Click Save.
The Remote Site Setting authorizes communication with the Black Diamond authentication endpoint.
Creating Named Credentials
The integration requires two Named Credentials: one for the Legacy API and one for the Client Relationship API. Both credentials must be configured for the integration to function correctly.
Creating the Legacy Named Credential
- In Salesforce Setup, use the Quick Find search bar to search for and select Named Credentials.
- Click the dropdown arrow next to New and select New Legacy.
- Configure the following fields:
| Field | Value |
|---|---|
| Label | Black Diamond Legacy |
| Name | Black_Diamond_Legacy (auto-created from Label) |
| URL | https://api.bdreporting.com |
| Identity Type | Named Principal |
| Authentication Protocol | OAuth 2.0 |
| Authentication Provider | (Select the Auth Provider created in the previous step) |
| Scope | (Leave empty) |
| Start Authentication Flow on Save | Checked |
| Generate Authorization Header | Checked |
- Click Save. This redirects you to the Black Diamond login page.
- Enter your Black Diamond credentials to complete authentication.
-
Verify that the Authentication Status shows Authenticated.
The Legacy Named Credential connects to the Portfolio API endpoint.
Please note: You may encounter an error when saving if Custom Settings are not yet configured. The Named Credential will be finalized after the Custom Settings configuration is complete.
Creating the Client Relationship Named Credential
- In Named Credentials, click the dropdown arrow next to New and select New Legacy.
- Configure the following fields:
| Field | Value |
|---|---|
| Label | Black Diamond |
| Name | Black_Diamond (auto-created from Label) |
| URL | https://api.blackdiamondwealthplatform.com |
| Identity Type | Named Principal |
| Authentication Protocol | OAuth 2.0 |
| Authentication Provider | (Select the Auth Provider created previously) |
| Scope | (Leave empty) |
| Start Authentication Flow on Save | Checked |
| Generate Authorization Header | Checked |
- Click Save. This redirects you to the Black Diamond login page.
- Enter your Black Diamond credentials to complete authentication.
-
Verify that the Authentication Status shows Authenticated.
The Client Relationship Named Credential connects to the comprehensive API endpoint for bidirectional sync.
Configuring Practifi Trigger Settings
Trigger Settings control which Practifi objects are synchronized with Black Diamond. These settings must be enabled for the integration to process data correctly.
To configure Trigger Settings:
- In Salesforce Setup, use the Quick Find search bar to search for and select Custom Settings.
- Click the Manage link next to Practifi Trigger Settings.
- Click Edit.
- Ensure the following checkboxes are selected:
- Account
- Black Diamond Portfolio
- Contact
- Relationship
- Contact Point Address (if Contact Point Address sync is required)
- Contact Point Email
- Contact Point Phone
- External System Item
-
Click Save.
Enable triggers for all objects that should participate in Black Diamond synchronization.
Configuring Black Diamond Integration Settings
The Black Diamond Integration Settings control the synchronization behavior between systems, including which Named Credentials to use and which sync features to enable.
To configure Black Diamond Integration Settings:
- In Salesforce Setup, use the Quick Find search bar to search for and select Custom Settings.
- Click the Manage link next to Black Diamond Integration Settings.
- Click New above the Default Organization Level Value section.
Please note: Use the New button at the top of the page, not the one at the bottom. Using the bottom New button creates a Custom Setting Action and causes errors when saving Named Credentials.
- Configure the following fields:
| Field | Value | Purpose |
|---|---|---|
| Callback URL | (Paste the URL copied from the Auth Provider step) | Authentication callback |
| Named Credentials Legacy | Black_Diamond_Legacy | Must match Legacy Named Credential name |
| Named Credential | Black_Diamond | Must match Client Relationship Named Credential name |
| Use Client Relationships to Link Records | Checked (if using Client Relationship API) | Enables client relationship sync and holding data |
| Enable PF to BD Client Relationship Sync | Checked (for bidirectional sync) | Enables outbound sync from Practifi to Black Diamond |
| Sync Contact Point Address | Optional | Enables address sync to Black Diamond |
| Sync Holdings Batch Size | 50 (default) | Controls holding sync batch size |
| Sync Assets Batch Size | 50 (default) | Controls asset sync batch size |
- Click Save.
After saving, return to Named Credentials, open the Black Diamond credential, and click Save again. The Authentication Status should now display as Authenticated.
Adding Black Diamond as a Source Value
The Source field on Asset/Liability records identifies the data source, providing your team with a clear audit trail for synchronized records and making it easier to distinguish data originating in Black Diamond from records entered directly in Practifi. Adding Black Diamond as a source value allows the integration to tag synchronized records properly.
To add Black Diamond as a source value:
- In Salesforce Setup, click Object Manager in the top navigation.
- Search for and select Asset/Liability.
- Click Fields & Relationships in the left sidebar.
- Click Source.
- Scroll to the bottom of the page and click New in the picklist values section.
- Enter Black Diamond as the new value.
- Click Save.
Making the Value Visible
After adding the value, make it available in the appropriate record types:
- Return to the Asset/Liability object in Object Manager.
- Click Record Types.
- Click Asset.
- In the Picklists Available for Editing section, click Source.
- Click Edit next to the Source field.
- Move Black Diamond from the Available Values list to the Selected Values list.
-
Click Save.
Add Black Diamond to the Source picklist and make it visible in the Asset record type.
Scheduling the Synchronization Job
The integration uses a scheduled Apex job to synchronize data from Black Diamond to Practifi daily, so advisors begin each day with current portfolio and account information ready in Practifi. You can schedule this job through the Setup interface or via the Developer Console.
Option 1: Scheduling Through Setup
- In Salesforce Setup, use the Quick Find search bar to search for and select Apex Classes.
- Click Schedule Apex.
- Configure the job with the following settings:
- Job Name: BlackDiamondSync
- Apex Class: Click the magnifying glass and select BlackDiamondScheduledSync
- Frequency: Select all days of the week
- Start Date: Today’s date
- End Date: A date far in the future
- Preferred Start Time: An early morning time during off-peak hours (considering Black Diamond’s US location)
-
Click Save.
Configure the scheduled job to run daily during off-peak hours.
Option 2: Scheduling Through Developer Console
For more precise control over the schedule timing:
- In Salesforce Setup, click the Support Source dropdown in the upper right and select Developer Console.
- Use Ctrl + E to open the Execute Anonymous window.
- Enter the following code (adjust the schedule string as needed):
practifi.BlackDiamondScheduledSync bd = new practifi.BlackDiamondScheduledSync();
// Seconds Minutes Hours Day_of_month Month Day_of_week
String sch = '00 00 06 * * ?';
String jobID = System.schedule('BD Schedule', sch, bd);
- Click Execute.
- Navigate to Scheduled Jobs in Setup to verify the job was created.
Please note: The schedule string uses cron format with time in GMT. The example above runs at 6:00 AM GMT. Adjust the hours value to run during your preferred off-peak time, taking into account your local time zone offset.
Enabling the Client Relationship API
The Client Relationship API provides enhanced synchronization capabilities, including holding data and bidirectional sync with Black Diamond. New integrations should enable this API to provide the most comprehensive functionality and keep client information aligned across both systems.
To enable the Client Relationship API:
- In Salesforce Setup, use the Quick Find search bar to search for and select Custom Settings.
- Click Manage next to Black Diamond Integration Settings.
- Click Edit.
- Configure the following settings:
- Use Client Relationships to Link Records: Checked
- Enable PF to BD Client Relationship Sync: Checked
- Sync Contact Point Address (optional): Check if you want addresses to sync to Black Diamond
-
External Id Contact (optional): Leave blank to use
practifi__External_Id__c, or specify an alternative field
-
Click Save.
Enable the Client Relationship API settings to activate bidirectional sync and holding data.
Please note: When Sync Contact Point Address is enabled, addresses synced from Practifi overwrite any addresses previously created directly in Black Diamond.
Understanding Data Mappings
The integration maps data between Black Diamond and Practifi according to predefined field mappings. Understanding these mappings helps you anticipate how data appears in each system.
Account to Asset/Liability Mapping
Black Diamond account records sync to Practifi Asset/Liability records with the following key mappings:
| Black Diamond Field | Practifi Field | Notes |
|---|---|---|
| displayName | Name | Primary name field; falls back to name, then account |
| name | Description | Stores system-generated name |
| accountNumber | Account_Number__c | |
| [custodian.name](http://custodian.name) | Custodian_Name__c | |
| asOfDate | As_At__c | |
| startDate | Date_Opened__c | |
| closedDate | Date_Closed__c | |
| supervised | Under_Advice__c | |
| If closedDate is empty, Owned; otherwise, Disposed | Stage (Asset/Liability) | When a portfolio is deleted, associated assets are automatically set to the Disposed stage |
Contact Data Mapping
Black Diamond contact records sync to Practifi Contact records with the following key mappings:
| Black Diamond Field | Practifi Field | Notes |
|---|---|---|
| firstName | FirstName | |
| lastName | LastName | |
| middleName | practifi__Middle_Name__c | Truncated to 100 characters |
| dateOfBirth | Birthdate | |
| gender | practifi__Gender__c | |
| displayName | Name |
Please note: Certain fields are truncated to meet Black Diamond’s character limits. The middle name, suffix, nickname, and street address fields are truncated to 100 characters. Job title truncates to 40 characters.
Holding Data Mapping
When the Client Relationship API is enabled, holding records sync with the following mappings:
| Black Diamond Field | Practifi Field |
|---|---|
| asOfDate | As_At__c |
| assetName | Name |
| segmentName | Segment_Name__c |
| className | Class_Name__c |
| ticker | Product_Code__c |
| units | Units__c |
| marketValue/units | Price__c |
Understanding Portfolio Deletion Behavior
When a Black Diamond Portfolio is deleted, the integration automatically handles associated assets to maintain data integrity in Practifi and keep AUM reporting accurate as portfolios change.
Asset Lifecycle Overview
The diagram below distinguishes active stages from non-active stages and shows which asset stages are included in AUM calculations:
|
Non-Active Stages (Excluded from AUM)
|
|
|
|
Active Stages (Included in AUM)
|
|
|
An asset in Practifi is automatically marked as Disposed when its associated Black Diamond portfolio is deleted, ensuring accurate AUM calculations.
Automatic Asset Disposal
When a portfolio is deleted in Black Diamond:
- Associated assets and liabilities are automatically marked as Disposed in Practifi
- This applies to both Portfolio-based and Client Relationship-based integration models
- Disposed assets are retained for historical reference but excluded from AUM calculations
- The transition to Disposed status happens automatically during the next scheduled synchronization
AUM Calculation Updates
To ensure accurate reporting and data consistency, AUM rollup calculations now exclude assets in the following non-active stages:
- Disposed
- Draft
- Declined
- Did Not Proceed
- Potential
Only assets with the following stages are included in AUM calculations:
- Owned
- Application
- Financed
Affected Rollup Jobs
The following rollup jobs have been updated to reflect this behavior:
Core Product:
- AUM To Service
- Annual Revenue To Service
- AUM To Financial Product
- Number of Assets
Superannuation:
- Member Account to Value
- Total Member Accounts
- Active Member Accounts
Please note: This automatic disposal process prevents orphaned records with stale dates from appearing in your client data when portfolios are removed from Black Diamond.
Monitoring and Troubleshooting
After enabling the integration, monitor synchronization status and address any issues that arise.
Monitoring Sync Status
Review synchronization activity through these locations:
- Scheduled Jobs: Setup > Scheduled Jobs to verify the BlackDiamondSync job runs as expected
- Apex Jobs: Setup > Apex Jobs to review execution history and identify failures
- Integration Logs: Review Integration Log records where External System equals Black Diamond. For instructions on how to do this, see Using Salesforce Inspector Reloaded in Practifi.
Troubleshooting Full Integration Failure
If synchronization is not occurring at all:
- Verify that all configuration steps in this article have been completed correctly.
- Confirm that both Named Credentials show Authenticated status.
- Check that the scheduled job exists and is active in Setup > Scheduled Jobs.
- Review Apex Jobs to confirm the Black Diamond job executed without errors.
Troubleshooting Partial Integration Issues
If some data synchronizes, but other data does not:
- Review Practifi Trigger Settings to ensure all required objects are enabled.
- Verify Black Diamond Integration Settings are configured correctly.
- Check Integration Log records for specific error messages.
- Review the Apex job execution status for failures.
Troubleshooting Record-Level Sync Failures
If specific records fail to synchronize:
- For outbound sync, confirm the Send to Black Diamond button was clicked to initiate sync for the client record.
- Verify that the External ID Contact field is correctly configured.
- Ensure existing Black Diamond contact IDs are populated in Practifi to prevent duplication.
- Confirm Enable PF to BD Client Relationship Sync is enabled in Custom Settings.
Troubleshooting Asset Stage Issues
If assets are unexpectedly showing as Disposed:
- Verify whether the associated Black Diamond portfolio still exists.
- Check if the portfolio was recently deleted in Black Diamond.
- Confirm that disposed assets should be excluded from AUM calculations based on your firm's reporting requirements.
- Review the asset's stage history to determine when and why the status changed.
Security Considerations
The Black Diamond integration requires careful attention to security configuration to protect client data.
User Permissions
- Users require appropriate permission sets assigned based on the API version in use.
- The integration user must have the Practifi - Administrator permission set group.
- Permission set selection (Portfolio vs. Client Relationship) determines which integration features users can access.
Authentication Security
- OAuth 2.0 authentication provides secure token-based access.
- Named Credentials store authentication tokens securely within Salesforce.
- Both Legacy and Client Relationship APIs require separate Named Credentials.
- Refresh tokens may be used instead of passwords after initial authentication setup.
Data Access
- The Black Diamond username used during setup determines which client firm data is accessible through the API.
- Sandbox credentials are separate from production credentials.
- Two-way sync is configurable via Custom Settings, allowing you to control the direction of data flow.
Data Removal Limitations
The integration has specific limitations regarding the removal of data that has been synchronized to Black Diamond. Understanding these limitations helps set appropriate expectations.
Address Data
When removing address information from Practifi:
- Changes to street and other address fields sync successfully.
- Removing only the street field (while other fields remain) does not trigger a sync.
- Completely removing all address fields does not remove existing data from Black Diamond; street and country values persist.
Please note: Once address data syncs to Black Diamond, it cannot be removed entirely via Practifi. Some address components persist even when all fields are cleared.
Phone Numbers and Emails
Deleting phone number and email fields in Practifi does not remove them from Black Diamond. Once synced, these contact details persist in Black Diamond even after removal from Practifi.
Entity Data
The Entity Name field is required and cannot be removed. Attempting to clear it does not trigger a sync. Address fields on entities follow the same limitations as contact address fields.
Gender Field Mapping
Gender field values map as follows:
| Practifi Value | Black Diamond Value |
|---|---|
| Male | Male |
| Female | Female |
| None | Not Specified |
| Other | (No mapping; field unchanged) |
The Other value cannot be synchronized because Black Diamond only supports Male, Female, and Not Specified values.
For any additional assistance with the Black Diamond integration, please contact the Practifi Support Team.
Comments
Article is closed for comments.