0% found this document useful (0 votes)
18 views75 pages

SF Q & A

Download as pdf or txt
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 75

1|P a g e

1. What is Apex Ans: It is the in-house technology of salesforce.com which is similar to Java
programming with object oriented concepts and to write our own custom logic.

2. What is S-Control ?
Ans: S-Controls are the predominant salesforce.com widgets which are completely based on
Javascript. These are hosted by salesforce but executed at client side. S-Controls are superseded
by Visualforce now.

3. What is a Visualforce Page ?


Ans: Visualforce is the new markup language from salesforce, by using which, We can render the
standard styles of salesforce. We can still use HTML here in Visualforce. Each visualforce tag
always begins with “apex” namespace. All the design part can be acomplished by using
Visualforce Markup Language and the business logic can be written in custom controllers
associated with the Page.

4. Will Visual force still supports the merge fields usage like S-control ?
Ans: Yes. Just like S-Controls, Visualforce Pages support embedded merge fields, like the
{!$User.FirstName} used in the example.

5. Where to write Visualforce code ?


Ans: You can write the code basically in 3 ways.

1. setup->App Setup->Develop->Pages and create new Visulaforce page.


2. Setup -> My Personal Information -> Personal Information -> Edit check the checkbox
development mode. When you run the page like this,
https://ap1.salesforce.com/apex/MyTestPage. you will find the Page editor at the bottom of the
page. You can write you page as well as the controller class associated with it, there it self.
3. Using EclipseIDE you can create the Visulaforce page and write the code.
2|P a g e

6.What are Apex Governor Limits?

Governor limits are runtime limits enforced by the Apex runtime engine. Because Apex runs in a
shared, multitenant environment, the Apex runtime engine strictly enforces a number of limits
to ensure that code does not monopolize shared resources. Types of limits that Apex enforces
are resources like memory, database resources, number of script statements to avoid infinite
loops, and number of records being processed. If code exceeds a limit, the associated governor
issues a runtime exception.

7. How to create and host S Control in Salesforce ?

https://jitendrazaa.com/blog/webtech/salesforce/how-to-create-s-control-in-salesforce/

https://jitendrazaa.com/blog/webtech/salesforce/how-to-host-s-control-in-visualforce-page/

8. Difference between Sandbox and Development environment?

https://jitendrazaa.com/blog/webtech/salesforce/difference-between-sandbox-and-developer-
edition-in-salesforce/

9. How to schedule export or take the backup of salesforce?

https://jitendrazaa.com/blog/webtech/salesforce/backup-the-salesforce-data/

10. Do governor limits apply to sandbox instances?

Ans : Governor limits do apply to all Salesforce instances (trial, developer, production or
sandbox environments). However code coverage and successful execution of test classes is only
enforced when deploying to a production environment.
3|P a g e

11. What is difference in ISNULL and ISBLANK?

ISNULL:

• Determines if an expression is null (blank) and returns TRUE if it is. If it contains a value, this
function returns FALSE.
• Text fields are never null, so using this function with a text field always returns false. For
example, the formula field IF(ISNULL(new__c) 1, 0) is always zero regardless of the value in the
New field. For text fields, use the ISBLANK function instead.
• Multi-select picklist fields are never null in s-controls, buttons, and email templates, so using
this function with a multi-select picklist field in those contexts always returns false.
• Empty date and date/time fields always return true when referenced in ISNULL functions.
• Choose Treat blank fields as blanks for your formula when referencing a number, percent, or
currency field in an ISNULL function. Choosing Treat blank fields as zeroes gives blank fields
the value of zero so none of them will be null.
• Merge fields can be handled as blanks, which can affect the results of components like s-controls
because they can call this function.
• When using a validation rule to ensure that a number field contains a specific value, use the
ISNULL function to include fields that do not contain any value. For example, to validate that a
custom field contains a value of ‘1,’ use the following validation rule to display an error if the
field is blank or any other number: OR(ISNULL(field__c), field__c<>1)

ISBLANK:

• Determines if an expression has a value and returns TRUE if it does not. If it contains a value,
this function returns FALSE.
• Use ISBLANK instead of ISNULL in new formulas. ISBLANK has the same functionality as
ISNULL, but also supports text fields. Salesforce.com will continue to support ISNULL, so you
do not need to change any existing formulas.
• A field is not empty if it contains a character, blank space, or zero. For example, a field that
contains a space inserted with the spacebar is not empty.
• Use the BLANKVALUE function to return a specified string if the field does not have a value; use
the ISBLANK function if you only want to check if the field has a value.
• If you use this function with a numeric field, the function only returns TRUE if the field has no
value and is not configured to treat blank fields as zeroes.

for further study you can read this link.

12. Is it possible to write the Apex code from user Interface?

You can add, edit, or delete Apex using the Salesforce.com user interface only in a Developer
Edition organization, a Salesforce.com Enterprise Edition trial organization,
or sandboxorganization. In a Salesforce.com production organization, you can only make
changes to Apex by using the Metadata API ,
4|P a g e

deploycall, the Force.com IDE, or theForce.com Migration Tool. The Force.com


IDE and Force.com Migration Tool are free resources provided by salesforce.com to support its
users and partners, but are not considered part of our Services for purposes of
the salesforce.com Master Subscription Agreement.

13. When you can’t add Time dependent action in Workflow rule?
You can’t add time-dependent actions to a rule if you choose Every time a record is created or
edited.

14. What are the types of email templates available in salesforce.com?

1. Text
2. HTML with Letter Head
3. Custom HTML
4. Visual force

15. What are the different Salesforce.com Editions and Limits?

Ans : check this URL

16. What is Roll up summary field in Salesforce?

Roll up summary field in salesforce calculates the Count, Sum, Min or Max of particular field
of any child record. Thus, we can say that Roll up summary field can only be created
on Master object. To read further, please check this URL
5|P a g e

17. What will happen if the Account is deleted?

If the Account is deleted then Contact, Opportunity will also be deleted from Salesforce which
are related to that Account.

From the database perspective, check below image of child relationships of Account:

Account Child relationship in salesforce


If we use schema builder, released in Winter 12 it would look like:
6|P a g e

Account Contact and Opportunity of salesforce in schema builder

18. How many types of the relationship fields available in Salesforce?

Ans :

1. Master Detail
2. Many to Many
3. Lookup
4. Hierarchical (It is available only on User Object, we cannot create this relationship)

19. How to create many to many relationships between object?

Creating many to many relationship in salesforce is little tricky. You cannot create this type of
relationship directly. Follow below steps to create this type of relationship.

Create both objects which should be interlinked.

Create one custom object (also called as junction object), which should have autonumber as
unique identification and create two master relationships for both objects, no need create
tab for this object.
7|P a g e

Now on both object, add this field as related list.

Check this article on blog to create many to many relationship in detail.

To study more in detail, please refer salesforce documents.

20. In Which sequence Trigger and automation rules run in Salesforce.com

Ans : The following is the order Salesforce logic is applied to a record.

1. Old record loaded from database (or initialized for new inserts)
2. New record values overwrite old values
3. System Validation Rules
4. All Apex “before”• triggers
5. Custom Validation Rules
6. Record saved to database (but not committed)
7. Record reloaded from database
8. All Apex “after”• triggers
9. Assignment rules
10. Auto-response rules
11. Workflow rules
12. Escalation rules
13. Parent Rollup Summary Formula value updated (if present)
14. Database commit
15. Post-commit logic (sending email)

Additional notes: There is no way to control the order of execution within each group
above.

21. If one object in Salesforce have 2 triggers which runs “before insert”. Is there
any way to control the sequence of execution of these triggers?

Ans : Salesforce.com has documented that trigger sequence cannot be predefined. As a


best practice create one trigger per object and use comment blocks to separate different logic
blocks. By having all logic in one trigger you may also be able to optimize on your SOQL queries.

22. How to delete the User from Salesforce?

Ans : As per now, salesforce does not allow to delete any user, however you can deactivate the
user.
8|P a g e

23. How to delete the users data from Salesforce?

Ans : To delete the Users Data go to Setup | Administration Setup | Data Management | Mass
Delete Record, from there select the objects like Account, Lead etc and in criteria select the users
name and delete all records of that user related to particular object.

24. How to restrict the user to see any record, lets say opportunity?

Ans : set up opportunity sharing to be private. If both users are admins or have view all records
on opportunity, then that overrides private sharing.

25. What is the difference between trigger.new and trigger.old in Apex – SFDC?

Ans :

Trigger.new :

Returns a list of the new versions of the sObject records.

Note that this sObject list is only available in insert and update triggers, and the records can only
be modified in before triggers.

Trigger.old :

Returns a list of the old versions of the sObject records.

Note that this sObject list is only available in update and delete triggers.
9|P a g e

26. How to restrict any Trigger to fire only once OR how we can avoid repeated or
multiple execution of Trigger?

Ans:

Triggers can fire twice, once before workflows and once after workflows, this is documented at

http://www.salesforce.com/us/developer/docs/apexcode/ Content/
apex_triggers_order_of_execution.htm:

“The before and after triggers fire one more time only if something needs to be updated. If the
fields have already been set to a value, the triggers are not fired again.”

Workaround:

Add a static boolean variable to a class, and check its value within the affected triggers.

1 public class HelperClass {


2 public static boolean firstRun = true;
3}
trigger affectedTrigger on Account (before delete, after delete,
4
after undelete) {
5 if(Trigger.isBefore){
6 if(Trigger.isDelete){
7 if(HelperClass.firstRun){
Trigger.old[0].addError('Before Account Delete
8
Error');
9 HelperClass.firstRun=false;
10 }
11 }
12 }
13 }

27. What is difference between WhoId and WhatId in the Data Model of Task ?

Ans :

WhoID refers to people things. So that would be typically a Lead ID or a Contact ID


WhatID refers to object type things. That would typically be an Account ID or an Opportunity ID
10 | P a g e

28. Where is the option of the report for the “Custom Object with related object”
and what are the condition to generate related reports?
Ans :

If the parent object is the standard object provided by the salesforce like “Account”, “Contact”
then the report will be in there section with related custom object.
If both objects are the custom then the report will be in “Other Reports” Sections.

Following are the conditions to get the report of related objects:

• On both the objects, Reports option must be enable.


• Both object must be related either using Lookup or Master Detail type of field.

Read this article, to get detailed idea on this topic.

29. How you can provide the User Login (Authentication) in Public sites created by
Salesforce.

Answer : We can provide the authentication on public sites using “Customer Portal”.

30 : What is the dynamic Apex?


Ans :
Dynamic Apex enables developers to create more flexible applications by providing them with
the ability to “Access sObject and field describe information”, “Write Dynamic SOQL
Queries”, “Write Dynamic SOSL Queries” and “Dynamic DML”.

31 : How to get the list of all available sobject in salesforce database using Apex
(Dynamic Apex)?
Ans:

1 Map<String, Schema.SObjectType> m = Schema.getGlobalDescribe();


11 | P a g e

32 : How to create instance of sobject dynamically? Normally the sobject is created


like “Account a = new Account();”. But if you are in situation that you don’t know
which sobject is going to be instantiated ? Means it will be decided at runtime, how
you will handle it? Hint : Use Dynamic Apex.
Ans:

1 public SObject getNewSobject(String t)


2{
3
4 // Call global describe to get the map of string to token.
5 Map<String, Schema.SObjectType> gd = Schema.getGlobalDescribe();
6
7 // Get the token for the sobject based on the type.
8 Schema.SObjectType st = gd.get(t);
9
10 // Instantiate the sobject from the token.
11 Sobject s = st.newSobject();
12
13 return s;
14 }

33 : How to get all the fields of sObject using dynamic Apex?


Ans:

1 Map<String, Schema.SObjectType> m = Schema.getGlobalDescribe() ;


2 Schema.SObjectType s = m.get('API_Name_Of_SObject') ;
3 Schema.DescribeSObjectResult r = s.getDescribe() ;
4 Map<String,Schema.SObjectField> fields = r.fields.getMap() ;

34 : How to get all the required fields of sObject dynamically?


Ans:
There is no direct property available in Apex dynamic API to represent the required field.
However there is another way to know about it.
If any field have below three properties then it is mandatory field.

1. If it is Creatable
2. If it is not nillable and
3. If it does not have any default value
12 | P a g e

1 Map<String, Schema.SObjectType> m = Schema.getGlobalDescribe() ;


2 Schema.SObjectType s = m.get(so.apiName) ;
3 Schema.DescribeSObjectResult r = s.getDescribe() ;
4 Map<String,Schema.SObjectField> fields = r.fields.getMap() ;
5
6 for(String f : fields.keyset())
7{
Schema.DescribeFieldResult desribeResult =
8
fields.get(f).getDescribe();
if( desribeResult.isCreateable() && !desribeResult.isNillable()
9
&& !desribeResult.isDefaultedOnCreate() )
10 {
11 //This is mandatory / required field
12 }
13 }

35 : How to display error messages in the visualforce page ?


Ans:
In Apex use below code to create the error message for visualforce.

Apexpages.addMessage( new ApexPages.Message


1
(ApexPages.Severity.ERROR, 'Required fields are missing. '));
in Visualforce page add below tag where you want to display the error message.

<apex:pageMessages ></apex:pageMessages>

36 : What is property in Apex? Explain with advantages.


Ans:
Apex mainly consist of the syntax from the well known programming language Java. As a
practice of encapsulation in java we declare any variable as private and then creates the
setters and getters for that variable.

1 private String name;


2 public void setName(String n)
3{
4 name = n;
5}
6 public String getName()
7{
13 | P a g e

8 return name;
9}
However, the Apex introduced the new concept of property from language C# as shown below:

1 public String name {get; set;}


As we can see how simple the code is and instead of using nearly 8 to 11 lines all done in 1 line
only. It will be very useful when lots of member is declared in Apex class. It has another
advantage in “number of lines of code” limit by salesforce which will drastically reduced.

37 : What is the controller extension ?


Ans:
Any apex class having a public constructor with Custom Controller or Standard Controller object
as a single argument is known as controller extension.

38 : Explain the need or importance of the controller extension.


Ans:
Controller extension is very useful and important concept introduced by the salesforce recently.
It gives the power to programmer to extend the functionality of existing custom controller or
standard controller.
A Visualforce can have a single Custom controller or standard controller but many controller
extensions.
we can say that the custom extension is the supporter of custom or standard controller.
Consider one example : If there is one controller written and used by the multiple visualforce
pages and one of them needs some extra logic. Then instead of writing that logic to controller
class (Which is used by many visualforce pages) we can create a controller extension and apply
to that page only.

39 : How to read the parameter value from the URL in Apex?


Ans:
Consider that the parameter name is “RecordType”.

String recordType =
1
Apexpages.currentPage().getParameters().get('RecordType');
40. What is Master Detail relationship and look up relationship in Salesforce?
Ans:
Master Detail relationship is the Parent child relationship. In which Master represents
Parent and detail represents Child. If Parent is deleted then Child also gets deleted. Rollup
summary fields can only be created on Master records which will calculate the SUM, AVG, MIN
14 | P a g e

of the Child records.


Look up relationship is something like “has-a” (Containership) relationship. Where one
record has reference to other records. When one record is deleted then there is no impact on
other records.

41. Can we convert the lookup relationship to Master Detail relationship?


Ans:
We can convert the lookup relationship to master detail relationship if and only if all the existing
record has valid lookup field.
42. In How many way we can invoke the Apex class?
Ans:

1. Visualforce page
2. Trigger
3. Web Services
4. Email Services
43. Can we create Master Detail relationship on existing records?
Ans:
No. As discussed above, first we have to create the lookup relationship then populate the value
on all existing record and then convert it.
44. How validation rules executed? is it page layout / Visualforce dependent?
Ans :
The validation rules run at the data model level, so they are not affected by the UI. Any record
that is saved in Salesforce will run through the validation rules.

45. What is the difference between database.insert and insert ?


Ans:
insert is the DML statement which is same as databse.insert. However, database.insert gives
more flexibility like rollback, default assignment rules etc. we can achieve the database.insert
behavior in insert by using the method setOptions(Database.DMLOptions)
Important Difference:

• If we use the DML statement (insert), then in bulk operation if error occurs, the execution will
stop and Apex code throws an error which can be handled in try catch block.
• If DML database methods (Database.insert) used, then if error occurs the remaining records will
be inserted / updated means partial DML operation will be done.

46. What is the scope of static variable ?


Ans:
When you declare a method or variable as static, it’s initialized only once when a class is loaded.
Static variables aren’t transmitted as part of the view state for a Visualforce page.Static variables
are only static within the scope of the request. They are not static across the server, or across the
entire organization.
15 | P a g e

47. Other than SOQL and SOSL what is other way to get custom settings?
Ans:
Other than SOQL or SOSL, Custom seting have there own set of methods to access the record.
For example : if there is custom setting of name ISO_Country,

1 SO_Country__c code = ISO_Country__c.getInstance("˜INDIA');


//To return a map of data sets defined for the custom object (all
2
records in the custom object), //you would use:
3 Map<String,ISO_Country__c> mapCodes = ISO_Country__c.getAll();
4 // display the ISO code for India
5 System.debug("˜ISO Code: "˜+mapCodes.get("˜INDIA').ISO_Code__c);
6 //Alternatively you can return the map as a list:
7 List<String> listCodes = ISO_Country__c.getAll().values();

48. What happen if child have two master records and one is deleted?
Ans :
Child record will be deleted.

read more in this article.

49. What is Difference in render, rerender and renderas attributes of visualforce?


Ans:
render – It works like “display” property of CSS. Used to show or hide element.
rerender – After Ajax which component should be refreshed – available on commandlink,
commandbutton, actionsupport etc.
renderas – render page as pdf, doc and excel.

50. What is Scheduler class in Apex and explain how to use Crone statement to
Schedule Apex class?
Ans:
The Apex class which is programed to run at pre defined interval.
Class must implement schedulable interface and it contains method named execute().
There are two ways to invoke schedular :

1. Using UI
2. Using System.schedule
16 | P a g e

The class which implements interface schedulable get the button texted with “Schedule”•,
when user clicks on that button, new interface opens to schedule the classes which implements
that interface.
To see what happened to scheduled job, go to “Monitoring | Scheduled jobs ”

Example of scheduling :

1 scheduledMerge m = new scheduledMerge();


2 String sch = '20 30 8 10 2 ?';
3 system.schedule('Merge Job', sch, m);
To see how to make crone job string – Refer this Online Crone Expression Generator tool .

Note : Salesforce only accepts integer in Seconds and Minutes. So, lets say if you want to run
Apex job on every 10 minutes, crone statement will be ‘0 0/10 * 1/1 * ? *’ and salesforce will
throw an error saying “System.StringException: Seconds and minutes must be specified as
integers“. That mean like Time based Workflow, minimum interval to schedule job is 1 hour.

51. Explain Permission sets released in Winter 12.


Ans :
A permission set is a collection of settings and permissions that give users access to various tools
and functions. The settings and permissions in permission sets are also found in profiles,
but permission sets extend users’ functional access without changing their profiles.
For example, to give users access to a custom object, create a permission set, enable the required
permissions for the object, and assign the permission set to the users. You never have to change
profiles, or create a profile for a single use case. While users can have only one profile, they can
have multiple permission sets.

52. What is the difference between External ID and Unique ID?


Ans:
External ID
This is a field that usually references an ID from another (external) system. For instance, if the
customer has an Oracle Financials system that they will be linking with salesforce.com, it may
be easier for them to be able to refer to the Oracle ID of account records from within salesforce.
So they would create an external ID in salesforce.com and they would load the Oracle ID into
that field for each account. They can then refer to that ID field, rather than the salesforce.com id.

Additionally, if you have an external ID field, the field becomes searchable in the sidebar search.
You also can use the upsert API call with the extenal ID to refer to records.

You can have multiple records with the same external ID (though it is not reccomended, as it
will defeat the purpose of the external id) .

External Id available for Text, Number and Email field types.


17 | P a g e

External Id is used in upsert operations.

• If external id is absenor not matched then insert happens.


• If external id matched once then record will be updated.
• If external id is matched multiple times then error occurs.

Unique ID field

This is a setting for the field that will prevent you from using the same value in multiple records
for the unique field. So if I create a 5 character text field and make it unique, and I create a
record with the value “12345” i will not be able to create another record with that same value in
the unique field. If i try to do so, I will get an error saying that the value is already in use.

Often, External Ids are set with the unique property so that the IDs will be unique to each
record.

Salesforce – External Id option while creating field

53. How to get the picklist value in Apex class?


Ans :
Using Dynamic apex, we can achieve this.on object of type pickilist, call getDescribe(). then
call the getPicklistValues() method. iterate over result and create a list. bind it to
<apex:selectOptions>.
18 | P a g e

54. What are the types of controller in visual force?


Ans :
There are basically two types of Controller in Visual force page.

1. Standard Controller and


2. Custom Controller

55. How many Controllers can be used on single VF page?


Ans :

Only one controller can be used salesforce. Other than them, Controller extension can be
used. There may be more than one Controller extention.
Example :

1 <apex:page standardController="Account"
2 extensions="ExtOne,ExtTwo" showHeader="false">
3 <apex:outputText value="{!foo}" />
4 </apex:page>
if ExtOne and ExtTwo, both have the method getFoo() then the method of ExtOne will be
executed.

A controller extension is any Apex class that contains a constructor that takes a single argument
of type ApexPages.StandardController or CustomControllerName, where
CustomControllerName is the name of a custom controller that you want to extend.

56. Explain System.runAs()


Ans :
Generally, all Apex code runs in system mode, and the permissions and record sharing of the
current user are not taken into account. The system method, System.runAs(), lets you write
test methods that change user contexts to either an existing user or a new user. All of that user’s
record sharing is then enforced. You can only use runAs in a test method. The original
system context is started again after all runAs() test methods complete.
Example :

1 System.runAs(u) {
2 // The following code runs as user 'u'
3 System.debug('Current User: ' + UserInfo.getUserName());
4 System.debug('Current Profile: ' + UserInfo.getProfileId()); }
5 // Run some code that checks record sharing
6}
19 | P a g e

57. Explain Test.setPage().


Ans:
It is used to set the context to current page, normally used for testing the visual force controller.
58. What is the custom settings ?
Ans :
Custom settings are similar to custom objects and enable application developers to create
custom sets of data, as well as create and associate custom data for an organization, profile, or
specific user. All custom settings data is exposed in the application cache, which enables
efficient access without the cost of repeated queries to the database. This data can then be used
by formula fields, validation rules, Apex, and the Web services API.
59. Types of the custom settings?
Ans :
List Custom Settings
A type of custom setting that provides a reusable set of static data that can be accessed across
your organization. If you use a particular set of data frequently within your application, putting
that data in a list custom setting streamlines access to it. Data in list settings does not vary
with profile or user, but is available organization-wide. Examples of list data include
two-letter state abbreviations, international dialing prefixes, and catalog numbers for products.
Because the data is cached, access is low-cost and efficient: you don’t have to use SOQL queries
that count against your governor limits.

Hierarchy Custom Settings


A type of custom setting that uses a built-in hierarchical logic that lets you “personalize”•
settings for specific profiles or users. The hierarchy logic checks the organization, profile, and
user settings for the current user and returns the most specific, or “lowest,”• value. In the
hierarchy, settings for an organization are overridden by profile settings, which, in turn, are
overridden by user settings.

60. Difference between SOSL and SOQL in Salesforce ?


Ans :

SOSL SOQL

stands for "Salesforce object search language". stands for "Salesforce object query language".

Works on multiple object at a same time. Need to write different SOQL for different
object.

All fields are already text indexed. SOQL against same field will be slow.
20 | P a g e

SOSL SOQL

Cannot used in Triggers. Can only be used in Can be used in Apex class and Triggers.
Apex class and anonymous block.

61. How to round the double to two decimal places in Apex?


Ans:

1 Decimal d = 100/3;
2 Double ans = d.setScale(2) ;

62.In Profile settings, what is difference between “Modify All Data” and “Modify
All” ?
Ans:
Modify All Data : Create, edit, and delete all organization data, regardless of sharing settings.
Modify All : Give Read, Add, Delete permission to selected Object, Create permission is not
included in Modify All permission.

63. If i want record level access then what should i use from Salesforce security
model?
Ans: Manual Sharing

63. If i want Object level access then what should i use from Salesforce security
model?
Ans: Profile

64. In OWD (Organization wide sharing), can i change the setting “Grant Access
Using Hierarchies” for Standard Objects ?
Ans: You cannot change it for Standard Objects However for Custom Objects its possible.

65. What is Mandatory while creating User, Role or Profile?


Ans : Its Profile.
21 | P a g e

66. In case of Master-Detail relationship, on Update of master record can we


update the field of child record using workflow rule?
Ans: No

67. In case of Master-Detail relationship, on Update of child record can we update


the field of Parent record using workflow rule?
Ans: Yes, the Master fields are also available for “Criteria evaluation”.

68. While setting OWD (Organization wide sharing), can we change/modify the
setting of child record in case of Master-Detail relationship?
Ans: No, Child record is controlled by the Parents setting.

69. What is the need of “Custom Controller” in Visualforce as everything can be


done by the combination of Standard Controller + Extension class.
Ans :

• Sharing setting is applied on standard object/extension by default; In case we don’t want to


apply sharing setting in our code then Custom controller is only option.
• It is possible that the functionality of page does not required any Standard object or may require
more than one standard object, then in that case Custom controller is required.

70. In class declaration if we don’t write keyword “with sharing” then it runs in
system mode then why keyword “without sharing” is introduced in apex?
Ans:
Lets take example, there is classA declared using “with sharing” and it calls classB method.
classB is not declared with any keyword then by default “with sharing” will be applied to that
class because originating call is done through classA. To avoid this we have to explicitly define
classB with keyword “without sharing”.

71. If user doesn’t have any right on particular record and have only read level
access at object level. Can he change the record owner?
Ans : Yes. In profile, there is setting for “Transfer Record”•.
22 | P a g e

72. In Which Scenario share object “MyCustomObject__share”• is not


available/created for custom object “MyCustomObject”• ?
Ans: The object’s organization-wide default access level must not be set to the most permissive
access level. For custom objects, this is Public Read/Write. For more information, see Access
Levels. This object is used for creating Apex based sharing.

73. How to hide the “App Setup” Menu from user’s setup page?
Ans : In Profile, remove access “View Setup and Configuration”•.
74. While creating new profile for user, which existing profile should be copied?
Ans: If the new user is not System administrator then copy from “Standard User”• profile.
75. Who can run reports?
Ans : Users with permission “Run Report”• and access to report folder can only run the report.
76. What is Difference between “printable View” and “Export Details” button on
report?
Ans:
Printable View: formatting, grouping and subtotals are persisted.
Export Details: formatting, grouping and subtotals are lost.

Salesforce Report – Printable view and Export Details

77. What is the use of “floating report header”•?


Ans: If you have long tabular report, you can make the column header visible on each pages as
you scroll, by enabling floating report headers.
23 | P a g e

78. How to enable “floating report header”•?


Ans :
Go to “Setup | App Setup | Customize | Report and Dashboard | User Interface Settings “.
Click on checkbox “Enable Floating Report Headers”•.

Salesforce Enable Floating Reports Headers

79. Which permission is required to set the running user other than you in
dashboard?
Ans: “View All Data”• in profile.
80. Who can access “drag and drop dashboard”•?
Ans : User with permission “manage dashboard”•.

81. Which type of report can be used for dashboard components?


Ans : Summary and matric report.
82. How many types of dashboard components are available?
Ans : Chart, Table, Metric and Gauge.
83. Explain dynamic Dashboard.
Ans : Dashboard which is running under current logged in user permission are known as
“dynamic Dasboard”•. At the most 3 dynamic dashboards can be built. Available in Unlimited,
Enterprise and developer edition. This type of dashboard cannot be scheduled for refresh. IT
must be scheduled manually.
84. What is the default timeout period while calling webservice from Apex.
Ans : 10 sec.
85. A single Apex transaction can make how many callouts to an HTTP request or
an API call ?
Ans : Maximum 10 callouts
86. How to increase timeout while calling web service from Apex ?
Ans :

1 docSample.DocSamplePort stub = new docSample.DocSamplePort();


2 stub.timeout_x = 2000; // timeout in milliseconds
24 | P a g e

87. How to show loading image while Ajax call in Visualforce? OR how to show
image in <apex:actionStatus> tag in Visualforce?
Ans:

1 <div style="position:absolute;top:20px;left: 50%;">


2 <apex:actionStatus id="refreshContent" >
3 <apex:facet name="start" >
4 <apex:image url="{!$Resource.LoadingImage}" />
5 </apex:facet>
6 </apex:actionStatus>
7 </div>

88. What is analytic Snapshot in salesforce?


Ans : Analytic snapshot capture and store the data at pre decided intervals. It captures data
from report and saves in custom object as per schedule. It only supports tabular and summary
report as a source report. It does not support matrix report. The field type in target object must
be same as source report object field.

Salesforce Analytic Snapshot – Source Report


and Target Object
25 | P a g e

Salesforce Analytic Snapshot – Field Mapping between Source Report and Target Object

89. What is difference between Mobile Lite and Salesforce Mobile?


Ans :

Feature Mobile Lite Salesforce Mobile

Edit capabilities All standard objects Any app, any record

Customizations Supports custom fields Any - includes custom fields, objects, tabs,
configurations

Records Most recently used records; search All records


only

Objects Leads, accounts, contacts, All objects


opportunities, tasks, events, cases,
26 | P a g e

Feature Mobile Lite Salesforce Mobile

solutions, assets, and dashboards

Custom objects None Any

Initial set of Recently viewed on Web Fully configurable


records

Download Using live search Using live search


additional records

Security Secured data access and over-the-air Secured data access and over-the-air managemen
management

Price Free for all editions of Salesforce Free for Unlimited Edition customers; available i
Professional Edition and Enterprise Edition for a
fee

90. What is features of “Manage Members” in campaign records?


Ans :

Campaign members are created from lead, contact, or person account records. Salesforce
provides a variety of ways in which you can manage your campaign members. You can add and
update up to 50,000 campaign members at a time through lead, contact, and person account
reports; you can search for and add or edit multiple leads and contacts from the Manage
Members page; you can add an unlimited number of leads and contacts using a CSV import file;
or you can add members to a campaign one at a time from contact or lead detail pages.
Read More:

http://login.salesforce.com/help/doc/en/campaigns_managemembers.htm
http://login.salesforce.com/help/doc/en/campaigns_members_using.htm#topic-title

91. How to add the Document Header in Visualforce page?


Ans : Directly there is no way to add the document type in visualforce. However in most of the
cases IE9 does not work with Visualforce pleasantly. And then we need to add the Document
type in header. So following workaround will work.
27 | P a g e

1 <apex:outputText
2 escape="false"
value="{!'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'}"/>
4 <html>
5 <head>
6 <title>test</title>
7 </head>
8 <body>test</body>
9 </html>
10 </apex:page>
Read more in detail in thread – http://boards.developerforce.com/t5/Visualforce-
Development/Changing-doctype-of-a-Visualforce-Page/td-p/82397/page/2

92. Onchange event does not work with <apex:actionsupport> in IE9. How to
resolve this error?
Ans: If we hide the Header on Visualforce page then it creates lots of problem in IE9. I think
there are few java-script library loaded by Header of Salesforce which makes IE9 compatible. So
the best solution is to enable the Headre by using “showHeader=true” in Apex page.

93. If IE9 is not working with your custom visualforce page then how to tell your
visualforce code to run in IE8 compatibility mode?
Ans:
Add following metatag to pages:

1 <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />

94. It may happen that above tips will not work as lots of time the page header
already sent. then how to achieve same result using Apex?
Ans:
Add below line of code in Apex (Constructor)

1 Apexpages.currentPage().getHeaders().put('X-UA-Compatible', 'IE=8');
Read more tips and tricks to solve IE9 issue in Salesforce here.
28 | P a g e

95. How to display the formatted number / date in Visualforce ? Which component
should be used?
Ans : Use component “<apex:outputText>”.
Example : Format the number into currency.

1 <apex:outputtext value="{0, number, 000,000.00}">


2 <apex:param value="{!valFromController}" />
3 </apex:outputtext>
OR

1 <apex:outputtext value="{0, number, ###,###.00}">


2 <apex:param value="{!valFromController}" />
3 </apex:outputtext>
Read in Detail , here

96. You want to display the Encrypted field on Visualforce and you are using
component apex:outputText. Will it work for Encrypted fields?
Ans : Encrypted custom fields that are embedded in the <apex:outputText> component display
in clear text. The <apex:outputText> component doesn’t respect the View Encrypted Data
permission for users. To prevent showing sensitive information to unauthorized users, use the
<apex:outputField> tag instead.

Below Questions related to Group by clause in SOQL

97. Will below query work? Explain.

1 SELECT COUNT(Id), Name, Address__c FROM Opportunity GROUP BY Name


Ans :
Above query will throw an error.
Explanation : In Group by clause the columns selected must be either used in Group by clause or
in aggregate functions. The Name field is neither used in aggregate methods and in group by
clause and hence will result in error “Malformed Query”.

Read more here in detail – Group by Documentation


29 | P a g e

98. Explain difference in COUNT() and COUNT(fieldname) in SOQL.


Ans :

COUNT()

• COUNT() must be the only element in the SELECT list.


• You can use COUNT() with a LIMIT clause.
• You can’t use COUNT() with an ORDER BY clause. Use COUNT(fieldName) instead.
• You can’t use COUNT() with a GROUP BY clause for API version 19.0 and later. Use
COUNT(fieldName) instead.

COUNT(fieldName)

• You can use COUNT(fieldName) with an ORDER BY clause.


• You can use COUNT(fieldName) with a GROUP BY clause for API version 19.0 and later.

99. How to write the “Where” clause in SOQL when GroupBy is used for aggregate
functions?
Ans : We cannot use the “Where” clause with GroupBy for aggregate functions like SUM()
instead we will need to use the “Having Clause“.
Example : Get all the opportunity where more than one record exists with same name and
name contains “ABC”.

SELECT COUNT(Id) , Name FROM Opportunity GROUP BY Name Having COUNT(Id) >
1
1 AND Name like '%ABC%'
Read more about Having clause

100. Lets consider that the first component in VF page is the Datepicker. In that
case whenever the page loads, salesforce auto focus the first component resulting
in Datepicker onfocus event. Because of this the Datepicker component opens
automatically. How we can avoid this?
Ans :

On load event, write the javascript code to autofocus any other field or any other non-visible
component.
Example .

1 <span id="focusDistraction"></span>
2 <script type="text/javascript">
/* prevent autopup of the date inputfield by the default focus
3
behavoir */
30 | P a g e

4 window.onload=function() {
5 document.getElementById('focusDistraction').focus();
6 }
7 </script>
101. How to force lead assignment rule via Apex while updating or adding the
Lead?
Ans : To enforce Assignment Rules in Apex you will need to perform following steps:

1. Instantiate the “Database.DMLOptions”• class.


2. Set the “useDefaultRule” property of “assignmentRuleHeader”• to True.
3. Finally call a native method on your Lead called “setOptions”•, with the Database.DMLOptions
instance as the argument.

Example:

1 // to turn ON the Assignment Rules in Apex


2 Database.DMLOptions dmlOptn = new Database.DMLOptions();
3 dmlOptn.assignmentRuleHeader.useDefaultRule = true;
4 leadObj.setOptions(dmlOptn);

102. How to implement the pagination in SOQL ?Ans:


In spring 12, Salesforce has come up with ability of SOQL to get records from position “X”•
instead of position “1”• every time to help creating pagination feature.
31 | P a g e

Pagination in SOQL using keyword Offset

Example:

1 Select Id, Name from Lead LIMIT 5 OFFSET 2


Above query will return 5 Lead records starting from record number 10 (5×2).

Read more here about SOQL pagination

103. Access custom controller-defined enum in custom component ?


Ans :

We cannot reference the enum directly since the enum itself is not visible to the page and you
can’t make it a property.
32 | P a g e

Example:

Apex class:

1 global with sharing class My_Controller {


2 public Case currCase {get; set; }
3 public enum StatusValue {RED, YELLOW, GREEN}
4
5 public StatusValues getColorStatus() {
6 return StatusValue.RED; //demo code - just return red
7 }
8}
Visualforce page:

<apex:image url='stopsign.png' rendered="{!colorStatus ==


1
StatusValue.RED}" />
Above code snippet will throw error something like “Save Error: Unknown
property ‘My_Controller.statusValue'”•

Resolution:
Add below method in Apex Controller:

public String currentStatusValue {


1
get{ return getColorStatus().name(); }}
and change Visualforce code to

<apex:image url='stopsign.png' rendered="{!currentStatusValue ==


1
'RED'}" />
The same question was raised in this thread of stackExchange

104. How to generate the random string or random password using Apex?
Ans:

1 Integer len = 10;


2 Blob blobKey = crypto.generateAesKey(128);
3 String key = EncodingUtil.convertToHex(blobKey);
4 String pwd = key.substring(0,len);
33 | P a g e

105. What is dynamic binding in salesforce?


Ans:
Dynamic Visualforce bindings are a way of writing generic Visualforce pages that display
information about records without necessarily knowing which fields to show. In other words,
fields on the page are determined at run time, rather than compile time. This allows a developer
to design a single page that renders differently for various audiences, based on their permissions
or preferences. Dynamic bindings are useful for Visualforce pages included in managed
packages since they allow for the presentation of data specific to each subscriber with very little
coding.

Example 1:
Access the Account name from Contact.

1 {!myContact['Account'][fieldname]}
Example 2:

Consider Data type in Apex

1 public Map<String, List<Account>> accountsMap {get; set;}


Visualforce page:

1 <apex:variable value="A" var="selectedKey" />


2 <apex:pageBlockTable value="{!accountsMap[selectedKey]}" var="acc">
3 <apex:column value="{!acc.name}"/>
4 <apex:column value="{!acc.BillingStreet}"/>
5 <apex:column value="{!acc.BillingCity}"/>
6 <apex:column value="{!acc.BillingPostalCode}"/>
7 </apex:pageBlockTable>
Read more about Visualforce dynamic binding on bob buzzard’s blog

106. How to convert lead using Apex?


Ans:

1 Lead myLead = new Lead(LastName = 'Foo', Company='Foo Bar');


2 insert myLead;
3
4 Database.LeadConvert lc = new database.LeadConvert();
5 lc.setLeadId(myLead.id);
34 | P a g e

6
LeadStatus convertStatus = [SELECT Id, MasterLabel FROM LeadStatus
7
WHERE IsConverted=true LIMIT 1];
8 lc.setConvertedStatus(convertStatus.MasterLabel);
9
10 Database.LeadConvertResult lcr = Database.convertLead(lc);
11 System.assert(lcr.isSuccess());

108. How can you determine that email is actually sent or not from the salesforce?
Ans:
There is an Email log that you could use. It’s available in the setup menu under Monitoring.

It’s only for the past 30 days and you would have to manually check it.

From the email log page: “Email logs describe all emails sent through salesforce.com and can be
used to help identify the status of an email delivery. Email logs are CSV files that provide
information such as the email address of each email sender and its recipient, the date and time
each email was sent, and any error code associated with each email. Logs are only available for
the past 30 days.”

109. In salesforce which fields are indexed automatically?


Ans :
The following fields are indexed by default:

• primary keys (Id, Name and Owner fields),


• foreign keys (lookup or master-detail relationship fields),
• audit dates (such as LastModifiedDate),
• Custom fields marked as External ID or Unique.

110 : Give any scenario when you cannot change the currency field type to numeric
type.
Ans : When the field is used either in Apex class or trigger.

111 : How to get the Recordtype Id using Dynamic Apex?


Ans:
Normally to get the RecordtypeId for any sObject we use SOQL and it will count against your
limit. So below method will bypass the need of SOQL Query.

1 Map<String, Schema.SObjectType> m = Schema.getGlobalDescribe() ;


2 Schema.SObjectType s = m.get('API_Name_Of_SObject') ;
3 Schema.DescribeSObjectResult cfrSchema = s.getDescribe() ;
35 | P a g e

Map<String,Schema.RecordTypeInfo> RecordTypeInfo =
4
cfrSchema.getRecordTypeInfosByName();
5 Id rtId = RecordTypeInfo.get('Record Type Name').getRecordTypeId();
or

Schema.SObjectType.Object_API_Name__c.getRecordTypeInfosByName().get(
1
'recordtype name').getRecordTypeId()

112 : Write Apex code which will take the RecordID as input and on the basis of
that it will print the Object name and field names of sObject.
Ans:

1 List<Schema.SObjectType> gd = Schema.getGlobalDescribe().Values();
2 Map<String,String> objectMap = new Map<String,String>();
3 for(Schema.SObjectType f : gd)
4{
objectMap.put(f.getDescribe().getKeyPrefix(),
5
f.getDescribe().getName());
6}
7
8 String sampleId ='00390000003LIVw';
9 String prefix = sampleId.substring(0,3);
10 String objectName = objectMap.get(prefix);
11 System.debug('** SObject Name ** '+objectName);
12
Map<String, Schema.SObjectField> desResult =
1
Schema.getGlobalDescribe().get(objectName).getDescribe().Fields.getM
3
ap();
1
List<String> fieldList = new List<String>();
4
15 fieldList.addAll(desResult.keySet());
16 for(integer i =0;i<fieldList.size();i++)
17 {
18 System.debug('** Field Name ** '+fieldList[i]);
19 }
36 | P a g e

113. Consider a scenario where you have created a Visualforce page and Controller.
You want to restrict the controller action for users which are logged in using
“Grant Login Access”. How to acheive this?

Ans:

When System admin logged in on the behalf of any other user. On upper right corner message is
displayed that user is logged-in on behalf of some other user. In Visualforce page we can search
for the element with class name present or not? If the element with that Class name exist means
logged-in user is not a actual user

114. How to get “https” link instead of “http” for Visualforce page using URLFOR()
in Email Template ?
Ans: When you create the Link using URLFOR() in Email Template, it creates link in “http”
format instead of “https” and thus causes end user to logged into salesforce again.

So instead of

<a href='{!URLFOR('/apex/SomePage', null,


1 [id=Some_Object__c.Id,retURL="/apex/SomeOtherPage"])}'>Go to SomePage
here!</a>
We can use something like :

<a href='{!SUBSTITUTE(URLFOR('/apex/SomePage', null,


1 [id=Some_Object__c.Id,retURL="/apex/SomeOtherPage"]),'http:','https:'
)}'>Go to SomePage here!</a>

115. What is the best way to check whether organization have PersonAccount
enable or not using Apex?
Ans:

Method 1:

1 // Test to see if person accounts are enabled.


2 public Boolean personAccountsEnabled()
3{
4 try
5 {
6 // Try to use the isPersonAccount field.
37 | P a g e

7 sObject testObject = new Account();


8 testObject.get( 'isPersonAccount' );
9 // If we got here without an exception, return true.
10 return true;
11 }
12 catch( Exception ex )
13 {
// An exception was generated trying to access the
14
isPersonAccount field
15 // so person accounts aren't enabled; return false.
16 return false;
17 }
18 }
Method 2:

1 // Check to see if person accounts are enabled.


2 public Boolean personAccountsEnabled()
3{
4 // Describe the Account object to get a map of all fields
// then check to see if the map contains the field
5
'isPersonAccount'
return Schema.sObjectType.Account.fields.getMap().containsKey( 'is
6
PersonAccount' );
7}

116 : When you get the error “Non-selective query against large object type”? how
to resolve it?
Ans : Whenever an object has greater than 100K records any query on that object must be
“selective”. For a query to be selective it must have enough indexed filters (where clauses) so
that less than 10% of the records (in our example 10K) are returned before applying the limit
statement.
117 : How to get the debug log of Connection user in salesforce to salesforce
Integration?
Ans : When configuring Debug Logs, you cannot choose a Salesforce to Salesforce Connection
User from the User Lookup, but there is a workaround to

achieve this.
38 | P a g e

To begin capturing Debug Logs for a Connection User open the following URL in your browser:

https://XXX.salesforce.com/p/setup/layout/AddApexDebugLogUser?retURL=%2Fsetup%2Fu
i%2FlistApexTraces.apexp&UserLookupInput_lkid=YYYYYYYYYYYYYY
&UserLookupInput=Connection%20User

Replace XXX with your salesforce instance, UserLookupInput_lkid is the ID of the Connection
User and UserLookupInput is the User name. You can find

the user ID of the connection user, by inspecting the CreatedById for a record created by this
user. (eg. via eclipse or Force.com explorer)

Courtesy : http://screenfields.nl/blog/2012/08/09/debugging-salesforce-2-salesforce/

118 : In Controller extension, you are getting the error “SObject row was retrieved
via SOQL without querying the requested field” while accessing the field of parent
Custom Object or standard Object for which the Controller extension was written.
How to resolve that?
Ans : In Constructor of the Controller extension, only Id of Custom Object is supplied. We need
to query all the required field explicitly in order to use in remaining part of the code.

119: Using Apex how you can determine that user is in Sandbox or production?
Ans : read this URL for answer

120: Can you use aggregate expressions inside inner query?


Explanation – Can you use Group by clause inside inner query in SOQL?
Example : Something like :

SELECT Id, Name,(SELECT Count(Id),Name FROM Contacts Group By Name Having


1
count(Id) > 1 ) FROM Account
Ans: No. only root queries support aggregate expressions. Return type is
List<AggregateResult> for above query However the root result expects List<Account> and
there is no syntax or provision available in Salesforce to specify that child results are of type
“AggregateResult“.

121 : Consider we have overall 90% code coverage however there is one class which
have 0% code coverage. Can we still able to deploy that class on production?
39 | P a g e

Ans : Yes. Minimum 1% required for every trigger and there is no such restriction for Apex
class.

122 : How to get selected records ID from List View using Javascript / Ajax Toolkit,
when custom button is added on List View page?
Ans : Create a new Button on Lead of type List Button. Add the button on Lead List View
Layout and write below Javascript code:

1 {!RequireScript("/js/functions.js")}
2
3 var recordsSelected = {!GetRecordIds($ObjectType.Lead)}
4 for(var i=0; i < recordsSelected .length ; i++) {
5 alert('Selected ID '+recordsSelected[i]);
6}

123 : In Ajax toolkit for custom Javascript button, you have to explicitly login to
API because global Session variable is not available. In that case it is security
vulnerable because anybody logged in can see the javascript code and your
username and password. So is there any way to avoid this?
Ans: We can create a visualforce page with output type as JavaScript. Global session variable is
available in VF page. Initialize the global javascript variable in that VF page. include VF page as
a javascript file and we are done!

124 : In Custom Component How we can return value to Custom Controller or


Controller Extension?
Ans: In Apex, Objects are passed by reference (read this article to understand Pass by Value and
Pass by reference in Salesforce and also read this Salesforce blog article). So supply an argument
of wrapper class (object) type to custom component. If its value is changed in Custom
component we will get updated value in controller also.

125 : Lets consider you had created outbound changeset previously. After that,
some class is modified which is part of that old changeset. Can you reuse same
changeset to deployed changed component ?
Ans : Once changeset is created it cannot be modified. After creation of changset, if we modify
any component it will not reflected and we need to clone the changeset to reflect changes. More
information available here.
40 | P a g e

126 : We have a “Time Based Workflow” and there is Action scheduled to be


executed. If we Deactivate the workflow, Scheduled actions will be removed from
queue or not?
Ans : Even after deactivation of workflow, its action will be active in queue.

127 : We have “Time Based Workflow” and there is action scheduled to be


executed. Can we delete that workflow?
Ans : If a workflow have any pending time dependent action, then we cannot delete the
workflow.

128 : How to clear the Time based workflow action queue ?


Ans : Two ways to achieve this : 1. Make criteria false for all those records. 2. Navigate to “Set
up | Monitoring | Time Based Workflow”, search for scheduled actions and remove from queue.

129 : In trigger, lets say we have system.debug() statement after adderror()


method. Will system.debug() be statement executed in Trigger after adderror()
method?
Ans: adderror() method is not error statement rather its normal execution flow and all the
statements written after adderror() will be executed normally.

131. What will happen if you try to update record in After Trigger Context?
Ans : You will get an error saying “record is Read only”.

132. Let’s say we have to update the same record in After Trigger context. Is there
any way or workaround?
Ans : If we create a new instance of an SObject in the Apex Trigger in memory using the Id of
the newly created record as provided in the After Trigger context, we can perform an Update
DML statement and not get a read only error. This is because in Apex, the SObject is seen as a
new reference (even though the records have the same SFDC ID) and therefore is eligible for
DML operations. The below snippet of code illustrated this working and not working.

1 List<Contact> originals = new List<Contact>();


2 if(mirrorResultMap.values().size() > 0)
3{
4 for(Contact origContact : contactRecs.values())
41 | P a g e

5 {
6 Contact mirrorContact = mirrorResultMap.get(origContact.Id);
//origContact.Linked_Contact__c = mirrorContact.Id; //Link
7
the Original Record tot he Mirror Record WILL FAIL

8 Contact origContactUpdate = new Contact(Id=origContact.Id,


Linked_Contact__c = mirrorContact.Id); //This will WORK
9 originals.add(origContactUpdate);
10 }
//update contactRecs.values(); //Update the Records -> THIS WILL
11
FAIL AS ITS ORIGINAL RECORDS IN MEMORY
12 update originals;
13 }

133 . When loading data into date fields such as Opportunity Close Date using the
Data Loader, the date displayed in the application is sometimes one day earlier
than the date in the file. What may be the reason and solution ?
Ans :
The reason for this is that fields such as Close Date are actually date/time fields. When a date is
loaded without specifying the time, the time is defaulted to 00:00 – midnight. When another
user is in a time zone which is behind the current user’s time zone, the date will show on the
previous day. For example:

20 August 2008 00:00 in Paris is 19 August 2008 23:00 in London

Similar issues can arise when daylight savings time begins or ends.

Two simple solutions to this are:


1) Specify a time as well as a date when loading dates using the Data Loader.
or
2) Switch your PC’s time zone to Hawaiian time before starting up the Data Loader.

134 : System.debug() statements are included against script count?


Ans : Any statement ending with semi-colon will be included against script count. There is very
good article by Abhinav explaining this here.

135 : While trying to access javascript code from some CDN like Google, we get
error something like “attempt to run uG request”. How to resolve it ?
Ans : While providing URL, do not specify the protocol. Use like this:
42 | P a g e

<script type='text/javascript' src= '//ajax.googleapis.com/ajax/libs/j


1
query/1.6.2/jquery.min.js'></script>

136 : Explain ActionFunction, ActionSupport and ActionPoller in Visualforce.


Ans:

apex:ActionFunction : This component helps to envoke AJAX request (Call Controllers


method) directly from Javascript method. It must be child of apex:form. Read here –
www.salesforce.com/us/developer/docs/pages/Content/pages_compref_actionFunction.htm

apex:ActionSupport : This component adds Ajax request to any other Visualforce


component. Example : Commandlink button has inbuilt AJAX functionality however few
components like OutputPanel does not have inbuilt AJAX capabilities. So with the help of this
component, we can enable AJAX. Read more here.

apex:ActionPoller : This is timer component which can send AJAX request on pre-defined
interval. Minimum interval is 5 sec and default is 60 sec.

137 : In how many ways you can invoke Controllers / Controller Extensions
method from VF?
Ans : Javascript Remoting, ActionFunction, ActionSupport, ActionPoller.

138 : What is the use of apex:detail component ?


Ans : With the help of this Visualforce component, we can diretly get complete behavior of page
layout defined for logged in users profile. There is no need to add fields, related lists
explicitly. Read more here.

139 : What is the difference between “apex:dataTable” and “apex:pageBlockTable”


components in Visualforce?
Ans : Both component is used to render data in tabular format. dataTable will render records in
simple HTML table format whereas the “pageBlockTable” possess default look and feel of
salesforce standard CSS and must be written inside “apex:pageBlock” componet.
You can read more here.
43 | P a g e

140 : User have all the permissions to see the Dashboard and Source Folder still
when he wants to see dashboard, its not visible. What might be the cause?
Ans : It is possible that Salesforce User license for Dashbaord running user is different than
User wants to access Dashboard. Example – Running User license is “Salesforce” and user
trying to access Dashboard is “Salesforce Plateform”.

141 : User Wants to set the starting day in Calendar as “Monday” instead of
“Sunday”. How to get it done?
Ans : Change the user locale to “English ( United Kingdom ) ” in Personal information or User
record.

142 : Why CSS is not working in PDF created by Visualforce ?


Ans : In Many cases, i have observed problems faced by my colleagues and complaining that
CSS is not working when they try to render any Visualforce page as “PDF”. Same Question is
asked many times in Interviews also. Basically there are two ways:

1. Use “apex:stylesheet” tag to import external CSS file


2. Wrap “Style” tag inside “Head” tag in Visualforce

143 : How to get Ip Address of User in Apex?


Ans :

String ipAddress = ApexPages.currentPage().getHeaders().get('X-


1
Salesforce-SIP');
True-Client-IP has the value when the request is coming via the caching integration.
X-Salesforce-SIP has the value if there is no caching integration (sandbox, developer edition
orgs) or via the secure url.
Thanks to TechNrd for this tips.

144 : How to get total number of Child records in Lookup relationship?


Ans: As Rollup Summary field is only supported in Master detail, we cannot use it for Lookup.
There are following two ways (If anyone has any other idea please comment).

1. Inline Visualforce page


2. Trigger on Child Object, which will update field in Parent record if child record is inserted,
deleted or undeleted.
44 | P a g e

145 : System admin has created a Visualforce for Account. In future he created few
more new Fields. How could System admin can code Visualforce so that in future if
any new field is added or existing field deleted. It should reflect in Visualforce
without changing anycode?
Ans : It can be done with help of Field Sets. Please read this article.

146 : Once you convert lead, Few fields on lead should be reset so that sensitive
information should not be queried using SOQL. How to get this done?
Ans : Once lead is converted, its READ ONLY. we cannot update it using Apex or Trigger.
However we can use “Before Update” trigger on lead and check for fiels “IsConverted“. If its
true means lead is going to be converted so reset all fields in that case.

147 : How to convert carriage returns in Textarea to Line Breaks in Visualforce?


Ans : We can use “<apex:outputField>” instead of “<apex:outputText>”. It will maintain
formatting automatically.

148 : How to handle comma within field while uploading using DataLoader ?
Ans : Data Loader cannot handle this implicitly because there is no logical path to follow. In
case your Data Loader CSV file for import will contain commas for any of the field content, you
will have to enclose the contents within double quotation marks ” “. Data Loader will be able to
handle this.

For example :

1 Column_1__c,Column_2__c,Column_3__c
2 Shiva,"Jitendra, Minal",Soft
If you are creating the import CSV in Excel, the quotation marks will be inserted automatically
by Excel whenever a comma is detected in any cell – Saving the CSV in Excel and opening the
same in Notepad reveals the enclosing quotation marks for cells containing commas.
45 | P a g e

149 : In Master Detail Relationship :


OWD for Parent is public Read Only.
If User has – Create, Edit Permission on Master as well as Detail Object.

While creating record for detail object he selects parent record which is not
created by him. What will happen in this case ?

Ans : He will get an error, because in order to add child record user must have edit permission
in parent master record.

150 : Difference in “Export” and “Export All” in Data Loader in Salesforce?


Ans :
Export : It is used to export the Salesforce Data(excluding recycle bin’s data) into your local
system.

Export All : It is used to export the Salesforce Data(including recycle bin’s data) into your
local system.

151. Give Sample Code Snippet of Apex that that will show that how Parent and
Child record can be inserted in Single Statement ?
Ans : It can be done with help of External Id.

1 Date dt = Date.today().addDays(7);
Opportunity newOpportunity = new Opportunity(Name = 'shivasoft',
2
StageName = 'Prospecting', CloseDate = dt);
3
4 /*
Create the parent reference. Used only for foreign key reference and
5 doesn't contain any other fields. If we provide any other value it
will give following error
6
System.DmlException: Insert failed. First exception on row 1; first
7 error: INVALID_FIELD, More than 1 field provided in an external
foreign key reference in entity: Account: []
8 */
9
10 Account accountReference = new Account(MyExtID__c = 'SHIVA1234567');
11 newOpportunity.Account = accountReference;
12
13 // Create the Account object to insert. Same as above but has Name
46 | P a g e

field. Used for the insert.

14 Account parentAccount = new Account(Name = 'Shiva', MyExtID__c


= 'SHIVA1234567');
15
16 Database.SaveResult[]
results = Database.insert(new SObject[] { parentAccount,
17
newOpportunity });

152 . Which SOQL statement can be used to get all records even from recycle bin or
Achieved Activities?
Ans : We will need “ALL Rows” clause of SOQL.
Sample :

1 SELECT COUNT() FROM Contact WHERE AccountId = a.Id ALL ROWS

153. How can you lock record using SOQL so that it cannot be modified by other
user.
Ans : we will need “FOR UPDATE” clause of SOQL.
Sample :

1 Account [] accts = [SELECT Id FROM Account LIMIT 2 FOR UPDATE];

154. If you set more than one savepoint, then roll back to a savepoint that is not the
last savepoint you generated, What will happen to later savepoint variables ?
Ans : if you generated savepoint SP1 first, savepoint SP2 after that, and then you rolled back to
SP1, the variable SP2 would no longer be valid. You will receive a runtime error if you try to use
it.

155. What are few limitations (points to remember) of Savepoint or Transaction


Control in Apex ?
Ans :

• Each savepoint you set counts against the governor limit for DML statements.
• Static variables are not reverted during a rollback. If you try to run the trigger again, the static
variables retain the values from the first run.
• Each rollback counts against the governor limit for DML statements. You will receive a Runtime
error if you try to rollback the database additional times.
• The ID on an sObject inserted after setting a savepoint is not cleared after a rollback.
47 | P a g e

156. What are few Considerations about Trigger ?


Ans :

• upsert triggers fire both before and after insert or before and after update triggers as
appropriate.
• merge triggers fire both before and after delete triggers for the losing records and before
update triggers for the winning record only.
• Triggers that execute after a record has been undeleted only work with specific objects.
• Field history is not recorded until the end of a trigger. If you query field history in a trigger, you
will not see any history for the current transaction.
• You can only use the webService keyword in a trigger when it is in a method defined as
asynchronous; that is, when the method is defined with the @future keyword.
• A trigger invoked by an insert, delete, or update of a recurring event or recurring
task results in a runtime error when the trigger is called in bulk from the Force.com API.
• Merge trigger doesn’t fire there own trigger instead they fire delete and update of loosing and
winning records respectively.

157. How to execute Apex from Custom button or Javascript ? Give Example.
Ans :

It is possible using Ajax toolkiit.

1 global class myClass {


2 webService static Id makeContact (String lastName, Account a) {

3 Contact c = new Contact(LastName = lastName, AccountId =


a.Id);
4 return c.id;
5 }
6}
we can execute above method from javascript like :

1 {!REQUIRESCRIPT("/soap/ajax/33.0/connection.js")}
2 {!REQUIRESCRIPT("/soap/ajax/33.0/apex.js")}
3 var account = sforce.sObject("Account");
4 var id = sforce.apex.execute("myClass" , "makeContact",
5 {lastName:"Smith", a:account});
To call a webService method with no parameters, use {} as the third parameter
for sforce.apex.execute .
48 | P a g e

Also, you can use the following line to display a popup window with debugging information:
sforce.debug.trace=true;

158. What is difference between public and global class in Apex ?


Ans :

• Public class can be accessed within application or namespace. This is not exactly like public
modifier in Java.
• Global class visible everywhere , any application or namespace. WebService must be declared as
Global and which can be accessed inside Javascript also. It is like public modifier in Java.

159. Explain Considerations for Static keyword in Apex.

Ans :

• Apex classes cannot be static.


• Static allowed only in outer class.
• Static variables not transferred as a part of View State.
• Static variables and static block runs in order in which they are written in class.
• Static variables are static only in scope of request.

160. Explain few considerations for @Future annotation in Apex.

Ans :

• Method must be static


• Cannot return anything ( Only Void )
• To test @future methods, you should use startTest and stopTest to make it synchromouse inside
Test class.
• Parameter to @future method can only be primitive or collection of primitive data type.
• Cannot be used inside VF in Constructor, Set or Get methods.
• @future method cannot call other @future method.
49 | P a g e

161 : Sometimes while deleting record it gives error “Object cannot be Deleted”.
What is the reason for this kind of error ?
Ans :
This is generic error message prompted by Salesforce many times, which is not well informative.
To get informative message, we can try to delete same record in “Developer Console”. In
Developer Console Debug log, we will get exact error message.
Example : Lets say there is one record which is parent of more than 2000 records and grand
parent of 5000 records. In such scenario from developer console it gives error something
like “record cannot be deleted because it has many associated objects” However in User
Interface, it will just display that “Object cannot be deleted.“

162 : Why are Visualforce pages served from a different domain?


Ans :
If we see carefully, all our Visualforce pages are served like
“c.YOURSERVER.visual.force.com/apex/YOURPAGENAME” ,
And because of this most of time we run into Same-Origin Policy error in Javascripyt if we try to
access parent page from Iframe. Following reason is explained by one of the evangelist of
Salesforce:

“The move to separate domains has one very specific purpose: leverage the browser security
model (same domain policy) to protect our customers and the salesforce.com service from cross
site scripting and cross site request forgery attacks.

Moving to the serving pages from separate domains is a critical component of our ongoing
commitment to insure the highest level of security and availability for everyone.

In the world where everything is served from the same domain any custom page that you visit
had full access to any other page in your org and also any page served from salesforce.com itself.
This included potentially malicious code that was installed as part of a force.com package.”

163 : In below code snippet , What is your observation and what is going wrong ?

1 trigger TestBeforeDelete on Lead (before Delete) {


2
3 for(Lead l : Trigger.Old)
4 {
5 l.addError('error');
6 }
7
50 | P a g e

8 String msgBody = 'Test Email';


9 String Subject = 'Test from Cogni Force on Lead';
Messaging.SingleEmailMessage mail
10
= new Messaging.SingleEmailMessage();
11 String[] toAddresses = new String[] {'[email protected]'};
12 mail.setToAddresses(toAddresses);
13 mail.setReplyTo('[email protected]');
14 mail.setSenderDisplayName('Cogniforce Test Simulator');
15 mail.setSubject(Subject);
16 mail.setPlainTextBody(msgBody);
17 mail.setHTMLBody(msgBody);

18 Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail


});
19 }
Ans :
It will not send any email. Because “adderror” prevents all transactions from committing
including emails.

164. Can we mass delete reports using Apex (Anonymous Apex) ?


Ans :
Salesforce has not exposed any API for Reports. So best way is :

1. Move all reports needs to delete in new folder.


2. Inform everyone that reports will be deleted after some time may be 30 days.
3. Import your reports folder in Eclipse including all reports to be deleted and then delete the the
reports folder in eclipse. It will delete all the reports at once.

165. While creating Dynamic SOQL, which involves Datetime gives ” no viable
alternative at character ‘<EOF>’ ” error.
OR
value of filter criterion for field ‘CreatedDate’ must be of type dateTime and should
not be enclosed in quotes
OR
How to use Datetime in Dynamic SOQL Query in Salesforce ?

Ans :
This error is because of wrong construction of Dynamic Query with Datetime. following code
snippet will give idea on how to construct dynamic query for Datetime ?

1 //format the datetime to make it Dynamic Soql ready


51 | P a g e

String formatedDt = cutOffDateTime.format('yyyy-MM-


2
dd'T'HH:mm:ss'Z'');
String sql = 'SELECT a.Id FROM Agents_Answer__c a WHERE
3 a.Agents_Test_Result__r.Agent_Name__r.IsActive__c = false AND
LastModifiedDate < '+ formatedDt ;
Where, “cutOffDateTime” is variable of datetime type.

166. How you can use Datetime field as a criteria in SOQL Query ?
Ans :
We cannot use Datetime as condition in Where Clause in between single Quotes.
You can do something like this ,

WHERE CreatedDate > 2005-10-08T00:00:00Z

Or, you can also use Date Literals like

WHERE CreatedDate > YESTERDAY

For more information on date formats and more literal values, check this URL.

167. After Data Export using DataLoader, Some time it appears that data is on New
Line (Carriage Return) when we open CSV file in Microsoft Excel. For example ,
Address Data separated on different lines. How can we override this problem ?
Ans :
Excel does all sorts of “useful” things when it opens a CSV file. It will re-format dates, strip
leading zeros, corrupt record IDs (if you have them in your report), and as explained it will also
break line. Best way as per my experience till date is, Upload document to Google Drive.
Export document back from Google drive as Excel.

Please post comment in this article if you know any other working way.

168. How do you import Converted Lead into Salesforce from Legacy System ?
Ans :
Fields we need for importing converted leads are “ISCONVERTED” ,
“CONVERTEDCONTACTID” , “CONVERTEDOPPORTUNITYID” and
“CONVERTEDACCOUNTID“.
Step 1 : As above fields are not editable, we have to contact Salesforce Support to enable Audit
fields. Enabling Audit fields means we can edit few Readonly fields like created date and above
lead fields.
52 | P a g e

Step 2 : Import Account, Contact and Opportunity from Legacy system to Salesforce.
Step 3 : If you imported account, contact and opportunity in Step 2, Salesforce automatically
generates Unique ID. We need that unique Id to insert Converted Lead. So Export Account,
Contact and Opportunity, which is inserted in Step 2 from legacy System.
Step 4 : Create CSV File with All lead information with ISCONVERTED=TRUE and
CONVERTEDCONTACTID, CONVERTEDOPPORTUNITYID, CONVERTEDACCOUNTID.
CONVERTEDCONTACTID, CONVERTEDOPPORTUNITYID and
CONVERTEDACCOUNTID should correspond to Ids generated by Salesforce for Contact,
Opportunity and Account which will be related to converted lead.
Step 5 : Once CSV is properly created with all required Data, Insert it using DataLoader.

Note : We cannot convert existing lead using this process. Leads must be inserted with these
four fields. If you try to update lead it will not give you option to edit above fields.

169. How to setup Field Level Security (FLS) for Person Account Fields.
OR
Why I am not able to find list of Person Account fields in Field Level Security (FLS)
settings when navigated to fields on Account Object.
Ans :

Field Level Security (FLS) of Person Account fields ar controlled by Contact Fields. So, if you
want to setup FLS of Person Account Fields navigate to fields of Contact and it will be reflected
on Person Account.

170. In Partner Community, external user is having appropriate OWD and Profile
Settings for Opportunity or consider any other Object. However they are getting
insufficient privilege access, what might be cause of this error ?
Ans :

• Check External User has all FLS for fields used in Report Filters
• After Winter 14, If Community enabled, there will be two kind of OWD. External and Internal
means what information should be visible to internal and external users. Also , there will be new
setting named “Standard Report Visibility“. If it is checked user can see reports based on
Standard report type even though they don’t have proper OWD and may expose sensitive
information about internal user to external users (for example : Internal users role). If external
user is getting an error whole running the report this setting may be one of the cause.
53 | P a g e

171 : How Standard Fields and Custom Fields related information is saved inside
Salesforce Database? Is every Standard and Custom Object is created as a different
Database table?
Ans :
Salesforce is using Multi-tenant architecture, means many organizations (Tenants) are using
same infrastructure. Salesforce Database saves Metadata Information in hundreds of table. Run
time engine then generates organization specific query to get information about their
organizations and Data from common table as shown in below diagram. Below Database tables
are partitioned by Organization ID and generates virtual table specific to Org.

Salesforce Metadata Related Information in Database

172 : As a Developer, how can you optimize SQL query to fetch data from
Salesforce Database?
Ans :
As Salesforce doesn’t save data in traditional way. Data of all tenants are in common table, so
traditional Query optimization query and technique will not work in this case, so there is no
such tool available to optimize final generated SQL. We only have option to create SOQL which
is optimized by custom inbuilt Force.com Query Optimizer.

In Summer14, Salesforce released Query Plan Tool to analyze how query is performing. With
help of this tool, we can get an idea how we can change our query to perform better.
54 | P a g e

173 : When records are created in Salesforce, How it is queued for Indexing?
Ans :
If newly created records are equal to or less than 9000, then it will be indexed in 1 to 3 minutes.
However if records are more than 9000, then servers perform bulk indexing at a lower priority,
so processing might take longer.

174 : Explain functionality of Force.com Query Optimizer.


Ans :
The Force.com query optimizer:

1. Determines the best index from which to drive the query, if possible, based on filters in the
query
2. Determines the best table to drive the query from if no good index is available
3. Determines how to order the remaining tables to minimize cost
4. Injects custom foreign key value tables as needed to create efficient join paths
5. Influences the execution plan for the remaining joins, including sharing joins, to minimize
database input/output (I/O)
6. Updates statistics

175 : Explain term “Data Skew”• in Salesforce.


Ans :
Scenario in which parent record has more than 10,000 of records or if any user owns more than
10,000 records is known as “Data Skew”•. Salesforce does not recommend having more than
10,000 records own by any user or more than 10,000 Child for any parent.

176 : Explain Skinny table.


Ans :
Salesforce creates skinny tables to contain frequently used fields and to avoid joins, and it keeps
the skinny tables in sync with their source tables when the source tables are modified. To enable
skinny tables, contact Salesforce.com Customer Support.
For each object table, Salesforce maintains other, separate tables at the database level for
standard and custom fields. This separation ordinarily necessitates a join when a query contains
both kinds of fields. A skinny table contains both kinds of fields and does not include soft-
deleted records.
This table shows an Account view, a corresponding database table, and a skinny table that would
speed up Account queries.
55 | P a g e

Skinny Table

177 : What are the considerations for Skinny Table?


Ans :

• Skinny tables can contain a maximum of 100 columns.


• Skinny tables cannot contain fields from other objects.
• Skinny tables are not copied to sandbox organizations. To have production skinny tables
activated in a sandbox organization, contact salesforce.com Customer Support.

178 : Which fields are automatically Indexed in Salesforce?


Ans :

• RecordTypeId
• Division
• CreatedDate
• Systemmodstamp (LastModifiedDate)
• Name
• Email (for contacts and leads)
• Foreign key relationships (lookups and master-detail)
• The unique Salesforce record ID, which is the primary key for each object
56 | P a g e

179 : Which fields cannot be added as a custom Index?


Ans :

• multi-select picklists
• text area (long)
• text area (rich)
• non-deterministic formula fields (Like any formula field using function NOW() or Today() )
• encrypted text fields

180 : When Salesforce will use Standard Indexed fields?


Ans :
Salesforce maintains statistics table which stores information about records present in
Organization. If records going to be searched is less than or equal to 30% of total records or up
to 1 million records then only it makes sense to use standard Indexed fields to narrow result else
total records going to be returned is more than 30% already so Salesforce will not use any
indexing.

181 : When Salesforce will use Custom Indexed fields?


Ans :
Salesforce maintains statistics table which stores information about records present in
Organization. If records going to be searched is less than or equal to 10% of total records or up
to 333,333 records then only it makes sense to use standard Indexed fields to narrow result else
total records going to be returned is more than 10% already so Salesforce will not use any
indexing.

182 : What are examples of Non-deterministic Force.com formula fields?


Ans :

• Reference other entities (i.e., fields accessible through lookup fields


• Include other formula fields that span over other entities
• Use dynamic date and time functions (e.g., TODAY and NOW)
• If formula field includes
• Owner, autonumber, divisions, or audit fields (except for CreatedDate and CreatedByID
fields
• References to fields that Force.com cannot index
• Multi-select picklists
• Currency fields in a multicurrency organization
• Long text area fields
• Binary fields (blob, file, or encrypted text)
57 | P a g e

There are few standard fields also which are considered as non-deterministic which can be
found in salesforce documentations.

183 : Explain Two-Column Custom Indexes.


Ans :
Two-column custom indexes are a specialized feature of the Salesforce platform. They are useful
for list views and other situations in which you want to use one field to select the records to
display and a second field to sort those records.

Two-column indexes are subject to the same restrictions as single-column indexes, with one
exception. Two-column indexes can have nulls in the second column by default, whereas single-
column indexes cannot, unless salesforce.com Customer Support has explicitly enabled the
option to include nulls.

184 : What is Defer Sharing Calculation ?


Ans :
This feature allows users to defer the processing of sharing rules until after new users, rules, and
other content have been loaded. This is very useful and handy feature to speed up data loading
by avoiding calculation of Sharing rules.

185 : How can we load millions of records in Salesforce within an hour ?


Ans : We can use Bulk Data loading and turn ON Parallel loading. Check this Webinar
recording for loading 20 millions record in one hour.

186 : In case of parallel data loading, how to avoid record locked error ?
Ans : Record locked error can be avoided by two ways

1. Change schema of Object : Check every Lookup field and make sure that in Lookup Option
you have notselected “Don’t allow deletion of the lookup record that’s part of lookup
relationship”. Because of this selection, even during insert operation system hold lock against
record and other batches accessing same record fails.
2. Order Insert operations in CSV File : In this option, Sort column containing parent record
Id for Lookup fields. So all records of same parent will be loaded in same batch and parent
record locked problem across batch will be resolved. Check this Webinar recording for loading
20 millions record in one hour.
3. Other reasons of lock may be Rollup Summary, Workflow, Trigger etc.
58 | P a g e

Salesforce Bulk Data Load – Lookup fields

181. Lets consider your custom Object named “Training__c” has field
“Trainer__c”. You have set some default value in that field. Will that default value
apply to new record created by apex code ?
OR
How to make sure that record created from apex code should respect default value
of fields ?
OR
Default value in field from Apex code.
Ans :

After API 20, it should automatically populate However there is known issue for same here, click
here if it impacts you.
Workaround :
If Default value of field is not getting populated by Apex then we have to use “Dynamic Apex”.
Create instance of object from sObjectType like shown below:

Training__c tr= (Training__c)


1
Training__c.sObjectType.newSObject(null, true);
2
3 //Check if Value in field "Trainer__c" is default value
4 System.assertEquals('Jitendra', tr.Trainer__c);

182. What is best practice to refer dynamic custom messages in Visualforce with
multi-language support ?
Ans :
Using Custom Label or OutputField or InputField tag, Platform itself will take care of
internationalization. However in some cases, Message needs to be dynamic at the same time it
should also support muti-language. In Custom Label, we cannot save dynamic String.

Let’s assume we want to show message something like “DEVELOPERNAME is not authorized to
access this page”.
Here, Developername should be dynamically changed in visualforce which
supports multilanguage. For each developername, it is not feasible to create custom labels. So
below workaround can be used :
59 | P a g e

Step 1 : Create a Custom Label with text “{0} is not authorized to access this page“. In every
language, dynamic value should represented by {0}.

Step 2 : In Controller of Visualforce write something like this :

1 String developerName = 'Some DeveloperName';

2 String message = String.format(Label.DEVELOPERNA, new String[] {


developerName });

183. How can you update Salesforce record using Apex, when you don’t know
Object API name, but you know record Id ?
Ans :
Using Dynamic Apex we can achieve this :

1 //Lets assume this is record Id


2 Id recId = 'a0P9000000ESXcV';
3
4 Schema.SObjectType token = recId.getSObjectType();
5 Sobject s = token.newSobject();
6 s.put('Id',recId );
7 s.put('Name', 'om');
8 update s;

184. How to disable Header ribbon in Salesforce Organization where Community


is enabled ?
Ans : In Profile “View Global Header” controlls visibility of B lack ribbon whioch is used to
switch between community.

185. How many record can be displayed in repeater or PageBlockTable in


Visualforce ?
Ans : current limit is 1000 records.

186. How to display more than 1000 records in repeater or PageBlockTable


component of Visualforce ?
Ans : If circumstances permits, we can use readOnly attribute available at apex page level. Read
more about making complete page readonly.
60 | P a g e

187. How we can check API limits already used in any organization by using REST
or SOAP API ?
Ans :
SOAP API and REST API always returns header after making successful call to Salesforce.

Sample Responses:

SOAP :

1 <soapenv:Header>
2 <LimitInfoHeader>
3 <limitInfo>
4 <current>45</current>
5 <limit>5000</limit>
6 <type>API REQUESTS</type>
7 </limitInfo>
8 </LimitInfoHeader>
9 </soapenv:Header>

REST :

1 Sforce-Limit-Info: api-usage=45/5000

188. Lets say you have written trigger on Opportynity and want to access field of
Account. Can you use this Syntax – oppObj.Account.someField__c ?
Ans : There is common missunderstanding that what is allowed in Trigger Context. Above
Syntax will work on any other places like Visualforce Controller. However in Trigger, Lookup
field or related list is not available implicitly, we need to query it.
61 | P a g e

189. How we can control Chatter email settings while creating or updating users
using Data Loader?
Ans : Using a dataloader update the user object’s field “DefaultGroupNotificationFrequency”
with the options:

• Email on each post


• Daily digests
• Weekly digests
• Never

190. Once email is sent via Workflow, can it be tracked in Activity history related
list ?
Ans : No. If you think this is nice to have and usefull for Auditing purpose, please vote up and
comment on this idea.

191. Why do we still need Visualforce once Lightning will be GA ?


Ans : Visualforce provides the facility for delivering template-driven web pages and email
messages. In addition, developers wishing to simply utilize a basic container and maintain more
control over the lifecycle of the request may choose Visualforce pages. Finally, organizations that
can’t use Apex code can’t use Lightning Components, but they can use Visualforce.

192. What is difference between Visualforce Components and Lightning


Components ?
Ans : Visualforce provides the facility for delivering template-driven web pages and email
messages. In addition, developers wishing to simply utilize a basic container and maintain more
control over the lifecycle of the request may choose Visualforce pages. Finally, organizations that
can’t use Apex code can’t use Lightning Components, but they can use Visualforce.

193. Currently, can you show Lightning components tab in Mobile as well in
desktop ?
Ans : Currently you can only use Lightning Components in the Salesforce1 Mobile App or a
standalone app.
62 | P a g e

194. What are Lightning Extensions?


Ans : They’re a mechanism for using custom-built components to replace existing components
in the Salesforce1 Mobile App. This functionality is currently in Pilot.

195. What is Aura?


Ans : Aura is the open source technology that powers Lightning Components. The aura:
namespace contains all of the basic building blocks for defining components and applications.

196. Is it mandatory requirement to have namespace to create Lightning


components ?
Ans : Currently yes, However Salesforce is planning to remove this dependency so that default
namespace can be used. As currently namespace is mandatory, we can crete ligtening
components only in developement organization but can be deployed on any salesforce instance
where Apex is enabled.

197. Where Lightning components can be displayed ?


Ans :

• In Lightning App (.app URL)


• In Salesforce1 app as a Tab
• As a lightning extension

198. How to include external javascript file in lightning component ?


Ans : You can use a RequireJS component or Loader component to load external JS or CSS
files.

199. Is it possible to use other frameworks like AngularJs or KendoUI with


lightning components ?
Ans : Yes
63 | P a g e

200. What are the tools included in lightning ?


Ans :

• Lightning Component Framework – Components and extensions that allow you to build
reusable components, customize the Salesforce1 Mobile App, and build standalone apps.
• Lightning App Builder – A new UI tool that lets you build apps lightning fast, using components
provided by Salesforce and platform developers.
• Lightning Connect – An integration tool that makes it easier for your Force.com app to consume
data from any external source that conforms to the OData spec.
• Lightning Process Builder – A UI tool for visualizing and creating automated business
processes.
• Lightning Schema Builder – A UI tool for viewing and creating objects, fields, and relationships.

201. Common Apex page attributes.

<apex:page sidebar="false" standardStylesheets="false" showHeader="fals


1
e">
202. Declare Visualforce page as HTML5.

1 <apex:page docType="html-5.0" />


203. Visualforce page output as JSON.

<apex:page controller="ControllerName" contentType="application/x-


1 JavaScript; charset=utf-
8"showHeader="false" standardStylesheets="false" sidebar="false">
2 {!jsonString}
3 </apex:page>
204. How to refer static resources in Visualforce.
CSS File :

1 <apex:stylesheet value="{!URLFOR($Resource.style_resources,
'styles.css')}"/>
• Relative path in CSS from static resource, You can use relative paths in files in static
resource archives to refer to other content within the archive.

1 table { background-image: img/testimage.gif }


• Image tag:

1 <apex:image url="{!$Resource.TestImage}" width="50" height="50"/>


• or

1 <apex:image url="{!URLFOR($Resource.TestZip,
64 | P a g e

'images/Bluehills.jpg')}" width="50" height="50"/>


• Include Javascript in Visualforce from Static resource

1 <apex:image url="{!$Resource.TestImage}" width="50" height="50"/>


• Refer static resource path from Aprx Controller

1 global class MyController {


2 public String getImageName() {
3 return 'Picture.gif';//this is the name of the image
4 }
5}
1 <apex:page renderAs="pdf" controller="MyController">
2 <apex:variable var="imageVar" value="{!imageName}"/>
3 <apex:image url="{!URLFOR($Resource.myZipFile, imageVar)}"/>
4 </apex:page>

205. How to get element id of Visualforce components to be used in Javascript ?

1 {!$Component.Parent1.Parent2.fieldId}
• read more in this post.

206. Autogenerated Salesforce Id consist of colon, how to handle it in JQuery ?

1 var ele = $('[id="abc:xyz"]');


• read more about problem here.

207. How to return Map result from SOQL query in Apex.

Map<ID, Contact> m = new Map<ID, Contact>([SELECT Id, LastName FROM


1
Contact]);
208. How to query and abort scheduled job using Apex.

• While updating class on Sandboxes, chances are high that it is being used in any
scheduler, so below code will abort all scheduled job. If there are 150+ scheduled job,
then you might want to use below code again and again in developer console until all
jobs are removed from system.

1 //Limit is 150 because System.abortJob counted against DML


65 | P a g e

List<CronTrigger> abort_job = [SELECT Id FROM CronTrigger WHERE State


2
!= 'Deleted' limit 150];
3 for (CronTrigger t : abort_job) { //for each record
//try catch - to make sure one fail should not impact other jobs
4
which needs to be cancelled
5 try{
6 System.abortJob(t.Id); //abort the job
7 }catch(Exception e){}
8
9 }

209. How to use standard Salesforce REST API from Visualforce page ?
Befor any Ajax call, make sure to add ‘Bearer’ token in header. If using JQuery use below code
snippet. For more information read this post.

1 $.ajax({
2 type: reqType,
3 beforeSend: function (xhr)
4 {
xhr.setRequestHeader("Authorization", 'Bearer
5
{!$API.Session_ID}');
6
7 },

8 headers : {'Content-Type' : 'application/json; charset=utf-


8'},
9 url: postUrl,
10 data: postData,
11 dataType: 'text'
12 })
13 .done(function( data ) {
14 //Code if success
15 })
16 .fail(function(xhr,textstatus,error){
17 //Code if fail
18 });
66 | P a g e

210. How to create Chatter post from Apex.

1 //Adding a Text post


2 FeedItem post = new FeedItem();
3 post.ParentId = oId; //eg. Opportunity id, custom object id..
4 post.Body = 'Enter post text here';
5 insert post;
6
7 //Adding a Link post
8 FeedItem post = new FeedItem();
9 post.ParentId = oId; //eg. Opportunity id, custom object id..
10 post.Body = 'Enter post text here';
11 post.LinkUrl = 'http://www.someurl.com';
12 insert post;
13
14 //Adding a Content post
15 FeedItem post = new FeedItem();
16 post.ParentId = oId; //eg. Opportunity id, custom object id..
17 post.Body = 'Enter post text here';
18 post.ContentData = base64EncodedFileData;
19 post.ContentFileName = 'sample.pdf';
20 insert post;
• read all about chatter and Apex here.

211 : While creating JavaScript button to execute anonymous apex, what should
you keep in mind ?
Ans : End user must needs to have “Apex Author” permission and this is something should not
be granted to end user. Also, while creating JavaScript button, user must be aware that its only
supported in Salesforce classic and not in Salesforce Lightning.

212 : How to enable truncate custom object feature in Salesforce ?


Ans : Navigate to “App Setup | User Interface” and select “Enable Custom Object Truncate”.
67 | P a g e

213 : What may be reason truncate button is not visible on Custom Object ?
Ans :

• 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

214 : How to report on User License field?


Ans :
Create formula field in User Object with formula “Profile.UserLicense.Name”.
Note: You need to copy and paste this value because it doesn’t show up in the fields drop down.

215 : Which custom fields or relationships in salesforce ends with “__pc”


and“__pr” ?
Ans : In normal scenario all custom fields ends with “__c” and relationships ends with “__r”
However for Person accounts, custom fields ends with “__pc” and custom relationship ends
with “__pr”.

216 : Difference between Chatter API and Connect API.


Ans :

• Chatter API is REST API for Chatter to display Salesforce data, especially in mobile applications.
Responses are localized, structured for presentation, and can be filtered to contain only what the
app needs.
• Connect API provides apex classes for accessing the same data available in Chatter REST API.
Use Chatter in Apex to create custom Chatter experiences in Salesforce.

217 : How to capture errors after using Database DML methods in Salesforce?
Ans :

1 List<Contact> lstContact = new List<Contact>();


2 Contact con = new Contact (lastName = 'Zaa',
68 | P a g e

SQL_Server_Id__c='3',firstName='Jitendra');
3 lstContact.add(con);
4 //.. Other Contact records added in List
Database.UpsertResult[] results = Database.upsert( lstSGAccOppInsert,
5
Contact.SQL_Server_Id__c.getDescribe().getSObjectField() ,false ) ;
6
7 for(Integer i=0;i<results.size();i++){
8 if (!results.get(i).isSuccess()){
9 Database.Error err = results.get(i).getErrors().get(0);
System.debug('Error - '+err.getMessage()
10 + '\nStatus Code : '+err.getStatusCode()+'\n
Fields : '+err.getFields());
11 }
12 }

218 : What causes Concurrent Apex limit error in Salesforce ?


Ans : If Synchronous Apex runs more than 5 sec it considered as long running job. And we have
limit that only 10 long running job can execute at a time. So, whenever 11th Synchronous apex
tries to execute, it gets Concurrent Apex limit error. Read more here about Concurrent Request
Limits

219. What is custom metadata type ?


Ans : Custom metadata was introduced generally in Summer 15 release. Before Custom
metadata type, we were using Custom settings of List type. Problem with custom setting was
that, during migration or in packages, data were not migrated. We had to either use data loader
or some API to create initial data. However, if we package custom metadata type or migrate it,
data will also be migrated along with it.

220. Which component in Salesforce ends with “__mdt” and “__s”?


Ans : Custom metadata types ends with “__mdt” (meta data type), just like custom object or
custom fields ends with “__c”.

When we create Geolocation field in Salesforce, lets say by name “location__c” then internally
Salesforce creates subfields with extension “__s“. In this case “location_latitude__s” and
“location_longitude__s”.
69 | P a g e

221. How to create lookup field in Salesforce flow?


Ans : There is no direct way to create a lookup field in flow but we can use workaround
mentioned in this post.

222 : How to handle fault in Salesforce flow?


Ans : We can send emails or fault screen can be created. If any element is connected to second
screen, it automatically becomes fault screen and we can use “$Flow.FaultMessage” on screen to
show error message. output text can be added on screen with message something like “Sorry, an
error occurred in the page. For help, provide your administrator with the following information:
{!$Flow.FaultMessage}”. Read more here.

223 : How to redirect Salesforce flow after completion, if end URL is known in
advance?
Ans :
There are two approach :

First by using “retURL” parameter in URL of flow

1 https://instance.salesforce.com/flow/flowName?retURL=page_name
and second, if flow is used in Visualforce page then

1 <apex:page>

2 <flow:interview name="MyUniqueFlow" finishLocation="{!$Page.MyUniq


uePage}"/>
3 </apex:page>
4 or
5 <apex:page>
<flow:interview name="MyUniqueFlow" finishLocation="{!URLFOR('/hom
6
e/home.jsp')}"/>
7 </apex:page>
70 | P a g e

224 : What are difference between lookup and fast lookup data elements in flow?
Ans : Lookup record will return only first matching record however to get all matching record,
we should use fast lookup. Any data element with prefix “fast” means to work in bulk. As shown
in below image we have two flavors of Data element in flow for CRUD operation.

Salesforce Flow Data Elements

225: What is use of loop element in Salesforce flow ?


Ans : Loop element in Salesforce flow is used to iterate elements in collection. You can compare
it with “for or while” loops in programming language. Below image shows sample of flow, which
uses Loop element to mass update lead records by changing some value iteratively using loop
element. You can check this YouTube video as well to see it in action.
71 | P a g e

Sample Salesforce flow using loop element

226: Which interface needs to be implemented in Apex to be used in Flow ?


Ans : We can execute apex as well using flow by annotating it with “@InvocableMethod” and
marking method as static. However this method only takes one parameter of type list. If we want
to send multiple parameters, then simplest way is to create comma separated list of argument
and pass it. In this method, we can break it and use according. Below is sample code

1 Global class Flow_UpdateAccountField {


2 @InvocableMethod
3 public static void performUpdate(List<String> lstCSV){
4 List<String> recIds = lstCSV[0].split(',');
5 //0 - AccId, 1-field1__c
6 Account acc = new Account(Id=recIds[0], field1__c=recIds[1]);
7 update acc;
8 }
9
10 }
72 | P a g e

227 : How to create non mandatory dropdown field in Salesforce flow ?


Ans : We cannot create non mandatory dropdown field in flow (at time of writing this).
However there is simple workaround as explained in this post.

228 : How to create two columns page layout in Salesforce Flow ?


Ans : We cannot create two column page layout in Salesforce flow (at time of writing this post).
However we can use workaround explained in this post.

229 : How to set finish location of Salesforce Flow for newly created record inside
flow ?
Ans : Currently there is no way to set finish location of Salesforce flow by point and click or
Visualforce. We have to write Apex controller or controller extension to achieve this. Below is
sample code.

Visualforce code:

<apex:page standardController="Account" extensions="Flow_redirect_fini


1
sh">
<flow:interview name="Create_Contact" interview="{!contactFlow}" fi
2
nishlocation="{!NewRecordId}">

3 <apex:param name="varAccountId" value="{!$CurrentPage.paramete


rs.parameter1}"/>
<apex:param name="varCallLogId" value="{!$CurrentPage.paramete
4
rs.parameter2}"/>
5 </flow:interview>
6 </apex:page>

Apex code :

1 public class Flow_redirect_finish {


2 private Account objAcc ;
3 public Flow.Interview.Create_Contact contactFlow { get; set; }
4
5 //Constructor for Controller extension

6 public Flow_redirect_finish(ApexPages.StandardController
stdController){
73 | P a g e

7 objAcc = (Account)stdController.getRecord();
8 }
9
10 private String readFlowVariable() {
11 if (contactFlow == null) return '';
12 else return contactFlow.varContactId;
13 }
14
15 public PageReference getNewRecordId(){
16 return new PageReference('/' + readFlowVariable() );
17 }
18 }

230 : How to create Dependent Picklist ?


Ans : Dependent picklist cannot be created in Salesforce flow. However there is work around.
Lets say, if we need dependent picklist of level 3, like first select “country” and then “state” and
then “city”, then we will need three screen. We can take help of Custom object, Custom setting
or Custom Metadata types as discussed in this blog post.

231. How much space is taken by each Person Account record ?


Ans : As it acts as Account (2kb) and Contact (2kb), total space taken is 4kb.

232. Can we create a field on Person Account directly ?


Ans : No. We need to create a field on contact which will appear for Person Account as well.
Fields created on Contact appear on Account with extension __pc.

233. Can we select Person Account as parent for Business Account and create
Account hierarchy ?
Ans: Person Account is used for B2C & Business Account is B2B model in Salesforce. In real
life, headquarter or head office of business Account can never be person Account. Therefore we
cannot choose Person Account as parent Account for Business Account. It will throw error –
Parent Account may not be a person account.
74 | P a g e

234. Can we select Business Account as parent for Person Account and create
Account hierarchy ?
Ans: No. Standard Field Parent Account would not even appear on Person Account page
layouts if we try to add it.

235. Can you link Person Account to Person Account using standard Parent
Account field available on Account ?
Ans: No. Standard Field Parent Account would not even appear on Person Account page
layouts if we try to add it.

235. How to link Person Account with Parent Person Account or Business Account
?
Ans: Create a custom lookup field on contact of type Account. this field can be used to choose
parent Business Account or Person Account. We can also choose Contacts to Multiple
Accounts to relate Person Account and Business Account without creating custom field.

236. Can you merge Person Account with Business Account ?


Ans: No. Merging can be done with same type of Objects therefore Person Account can be
merged with only other Person Account.

237. Can a Person Account activated as a partner user in Partner Community ?


Ans: No, Personal account cannot be an Industry or company, therefore it can’t be used in
Partner Community. However, it can be used in Customer Community.

238. How to enable Person Account ?


Ans: Once below conditions are met, you can contact Salesforce support to enable Person
Account

• At least one record type should exist for Account (Business Account)
• Org Wide Defaults (OWD) for Contacts should be Controlled by Parent
• Every profile which have read permission on Account should have read permission on Contact
as well.
75 | P a g e

239. How to create Person Account using Lead Conversion Process ?

Ans : If Company field on Lead contains value, then Business Account is created otherwise
Person Account.

240. As Person Account acts as Contact and Account. Which trigger would be
executed for Person Account ?
Ans : Account Trigger. Because under the hood, its Account which can be used as Contact.

Bonus Question 1 : How to traverse Person Account relational field from Account
in SOQL.
Ans : Let’s say, you have a lookup field created on Contact. This field would be available for
Person Account and can be referred using extension __pc. To traverse parent record in SOQL,
we replace __c by __r. In same way, we can traverse Person Account relational field
using __pr.

You might also like