Salesforce Customization Guide
This guide provides the Salesforce customizations that must be created to enable the Customer 360, Product, and Sales Order Sync use cases to function end-to-end.
Create Custom Objects
The following objects must be created manually or via Apex script:
Salesforce Object Name | Singular Label | Plural Label |
---|---|---|
Managed_External_Id |
Managed External Identifier |
Managed External Identifiers |
Create Custom Object Manually
-
From Setup In your Salesforce org, click the Object Manager tab. If you don’t see it, enter "Object Manager" in the Quick Find box.
-
On the Object Manager page, click Create | Custom Object.
-
For Label, enter the value in
Singular Label
. -
For Plural Label, enter the value in
Plural Label
. -
For Object Name, enter the value in
Salesforce Object Name
. -
Leave the rest of the values as default and click Save.
Create Custom Object via Apex Script
Use the`CustomObjectUtility` and MetadataService
Apex classes to create a custom object programmatically. The source is on the RCG Common Resources project and MetadataService respectively. Download the project and follow these steps:
-
Click on the Salesforce Setup icon and select
Developer Console
to open a new console window. -
Go to
File > New > Apex class
and create a new class namedCustomObjectUtility
. -
Copy the code from
rcg-common-resources/salesforce/CustomObjectUtility.apxc
to the script editor. -
Select the
Save
from the File menu option to compile and save the class. -
Go to
File > New > Apex class
and create a new class namedMetadataService
. -
Copy the code from
https://github.com/financialforcedev/apex-mdapi/blob/master/apex-mdapi/src/classes/MetadataService.cls
to the script editor. -
Select the
Save
from the File menu option to compile and save the class. -
Select
Debug > Open Execute Anonymous Window
. -
Copy and paste the contents of
rcg-common-resources/salesforce/CreateCustomObjects.txt
into the window. -
Enable the
Open Log
option, and then click the Execute button.
Once the script completes, select the Debug Only
filter option to show only the results of each create request. Verify that custom object has been created successfully.
Create Custom Fields
The following fields must be created in their corresponding objects manually or via Apex script:
Salesforce Object Label | Field Label | Field Name | Data Type | Length | Unique | ExternalId | Formula |
---|---|---|---|---|---|---|---|
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 |
- |
Managed External Identifier |
External Id |
External_Id |
Text |
80 |
N |
N |
- |
Managed External Identifier |
External Id Type |
External_Id_Type |
Picklist |
- |
N |
N |
- |
Managed External Identifier |
Object Id |
Object_Id |
Text |
80 |
N |
N |
- |
Managed External Identifier |
Object Type |
Object_Type |
Picklist |
- |
N |
N |
- |
Managed External Identifier |
Status |
Status |
Picklist |
- |
N |
N |
- |
Managed External Identifier |
Status Last Changed |
Status_Last_Changed |
Date/Time |
- |
N |
N |
- |
Order |
Global_SalesOrder_Id |
Global_SalesOrder_Id |
Text |
36 |
Y |
Y |
- |
Order |
Total Tax |
Total_Tax__c |
Currency |
- |
- |
- |
- |
Order |
Shipping |
Shipping__c |
Currency |
- |
- |
- |
- |
Order |
Order Total Amount |
OrderTotalAmount__c |
Formula (Currency) |
- |
- |
- |
Shipping_c + Total_Tax_c + TotalAmount |
Product |
Global_Product_Id |
Global_Product_Id |
Text |
36 |
Y |
Y |
- |
Product |
Product Group |
Product_Catalog__c |
Picklist |
- |
N |
N |
- |
Product |
Short Description |
Short_Description__c |
Text |
255 |
N |
N |
- |
Product |
Item Short Description |
Item_Short_Description__c |
Text |
255 |
N |
N |
- |
Product |
Item Long Description |
Item_Long_Description__c |
Text |
255 |
N |
N |
- |
Product |
Status |
Status__c |
Picklist |
- |
N |
N |
- |
Unique fields should be case-sensitive. |
Create Fields via Apex Script
Use the Apex class CustomFieldUtility
to create custom fields programmatically. See the RCG Common Resources project to find the source for this class. Download the project and follow these steps:
-
Click on the Salesforce Setup icon and select
Developer Console
to open a new console window. -
Go to
File > New > Apex class
and create a new class namedCustomFieldUtility
. -
Copy the code from
rcg-common-resources/salesforce/CustomFieldUtility.apxc
to the script editor. -
Select the
File > Save
menu option to compile and save the class. -
Select
Debug > Open Execute Anonymous Window
. -
Copy and paste the contents of
rcg-common-resources/salesforce/CreateCustomFields.txt
into the window. -
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 Fields Manually via Salesforce
To create each of these custom fields and enable visibility for them on page layouts:
-
Click on the Salesforce Setup icon.
-
Select the
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 (or do these steps later - see below). -
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 table.
|
Fields to Update
Follow these instructions to update the picklist fields that are listed in the table in the Custom Fields section:
Salesforce Object Label | Field Label | Field Name | Data Type | Values |
---|---|---|---|---|
Order |
Order Type |
Type |
Picklist |
ADD_ON, CANCELLATION, INITIAL, JOURNAL, RENEWAL, RETURN, SUBSCRIPTION, UPGRADE |
Order |
Status |
Status |
Picklist |
CANCELLED, CREATED, CONFIRMED, DELIVERED, IN_CART, IN_TRANSIT, INVOICED, LOST, PARTIALLY_SHIPPED, PICKUP_AVAILABLE, PROCESSING, REJECTED, RETURNED |
To update the picklist values for a field in the specified object:
-
Click Setup.
-
Select the Object Manager tab.
-
Search for and select the target Salesforce object.
-
Select the Fields & Relationships page.
-
Search for and select the target field with the field label.
-
Select New in Picklist Values.
-
Add the corresponding value from the Values column in the previous table, placing each picklist value on a separate line.
-
Click Save.
Repeat these steps for each field in the table.
If you created the fields in the previous Custom Fields section manually, update the picklist values for the fields in the table in the Fields to Update section.
Salesforce Object Label | Field Label | Field Name | Data Type | Values |
---|---|---|---|---|
Account |
Customer Status |
Type |
Picklist |
Prospect, Onboarding, Active, Inactive, Closed, Deceased, Delinquent, Dormant |
Managed External Identifier |
External Id Type |
External_Id_Type__c |
Picklist |
SALESFORCE_B2C, SALESFORCE_CORE, PIM, OFBIZ, SAP_4HANA, MDM, SAP_ECC, SALESFORCE_MARKETING, POS, SALESFORCE_DC, SALESFORCE_LM, ORACLE_EBS |
Managed External Identifier |
Object Type |
Object_Type__c |
Picklist |
BillingAddress, Customer, Email, Fax, Household, Individual, MailingAddress, MobilePhone, Organization, Phone, Product, SalesOrder, ShippingAddress |
Managed External Identifier |
Status |
Status__c |
Picklist |
VALID, INVALID |
Product |
Product Group |
Product_Catalog__c |
Picklist |
Basic, Premium |
Product |
Status |
Status__c |
Picklist |
VALID, INVALID |
Configure Connected App for Authentication
Follow the below steps to generate the Consumer Key
and Consumer Secret
values required for Salesforce authentication.
-
Click on the Salesforce Setup icon .
-
Navigate to
Apps > App Manager
. -
Select
New Connected App
. -
Enter Connected App Name:
MuleSoft Accelerator
, API Name:MuleSoft_Accelerator
and set your email address. -
In the
API (Enable OAuth Settings)
section, check the boxEnable OAuth Settings
. -
Set the callback URL
http://localhost
. -
From the
Selected OAuth Scopes
list, selectFull access (full)
. -
Click Save and then Continue.
-
Click the Manage button to view details for the new connected app.
-
Click the Edit Policies button.
-
In the
OAuth Policies
section, forPermitted Users
selectAll users may self-authorize
. -
For
IP Relaxation
, select theRelax IP restrictions
option. -
Click Save.
-
Enable the OAuth 2.0 Username-Password Flow by following the steps documented in Salesforce Help Docs.
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.client-id
and sfdc.client-secret
properties found in the Clouhub-RCG-DEV
profile in your Maven settings.xml
file.
-
On the Setup Home page, navigate to
Apps -> App Manager
. -
Locate your new connected app and choose View from the actions dropdown for that item.
-
In the API (Enable OAuth Settings) section, click the Manage Consumer Details button.
-
Verify your identity by entering the verification code that was emailed to you.
-
Copy the key and secret values and update your
settings.xml
file as described previously.
Download the RCG Common Resources project for a sample settings.xml
file that can be used as a starting point.
Generating a Security Token for the Service Account
A token needs to be generated for the service account used by the Mule applications in order to connect to the Salesforce instance.
-
Log in to Salesforce as the Service Account User, which is the account that will be used by the Mule applications to connect to Salesforce).
-
Click the Username icon and select Settings from the menu.
-
Select
My Personal Information > Reset My Security Token
. If you cannot find this, see the note at the end of these steps. -
Click Reset Security Token.
-
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. |
Create Platform Events and Apex Triggers
The following Platform Event Object 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 Object are located in the RCG Common Resources project.
Salesforce Object | Salesforce Platform Event Object | Salesforce Platform Event API Name | Apex Trigger Name |
---|---|---|---|
Account |
Account |
Account__e |
AccountEventsPub |
Create Platform Event Object
This implementation requires Platform Event
to be created in Salesforce. Follow these steps to create a Platform Event
object:
-
Log in to Salesforce.
-
Click Setup and search for "Platform Events" in the Quick Find box. The Platform Events page shows with a list of available Platform Events.
-
Click the New Platform Event button to create an Object. Complete the Platform Information Details fields, including Label, Plural Label, Object with Salesforce Object, and Salesforce Platform Event API Name as indicated in the previous table.
-
Click Save.
-
To add Custom Fields & RelationShips to Platform Event Definitions, run the utility script
CreatePlatformEventsCustomFields.txt
, which is in thercg-common-resources/salesforce
folder of the RCG Common Resources project. -
Follow the steps to run the script provided in
Create via Apex Script
underCustom Fields
.
Create Apex Triggers
Follow these steps to create the Apex Triggers:
-
Log in to Salesforce.
-
Click Setup to search for Object Manager in Quick Find Box.
-
Search for the Salesforce object. This opens a page that shows the details of the object.
-
Click Triggers in the Details section to view a list of available triggers for the object.
-
Click New.
-
Search for the Apex Trigger name, which is indicated in the previous table. Copy the Trigger Script code
CreateApexTriggers.txt
from thercg-common-resources/salesforce
folder of the RCG Common Resources project and paste it into the script editor. -
Obtain the
LastModifiedById
by running the query from the Additional Notes section. -
Replace the values in the script and save the trigger.
-
Click Save and ensure the isActive checkbox is checked.
Additional Notes
The Apex Trigger that is created filters records based on LastModifiedBy <> {Service account ID}
to avoid cyclical updates performed by the Salesforce Customers System API. Run the query SELECT Id FROM User WHERE Username='<service-account-username>'
in the Developer Console to obtain Service account ID.