Group Engagement in Salesforce

View group member engagement in a convenient report linked from each group. See the number of members, posts, comments, likes, questions, and answered questions in a single view for each group. This feature is available in Salesforce Classic only.

Anyone with permissions can view the group engagement report. Group owners, managers, and other users with permissions (for example, users with the “Modify All Data” and “Manage Unlisted Groups”) can quickly access this report by clicking Show Group Report below the group photo.

Check the below link for more information


Global Constant In Process Builder in Salesforce

Choose a global constant to set a value to null or an empty string. For example, choose $GlobalConstant.Null.

Two global constants are

1. $GlobalConstant.Null
2. $GlobalConstant.EmptyString

Scenarios for Process Builders:

1. While using update action in Process builder for Contact records and then if we want to clear Account field, then we can use $GlobalConstant.Null. We cannot use $GlobalConstant.EmptyString since the lookup field cannot be mapped to blank string.

2. While using insert or update action in Process builder and if we would like to update any field with blank value, then we can use $GlobalConstant.EmptyString.

Difference between IsBlank and IsNull -


Salesforce Winter '18 Quick Summary

Chatter Answers Retires in Winter ’18

Start planning that retirement party for Chatter Answers! After years of faithful service helping users find answers to their pressing questions, Chatter Answers is calling it quits in Winter ’18. Salesforce will no longer support Chatter Answers, and users of Chatter Answers will no longer be able to post, answer, comment, or view any of the existing Chatter Answers data. Chatter Answers is passing the torch to Chatter Questions, an eager young thing ready to take up the self-service mantle.

Use Einstein Lead Scoring in Salesforce Classic

Add the Lead Insights component to your Salesforce Classic lead page layouts so that sales reps see their leads’ scores and the insights that support them. This change applies to Salesforce Classic only.

Set Up Person Accounts with Ease

Ready to start using person accounts? You picked a great time because we steamlined the
enablement process. This change applies to both Lightning Experience and Salesforce Classic.
An automated process checks whether or not your org meets the requirements for using Person
Accounts. The requirements are:

• At least one record type for accounts.
• Users that have read permission on accounts have read permission on contacts.
• Organization-wide default sharing is set so that Contact is Controlled by Parent or Account
and Contact is Private.

From Setup, enter Account Settings in the Quick Find box, and then select Allow Customer Support to enable Person Accounts. After we confirm that your org is ready for Person Accounts, we’ll send an email with additional information about logging a Support case.

Collaborative Forecasts: Do More with Sales Predictions

Configure Collaborative Forecasts in Lightning Experience. Forecasts users also get more information and can do more when they’re projecting sales. These changes apply to Lightning Experience only.

Enterprise Territory Management: Configure and Manage Sales Territories in Lightning Experience

Configure Enterprise Territory Management in Setup without switching to Salesforce Classic. And reps can now manage their sales territories in Lightning Experience. These changes apply to Lightning Experience only.

Opportunities: Opportunity Teams, Opportunity Products

Working with opportunities in Lightning Experience is more efficient than ever! Your users can now add an entire opportunity team in fewer clicks. And, increase the completeness of opportunities by prompting users to add products immediately when they create or clone an opportunity. These changes apply to Lightning Experience only.

Sales Console: Welcome Forecasting to the Console

You’ve been patiently waiting for Collaborative Forecasts to come to the Lightning Sales Console. The wait is over! Plus, we’ve made other great improvements to Lightning console apps, including the ability to add favorites, navigation rules to make your users’ workflow more efficient, and additional keyboard shortcuts.

Lightning Dialer: Voicemail Greeting and Company Number

Sales reps can now record custom voicemail greetings and display a standard company number when making outgoing calls. These changes apply to Lightning Experience only.

List Views: Customizations, Mass Inline Editing, and Text Wrapping

Reps can get more done with fewer clicks when working from list views. Edit multiple records from a list view, and wrap text in columns to see more at a glance.

Cloud Scheduler Is Retired

The Cloud Scheduler is no longer available. Reps can’t propose new meetings with the New Meeting Request button on events. Existing proposals indicate that the feature is no longer available and suggest that invitees contact the organizer. This change applies to Salesforce Classic only.

Merge Person Accounts in Lightning Experience

Sales reps can now view duplicates on person accounts in Lightning Experience just as they can on business accounts, contacts, and leads. Users with permission can merge person accounts, too. This change applies to Lightning Experience only.

Do More with the Ask Button

In the Community Builder, the Ask Button component has two new options: Show topics and Show details. They give you more control over the appearance of the Ask Question dialog and give your members the best experience. This change is available in Lightning communities.

Get External Files in Communities

Your external files are vital content resources, so naturally you want access to them from your community. Previously only available in Salesforce Tabs + Visualforce communities, you can now access external files in your Lightning communities using Files Connect. Access files from Quip, Google Drive, SharePoint, Box, and OneDrive for Business.

Create Custom File Preview Components

A new Lightning component, Files Preview, makes it easy for your users to preview and take quick action on files. The Files Preview component displays a preview of the file with file actions clearly labeled across the top. When a file can’t be previewed, the preview shows an icon of the file’s type.

Spice Up Your Conversations with Emojis

Emojis have arrived! Engage your audience by adding zest to your feed. When you post, comment, and add details to your questions, or when you answer questions, the emoji icon appears in the Chatter publisher. Emojis are available in Lightning Experience and Lightningcommunities.

Enable Topic Suggestions For Your Org

Topics suggestions are helpful when you want to encourage folks to add topics to their posts and questions. At the same time, having the flexibility of turning off topic suggestions is also key. We now give you the option to turn off topic suggestions for your org. The permission is enabled by default, so contact Salesforce Customer Support to disable topic suggestions.This change applies to both Lightning Experience and Salesforce Classic.

Create a Custom Report Type to See Your Top Ranked Groups

Find out which groups have the most activity in your org with a new custom report type. Create the custom report type using Groups as the Primary object, and monitor your groups’ rankings accordingly. This feature is new in both Lightning Experience and Salesforce Classic.

Create and Collaborate on Quip Documents in Salesforce

Quip lets you create, share, and collaborate on documents and spreadsheets in Salesforce. No need for an external file provider. In Lightning Experience, use the Quip component on records to create new Quip documents and work with existing ones. Work with Quip documents in Chatter, Files home, and Files related lists. Quip is available in Lightning Experience, Salesforce Classic, and communities.

Get Performance Information with the Salesforce Community Page Optimizer

The free Salesforce Community Page Optimizer analyzes your community and identifies issues that impact performance. Use the information to refine your design and improve community performance for your members.

View Related List Data Quickly with Related List Quick Links

Are your users tired of clicking View All to see all the columns in a related list? With the Related List Quick Links component, they can view multiple related lists in quick succession just by hovering over a link. And, they can complete actions right from within the hover pane.

The Related List Quick Links component is available for record pages only.

Let Users Hold Video Meetings and Send Instant Messages Right from a Record with the Cisco Spark for Salesforce Component

As part of the new Cisco Spark for Salesforce feature, the Cisco Spark for Salesforce component is now available in the Lightning App Builder. Add it to record pages to let your users initiate video meetings and send and receive instant messages right from the record they’re visiting.

Set More Variable Values in the Flow Component

You can now set values for your picklist and multi-select picklist variables directly from the properties pane. These changes apply to both Lightning Experience and Salesforce Classic.

Configure a Flow to Wait for a Platform Event to Occur

You can now subscribe to platform events in a flow Wait element. With platform events, a flow can wait for something to occur, inside or outside your Salesforce org. Previously, a flow could wait only for a relative or absolute date/time value. This feature is new in both Lightning Experience and Salesforce Classic.

Start a Process When a Platform Event Occurs

You already know the power of automating a business process based on record changes in your Salesforce org. But what if some of your business-critical events don’t happen inside your Salesforce database? No problem. Create a process that starts when a platform event occurs. This feature is new in both Lightning Experience and Salesforce Classic.

Quickly Reference Specific Users and Queues in Your Processes

Say hello to a more intuitive way of referencing users in your processes. Instead of manually entering a user ID, simply search for that user by name. You can also search for queues. This change applies to both Lightning Experience and Salesforce Classic. The ID and Reference value types didn’t go anywhere. You can still enter the user or queue ID manually or reference a field.

Access Encrypted Data in Process Builder 

Process Builder now supports encrypted fields, except in filters in the Update Records action. This feature is new in both Lightning Experience and Salesforce Classic.

Turn On Multiple Currencies Without Contacting Support

It’s now possible to enable multiple currencies instantaneously without contacting Salesforce Customer Support, or locking your org. These changes apply to Lightning Experience, Salesforce Classic, and all versions of the Salesforce1 mobile app.

Salesforce Connect: Batch Apex, External Object Validator, and Continued

Use batch Apex to process large sets of external object data. Use the Salesforce Connect Validator to quickly test common user and code interactions with external objects. Let us know what you think about the continued pilot for tracking external object data callouts with event log files.

Manage Inactive Picklist Values Easier with Pagination

Track your inactive picklist values better with pagination, even if you have thousands of them. And pagination also helps the pages displaying the values load faster. This feature is new in both Lightning Experience and Salesforce Classic.

Actions Included on a Page Layout Are No Longer Deletable

Deleting an action that is included on a page layout can break the publisher, the other actions on the page, or the entire page. To avoid mistakes, you can no longer delete actions that are used on a page layout. This change applies to both Lightning Experience and Salesforce Classic.

Deploy Named Credential Callout Options via Change Sets, Packages, or Metadata API

When defining a named credential, you can specify whether to customize headers and bodies of Apex callouts that use the named credential. Previously, those callout options were set only via the user interface. Now they can be deployed via change sets, packages, or Metadata API, so you don’t need to manually configure the callout options after deployment. This change applies to both Lightning Experience and Salesforce Classic.

Check Your Encryption Coverage with Encryption Statistics (Beta)

The Encryption Statistics feature shows Shield Platform Encryption customers how much of their data is encrypted with an active tenant secret. Get key statistics for maintaining compliance, stay on top of your key rotation obligations, and streamline the mass encryption process. To enable this feature, contact Salesforce Support. This feature is available in Lightning Experience, Salesforce Classic, and all versions of the Salesforce1 mobile app.

Encrypt Opportunity Description and Next Step Fields (Beta)

You can encrypt the Opportunity Description and Next Step fields in sandbox and production environments. Contact Salesforce to activate this feature. This feature is available in Lightning Experience, Salesforce Classic, and all versions of the Salesforce1 mobile app.

Get Your Pages Ready for Lightning Experience

Want to know if the Visualforce pages in your org are ready for Lightning Experience? Use the Lightning Experience Visualforce check to generate a report that flags pages that need changes before they’re ready for prime time in Lightning Experience. This change applies to Lightning Experience only. Run the Lightning Experience Visualforce Report directly from your Lightning Readiness Report PDF. The Visualforce Report looks at all pages in your org used in the past 90 days, and identifies features that aren’t available in Lightning Experience.

Deployments Now Recompile of All Apex Code

All of an org’s Apex code is now recompiled automatically before completing a metadata deploy, change set, a package install, or a package upgrade (including push upgrades).

Customize Console Apps with the Lightning Console JavaScript API 

The Lightning Console JavaScript API includes new and updated methods that let you customize a Lightning console app and utility bar programmatically. These changes apply to Lightning Experience only.


Sample Partial DML Apex code in Salesforce

Sample Code:

List < Contact > conList = new List < Contact > {
new Contact(FirstName = 'Test0', LastName = 'Test0', Department = 'Finance'),
new Contact(FirstName = 'Test1', LastName = 'Test1', Department = 'Technology'),
new Contact(FirstName = 'Test2', LastName = 'Test2', Department = 'Finance'),
new Contact()

Database.SaveResult[] srList = Database.insert(conList, false);

for (Database.SaveResult sr : srList) {
if ( sr.isSuccess() ) {
// Develop code for sucessfully inserted contacts
System.debug('Successfully inserted contact. Contact ID: ' + sr.getId());
} else {
for ( Database.Error err : sr.getErrors() ) {
// Develop code for failed contacts
System.debug(err.getStatusCode() + ' : ' + err.getMessage() + ' : ' + err.getFields());


Simple Inbound REST API using Apex in Salesforce

Sample Code:

global with sharing class sampleRest {
    global static Account doGet() {
        RestRequest req = RestContext.request;
        String memberId = req.requestURI.substring(req.requestURI.lastIndexOf('/') + 1);
        Account result = [SELECT Id, Name FROM Account WHERE Id = :memberId];
        return result;
    global static String doPost(String name, String descrp) {
        Account a = new Account(Name = name, Description = descrp);        
        insert a;
        return a.Id;

    global static void doDelete() {
        RestRequest req = RestContext.request;
        String memberId = req.requestURI.substring(req.requestURI.lastIndexOf('/') + 1);
        Account memb = [SELECT Id FROM Account WHERE Id = :memberId];
        delete memb;

To test in POSTMAN Client extension, check the below

1. Create a Connected App.

2. Create Auth. Provider.

3. Get the access_token first try GET, POST and DELETE.




To test in Workbench, check the below





Simple Outbound REST API with XML Response using Apex in Salesforce

Remote Site Settings:

Visualforce Page:

<apex:page controller="RESTAPIXMLResponseController">
                <apex:pageBlockSectionItem>Customer No: <apex:inputText value="{!strCustomerNo}"/></apex:pageBlockSectionItem>
            <apex:pageBlockButtons location="bottom">
                <apex:commandButton value="Fetch" action="{!fetchAPI}"/>
            <apex:repeat value="{!mapCustomer}" var="c">
                {!c} - {!mapCustomer[c]}<br/>                 

Apex Class:

public with sharing class RESTAPIXMLResponseController {

    public String strCustomerNo {get;set;}
    public Map < String, String > mapCustomer {get;set;}
    public RESTAPIXMLResponseController() {
    public void fetchAPI() {
        mapCustomer = new Map < String, String >();
        String endpoint = '' + strCustomerNo + '/';
        HTTP h = new HTTP();
        HTTPRequest req = new HTTPRequest();
        HTTPResponse res = h.send(req);
        Dom.Document doc = res.getBodyDocument();
        Dom.XMLNode customer = doc.getRootElement();
        for ( Dom.XMLNode child : customer.getChildElements() ) 
            mapCustomer.put(child.getName(), child.getText());



Simple Outbound REST API with JSON Response using Apex in Salesforce

Remote Site Settings:

Visualforce Page:

<apex:page controller="RESTAPIJSONResponseController">
            <apex:pageBlockButtons location="bottom">
                <apex:commandButton value="Fetch" action="{!fetchAPI}"/>
                <apex:pageBlockTable value="{!listWrapper}" var="obj">
                    <apex:column value="{!}" headerValue="Id"/>
                    <apex:column value="{!obj.login}" headerValue="Login"/>
                    <apex:column value="{!obj.url}" headerValue="URL"/>
                    <apex:column value="{!obj.description}" headerValue="Description"/>

Apex Class:

public with sharing class RESTAPIJSONResponseController {

    public List < JSONWrapper > listWrapper {get;set;}
    public RESTAPIJSONResponseController() {
        listWrapper = new List < JSONWrapper >();
    public void fetchAPI() {
        HTTP h = new HTTP();
        HTTPRequest req = new HTTPRequest();
        HTTPResponse res = h.send(req);  
        JSONParser parser = JSON.createParser(res.getBody());
        listWrapper = (List < JSONWrapper >) JSON.deSerialize(res.getBody(), List < JSONWrapper >.class);
           If the response contains only one value instead list, then you can use the below code
           JSONWrapper obj = (JSONWrapper) JSON.deSerialize(res.getBody(), JSONWrapper.class); 
    public class JSONWrapper {
        public String login {get;set;}
        public String id {get;set;}
        public String url {get;set;}
        public String repos_url {get;set;}
        public String events_url {get;set;}
        public String hooks_url {get;set;}
        public String issues_url {get;set;}
        public String members_url {get;set;}
        public String public_members_url {get;set;}
        public String avatar_url {get;set;}
        public String description {get;set;}



How to download and setup Oxygen Eclipse for IDE?

1. Go to

2. Select 32 bit or 64 bit based on your computer.

To know whether your system is 32 bit or 64 bit, use the below link

3. Click Download.

4.  Extract the downloaded file.

5. Move the extracted eclipse folder to your desired location. In my case, I have moved the extracted folder eclipse to C drive.

6. Create a folder with the name Workspace inside the eclipse folder.

7. Double click eclipse.exe to open Eclipse.

8. Click Browse and select the folder created in step 6. Click Launch to open.

9. Navigate to Help --> Install New Software.

10. Click Add.

11. Enter the below Details.

Name: IDE


12. Click Select All and click "Next".

13. Click Next again.

13. Accept the agreement and click "Finish".

14. Restart Eclipse after installation.

15. Navigate to Windows --> Perspective --> Open Perspective --> Other.

16. Select and click Open.

17. Navigate to File --> New Project.

18. Enter Project name and credentials. Click "Finish" button to create the project.



Chatter Streams in Salesforce

Chatter streams are custom feeds that you create by combining multiple related feeds. Look for streams on your Chatter home page. Create up to 100 streams that each combine posts from up to 25 different feeds and feed types. Create streams that combine feeds from people, groups, and records, like accounts, opportunities, cases, and more.

1. Go to chatter tab and get started. Click + to create a chatter stream.

2. Enter details and Save Chatter Streams Salesforce.

You will be able to see all the feeds related to the records selected. You can select records across all objects.


How to get matching records from Duplicate Rule failure in Salesforce using Apex?

Sample Code:

        Contact contact = new Contact(LastName = 'Test');
        Set < Id > duplicateIds = new Set < Id >();
Database.SaveResult saveResult = Database.insert(contact, false);

        if ( !saveResult.isSuccess() ) {
            for ( Database.Error err : saveResult.getErrors() ) {
                if ( err instanceof Database.DuplicateError ) {
                    Database.DuplicateError duplicateError = (Database.DuplicateError)err;
                    Datacloud.DuplicateResult duplicateResult = duplicateError.getDuplicateResult();
                    Datacloud.MatchResult[] matchResults = duplicateResult.getMatchResults();
                    Datacloud.MatchResult matchResult = matchResults[0];
                    Datacloud.MatchRecord[] matchRecords = matchResult.getMatchRecords();
                    for ( Datacloud.MatchRecord matchRecord : matchRecords ) 

Reference Link -

Cheers!!! to Service Cloud Migration

If you are interested in to Service Cloud Migration, check the below link for considerations.

Before you move into the implementation phase of your project, it’s best to have some important pieces in place. These include a solid project team and a set of requirements for go-live. This unit helps you put together a preliminary structure for executing a successful move to Service Cloud.

When it comes to implementing a new solution, there are a lot of components to consider. What do you roll out in Phase 1 versus Phase 2 (or beyond)? For example, do you need all of those macros moved over to Service Cloud immediately, or is this transition a good time to do some spring cleaning and only migrate the few that your team regularly uses?

There are few trailhead modules specially designed for migration of to Service Cloud.


{“error”:“unsupported_grant_type”,“error_description”:“grant type not supported”}

When you face {“error”:“unsupported_grant_type”,“error_description”:“grant type not supported”} error, put all the information in the body instead of header.

1. If you are using POST, check whether the Content-Type is set as application/x-www-form-urlencoded.

2. Check whether setBody() has correct body data.


Salesforce Interview Questions with Answers Part 44

1. Describe some SF best practices and patterns that you have used?

2. What is tuning performance? How do you increase it?

3.What is apex design pattern? What is continuous pattern?

4.One child record per one master details how would you achieve it?

5.Salesforce design pattern

6.What is asynchronous Apex?

@future, Queueable Interface, Batch Class.

7. What is the future method?

8. What is Queueable Apex?

9. What is Batch Apex?

10.How many batch job can be in the single queue?

You can only have 25 classes scheduled at one time. You can evaluate your current count by viewing the Scheduled Jobs page in Salesforce or programmatically using the Web services API to query the CronTrigger object.

While the batch apex states:

Up to five queued or active batch jobs are allowed for Apex.

10.The difference between Workflow and Process builder?

12.What is flow?

13. What are the steps for inbound, and out bound web service calls?

14. How to handle the error in Apex (class)?

15. Salesforce Case Management?


Conditional Rendering in Lightning Component using aura:if in Salesforce

Lightning Component:


<aura:attribute name="strTest" type="String"/>

<aura:if isTrue="{!not(empty(v.strTest))}">
<aura:set attribute="else">


Check the below link for more methods


What Are Data Integration Rules in Salesforce?

Data integration keeps your data up-to-date. When you activate a data integration rule, Salesforce immediately checks your existing records against a data service to see if new data is available. New records are checked when they're saved. Based on your rule settings, your records are updated with new data.

Data integration rules let you specify the object and fields to update and the data service to use. In addition, the rules let you control triggers and workflow rules for the records that are updated.

1. Navigate to Data Integration Rules.

2. Activate Data Integration Rules.

3. Add Data Integration Rules related list.

4. Create a Formula field as below.


'Accuracy - ' & TEXT(BillingGeocodeAccuracy) & ' - Lattitude - ' & TEXT(BillingLatitude) & ' - Longitude - ' & TEXT(BillingLongitude)



Default Values formula in Picklist Fields Salesforce

Starting from Summer '17 Release, this is available.


Session-Based Permission Sets in Salesforce

Use a session-based permission set to allow functional access only during a predefined session type.

Flows or SOAP API can be used to activate and deactivate the session-based permission set.

Flow Components to Activate and Deactivate the permission Set


How to create Global Picklist Value Sets from existing pick list field in Salesforce?

1. Edit the pick list field.

2. Click Promote to Global Value Set button.

3. Enter Label and Name. Click "Promote to Global Value Set" button.


How to enable Field Service Lightning in Salesforce

1. Go to Field Service Settings.

2.  Enable Field Service Lightning and click "Save" button.


Salesforce Shield

Salesforce Shield lets customers see who is doing what with sensitive data, know the state and value of their data going back up to ten years, and encrypt sensitive data at rest, while still preserving business functionality. It is declarative.

Salesforce Shield includes three core services:

Event Monitoring 

  • Captured daily
  • 28 event types captured

  1. Apex Callout 
  2. Async Report 
  3. Content Transfer 
  4. Logout 
  5. Report Export 
  6. Time-Based Workflow
  7. Apex Execution 
  8. Bulk API 
  9. Dashboard 
  10. MDAPI Operation 
  11. REST API 
  12. URI
  13. Apex SOAP 
  14. Change Set Operation
  15. Document Attachment Downloads
  16. Multiblock Report
  17. Salesforce1 Adoption (UI Tracking)
  18. Visualforce
  19. Apex Trigger 
  20. Content Distribution
  21. Login 
  22. Package Install 
  23. Sandbox
  24. API Content
  25. Document Link
  26. Login As 
  27. Report 
  28. Sites

  • 30 days of events retained
  • Log files are exposed via the API
  • Data available the following day

Below can be done using the log captured

  • Use Analytics Cloud, or:
  • Import data into any BI tool
  • Build an app
  • Use pre-built AppExchange apps
  • Export to CSV file

Field Audit Trail
Field Audit Trail is similar to Field History tracking. It is not like Set Up Audit trail.

Field Audit Trail captures the full life cycle of your data so you can quickly determine the state and value of your data for any date, at any time and define the data retention policy so data is deleted when no longer needed.

Tracks up to 10 years of history with 60 fields per object.

Now you can define rules for how your data is stored in production and archive environments with point-and-click tools.

Platform Encryption
Shield Platform Encryption gives your data a whole new layer of security while preserving critical platform functionality. It enables you to encrypt sensitive data at rest, and not just when transmitted over a network, so your company can confidently comply with privacy policies, regulatory requirements, and contractual obligations for handling private data.


How to set up Snap-Ins - Salesforce?

1. Be in Lightning Experience. If you are in Salesforce classic, kindly switch to Lightning Experience.

2. Go to Snap-Ins.

3. Click New Deployment.

4. Enter and select details. Click "Create" button.