Sunday, July 26, 2015

Why Salesforce admins must attend Dreamforce ?

Dreamforce 2015 
San Francisco – 15-18 Sep 2015

In less than two months, Dreamforce 2015 is coming in beautiful city of San Francisco, a Salesforce annual event where salesforce customers, partners, developers come and participate to learn upcoming features and sharing knowledge. 

It is biggest cloud computing event attend by more than 135,000 attendees from all over the world (number from Dreamforce 2014). Dreamforce offers golden opportunity to learn from Industry visionaries, product experts and world leaders who will highlight the areas where the industry is heading to. It provides opportunities to hear from knowledgeable speakers about upcoming features, best practices, third party products, and more.

Reason why Salesforce admins must attend Dreamforce:

1. Learning & Ask the Expert
Opportunity to attend Ask the Experts area in the Admin Zone. There is serious learning happening every year in Dreamforce and walk away with more knowledge from system and process perspective than before.

2. Community & Networking
Learn best practice and share with other administrators from around the world on how they manage their Salesforce.

3. Content & Ideas
Acquire a ton of great content and new ideas to improve our business / system. Discover what is valuable for your organization.

4. Keynotes and Roadmap
Watch keynotes present by Salesforce top management on the new products, including features and roadmap for every product: Sales Cloud, Service Cloud, Chatter, Platform, Marketing Cloud, Analytics and Platform.

5. Sessions & Live Demos
More than 100 sessions designed to make administrators more successful. These 40-minute sessions will be on topics including analytics, declaratives, mobile, multi-org functionality, the sandbox, and data—for all levels of admin—and more advanced sessions than ever before.

6. Hands-on-Training
Free hands-on-training sessions.  More than 40 unique sessions with repeats scheduled based on popularity. The mix of one hour and 2.5 hour sessions will be scheduled throughout all four days and will include content for all clouds and all roles.

7. Certifications
Demand for Salesforce experts is growing rapidly and companies are looking for proven professionals to help drive success. Getting certified boosts your career. Take the exam at Dreamforce for discounted exam price.

8. Partner Expo
Hundreds Salesforce partners showcasing thousands of solutions. It is the best way to understand Salesforce products and solutions from Salesforce and partners. See live demos and meet face to face with more than 400 partners.

Action item: register now to get discount on registration fee.


Saturday, July 25, 2015

Salesforce: Mass Delete Records for Custom Object

Mass delete records in Salesforce should be an easy job for experience Salesforce admin. Sometimes you need to delete all data after performing sanity test, integration test, and stress test in Production for deployment of new functionalities, which may include create new records in new custom objects.

In standard record such as: Lead, Account, Contact, Case admin can easy mass delete records by navigate to the object tab, and click the Mass Delete object link below the Tools heading. The same can be achieve by navigate to Setup | Data Management | Mass Delete Records. While, this functionality is not exist for custom object.

It would be just a few clicks in Data Loader to extract the record Id, then use the record Id from data extracted to delete the whole record. But, if we are working with hundred thousands or millions of records, it will take you hours to extract the Id and mass delete the records.

For custom object, Salesforce have Truncate function to perform this activity in few clicks and very fast. This action will permanently remove all data, but all the fields and rules are not touched.

If you do not see Truncate button in the custom object, check SetupCustomize | User Interface | Enable Custom Object Truncate

  1. From Setup, click Create | Objects.
  2. Click an object name to go to the object’s detail page and click Truncate.
  3. In the Confirm Custom Object Truncate window, review the warning and then enter the object name of the object to truncate in the text box provided.
  4. Click Truncate.

Records deleted is not send to Recycle Bin, but Salesforce will create a new object end with _trunc. This object appears in the Deleted Objects list for 15 days, and contain all fields and records deleted from the original object, so this would be like a temporary backup.

Notes related to Truncate object
  • Truncating a custom object permanently removes all of its records
  • You can’t recover the records from the Recycle Bin
  • A copy of the truncated object appears in the Deleted Objects list for 15 days—during this period the object and its records continue to count toward your organization’s limits—and then the copied object and its records are permanently deleted.
  • You cannot truncate object with one or more child objects as containing data, this include Master-Detail and Lookup relationship.

Behind the screen : when you do object truncate:
  • Salesforce will delete existing object and create new object with the same structure
  • If you have auto-number field, the number will be continue from truncated object

Restore the object : when you restore the deleted objects, some attributes of deleted custom objects are not automatically restored and you need to restore these manually:
  • The custom object was set to In Development mode. Only users with the “Customize Application” permission can see the object tab, search results, related lists, and report data types.
  • Recreate a custom tab and any list views for the object.
  • Rebuild any workflow rules on the object.
  • Reactivate any custom validation rules for the object.
  • Reactivate any approval processes for the object.
  • Open and save any custom formula fields on the custom object to enable them.
  • Rebuild and reactivate any matching rules or duplicate rules for the object.
  • On the page layouts of other objects, add the custom object related list, button, or link to any page layouts that have been edited while the object is deleted. 
  • Related lists, buttons, or links to this object are automatically restored if the page layout is not edited while the object is deleted.
  • For custom report types where the object is not the main object, add the reference to the custom object back to the custom report types. Existing field will not point the parent object, but just as a text field.
  • Reports based on the custom report type are automatically restored If not edited while the object is deleted. 
  • Recreate any reports that have been edited.
  • It may take several hours before you can search for records in the object.

You can’t truncate standard objects or custom objects that:
  • Are referenced by another object through a lookup field or that are on the master side of a master-detail relationship
  • Are referenced in a reporting snapshot
  • Have a custom index or an external ID
  • Have activated skinny tables
  • When your organization has reached its limit of the allowed number of custom objects.


Monday, July 20, 2015

Salesforce: Sharing Button URL

We have discussed the Sharing button sometimes back in our blog Salesforce Sharing Button. The sharing button in Salesforce gives users the ability to grant access to other users more permissions to specific records.

But, on top of just giving additional access to other users, there is also a button called Expand List, which will show all users who have access to the record; Salesforce admin can use this functionality to trace record sharing access level and the reasons when need to support.

But, for some companies, users are not allowed to manually share record accessibility, so the admin or consultant who implemented Salesforce will take this button away; this will also cause the admin cannot use not this button to trace record sharing easily.

Options available:
  • Create a new page layout for admin with the Sharing button - this is not really nice as you need to maintain another page layout just for the sake of this need.
  • Manually add and remove the button when needed; this is easier, but if you have proper Change Management, this will cause issues as you do not have good reason to keep updating the page layout.


Actually, when you click that button, salesforce will bring you to a URL. So, manually typing the URL parameters will give you the same functionality as clicking the Share button. 



Contact - not applicable for Controlled by Parent sharing setting



Custom Object

Just change the instance name to your instance name, use the correct parameter based on the object, and put it in the Record Id; you will get the same result as clicking the Sharing button.

In Lightning

Lightning has a different URL, but you still can use the above URL to see the sharing.

Sharing Hierarchy
This is similar to the "Expand List" button in Classic. Use the "View" link to get a similar function to "Why" in Classic.

From here, you can add sharing to a user, group, role, etc. Click the "Edit" link to see all the current shares for the record, then click "View Sharing Hierarchy" to get the above result.

Sharing from Role Hierarchy

Contact, Opportunity, and Case are special objects where we can set the Account owner's ability to view or edit  Contact, Opportunity, and Case that are related to the Account. This is configured in the role hierarchy of the Account Owner.

How does this translate when we use the above links with parameters to see access reason?

This is an opportunity, owned not by the Account Owner; the opportunity access in role hierarchy for the Account owner = Users in this role can view all opportunities associated with accounts that they own, regardless of who owns the opportunities.

This is the same opportunity as above, but opportunity access changed Users in this role can edit all opportunities associated with accounts that they own, regardless of who owns the opportunities.

The same access reason for Contact and Case too, with Reason for Access = Account Sharing.

Friday, July 17, 2015

Salesforce: How to block user to access Data Loader or Workbench?

In some companies, permission to Export Report is not allowed, one of the concern is about data security issue. However, some "smart" user will try to find other ways to download data using external tool, such as: Data Loader or Workbench.

For admin, this tools would be useful in supporting daily work in, but not all users should allowed to access it.

API Enabled
One of the easiest way is just disable API Enabled in the user permission. But, API Enabled is not just use for Data Loader, but some other applications such as: Salesforce for Outlook, Salesforce1 mobile app also need that permission, so disabling that permission is not correct.

Connected Apps
We have discussed Connected Apps in blog How to enable Salesforce1 access by Profile / User? The same method can be used to block other apps. Under SetupManage AppsConnected Apps, you will found apps that connect to your Salesforce organization. For app that is not allowed for everyone, click the app name and change Permitted Users from All users may self-authorize to Admin approved users are pre-authorized

While for users allowed to access those app, go to User Profile (or using Permission Set), look for Connected App Access section, and check the apps.

For users not granted to access the app, they will see following error:

Data Loader: Sorry, your administrator has blocked access to this client

Workbench: user is not admin approved to access this app

The user login history when login with unauthorized app - Failed: Not approved for access

ReferenceWhy am I getting the error "Sorry, your adminstrator has blocked access to this client" when logging in with Apex Data Loader?

Salesforce: Approval Process - Reminder for Approver

In earlier blog, we discussed who can approve on Approval Process? Once user submit a record for approval, approver will receive email to approve or reject, this email is based on email template in Approval Assignment Email Template, but by leave this email template blank, Salesforce will use 'default' template.

But, the approver may missed that email, so the request never been approved or rejected. User also cannot re-submit for approval, by default Submit for Approval button is removed by system after submit for approval.

To track all pending approval requests, admin can run and schedule a standard report called All Pending Approval Requests report, but this will be additional work for admin to manually follow-up on this. Go to Reports tab - Administrative Reports folder - All Pending Approval Requests report.

Solution: create Workflow with Time-Dependent action for Email Alert.
With Time-Dependent Workflow Actions, we can define multiple email alerts for different timing to send alert to approver prior approval / rejection.

Step by step::
1. On the object, add 3 new custom fields to track the approval process:
a) Submit for Approval Date Time - Date/Time field
b) Submit for Approval - Boolean field (default False)
c) Approved - Boolean field (default False)

2. On Approval Process
At Initial Submission Actions, add 2 new Field Update actions to update:
a) Field update: Submit for Approval Date Time = NOW()
b) Field update: Submit for Approval = True

At Final Rejection Actions and Recall Actions, add 1 new Field Update action to update:
c) Field update: Submit for Approval = False
we can leave Submit for Approval Date Time field, so understand the records has been (or when the last) submitted for approval, but rejected/recalled.

At Final Approval Actions, add 1 new Field Update action to update:
d) Field update: Approved = True

3. Create new Workflow with Time-Dependent action:
a) Rule Criteria: Submit for Approval = True AND Approved = False
b) Add Email Alert actions, depend on how many alerts required, as Time-Dependent Workflow Actions
c) Remember to Activate the Workflow.

Issue: the recipient in email alerts (point 3b above).
The recipient in this case would be the approver. Assume the approver is the record owner's manager.
Looking at available recipient type in email alert, there is no option for Owner's Manager.
Vote for this idea: Use 'Owners' Manager for workflow purposes

Here a few options for the workaround:

1. Create a custom Lookup field to User object, this field will show in Related User in the recipient type. You need to have apex trigger to populate owner's manager to this field, but if you are not the #DeveloperHero, use option (2 and 3) below.

2. Similar with option (1) above, create a custom Lookup field to User object, this field will show in Related User in the recipient type. But, instead of using apex trigger to populate owner's manager, you can use Process Builder with action Update Records.

3. Create a custom Email field, this field will be shown in Email Field in the recipient type. You can populate owner's manager email address by using Field Update action, Formula Value = Owner.Manager.EmailThe Field Update action can be added into Approval Process at Initial Submission Actions.

Limitation: if the original approver (Owner's Manager) re-assign the approval process to someone else as Approver, above workflow for reminder will keep send email alert to the original Approver, which is the Owner's Manager.

ReferenceApproval Process With Reminder after submission

Tuesday, July 14, 2015

Salesforce: Approval Process - Who can approve ?

To build an approval workflow in Salesforce is simple, since Salesforce provide Approval Processes. You can find this under Setup - CreateWorkflow & ApprovalsApproval Processes.

In early blogs, we have discussed about Serial and Parallel Approval in Salesforce, in this blog, we would like to discuss in depth option of users can approve?

Manager Approval
In the approval process Step 3. Specify Approver Field and Record Editability Properties, there is option to determine next automated approver.

Notice that Next Automated Approver Determined By is not a mandatory field here.

Option available here:
  • Manager - a standard field in user object and has no relation with Role Hierarchy
  • All custom fields in user object with type = Hierarchy - in above sample: Boss and Sales Director.

If you select Manager as in above screenshot, when you set up Approval Step, in Step 3. Select Assigned Approver you will have option to select Automatically assign using the user field selected earlier. (Manager).

Once this approval step saved, if you go back to approval process Step 3. Specify Approver Field and Record Editability PropertiesNext Automated Approver Determined By become mandatory field.

Change the user field here will auto change Assigned Approver in Approval Steps.

Which Manager?
In Approval process Step 6. Specify Initial Submitters, admin can define who can submit for approval. We have option for the submitter: Record Owner, Record Creator, Public Groups, Role, Role and Subordinates, or specific User. This mean the Manager who approve could be Record Owner's Manager or Submitter's Manager.

How we configure this in Salesforce?

1. Submitter's Manager
This is default option, in approval process Step 3. Specify Approver Field and Record Editability Properties, just select Manager.

2. Record Owner's Manager
If we need the one who approve is not submitter's manager, which valid in many use case, you need go to approval process Step 3. Specify Approver Field and Record Editability Properties, just select Manager, also check Use Approver Field of Opportunity Owner.

Once save, we can confirm in the Approval Process.

Who else can approve?
In approval step - Step 3. Select Assigned Approver you will have option to automatically assign to approver(s)

  • User  --> a specific user to define
  • Queue --> only for object support Queue, such as: Case, Lead and custom object
  • Related User --> in this list, we have Record Owner, Record Creator, User who last modify the record, Lookup field to User in the object (example in Opportunity) - this is not related to custom field in User object.

For information on When multiple approvers are selected, check out this blog.

Monday, July 13, 2015

Salesforce: Report Type for Master-Detail versus Lookup Relationship

First things first, to allow an object in Salesforce available for report, system admin must check "Enable Reports", go to the object detail to enable it:

If the object is related to another objects, Salesforce will automatically create report type based on the object relationship and setting for enable report.

Master-Detail Relationship
In Master-Detail Relationship, each child always need to have a parent, while parent maybe do not have child.

If both object is enable for report, there is one report type created by default, which is Parents with Children, but no child only report type.
Using Customers with Claims (see screenshot above) report type, it will produce all Customers with Claims only, Customers without Claims will be not show in the report.

You can create custom report type for Children only.

Lookup Relationship
In Lookup Relationship, a child may not related to parent.

If both object is enable for report, Parent report type, Children report type will be created by default, and Children with Parent report type.
Using Areas with Region (see screenshot above) report type, it will produce all Areas with Region only, Areas without Region will be not show in the report generated.

You can create custom report type for Regions with Areas, remember that custom report type always start from parent down to children, but you can add fields of parent in child object using fields related via lookup when edit custom report type.

Notice that by default in the MD relationship, it is "Parents with Children", while in Lookup relationship, it is "Children with Parent".

Friday, July 10, 2015

Salesforce: Field Update in Workflow

Field update action in Salesforce workflow is one of the most favourite feature for system admin. Here a few items to note and you may not realize when using field update:
  • Field updates occur after case assignment, lead assignment, auto-response, and case escalation rules.
  • Field updates occur before email alerts, tasks, and outbound messages action.
  • If more than 1 field update to the same field in a workflow, the result of a field update is unpredictable.
  • Field updates function independently of field-level security. Therefore, a workflow rule can update fields even though the user do not have access to the fields at the field-level security.
  • Because updates to records based on workflow rules, it don’t trigger validation rules, assignment, auto-response, or escalation rules.
  • Field updates that are executed as approval actions don't trigger workflow rules.
  • Workflow rules that update owners do not also transfer associated items, such as open Opportunities when it update Account owner.

When Re-evaluate Workflow Rules After Field Change checkbox is selected:
  • It will re-evaluate all workflow rules on the object, if the field update results in a change to the value of the field, workflow rules whose criteria are met as a result of the field update will be triggered.
  • When domino effects occur, it will trigger up to five workflows after the initial field update.
  • Only workflow rules on the same object as the initial field update will be re-evaluated and triggered.
  • Cross-object workflow rules aren’t candidates for re-evaluation, cross-object field updates that cause a field value to change don’t trigger workflow rule re-evaluation.
  • Only workflow rules that didn’t fire before will be re-triggered.

Salesforce processes rules in the following order:
  • Validation rules
  • Assignment rules
  • Auto-response rules
  • Workflow rules (with immediate actions)
  • Escalation rules


Tuesday, July 7, 2015

Salesforce: Functions versus Rules matrix

As Salesforce admin, function is one of my favourite feature, you can use it in:
  • Approval Entry Criteria
  • Approval Step
  • Assignment Rule
  • Auto-Response Rule
  • Custom Button and Link
  • Escalation Rule
  • Field Update
  • Formula Field
  • Validation Rule
  • Workflow Rule

As of Summer'15 release, there are more than 60 functions available, not to ask if you have use all of them, but do you aware if they are exist? I never know and use EXP, LN, LINKTO, SQRT and a few more, and hardly use ABS, BR, DISTANCE.

Do you also know, some of the function only available in certain area, such as:
  • HYPERLINK, IMAGE only in Formula Field
  • VLOOKUP only in Validation Rule
  • FORMAT_ADDRESS, GETRECORDIDS, and a few more only in Custom Button/Link

I try to summarize functions available in each area:

Click here to download the Excel file. Let me know if I missed any or wrong information shared.

Friday, July 3, 2015

Salesforce: Edit Chatter Post

Summer '15 release allow user to edit Chatter Post, this is enabled by default for all organizations. But, as admin you can deactivate it from Setup - Customize - Chatter - Settings - Allow users to edit posts and comments.

When above is enable, additional permissions will be added in the Profile:
- Edit My Own Post (enable by default for standard profile)
- Edit Posts on Records I Own
  * this include ability to edit Post in Chatter group where user is the Manager or Owner group

Both permission is not enable by default for custom profile, as admin you need to enable them in Profile or Permission Set if needed.

Administrator and Users with the Modify All Data permission can always edit all Posts.
Chatter Free, Chatter External and Customer Portal users do not have this permission.

But, this edit capability only for Post, not for Link, File or others.

Thursday, July 2, 2015

Salesforce: Integrate with Social Network

Salesforce have the ability to integrate with social network out of the box, if you not see this in your Salesforce environment, contact your Salesforce admin to turn it on, but make sure to get approval internally. It called as Social Accounts and Contacts, but actually it also enable for Lead.

To enable or disable social network, go to SetupCustomize - Social Apps Integration - Social Accounts and Contacts - Settings.

Each user can configure which social network they want to see in Salesforce. To configure, click My Settings, select Display & Layout – My Social Accounts and Contacts.
Enable and configure Social Accounts and Contacts in Salesforce enable your users to see social profiles for their accounts, contacts, and leads — directly in Salesforce.
  • Salesforce uses the trusted OAuth protocol when you sign in to your Facebook, LinkedIn, Twitter, or accounts. Your social media login credentials aren’t stored to Salesforce.
  • Salesforce doesn’t import or store social information. Each time you select a social profile, Salesforce retrieves the information that you want to see directly from the social network. You’ll always see current social information for your accounts, contacts, and leads.
  • Associating a Salesforce record with a social network account doesn’t cause any activity on the social network. For example, when you associate a contact with a Twitter account, you don’t become a Follower of that account on Twitter.
  • Salesforce never posts anything about your or your activities to your social network accounts.
  • Your accounts, contacts, and leads are not notified when you use Salesforce to view their social network profiles.
  • Your view of a Facebook, LinkedIn, or Twitter profile is unique to you and depends on how you’re connected with each account, contact, or lead on each social network.
  • Only users with edit right to that record able to associate social network profile to the record. Records associated with a social network profile will have photo from social network show in Salesforce record.
  • Once an account, contact, or lead is linked to a social network profile, you and everyone else in Salesforce can access current social data.
  • Account, contact or lead associated with a social network profile, Salesforce always displays current information about it.
  • The details that each Salesforce user can see depend on how they’re connected with the account, contact, or lead on the social network, as well as the privacy settings for the profile.
  • Your social network account will be keep login in Salesforce, even you have logout from Salesforce, until you sign out from your social network manually.


1. Click Twitter icon

2. System will prompt you to login to your Twitter account

3. Enter your Twitter username and password, then click Authorize app button. At this screen, it will list down what this app will and will not able to do. 

4.  For Twitter, Salesforce will search to Twitter profile based on First Name and Last Name. Select a user to continue.

5. User tweet will be display in Salesforce screen

6. User twitter photo will be shown as Lead or Contact photo

7. If user click reply or retweet in Salesforce, it will open Twitter website for that user.

8. When other user open the Lead or Contact, photo assigned from social network to that Lead or Contact will be shown. If that user haven't enter their Twitter login credential, click Twitter icon will be asked to login to their Twitter account.

9. Other users without edit permission to the Contact or Lead will not able to link that Contact or Lead to Twitter account (including set photo). Below screenshot taken from user without edit permission to the Contact or Lead, notice the buttons are missing.

1. Click Facebook icon

2. System will prompt you to login to your Facebook account

3. For Facebook, Salesforce will search Facebook user based on First Name and Last Name. Select a user to continue.

4. It will show if you have any mutual Facebook friends between you and the Contact or Lead. If any other social network assigned earlier to the Lead or Contact by anyone, this will overwrite it.

5. Click “View Full Profile” will open Facebook page for that user.

6. When other user open that Lead or Contact, photo from social network linked to that Lead or Contact will be shown, When user click Facebook icon, user will be asked to login to their Facebook, if that user never did it earlier.

1. Click LinkedIn icon

2. Sign in to LinkedIn

3. Enter your email address and password for LinkedIn, and click Allow access

4. For LinkedIn, Salesforce will search to LinkedIn user based on First Name, Last Name and Company. Select a user to continue.

5. To see full LinkedIn profile of Contact or Lead in Salesforce, you have to subscribe to LinkedIn Premium plan, otherwise you will only see photo, name, and professional headlines of that user from LinkedIn.

6. When other user open that Lead or Contact, photo from social network linked to that Lead or Contact will be shown, When user click LinkedIn icon, user will be asked to login to their LinkedIn account, if that user never did it earlier.


1. Same login process with Lead / Contact, it will search Account Name by default. You will be able to see the tweets linked to the Account in Salesforce.

1. Instead of searching for Facebook user, this will search for Facebook Page.

2. When user select the Facebook page, it will show the company profile page in Facebook.

No option to integrate LinkedIn at Account at this moment


Page-level ad