These instructions refer to the Addepar integration released with the Marsanne product release of Practifi.
Our integration with Addepar enables 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)
- URL for the Named Credential, and the username and password for a user who is an Admin for the Addepar system (Step 3)
- Firm ID, which is necessary for connecting the two systems (Step 4)
- Arrange assistance from the Practifi Customer Support team for enabling the Addepar panel in the Integrations App (Step 7)
If your firm needs to show Asset and Holding currency figures in other than USD ensure that the Addepar portal has its firm-wide Reference Currency set to the required currency eg 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 a 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
- Activate Rollup Jobs
- 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
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 Orgs, and is only set up once by Practifi.
Go to Salesforce Setup under the user’s avatar/picture icon in the top right
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, 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 default
Consumer Key: <This is the partner Consumer Key issued to Practifi by Addepar, and shared by all mutual client firms. It is stored in LastPass within the name Addepar oAuth Prod. Consumer Key is Username.>
Consumer Secret: <This is the partner Consumer Secret issued to Practifi by Addepar, and shared by all mutual client firms. It is stored in LastPass within the name Addepar oAUTH Prod. Consumer Secret is Site Password.>
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 the name of an Admin user within Addepar, 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 logon page, on which the Admin user (an Admin user within Addepar) logs in with their username and password. The integration is then authenticated to link the two systems. 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 exactly 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
External Id Holding: practifi__External_Id__c
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 described) 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
Verbose Logging: Unticked. Tick only for testing
Portfolio Per Request: Number of Client Portfolios requested per Batch. Default is 10.
Verbose Logging: Unticked. Only tick if performing tests with Addepar.
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 takes place 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, view 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, and use the Add button to move it to the Right side, and click Save.
7. Add Account Mapping tab to Integrations Tab
The detailed steps for adding the Account Mapping tab to the Integrations App for Addepar will be completed by the Practifi Customer Support team. The step is essentially to upload a JSON file which has the tab layout for the Account Mapping function screen to the Integrations App. This JSON is held in bitbucket, and involves executing the JSON code in the Developer Console under Debug > Execute as Anonymous Window.
A FUTURE RELEASE WILL AUTOMATE THIS REQUIREMENT. IN THE MEANTIME, PLEASE CONTACT YOUR PRACTIFI CUSTOMER SUPPORT TEAM FOR FURTHER INSTRUCTIONS ON THESE STEPS
8. Ensure Rollup Jobs Active
Rollup Jobs for Addepar are included in the implementation package and are activated using the Settings > Rollup Summaries app.
Open the Settings app in Practifi
Ensure that the rollup job Addepar Portfolio Revenue to Client is set to Active. This is the rollup which totals the Annualized Revenue figures received from Addepar for each Portfolio and displays it at the Practifi Client level.
Click Save at the lower right of the panel.
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
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 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 should be sought 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 have has no effect on the final result but they are mandatory to 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: