MuleSoft Accelerator for Financial Services
Prerequisites
This page provides guidance on configuring the various systems and products required to implement the use cases provided by this solution.
Salesforce Financial Services Cloud
This section 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 type must be created in the corresponding object.
Salesforce Object | Record Type |
---|---|
FinServ__FinancialAccount__c | MoneyMarket |
To create the Money Market
record type in the Financial Account object, first create a page layout for it based on an existing account layout.
- Click the Salesforce Setup icon
- Select
Object Manager
tab from the Setup home page - Select the
FinServ__FinancialAccount__c
object - Select
Page Layouts
from the left nav and click New - Select an existing page layout (e.g., "Financial Account (Savings Account) Layout")
- Set the
Page Layout Name
field to "Financial Account (Money Market Account) Layout" - Click Save to create the new layout
Now create the new record type:
- Select
Record Types
from the left nav and click New - Select an existing record type (e.g., "Savings Account")
- Fill out the following fields as indicated
Record Type Label
-> "Money Market"Record Type Name
-> "Money_Market"Description
-> "Represents a money market account"
- Enable the
Active
checkbox - In the list of profiles, check the
Make available
option the profile assigned to the target API service account (at a minimum) - Click Next and select the option
Apply one layout to all profiles
- Select the page layout "Financial Account (Money Market Account) Layout"
- Click Save
The new record type should now be available in the Records Types
section. You can verify that the new record type is also available to the target user profile as follows:
- Click the Salesforce Setup icon
- Navigate to
Users -> Profiles
- Select the target profile
- Navigate to
Object Settings -> Financial Accounts
and click the Edit link - Verify that the new record type is listed under
Record Types and Page Layout Assignments
Custom fields
The following fields must be created in the corresponding objects.
Salesforce Object | Field Name | Data Type | Length | Unique | ExternalId |
---|---|---|---|---|---|
Account | Global_Customer_Id__c | Text | 36 | Y | Y |
Account | FinServ__Status__c | Picklist | - | N | N |
Contact | Global_Individual_Id__c | Text | 36 | Y | Y |
FinServ__Card__c | Global_Card_Id__c | Text | 36 | Y | Y |
FinServ__Card__c | Card_Type__c | Picklist | - | N | N |
FinServ__Card__c | Credit_Card_Type__c | Picklist | - | N | N |
FinServ__Card__c | Cardholder_Name__c | Text | 100 | N | N |
FinServ__FinancialAccount__c | Global_Account_Id__c | Text | 36 | Y | Y |
FinServ__FinancialAccount__c | Monthly_Withdrawal_Limit__c | Number | (16,2) | N | N |
FinServ__FinancialAccount__c | Maximum_Monthly_Withdrawals__c | Number | 18 | N | N |
FinServ__FinancialAccount__c | LastStatementDate__c | Date | - | N | N |
FinServ__FinancialAccount__c | LastTransactionAmount__c | Currency | (16,2) | N | N |
FinServ__FinancialAccount__c | LastPaymentDate__c | Date | - | N | N |
FinServ__FinancialAccount__c | LastPaymentAmount__c | Currency | (16,2) | N | N |
FinServ__FinancialAccount__c | LastTransactionType__c | Picklist | - | N | N |
FinServ__FinancialAccountTransaction__c | Global_Transaction_Id__c | Text | 36 | Y | Y |
Note:
The Card_Type__c picklist values are DebitCard and CreditCard
The Credit_Card_Type__c picklist values are Amex, Discover, Mastercard, Visa and Other
The field FinServ__Status__c is added as part of the Financial Services Cloud package and must be added as a custom field if the package is not used in the Salesforce Org. The picklist values are Prospect, Closed, Deceased, Deliquent, Dormant, Inactive, Onboarding, and *Active
To create each of these custom fields and enable visibility for them on page layouts:
- Click the Salesforce Setup icon
- Select
Object Manager
tab from the Setup home page - Find and select the target Salesforce object
- Select the
Fields & Relationships
page - Click the New button and create the field as specified above
- Once the field has been created, click the
Set Field-Level Security
button - Enable for desired profile, or tick the master checkbox next to
Visible
to enable visibility for all profiles
Repeat these steps for each custom field in the above list.
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:
- Navigate to the
Sales
app home page - Click the pencil icon on the right corner of the navigation pane, which opens the
Edit Sales App Navigation Items
dialog box - Click Add More Items
- Navigate to
All
under theAvailable Items
menu - Search for
Financial Accounts
and Select it - Click
Add 1 Nav Item
and then 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:
- Click the Salesforce Setup icon
- Navigate to
Company Settings -> Company Information
- Click Edit and enable the
Activate Multiple Currencies
option - Click Save
If desired, click the Currency Setup button to add support for additional currency codes (e.g., EUR).
Enable transaction status
The default implementation of the solution requires the enablement of transaction statuses in the existing picklist in the target FSC instance. This can be done as follows:
- Click the Salesforce Setup icon
- Select
Object Manager
tab from the Setup home page - Find and select the 'FinServFinancialAccountTransactionc' Salesforce object
- Navigate to 'Fields and Relationships' and select the 'FinServTransactionStatusc' picklist field
- Add the new transaction status - 'Cancelled' and 'Initial'
- Click Save
Enable transaction types
The default implementation of the solution requires the enablement of transaction types in the existing picklist in the target FSC instance. This can be done as follows:
- Click the Salesforce Setup icon
- Select
Object Manager
tab from the Setup home page - Find and select the 'FinServFinancialAccountTransactionc' Salesforce object
- Navigate to 'Fields and Relationships' and select the 'FinServTransactionTypec' picklist field
- Add the new transaction types - 'Payment' and 'Transfer'
- Click Save
Create PushTopics
The following PushTopics must be created in order to capture updates from Salesforce. The apex scripts to create these PushTopics are located in the fins-salesforce-topic-listener integration template.
Salesforce Object | Apex script location | PushTopic name |
---|---|---|
Account | /src/test/scripts/accounts-push-topic.apxc | Accounts |
Contact | /src/test/scripts/contacts-push-topic.apxc | Contacts |
FinServ__FinancialAccount__c | /src/test/scripts/financial-accounts-push-topic.apxc | FinancialAccounts |
FinServ__FinancialAccountTransaction__c | /src/test/scripts/transactions-push-topic.apxc | Transactions |
FinServ__Card__c | /src/test/scripts/cards-push-topic.apxc | Cards |
Follow the below steps to create the above PushTopics
- Click on Salesforce Setup icon
- Select 'Developer Console' -> 'Debug'-> 'Open Execute Anonymous Window'
- Copy and paste the script from the 'Apex script location' column in the above table and execute
- Repeat above step #3 for all the Salesforce objects in the above table
Note All the PushTopics created above filters records based on LastModifiedBy <> 'Service account user Id'. This is to filter out updates done by the 'fins-salesforce-customers-sys-api' and 'fins-salesforce-financial-sys-api' to avoid cyclical updates. This can be obatined by running the query SELECT Id FROM User WHERE Username='<service-account-username>'
in the Developer Console. Ensure to replace the Id in the apex scripts.
Adding MailingAddress to Person Account Details page in Salesforce Org
The following instructions assume you have already Salesforce Org created and PersonAccount is enabled. Perform the following actions to enable MailingAddress on PersonAccount detail page.
- Open the Salesforce SetUp -> Object Manager -> Search for 'PersonAccount' and Select
- From the menu on the left Click on 'Page Layouts' -> Select the Page layout that is assigned to the user profile logged in
- Click on 'Fields' tab on the palatte and it shows all the available fields
- Search for 'MailingAddress'. Drag from the palette and drop it in the 'Address Information' section of the layout and click on 'Save'
Creating Contacts that are not associated with an Account
These instructions assume an Org was created in Salesforce with access to Contact object.
- From the object management settings for contacts, go to Page Layouts.
- Select the layout you want to edit.
- Find the 'Account Name' field on the layout and hover over it. Then, click the wrench icon to show the field properties.
- Deselect the Required checkbox and confirm your changes.
Anypoint MQ Configuration
The Anypoint-MQ-Queues-Exchanges postman collection in the fins-common-resources project will pre-create all MQ destinations required by the accelerator components.
The collection will require the "dev" environment template be imported into your Postman workspace and assigned proper values first. The following MQ destinations will be created on successful execution.
Queue Name | Bound to Exchange | Dead Letter Queue Name |
---|---|---|
fins-customer-update-queue | fins-customer-update-exchange | fins-customer-update-dl-queue |
fins-individual-update-retail-queue | fins-individual-update-exchange | fins-individual-update-dl-queue |
fins-account-update-queue | fins-account-update-exchange | fins-account-update-dl-queue |
fins-transaction-update-queue | fins-transaction-update-exchange | fins-transaction-update-dl-queue |
fins-card-update-queue | fins-card-update-exchange | fins-card-update-dl-queue |
DocuSign Apps and Integration Key Configuration
These instructions assume a DocuSign Sandbox environment was already set up.
- Click Settings.
- Traverse to 'Apps and Keys'.
- Create an integration app named 'Accelerator-FINS' and generate an integration key. This integration key is used to generate the JWT token and is passed as the 'docusign.jwt.issuer' deployment property.
- Select Authentication type.
- Generate RSA keypairs.
- Copy the private key in the 'DocuSignPrivateKey.txt' file and the public key in 'DocuSignPublicKey.txt' and save them in the 'src/main/resources/certs' project folder to generate the JWT token for authentication.
- Save the app settings.
- Click the Profile icon and copy the Account Id. This is passed as the 'docusign.api.account' deployment property.
- To use JWT Grant, next you must get your user’s consent for your app to impersonate them. To get this consent, first construct a URI value matching the syntax shown that includes:
- A base path for the authentication service. For the developer demo environment, the base URI is
https://account-d.docusign.com/oauth/auth
. - A
response_type
value of code. - A space-delimited list of the scopes your app needs. For JWT, this should include the impersonation scope.
- Your application’s integration key.
- A redirect URI that matches one of those configured for the application with the specified integration key.Example URI: https://account-d.docusign.com/oauth/auth?response_type=code&scope=signature%20impersonation&client_id=7c2b8d7e-xxxx-xxxx-xxxx-cda8a50dd73f&state=a39fh23hnf23&redirect_uri=https://client.example.com/callback
- A base path for the authentication service. For the developer demo environment, the base URI is