Contact Us 1-800-596-4880

Salesforce Financial Services Cloud Setup Guide

This page describes how to configure an existing Salesforce Financial Services Cloud (FSC) instance to support the default MuleSoft Accelerator for Financial Services functionality. These instructions assume that the required FSC packages have been deployed to the target Salesforce instance and that the appropriate permissions have already been assigned.

Record Types

The following record types must exist in the corresponding objects for the accelerator assets to function correctly.

Salesforce Object Record Type

Account

Household

Financial Account

Blockchain Account

Financial Account

General Ledger Account

Financial Account

Money Market Account

Financial Account Transaction

Financial Account Transfer Transaction

Lead

Lead

Follow the instructions for each object below.

Account & Lead

To enable the Household record type in Account object, follow the below steps:

  1. Click the Salesforce Setup icon.

  2. Navigate to Users -> Profiles.

  3. Select the target profile for the service account user.

  4. Navigate to Object Settings -> Accounts and click the Edit button.

  5. Under Record Types and Page Layout Assignments check the Household record type.

  6. Click the Save button.

Follow the same steps but this time enable the Lead record type on the Lead object.

Financial Account

To create the Blockchain Account record type in the Financial Account object, first create a page layout for it based on an existing layout.

  1. Select the Object Manager tab from the Setup home page.

  2. Select the FinServ_FinancialAccount__c object.

  3. Select Page Layouts from the left nav and click New.

  4. Select an existing page layout (for example, "Financial Account (Savings Account) Layout").

  5. Set the Page Layout Name field to "Financial Account (Blockchain Account) Layout".

  6. Click Save to create the new layout.

Select Page Layouts from the left nav to return to the list and repeat the above steps to create the General Ledger Account and Money Market Account page layouts.

Now create the new Blockchain Account record type:

  1. Select Record Type from the left nav and click New.

  2. Select an existing record type (for example, "Savings Account").

  3. Fill out the following fields as indicated.

    • Record Type Label -> "Blockchain Account"

    • Record Type Name -> "Blockchain" (change default value).

    • Description -> "Represents a Blockchain account"

  4. Enable the Active checkbox.

  5. In the list of profiles, check the Make available option the profile assigned to the target API service account (at a minimum).

  6. Click Next and select the option Apply one layout to all profiles.

  7. Select the page layout "Financial Account (Blockchain Account) Layout".

  8. Click Save.

Repeat the above steps to create the General Ledger Account and Money Market Account record types. Be sure to select the correct page layout corresponding to the record type.

The new record types should now be available in the Record Types section. You can verify that the new record type is also available to the target user profile as follows:

  1. Navigate to Users -> Profiles.

  2. Select the target profile.

  3. Navigate to Object Settings -> Financial Accounts (the object you edited earlier) and click the Edit link.

  4. Verify that the new record types are listed under Record Types and Page Layout Assignments.

Financial Account Transaction

The standard record type Financial Account Transaction supports the transaction types DebitTransaction and CreditTranction. The Financial Account Transfer Transaction record type must be created to support the TransferTransaction and PaymentTransaction transaction types.

The steps for creating the Financial Account Transfer Transaction record type are similar to those above, but for the Financial Transaction object instead.

  1. In the Object Manager, select the FinServ_FinancialAccountTransaction__c object.

  2. Select Page Layouts from the left nav and click New.

  3. Select an existing page layout (for example, "Financial Account Transaction Layout").

  4. Set the Page Layout Name field to "Financial Account Transfer Transaction Layout".

  5. Click Save.

  6. Select Record Types from the left nav and click New.

  7. Select an existing record type (for example, "Financial Account Transaction") if available, otherwise use "--Master--".

  8. Fill out the following fields as indicated.

    • Record Type Label -> "Financial Account Transfer Transaction".

    • Record Type Name -> "Financial_Account_Transfer" (change default value).

    • Description -> "Defines a transaction that represents a generic transfer from one account to another".

  9. Enable the Active checkbox.

  10. In the list of profiles, check the Make available option the profile assigned to the target API service account (at a minimum).

  11. Click Next and select the option Apply one layout to all profiles.

  12. Select the page layout "Financial Account Transfer Transaction Layout".

  13. Click Save.

The new record type can be verified as above.

Custom Fields

The following fields must be created in the corresponding objects.

Salesforce Object Field Label Field Name Data Type Length Unique* ExternalId

Account

Global Billing Address ID

Global_BillingAddress_Id

Text

36

Y

Y

Account

Global Customer ID

Global_Customer_Id

Text

36

Y

Y

Account

Global Email Address ID

Global_EmailAddress_Id

Text

36

Y

Y

Account

Global Fax Number ID

Global_FaxNumber_Id

Text

36

Y

Y

Account

Global Mailing Address ID

Global_MailingAddress_Id

Text

36

Y

Y

Account

Global Mobile Number ID

Global_MobileNumber_Id

Text

36

Y

Y

Account

Global Party ID

Global_Party_Id

Text

36

Y

Y

Account

Global Phone Number ID

Global_PhoneNumber_Id

Text

36

Y

Y

Account

Global Shipping Address ID

Global_ShippingAddress_Id

Text

36

Y

Y

Account

Customer Status

Customer_Status

Picklist

-

N

N

Contact

Global Email Address ID

Global_EmailAddress_Id

Text

36

Y

Y

Contact

Global Individual ID

Global_Individual_Id

Text

36

Y

Y

Contact

Global Phone Number ID

Global_PhoneNumber_Id

Text

36

Y

Y

Contact

Global Mobile Number ID

Global_MobileNumber_Id

Text

36

Y

Y

Contact

Global Other Address ID

Global_OtherAddress_Id

Text

36

Y

Y

Contact

Global Mailing Address ID

Global_MailingAddress_Id

Text

36

Y

Y

FinServ_Card__c

Card Type

Card_Type

Picklist

-

N

N

FinServ_Card__c

Cardholder Name

Cardholder_Name__c

Text

100

N

N

FinServ_Card__c

Credit Card Type

Credit_Card_Type__c

Picklist

-

N

N

FinServ_Card__c

Global Card ID

Global_Card_Id__c

Text

36

Y

Y

FinServ_FinancialAccount__c

Global Account ID

Global_Account_Id__c

Text

36

Y

Y

FinServ_FinancialAccount__c

Initial Transaction ID

Initial_Transaction_Id__c

Text

36

N

N

FinServ_FinancialAccount__c

Last Payment Amount

LastPaymentAmount__c

Currency

(16,2)

N

N

FinServ_FinancialAccount__c

Last Payment Date

LastPaymentDate__c

Date

-

N

N

FinServ_FinancialAccount__c

Last Statement Date

LastStatementDate__c

Date

-

N

N

FinServ_FinancialAccount__c

Last Transaction Amount

LastTransactionAmount__c

Currency

(16,2)

N

N

FinServ_FinancialAccount__c

Last Transaction Type

LastTransactionType__c

Picklist

-

N

N

FinServ_FinancialAccount__c

Last Transaction ID

Last_Transaction_Id__c

Text

36

N

N

FinServ_FinancialAccount__c

Maximum Monthly Withdrawals

Maximum_Monthly_Withdrawals__c

Number

18

N

N

FinServ_FinancialAccount__c

Monthly Withdrawal Limit

Monthly_Withdrawal_Limit__c

Number

(16,2)

N

N

FinServ_FinancialAccountTransaction__c

Debit Financial Account

Debit_Financial_Account__c

Lookup

-

-

-

FinServ_FinancialAccountTransaction__c

Credit Financial Account

Credit_Financial_Account__c

Lookup

-

-

-

FinServ_FinancialAccountTransaction__c

Global Transaction ID

Global_Transaction_Id__c

Text

36

Y

Y

FinServ_FinancialAccountTransaction__c

Originator ID

Originator_Id__c

Text

36

Y

N

InsurancePolicy

Global Policy ID

Global_Policy_Id__c

Text

36

Y

Y

Opportunity

ACH Transfer Authorization Document ID

Ach_Transfer_Auth_Document_Id

Text

36

N

N

Opportunity

Asset Transfer Authorization Document ID

Asset_Transfer_Auth_Document_Id

Text

36

N

N

Opportunity

Document Signatures Received

Document_Signatures_Received__c

Checkbox

-

-

-

Opportunity

KYC Completed

KYC_Completed__c

Checkbox

-

-

-

*Unique fields should be case-sensitive

Create via Apex Script

An Apex class called CustomFieldUtility can be used to create custom fields programmatically. The source for this class can be found in the FINS Common Resources project. Download this project and follow the steps below.

  1. Click on Salesforce Setup icon and select Developer Console to open a new console window

  2. Go to File -> New -> Apex class and create a new class named CustomFieldUtility

  3. Copy the code from fins-common-resources/salesforce/CustomFieldUtility.apxc to the script editor

  4. Select the File -> Save menu option to compile and save the class

  5. Select Debug -> Open Execute Anonymous Window

  6. Copy and paste the contents of fins-common-resources/salesforce/CreateCustomFields.txt into the window.

  7. Enable the Open Log option and click the Execute button.

Once the script completes, select the Debug Only filter option to show just the results of each create request. Verify that all fields have been successfully created.

Create Manually via Salesforce

To create each of these custom fields and enable visibility for them on page layouts:

  1. Click the Salesforce Setup icon.

  2. Select the Object Manager tab from the Setup home page.

  3. Find and select the target Salesforce object.

  4. Select the Fields & Relationships page.

  5. Click the New button and create the field as specified above.

  6. Once the field has been created, click the Set Field-Level Security button (or do these steps later - see below).

  7. Enable for desired profile, or tick the checkbox next to Visible to enable visibility for the desired profile(s).

Repeat these steps for each custom field in the above list.

Instead of adjusting permissions for each field as you go, if you are only making them available to one or two profiles it may be more efficient to go to the Users -> Profiles -> {profile} -> Object Settings for each object and adjust the permissions for multiple fields at once.

Additional Notes

  • The Card Type picklist values are DebitCard and CreditCard.

  • The Credit Card Type picklist values are Amex, Discover, Mastercard, Visa, and Other.

  • The Last Transaction Type picklist values are CreditTransaction, DebitTransaction, TransferTransaction, and PaymentTransaction.

  • The Customer Status picklist values are Prospect, Onboarding, Active, Inactive, Closed, Deceased, Delinquent, and Dormant.

  • The Debit Financial Account and Credit Financial Account fields looks up respective Financial Accounts.

  • All Global_*_Id__c fields should be visible in layouts (as described above) but made read-only to avoid issues with data synchronization.

Enable Financial Accounts in Sales

When the Financial Services Cloud feature is added to the Salesforce instance, the Commercial and Retail Banking apps are provided to work with financial accounts. If you want to enable the Financial Accounts tab on the Sales app, follow these steps:

  1. Navigate to the Sales app home page.

  2. Click the pencil icon on the right corner of the navigation pane, which opens the Edit Sales App Navigation Items dialog box.

  3. Click Add More Items.

  4. Navigate to All under the Available Items menu.

  5. Search for Financial Accounts and Select it.

  6. Click Add 1 Nav Item and then click Save.

Enable Transaction Status

The default implementation of the solution requires the enablement of additional values for the transaction status picklist in the target FSC instance. This can be done as follows:

  1. Click the Salesforce Setup icon.

  2. Select the Object Manager tab from the Setup home page.

  3. Find and select the FinServFinancialAccountTransactionc Salesforce object.

  4. Navigate to Fields and Relationships and select the FinServTransactionStatusc picklist field.

  5. Scroll down to the Values section and click New.

  6. Enter the values for Cancelled and Initial on separate lines and click Save.

Enable Transaction Types

The default implementation of the solution also requires the enablement of additional transaction types. The steps are similar to those above:

  1. Click the Salesforce Setup icon.

  2. Select the Object Manager tab from the Setup home page.

  3. Find and select the FinServ_FinancialAccountTransaction__c Salesforce object.

  4. Navigate to Fields and Relationships and select the FinServ_TransactionType__c picklist field.

  5. Scroll down to the Values section and click New.

  6. Enter the values for Payment and Transfer on separate lines and click Save.

Workflow Rules

To display a specific page layout based on the record type, a Workflow rule is created. To ensure the page layout changes based on the record type Financial Account Transfer Transaction, follow the below steps:

  1. Click the Salesforce Setup icon.

  2. Navigate to Process Automation -> Workflow Rules.

  3. Click the New Rule button.

  4. Select FinServ_FinancialAccountTransaction__c from the Object dropdown.

  5. Enter Rule Name as Transfer Transaction Type and description as Defines a transaction that represents a generic transfer from one account to another.

  6. Set Evaluation Criteria as created, and any time its edited to subsequently meet criteria`.

  7. In the Rule Criteria section, select criteria are met.

  8. In the first row, select the field as Financial Account Transaction: Transaction Type, operator as equals, and value as Transfer.

  9. In the second row, select the field as Financial Account Transaction: Transaction Type, operator as equals, and value as Payment.

  10. Set filter logic 1 OR 2. Click Save.

  11. In Workflow Actions, under Immediate Actions, select New Field Update.

  12. Set Name as Transfer Transaction Type.

  13. In Field to Update, select Record Type. Click Next.

  14. In Specify New Field Value, select Financial Account Transfer Transaction from the record type dropdown.

  15. Click Save.

Enable Multiple Currencies

The default implementation of the solution requires the enablement of multiple currency support in the target FSC instance. This can be done as follows:

  1. Click the Salesforce Setup icon.

  2. Navigate to Company Settings -> Company Information.

  3. Click Edit and enable the Activate Multiple Currencies option.

  4. Click Save.

If desired, click the Currency Setup button to add support for additional currency codes (for example, EUR).

Create Platform Events and Apex Triggers

The following Platform Event Objects and Apex Triggers must be created in order to capture updates from Salesforce. The scripts to create these Apex Triggers and add fields to Platform Event Objects are located in the FINS Common Resources project.

Salesforce Object Salesforce Platform Event Object Salesforce Platform Event API Name Apex Trigger Name

Account

Account

Account__e

AccountEventsPub

Contact

Contact

Contact__e

ContactEventsPub

Account

AccountAddresses

AccountAddresses__e

AccountAddressEventsPub

Account

Household

Household__e

HouseholdEventsPub

Lead

Lead

Lead__e

LeadEventsPub

Opportunity

Opportunity

Opportunity__e

OpportunityEventsPub

FinServ_FinancialAccount__c

FinancialAccount

FinancialAccount__e

FinancialAccountEventsPub

FinServ_FinancialAccountTransaction__c

FinancialAccountTransaction

FinancialAccountTransaction__e

TransactionsEventsPub

FinServ_Card__c

FinancialCard

FinancialCard__e

CardsEventsPub

Create Platform Event Object

This implementation requires creation of Platform Events in Salesforce. To create a Platform Event Object following the below steps:

  1. Login to Salesforce.

  2. Click Setup to search for Platform Events in Quick Find Box. Platform Events Page under Integrations section appears with list of available Platform Events.

  3. Click New Platform Event button to create an Object and enter Platform Information Details fields like Label, Plural Label and Object with Object Name and Event API Names as above table. Click Save. Repeat this step for creating multiple Salesforce Platform Event Objects as mentioned in the above table.

  4. To add Custom Fields & Relationships to Platform Event Definitions, run the utility scripts (CreatePlatformEventsCustomFields.txt) available in the FINS Common Resources under the /salesforce folder.

Create Apex Triggers

Follow the below steps to create the Apex Triggers

  1. Login to Salesforce.

  2. Click Setup to search for Object Manager in Quick Find Box.

  3. Search for the Salesforce Object. A page appears with Details of the Object.

  4. Click Triggers unders the Details section to see list of available triggers on the Object. Click New.

  5. Copy the Trigger Script code searching by Apex Trigger Name (mentioned in the above table for the SalesforceObject) in CreateApexTriggers.txt of FINS Common Resources to the script editor. CreateApexTriggers.txt file is available under /salesforce folder.

  6. Obtain the LastModifiedById and RecordTypeId (if it exists) by running the queries mentioned in the trigger from Developer Console.

  7. Replace the values in the script and Save the trigger.

  8. Click Save and ensure isActive checkbox is ticked.

  9. Repeat the steps for all the Salesforce objects in the above table.

Additional Notes

  • All the Apex Triggers created above filters records based on LastModifiedBy <> {Service account ID}. This is to filter out updates done by the Salesforce Customers and Salesforce Financial System APIs to avoid cyclical updates. This can be obtained by running the query SELECT Id FROM User WHERE Username='<service-account-username>' in the Developer Console.

  • The Apex Triggers AccountEventsPub, and AccountAddressEventsPub also filter records based on record type ID. The record type ID can be obtained by running the query SELECT Id,Name FROM RecordType where Name='Household' and sObjectType='Account' in the Developer Console.

  • The Apex Trigger HouseholdEventsPub also filter records based on record type ID. The record type ID can be obtained by running the query SELECT Id,Name FROM RecordType where Name='Account' and sObjectType='Account' in the Developer Console.

Adding Mailing Address to Person Account details Page

The following instructions assume that support for Person Accounts is already enabled. Perform the following actions to enable Mailing Address on the Person Account detail page.

  1. Click the Salesforce Setup icon.

  2. Select the Object Manager tab from the Setup home page.

  3. Search for Person Account and select it.

  4. From the menu on the left, click on Page Layouts and select the layout you want to adjust.

  5. Click the Fields tab on the palette to show all the available fields.

  6. Search for MailingAddress and select it.

  7. Drag the field from the palette and drop it in the Address Information section of the layout

  8. Click the Save button.

Creating Contacts not Associated with an Account

These instructions assume that the Salesforce FSC instance includes access to the Contact object.

  1. Click the Salesforce Setup icon.

  2. Select the Object Manager tab from the Setup home page.

  3. Search for Contact and select it.

  4. From the menu on the left, click on Page Layouts and select the layout you want to adjust.

  5. Find the Account Name field on the layout and hover over it. Then, click the wrench icon to show the field properties.

  6. Deselect the Required checkbox and confirm your changes.

  7. Click the Save button.

Adding Fields to Opportunity Page

Perform the following actions to enable custom fields in Opportunity default page.

  1. Click the Salesforce Setup icon.

  2. Select the Object Manager tab from the Setup home page.

  3. Search for Contact and select it.

  4. From the menu on the left, click on Page Layouts and select the layout you want to adjust.

  5. Click the Fields tab on the palette to show all the available fields.

  6. Search for KYC Completed and select it.

  7. Drag the field from the palette and drop it in the Opportunity Information section of the layout.

  8. Repeat the last two steps to add the Document Signatues Recieved, Ach Transfer Auth Document Id, and Asset Transfer Auth Document Id fields.

  9. Click the Save button.

Configure Connected App for Authentication

Follow the below steps to generate the Consumer Key and Consumer Secret values required for Salesforce authentication.

  1. Click the Salesforce Setup icon.

  2. Navigate to Apps -> App Manager.

  3. Select New Connected App.

  4. Enter Connected App Name: MuleSoft Accelerator, API Name: MuleSoft_Accelerator and set your email address.

  5. In the API (Enable OAuth Settings) section, check the box Enable OAuth Settings.

  6. Set the callback URL http://localhost.

  7. From the Selected OAuth Scopes list, select Full access (full).

  8. Click Save and then Continue.

  9. Click the Manage button to view details for the new connected app.

  10. Click the Edit Policies button.

  11. In the OAuth Policies section, for Permitted Users select All users may self-authorize.

  12. For IP Relaxation, select the Relax IP restrictions option.

  13. Click Save.

You now need to copy the Consumer Key and Consumer Secret values for use in configuring Mule application deployments. More specifically, these must be supplied as the values for the sfdc.fsc.client-id and sfdc.fsc.client-secret properties found in the FSC-BANKING-DEV, FSC-Insurance-DEV and FSC-WEALTH-DEV profiles in your Maven settings.xml file.

  1. On the Setup Home page, navigate to Apps -> App Manager.

  2. Locate your new connected app and choose View from the actions dropdown for that item (last column on the right).

  3. Under the API (Enable OAuth Settings) section, click the Manage Consumer Details button.

  4. Verify your identity by entering the verification code that was emailed to you.

  5. Copy the key and secret values and update your settings.xml file as described above.

Download the FINS Common Resources project for a sample settings.xml file that can be used as a starting point.

Generating Security Token for Service Account

A token needs to be generated for the service account used by the Mule applications in order to connect to the FSC instance.

  1. Login to Salesforce as the Service Account User (the account that will be used by the Mule applications for connecting to Salesforce).

  2. Click the Username icon in the top right corner and select Settings from the menu.

  3. Select My Personal Information -> Reset My Security Token (if not found, see note below).

  4. Click Reset Security Token.

  5. Check the email inbox for an email from Salesforce with the new security token.

If the option to reset your security token is not available, it is likely that one or more Login IP Ranges are in effect. These can be temporarily removed from the settings page of the profile assigned to the service account user.

Contact Point Mappings

The following table lists the conditions used to assign ContactPoints in Salesforce:

CIM PartyRole - Party Salesforce Object - Record Type Condition Action in Salesforce Comments

Customer - Individual

Account - PersonAccount

ContactPointAddress with isUsedForBilling set as false

Assign Address as PersonMailingAddress

If multiple addresses match this condition, the one with primaryFlag set to true is used; if none set the first one will be used

Customer - Individual

Account - PersonAccount

ContactPointAddress with isUsedForBilling set as true

Assign Address as BillingAddress

Customer - Individual

Account - PersonAccount

ContactPointPhone with isSMSCapable set as false

Assign Phone Number as Phone

If multiple phones match this condition, the one with primaryFlag set to true is used; if none set the first one will be used

Customer - Individual

Account - PersonAccount

ContactPointPhone with isSMSCapable set as true

Assign Phone Number as PersonMobilePhone

Customer - Organization

Account - Account

ContactPointAddress with isUsedForBilling set as true

Assign Address as BillingAddress

If multiple addresses match this condition, the one with primaryFlag set to true is used; if none set the first one will be used

Customer - Organization

Account - Account

ContactPointAddress with isUsedForBilling set as true

Assign Address as BillingAddress

If multiple addresses match this condition, the one with primaryFlag set to true is used; if none set the first one will be used

Customer - Organization

Account - Account

ContactPointAddress with isUsedFoShipping set as true

Assign Address as ShippingAddress

Customer - Organization

Account - Account

ContactPointPhone with isFaxCapable set as false

Assign Phone Number as Phone

If multiple phones match this condition, the one with primaryFlag set to true is used; if none set the first one will be used

Customer - Organization

Account - Account

ContactPointPhone with isFaxCapable set as true

Assign Phone Number as Fax

*The default value for all flags is false.