Differences between CRM, PRM

What are the differences between CRM, PRM


  • CRM stands for Customer Relationship Management.
  • CRM application are built for direct sales.
  • CRM applications help your internal teams manage interactions with potential and current customers.
  • CRM applications compile data from every department, store it on a centralized customer record, and drive customer retention and future sales.


  • PRM stands for Partner Relationship Management.
  • PRM applications are built for indirect Sales.
  • It is about maintaining healthy relationship with the partners and ensuring that the trust between company and the partner remains intact.
  • Partner relationship management solutions only focuses on the product and its Sales to ensure long term profits.

Important productivity features of Salesforce Inbox

What are the important productivity features of Salesforce Inbox?

Salesforce Inbox Importance: Sales Reps most often interact with prospects over email communication. And, most of the companies use CRM to track customers and deals information. So, reps usually spend more time on the CRM tool to enter data. If reps have capability to sync data from emails to CRM, they can focus on closing deals instead of entering data manually.

Salesforce CRM proving below features to save reps time to enter data in the tool.

  • Quick create of Salesforce inbox allows reps to add opportunities & contacts to Salesforce without leaving email Inbox.
  • Salesforce Einstein Activity Capture allows Sync emails and calendar events to Salesforce and associate them with the right records automatically.
  • By using Mobile and desktop apps reps can sell smarter anywhere with the full power of Salesforce in outlook, Gmail, and reps mobile email box.

It allows reps to insert customer meeting based on availability and track when email is opened.

Know about Salesforce Sales Cloud

Salesforce Sales Cloud

Salesforce Sales Cloud

What is Salesforce Sales cloud? Salesforce provides Sales cloud as one of their product part CRM. Sales cloud is created especially for Sales people.

One of the best practice of Sales is Keep all your customer information in one place, accessible by whole Sales team, so that your team can sell faster, smarter and be prepared to grow.

Salesforce-Sales cloud provides many features to fallow best practices of Sales.

  • Salesforce-Sales cloud help you to maintain all your customer at one place instead of having data in excel, sticky notes, note pad and other formats. So that you cannot lose your critical customer information.
  • Salesforce-Sales cloud provides intelligence alerts about the best leads.
  • Salesforce-Sales Cloud gives you real-time reports of how your business is doing.

There are many other cools features available, using Salesforce-Sales cloud cool features reps can concentrate on sell more instead of putting efforts on non-selling activities.

What is a Field filter validation exception?

Field filter validation exception?

Sometimes when you are editing a record in Salesforce, we see an error message like “FIELD_FILTER_VALIDATION_EXCEPTION, Value does not exist or does not match filter criteria,”.

This error appears when there is a lookup filter defined on an object and you modify it so that the update does not reflect the filter criteria.

To fix this issue, check if any lookup filters are defined in the object and make sure any modifications are adhering to the filter criteria.

To check look filters on the object, fallow the below steps.

Go to Setup -> Customize -> click on <Object name> -> Fields.

Scroll through your Fields until you find a Lookup Field.

Click on the Field and review the detail page to see if any filters exist.

Review the Filter Criteria to be sure your modifications adhere to it.

Explain about “Too Many SOQL Error: 101”

Error: System.LimitException: Too many SOQL queries: 101

Too many SOQL queries: 101

“System.LimitException: Too many SOQL queries: 101” errors occur when you exceed SOQL queries governor limit. Actuval limit is “you can run up to a total 100 SOQL queries in a single call or context”.

Ho to resolve this “Error: System.LimitException: Too many SOQL queries: 101”

  • Change your code by fallowing apex code best practices so that the number of SOQL fired is less than 100.
  • If you need to change the context, you can use @future annotation which will run the code asynchronously.

Apex runs on a multi-tenant platform, the apex run time engine strictly enforces limits to ensure code does not monopolize shared resources.

  • Avoid SOQL queries in for loops.
  • Fallow Apex code key principals while writing Triggers and bulk requests.

Reference for Apex code best practices: https://developer.salesforce.com/page/Apex_Code_Best_Practices

Explain about Asynchronous Apex in Salesforce?

Asynchronous Apex Salesforce

Asynchronous Apex

Asynchronous Apex is used to run process in a separate thread at later time. It is process or function that executes a task “in the back ground” without the user having to wait for the task to finish.

We can typically use asynchronous process for callouts to external systems, operations that require higher limits, and code that needs to run at a certain time.

Benefits of Asynchronous process are User efficiency, Scalability and higher limits.

There different ways to implement Asynchronous process in Apex.

  1. Future methods
  2. Batch Apex
  3. Queueable Apex
  4. Scheduled Apex

To know more about Asynchronous Process refer this URL: https://trailhead.salesforce.com/trails/force_com_dev_intermediate/modules/asynchronous_apex/units/async_apex_introduction

What is Platform Cache in Salesforce?

Platform Cache – Salesforce

What is a Cache? Cache is a temporary storage for frequently accessed data from a database

What is Platform Cache? It is a memory layer that stores Salesforce session and org data for later access. When you use Platform Cache, your applications can run faster because they store reusable data in memory. Applications can quickly access this data; they don’t need to duplicate calculations and requests to the database on subsequent transactions. In short, think of Platform Cache as RAM for your cloud application.

Types of Platform Cache:

  1. Org Cache: Org Cache stores org-wide data that anyone in the org can use. Org Cache is accessible across sessions, requests, and org users and profiles.
  2. Session Cache: Session Cache stores data for an individual user and is tied to that user’s session. The maximum life of a session is 8 hours.

What is Cache Partition? Cache partition allows you to allocate space to balance usage and performance across apps. Caching data to designated partitions ensures that the cache space isn’t overwritten by other apps or by less critical data. Before you can use cache space in your org, you must create partitions to define how much capacity you want for your apps. Each partition capacity is broken down between org cache and session cache.

Cache allocation by edition: Platform Cache is available to customers with Enterprise Edition orgs and above.

Enterprise Edition – 10 MB by default, Unlimited Edition – 30 MB by default, Performance Edition – 30 MB by default.

Future method in salesforce – @future

Explain about future method in salesforce?

Future method in salesforce: Future methods are used to run the process in a separate thread, at later time when system resources are available. We can use future methods for any operation we would like to run asynchronously in its own thread.

Future methods provide the benefits of not blocking the users from performing other operations and providing higher governor and execution limits for the processes.

Future method syntax:

  • Use @future annotation before method declaration.
  • Future methods must be static methods, and can only return a void type.
  • The specified parameters must be primitive data types, arrays of primitive data types, or collections of primitive data types.
  • Future methods can’t take standard or custom objects as arguments.
  • A common pattern is to pass the method a list of record IDs that you want to process asynchronously.

global class YourClassName {


  public static void yourFutureMethodName(List<Id> recordIds) {

    List<Account> acc = [Select Id, Name from Account Where Id IN :recordIds];

    // process account records to do awesome stuff



Best practices to implement future methods:

  • Ensure that future method execute as fast as possible.
  • If using webservice callouts, try to bundle all callouts together from same future method, rather than using a separate future method for each callout.
  • Conduct thorough testing at scale. Test that a trigger enqueuing the @future calls is able to handle a trigger collection of 200 records. This helps determine if delays may occur given the design at current and future volumes.

 Consider using Batch Apex instead of future methods to process large number of records asynchronously. This is more efficient than creating a future request for each record.

To know more,  refer below Salesforce Trailhead URL.


How to access metadata from APEX?

How to access metadata from APEX? – Summer’17 release feature

Access Metadata from Apex, What is metadata in salesforce? In Salesforce, if you create object, field, class, page, trigger and any other component type which represents org configuration and customization will be stored in the form of metadata. We can access this metadata by using Metadata API. With Summer’17 Salesforce release, we can use classes in the metadata name space to access metadata components from Apex Code.

As per the salesforce release notes documentation, Access metadata from your Apex code to handle below tasks.

Customizing app installs or upgrades: During or after an install (or upgrade), your app can create or update metadata to let users configure your app.

Customizing apps after installation: After your app is installed, you can use metadata in Apex to let admins configure your app using the UI that your app provides rather than having admins manually use the standard Salesforce setup UI.

Securely accessing protected metadata: Update metadata that your app uses internally without exposing these types and components to your users.

Creating custom configuration tools: Use metadata in Apex to provide custom tools for admins to customize apps and packages.

This feature (Metadata access in apex) is currently limited to custom metadata records and page layouts. We can retrieve, create or update custom metadata but we cannot delete metadata through Apex.

– Use Metadata.Operations class to retrieve and deploy metadata.

– Use the Metadata.Operations.retrieve() method to synchronously retrieve metadata from the current org.

-Use the Metadata.Operations.enqueueDeployment() method to asynchronously deploy metadata to the current org.

Refer Salesforce Apex developer guide to know how to use this feature.