Our integration with Addepar enables a list of client Assets and Holdings registered in Addepar to appear under the list of Assets recorded in Practifi without the need for data reentry. Values of Assets and Holdings are updated regularly through an overnight data synch job. The projected fee revenues accruing to the firm from billings for the management of the Assets are also shown as part of the client record.
THESE INSTRUCTIONS ARE DETAILED AND TECHNICAL IN NATURE. PLEASE DISCUSS YOUR INTEGRATION INSTALLATION PLANS WITH YOUR PRACTIFI CUSTOMER SUPPORT TEAM FOR THEIR ASSISTANCE.
Before You Start
Contact your Practifi Customer Success Manager and Addepar's Support team to let them know your firm's plans to integrate the two systems. The information required is:
- URL for the Remote Site setting (Step 1)
- URLs for Authorize Endpoint and Token Endpoints setting (Step 2)
- Obtain from the Practifi Customer Support team the Consumer Key and Secret Credentials established between Practifi and Addepar for this integration (Step 2)
- URL for the Named Credential, and the username and password for a user who is an Admin at the firm for the Addepar system (Step 3)
- Firm ID, which is necessary for connecting the two systems (Step 4)
- Obtain from the Practifi Customer Support team the practifi__External_Id_[x]__c data field names which may be used for linking Addepar Assets and Holdings (one for each of Assets and Holdings), and which do not conflict with any other integration already installed on the system. There are five such fields available on each. (Step 4)
There may be cases where your firm needs to show Asset and Holding currency figures other than USD to ensure that the Addepar portal has its firm-wide Reference Currency set to the required currency (e.g., CAD, SGP). Otherwise, the currency figures will be shown in Practifi in USD and will not match the figures which otherwise appear in the Addepar portal for those same Assets and Holdings.
Data Field Mapping
The following table details the mapping of values from Addepar across to Practifi Assets and Holdings.
Top Level Owner
(Addepar Client Name)
Mapped through Data Management page
(Current Value (total of Holding))
Category: Default set under Settings
Stage: OWNED, or DISPOSED*
Under Advice: Default set under Settings
(Unitised (Unit Value))
Value: Unit Price x Units
Stage: OWNED, or DISPOSED*
* The values of OWNED or DISPOSED are set at the Asset and Holding levels when the synchronization from Addepar is processed. When an Asset or Holding first appears and continues to appear between synchronizations, it is marked as OWNED. If the Asset or Holding no longer appears after synchronization, it is marked as DISPOSED. This is done to indicate to the Advisor that the asset is no longer recorded in Addepar. The Advisor may manually delete the Asset or Holding directly within Practifi.
The following steps are required to enable the Addepar Integration
- Create Remote Site Settings
- Create Auth Provider (performed by Practifi)
- Create Named Credential
- Configure Addepar Integration Settings
- Schedule Synch Job
- Add new Source value
- Add Account Mapping to Integrations App
- Create Lookup Rollup Summary
- Enable Addepar Triggers
- Dynamic Query Support (Optional)
1. Create Remote Site Settings
In Salesforce Setup, go to the Quick Find/Search bar, search for and click on Remote Site Settings.
Next, click on New Remote Site.
Supply the following:
Remote Site Name: Addepar
Remote Site URL: https://<client_prefix>.addepar.com
2. Create Auth Provider
Under OAuth 2.0, the Authentication Provider is set up between Addepar and Practifi for all Client Orgs. It is the same reference for all Client Organizations and is only set up once by Practifi.
Go to Salesforce Setup under the user’s avatar/picture icon in the top-right of the page.
Go to the Quick Find/Search bar, search for and click on Auth. Providers
Click on New
Complete the details on the new Auth Provider panel, as follows:
Supply the following:
Provider Type: StaticOAuthProvider
Name: Suggest using Addepar OAuth Choose the name carefully! Once the name has been created, please do not delete it and try to recreate it. Salesforce still retains a reference to the original name and will have trouble authenticating with Addepar again after the change.
URL Suffix: Follow the default
Consumer Key: <Please contact your Practifi Account Manager to obtain the Consumer Key.>
Consumer Secret: <Please contact your Practifi Account Manager to obtain the Consumer Secret.>
Authorize Endpoint URL: https://<client_prefix>.addepar.com/oauth2/authorize
Token Endpoint URL: https://<client_prefix>.addepar.com/api/public/oauth2/token
Default Scopes: portfolio files
Send Access Token in Header: Ticked
3. Create Named Credential
Create a Named Credential for accessing the Addepar client system. The step will require the Client to supply an Admin user's name within the Client for their Addepar system, who will authenticate the connection to Practifi through this Named Credential.
In Salesforce Setup, go to the Quick Find/Search bar, search for and click on Named Credentials.
Click on New Named Credential.
Supply the following:
Label: Suggest Addepar OAuth Prod for a Production system
Name: <follow default>
Identity Type: Named Principal
Authentication Protocol: OAuth 2.0
Authentication Provider: Addepar_UAT (per the Auth. Provider set up above in Step 1)
Scope: portfolio files
Start Authentication on Save: Ticked. Upon clicking Save, this will take the user to the Addepar login page, on which the Admin user (an Admin user within the Client for their Addepar system) logs in with their username and password. The integration is then authenticated to link the two systems, and the Authentication Status field changes to Authenticated.
Generate Authorization Header: Ticked
4. Activate Addepar Integration
In Salesforce Setup, go to the Quick Find/Search bar, search for, and click on Custom Settings.
Click Manage next to Addepar Integration Settings.
Click Edit. Complete the fields as per the screenshot below, then click Save.
Supply the following:
Annualize Days: 365 (the daily fee earnings figure for the assets in Addepar is multiplied by 365)
Asset Default Category: "Managed funds" is the default if this setting is left blank. This is the Asset Category name the Asset will receive when it is first received in an integration. Note this spelling and case must be the same as that defined in the list of Default Asset Categories (see Alternate Default Asset Category Codes instructions, below)
Asset Default Under Advice Status: Tick if new incoming Assets should be set as Under Advice when first received in an integration
Credentials: Name of the Named Credential set up at Step 3
External Id Asset Liability: practifi__External_Id_2__c Be sure to obtain the next available Id on the Client's system
External Id Holding: practifi__External_Id__c Be sure to obtain the next available Id on the Client's system
Firm Id: Addepar will allocate a Firm id for its clients
Is Test Env: Unticked. Only tick if performing tests with Addepar, as the integration will use a different (Addepar provided) URL path
Request Per Batch: 2 The number of Addepar Async Job requests per Apex batch
Time Between Batch: 5 The time in minutes between each Apex batch job
Portfolio Per Request: Number of Client Portfolios requested per Batch. Default is 10.
Verbose Logging: Unticked
Alternate Asset Default Category Codes
The codes available for use as the Asset Default Category can be found under Object Manager > Asset/Liability > Fields & Relationships > Category
Towards the end of the page is the list of available Asset Categories. Read off the name, which should be the default to be applied as the Asset Category. Be sure to type the name exactly, including capitals.
If the firm prefers to use a new Asset Category, click on New and add to the existing list. After this step, the newly added value will need to be made visible to users for selection. From the Asset/Liability Object Manager view, select Record Type, and select the Asset record type.
Select Fields & Relationships and Category, and Edit alongside the Category label
Select the value required from the Left side and use the Add button to move it to the Right side (Selected Values), and click Save.
5. Schedule Synch Job
The importing of Addepar Assets, Holdings, and Annualized Revenue figures occurs once a day, at the end of the processing day for Addepar. Bear in mind that Addepar is located in the USA, so the time-of-day chosen should be in the post-end-of-day processing hours for a USA business.
Go to the Quick Find/Search bar, search for and click on Apex Classes
Click on Schedule Apex
Look up AddeparScheduleSync and select as the Apex Class
Apply the required schedule, bearing in mind the end-of-day completion jobs on the Addepar system
6. Add Addepar as new Source Value
Add Addepar as a new Source in the Source list. This will distinguish Assets from Addepar from another system. Navigate to Object Manager > Asset/Liability > Fields & Relationships > Source
Towards the end of the page is the list of available Sources. To add a new Source (Addepar), click on New and add to the existing list.
After this step, the newly added value will need to be made visible to users for selection. From the Asset/Liability Object Manager, select Record Type, and select the Asset record type.
Select Fields & Relationships, and the Source picklist, and Edit alongside the Source field
Select the Addepar value from the left side, use the Add button to move it to the right side, and click Save.
7. Add Account Mapping tab to Integrations Table
Assign the Practifi - Integrations - Addepar User permission set to the users who need access to the Addepar Integration.
Go to Salesforce Setup, search and click Permission Sets. Click on Practifi - Integrations - Addepar User.
Click Manage Assignments, then click Add Assignments.
Select the users who will need access to Addepar and click Assign.
8. Create Lookup Rollup Summary
Go to the Settings App and select Lookup Rollup Summaries from the Navigation menu.
Click New and enter the details as per the screenshot below.
Click Save at the lower right of the panel.
This is the rollup that totals the Annualized Revenue figures received from Addepar for each Portfolio and displays it at the Practifi Client level.
9. Enable Addepar Triggers
Triggers for changes in Addepar data ensure that totals are carried forward for each Client record. Navigate to the Custom Settings panel
Locate the Practifi Trigger Settings line, and click Manage and then Edit.
Check the boxes for "Addepar Portfolio Rollups" and "Addepar Portfolio."
10. Dynamic Query Support (Optional)
Additional flexibility has been implemented in the Addepar integration to enable the currency of the money values to be retrieved in a currency other than the Reference Currency configured in Addepar. This involves adding Custom Metadata Types to the Salesforce configuration for Addepar.
After installation, the Addepar integration queries the Addepar system using the following query settings. This is the default query:
Below is an example of, once having completed the rows in this panel, money values being received from Addepar into Practifi as a specific currency rather than the default currency in Addepar (in this case, Japanese Yen). The currency conversion is done within Addepar.
To configure this adjustment, navigate to the Custom Metadata Types setting, and click on Manage Records for the row for Addepar Query Columns row:
Click New, and enter the required values. The only adjustment which we should seek is to change the ref_currency to another explicit currency. All the rows in the Default Query (above) should be repeated in this table.
Click Save or Save & New to continue.
The Label and Addepar Query Column Name columns do not affect the final result, but they must be filled.
Important: This setting will override the Default Query (shown above). Even one record of metadata in this table will override the entire Default Query.
Note: A wrong setting for one field will cause the whole integration to fail. Discuss your plans with a Practifi Customer Support Engineer.
Refer to Addepar documentation for more information about Query Settings: