Note:
Please note collections are now called workspaces.
Introduction
When adding participants to the contract, you can choose the information that will be shown to the participants. Our application uses Salesforce flows for better flexibility. When you install the package, our managed flow called OneflowParticipantsLogic is also installed and listed at Setup > Flows.
Think of this feature as declarative mapping, when Salesforce admins can configure what's being synced according to their business workflows by mapping fields from objects to participants' UI to be transferred to Oneflow.
Using flows allows you to specify participants' order and add pre-defined participants who might not even be related to the object.
The possibilities are endless!
The following video will guide you in setting the configuration for this feature:
OneflowParticipantsLogic flow overview
First, let's overview the flow and the paths depending on the object from which contracts are created.
The flow takes 2 inputs and has the ObjectId and ObjectName arguments.
Based on ObjectName, the Decision (Check Base Object) element flow chooses which path to take.
Check the following example for when ObjectName equals Account (this path is only taken if contracts are created from an Account Record in Salesforce)
Out-of-the-box OneflowParticipantsLogic flow splits into four different paths:
- Account - when ObjectName equals Account, the path is Creating Contract from Account.
- Contact - when ObjectName equals Contact, the path is Creating Contract from Contact.
- Lead - when ObjectName equals Lead, the path is Creating Contract from Lead.
- Opportunity - when ObjectName equals Opportunity, the path is Creating Contract from Opportunity.
This is why there are four paths coming out of the Decision Element, one path per each object.
After taking the path, the flow will use another argument ObjectId to query the necessary fields used by the other flow elements.
For each record returned by the Get Records element, you have to:
- Assign the values from the Record loop to ParticipantFlow.
The Add Contact Info to Participants assignment element in the OneflowParticipantsLogic flow defines the mapping from Salesforce fields to participants' UI. - Add the newly created participant flow to the participant list (ParticipantsCollectionSObject).
- Add the new participant flow to the participant flow list (ParticipantsCollectionSObject collection variable) that the system will return to the UI.
After adding all participants to the variableParticipantsCollectionSObject collection, the flow will return this list to the UI, and the flow execution finishes.Note: Since participant UI is expecting the ParticipantsCollectionSObject, make sure you're adding the participants to this variable and not to others.
- Activate the flow and configure which flow should be used depending on the object by going to Setup > Custom Settings > Oneflow Relate to > Flow Participant and changing it.
Participant mapping
- OFapp__contactId__c - record ID on participants' UI opens the record on click.
- OFapp__contactName__c - rarticipant's name shown in participants' interface.
- OFapp__contactEmail__c - participant's email shown in participants' interface.
- OFapp__accountName__c - participant's account name shown in participants' interface.
- OFapp__Is_Participant_Selected__c - participant's selection checkbox shown in participants' interface.
- OFapp__Oneflow_Role__c - participant's Oneflow role (Signatory, Influencer, Viewer) checkbox shown in participants' interface.
- OFapp__Org_Number__c - participant's org number, not shown in participants' interface but transferred to Oneflow.
- OFapp__Participant_Description__c - description of the participant shown in participants' interface.
- OFapp__Participant_Phone_Number__c - participant's phone number shown in participants' interface.
Default configuration
Check the following out-of-the-box default configuration to know from which fields the information is shown for the listed objects:
Account
When creating contracts from an account:
- OFapp__contactId__c <- contact ID (Id) related to the account
- OFapp__contactName__c <- contact name (Name) related to the account
- OFapp__contactEmail__c <- contact email (Email) related to the account
- OFapp__accountName__c <- account Name (Name)
- OFapp__Is_Participant_Selected__c <- false (Boolean)
- OFapp__Oneflow_Role__c <- signatory (Text)
- OFapp__Org_Number__c <- account number (AccountNumber)
- OFapp__Participant_Description__c <- empty string
- OFapp__Participant_Phone_Number__c <- contact phone number (Phone) related to the account.
Contact
When creating contracts from a contact:
- OFapp__contactId__c <- contact ID (Id)
- OFapp__contactName__c <- contact name (Name)
- OFapp__contactEmail__c <- contact email (Email)
- OFapp__accountName__c <- account name related to the contact (Account.Name)
- OFapp__Is_Participant_Selected__c <- false (Boolean)
- OFapp__Oneflow_Role__c <- signatory (Text)
- OFapp__Org_Number__c <- AccountNumber from the account related to the contact (Account.AccounNumber)
- OFapp__Participant_Description__c <- empty string
- OFapp__Participant_Phone_Number__c <- contact phone number (Phone).
Lead
When creating contracts from a lead:
- OFapp__contactId__c <- lead ID (Id)
- OFapp__contactName__c <- lead name (Name)
- OFapp__contactEmail__c <- lead email (Email)
- OFapp__accountName__c <- not mapped
- OFapp__Is_Participant_Selected__c <- false (Boolean)
- OFapp__Oneflow_Role__c <- signatory (Text)
- OFapp__Org_Number__c <- <- not mapped
- OFapp__Participant_Description__c <- empty string
- OFapp__Participant_Phone_Number__c <- lead phone number (Phone).
Opportunity
When creating contracts from an opportunity, contact roles or contacts related to the same account have an opportunity.
- OFapp__contactId__c <- contact ID (Id)
- OFapp__contactName__c <- contact name (Name)
- OFapp__contactEmail__c <- contact email (Email)
- OFapp__accountName__c <- account name related to the contact (Account.Name)
- OFapp__Is_Participant_Selected__c <- false (Boolean)
- OFapp__Oneflow_Role__c <- signatory (Text)
- OFapp__Org_Number__c <- AccountNumber from the account related to the contact (Account.AccounNumber)
- OFapp__Participant_Description__c <- contact role from the opportunity contact role or empty
- OFapp__Participant_Phone_Number__c <- contact phone number (Phone)
You can map all the listed fields for a Participant Flow to different fields. Please check the instruction below for Change Participants Flow Mapping.
To add another object besides the ones listed above, please check the instructions below on adding a new object to Oneflow participants' flows.
Add a new object to Oneflow participants' flows
To add a new object:
- Clone the OneflowParticipantsLogic flow or create a new version for an existing flow cloned from OneflowParticipantsLogic.
- Define participant mapping, i.e., which data should appear in the participants' interface (fields and records).
- Create a new outcome in the decision element - check the Base Object, where ObjecName equals the object from which you want to be able to create contracts.
- Use the Get Records element to query all fields using the ObjectID to be passed to the participant flow.
- For each record:
- Assigned the values from the loop record to ParticipantFlow.
- Add the newly created participant flow to the participant list (ParticipantsCollectionSObject)
6. Change the Relate To settings to use the newly created flow.
Done!
Check the example video for the following cases:
- Party name for a case maps to a subject
- Party Org Number for a case maps to an engineering request.
Case mapping to participants' interface
- OFapp__contactId__c - ContactId
- OFapp__contactName__c - Contact.LastName
- OFapp__contactEmail__c - Contact.Email
- OFapp__accountName__c - Contact.Account.Name
- OFapp__Is_Participant_Selected__c - false
- OFapp__Oneflow_Role__c - Signatory
- OFapp__Org_Number__c - Contact.Account.AccountNumber
- OFapp__Participant_Description__c - "Case Contact"
- OFapp__Participant_Phone_Number__c - "+46123123123".
Change participant flow mapping for a configured object
To change participant flow mapping for a previously configured object:
- Clone the OneflowParticipantsLogic flow or create a new version for an existing flow cloned from OneflowParticipantsLogic.
- Define a new participant mapping, i.e., what data should appear in the participants' interface (fields and records).
- For each record, assigned new mapping to ParticipantFlow.
Done!
New case mapping
New Case mapping to participants' interface:
- OFapp__contactId__c - ContactId
- OFapp__contactName__c - changed to Contact.firstname
- OFapp__contactEmail__c - Contact.Email
- OFapp__accountName__c - Contact.Account.Name
- OFapp__Is_Participant_Selected__c - changed to true
- OFapp__Oneflow_Role__c - changed to Influencer
- OFapp__Org_Number__c - Contact.Account.AccountNumber
- OFapp__Participant_Description__c - "Case Contact"
- OFapp__Participant_Phone_Number__c - "+46123123123"
Check the following video on how to change the mapping for a case created above:
- Party Name for a case changed to Contact.Account.Name (create a formula field type Text at Case Object)
- Party Org Number for a case maps to Engineering Request.