Accelerator Salesforce Global Orders System API
Prerequisites
This implementation template has the following dependencies:
- Create Custom object in Salesforce to manage External Identifiers
- Create Custom fields
- Generate security token for service account user in Salesforce
- Connected App in Salesforce
Custom Objects
The following objects must be created
Salesforce Object Name | Singular Label | Plural Label |
---|---|---|
Managed_External_Id | Managed External Identifier | Managed External Identifiers |
Create Custom Objects Manually
- In your Salesforce org, click Setup and select Setup to open Setup.
- Click the Object Manager tab. If you donβt see it, enter Object Manager in the Quick Find box.
- On the Object Manager Object Manager page, click Create | Custom Object.
- For Label, enter the value in
Singular Label
. - For Plural Label, enter the value in
Plural Label
. - Leave the rest of the values as default and click Save.
Create Custom Object via Apex script
An Apex class called CustomObjectUtility
and MetadataService
are used to create custom object programmatically. The source can be found on Accelerator Common Resources and MetadataService respectively. Download the project and follow the steps below.
- Click on 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
accel-common-resources/salesforce/CustomObjectUtility.apxc
to the script editor - Select the
File -> Save
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
File -> Save
menu option to compile and save the class - Select
Debug -> Open Execute Anonymous Window
- Copy and paste the contents of
/src/test/resources/scripts/CreateCustomObjects.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.
Custom Fields
The following fields must be created in the corresponding objects.
Salesforce Object | Field Label | Field Name | Data Type | Length | Unique* | ExternalId |
---|---|---|---|---|---|---|
Order | Global SalesOrder Id | Global_SalesOrder_Id__c | Text | 36 | Y | Y |
Managed_External_Id__c | External Id | External_Id | Text | 80 | N | N |
Managed_External_Id__c | External Id Type | External_Id_Type | Picklist | - | N | N |
Managed_External_Id__c | Object Id | Object_Id | Text | 80 | N | N |
Managed_External_Id__c | Object Type | Object_Type | Picklist | - | N | N |
Managed_External_Id__c | Status | Status | Picklist | - | N | N |
Managed_External_Id__c | Status Last Changed | Status_Last_Changed | Date/Time | - | N | N |
*Unique fields should be case-sensitive
Create Manually via Salesforce
To create each of these custom fields and enable visibility for them on page layouts:
- Click 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 list.
TIP: 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 External Id Type picklist values are SALESFORCE_B2C, SALESFORCE_CORE, SAP_4HANA, MDM, SALESFORCE_LM, SALESFORCE_DC, POS, and ORACLE_EBS.
- The Object Type picklist values is SalesOrder.
- The Status picklist values are VALID, INVALID.
- All
Global_SalesOrder_Id__c
fields should be visible in layouts (as described above) but made read-only to avoid issues with data synchronization.
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 Accelerator Common Resources project. Download this project and follow the steps below.
- Click on 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
accel-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
/src/test/resources/scripts/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.
Configure Connected App for Authentication
Follow the below steps to generate the Consumer Key
and Consumer Secret
values required for Salesforce authentication.
- Click 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.
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 (last column on the right). - Under 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 above.
Download the Accelerator Common Resources for a sample settings.xml
file that can be used as a starting point.
Generate 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 Salesforce instance.
- Login to Salesforce as the Service Account User (the account that will be used by the Mule applications for connecting to Salesforce).
- Click the Username icon in the top right corner and select
Settings
from the menu. - Select
+My Personal Information -> Reset My Security Token+
(if not found, see note below). - Click Reset Security Token.
- Check the email inbox for an email from Salesforce with the new security token.
NOTE: 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.
Next steps
The Deployment tab provides instructions on how to properly configure the application for running locally from Studio or deploying to CloudHub.