SFDC Interview Questions and Answers set – II

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.

setup->App Setup->Develop->Pages and create new Visulaforce page.
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.
Using EclipseIDE you can create the Visulaforce page and write the code.
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 ?

http://shivasoft.in/blog/webtech/salesforce/how-to-create-s-control-in-salesforce/

http://shivasoft.in/blog/webtech/salesforce/how-to-host-s-control-in-visualforce-page/

8. Difference between Sandbox and Development environment?

http://shivasoft.in/blog/webtech/salesforce/difference-between-sandbox-and-developer-edition-in-salesforce/

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

http://shivasoft.in/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.

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__c1)
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 ,

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.

For more study, check this article

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

Text
HTML with Letter Head
Custom HTML
Visual force
To study more on email templates, refer this article

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

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
Account Child relationship in salesforce

If we use schema builder, released in Winter 12 it would look like:

Account Contact and Opportunity of salesforce in schema builder
Account Contact and Opportunity of salesforce in schema builder

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

Ans :

Master Detail
Many to Many
Lookup
Hierarchical (It is available only on User Object, we cannot create this relationship)
For further study read this.

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.

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 The following is the order salesforce logic is applied to a record.

Old record loaded from database (or initialized for new inserts)
New record values overwrite old values
System Validation Rules
All Apex “before” triggers (EE / UE only)
Custom Validation Rules
Record saved to database (but not committed)
Record reloaded from database
All Apex “after” triggers (EE / UE only)
Assignment rules
Auto-response rules
Workflow rules
Escalation rules
Parent Rollup Summary Formula value updated (if present)
Database commit
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.

Read further…

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

beforetriggers.

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.

26. How to restrict any Trigger to fire only once ?

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
}
4
trigger affectedTrigger on Account (before delete, after delete, after undelete) {
5
if(Trigger.isBefore){
6
if(Trigger.isDelete){
7
if(HelperClass.firstRun){
8
Trigger.old[0].addError(\’Before Account Delete 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

Check Data Model of task here

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”.
This part of the interview question mainly focus on the dynamic Apex feature of the salesforce.com .

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 m = Schema.getGlobalDescribe();
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 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 m = Schema.getGlobalDescribe() ;
2
Schema.SObjectType s = m.get(\’API_Name_Of_SObject\’) ;
3
Schema.DescribeSObjectResult r = s.getDescribe() ;
4
Map 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.

If it is Creatable
If it is not nillable and
If it does not have any default value
1
Map m = Schema.getGlobalDescribe() ;
2
Schema.SObjectType s = m.get(so.apiName) ;
3
Schema.DescribeSObjectResult r = s.getDescribe() ;
4
Map fields = r.fields.getMap() ;
5

6
for(String f : fields.keyset())
7
{
8
Schema.DescribeFieldResult desribeResult = fields.get(f).getDescribe();
9
if( desribeResult.isCreateable() && !desribeResult.isNillable() && !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.

1
Apexpages.addMessage( new ApexPages.Message (ApexPages.Severity.ERROR, \’Required fields are missing. \’));
in Visualforce page add below tag where you want to display the error message.

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
{
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”.

1
String recordType = 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 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:

Visualforce page
Trigger
Web Services
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.

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\’);
2
//To return a map of data sets defined for the custom object (all records in the custom object), //you would use:
3
Map 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 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 :

Using UI
Using System.schedule
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.

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
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 .

54. What are the types of controller in visual force?
Ans :
There are basically two types of Controller in Visual force page.

Standard Controller and
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

3

4

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
}
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.
Cannot used in Triggers. Can only be used in Apex class and anonymous block. Can be used in Apex class and Triggers.

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.

62. 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.

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”.

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
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.

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
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.

Read more at –

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

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
87. How to show loading image while Ajax call in Visualforce? OR how to show image in tag in Visualforce?
Ans:

1

2

3

4

5

6

7

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
Salesforce Analytic Snapshot – Source Report and Target Object

Salesforce Analytic Snapshot – Field Mapping between Source Report and Target Object
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 only All records
Objects Leads, accounts, contacts, opportunities, tasks, events, cases, solutions, assets, and dashboards All objects
Custom objects None Any
Initial set of records Recently viewed on Web Fully configurable
Download additional records Using live search Using live search
Security Secured data access and over-the-air management Secured data access and over-the-air management
Price Free for all editions of Salesforce Free for Unlimited Edition customers; available in 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.

1
<apex:outputText
2
escape="false"
3
value="{!'\’}\”/>
4

5

6
test
7

8
test
9

10

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 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.
Read more in detail in below thread URL : http://boards.developerforce.com/t5/Apex-Code-Development/IE9-requires-header-in-VF-Page/td-p/402997

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

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.

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

1

2

3

OR

1

2

3

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 component display in clear text. The component doesn’t respect the View Encrypted Data permission for users. To prevent showing sensitive information to unauthorized users, use the 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

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.
Read here in more detail about COUNT() and COUNT(fieldname)

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”.

1
SELECT COUNT(Id) , Name FROM Opportunity GROUP BY Name Having COUNT(Id) > 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

2

3
/* prevent autopup of the date inputfield by the default focus behavoir */
4
window.onload=function() {
5
document.getElementById(\’focusDistraction\’).focus();
6
}
7

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:

Instantiate the “Database.DMLOptions” class.
Set the “useDefaultRule” property of “assignmentRuleHeader” to True.
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.

Pagination in SOQL using keyword Offset
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.

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:

1

Above code snippet will throw error something like “Save Error: Unknown property ‘My_Controller.statusValue\’”

Resolution:
Add below method in Apex Controller:

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

1

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);
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> accountsMap {get; set;}
Visualforce page:

1

2

3

4

5

6

7

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);
6

7
LeadStatus convertStatus = [SELECT Id, MasterLabel FROM LeadStatus WHERE IsConverted=true LIMIT 1];
8
lc.setConvertedStatus(convertStatus.MasterLabel);
9

10
Database.LeadConvertResult lcr = Database.convertLead(lc);
11
System.assert(lcr.isSuccess());
107. Consider total 90k records present in Salesforce and you have used the count() method of soql. What will be output of it?
Ans : It will throw an error something like “Too many query rows: 50001″, as the record limit in SOQL is 50,000.
Although the count() returns only one row however it processes each record and thus hit the allowed governor limit.

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.
Read more on indexing from Salesforce Documentation

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 m = Schema.getGlobalDescribe() ;
2
Schema.SObjectType s = m.get(\’API_Name_Of_SObject\’) ;
3
Schema.DescribeSObjectResult cfrSchema = s.getDescribe() ;
4
Map RecordTypeInfo = cfrSchema.getRecordTypeInfosByName();
5
Id rtId = RecordTypeInfo.get(\’Record Type 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 gd = Schema.getGlobalDescribe().Values();
2
Map objectMap = new Map();
3
for(Schema.SObjectType f : gd)
4
{
5
objectMap.put(f.getDescribe().getKeyPrefix(), 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

13
Map desResult = Schema.getGlobalDescribe().get(objectName).getDescribe().Fields.getMap();
14
List fieldList = new List();
15
fieldList.addAll(desResult.keySet());
16
for(integer i =0;i<fieldList.size();i++)
17
{
18
System.debug('** Field Name ** '+fieldList[i]);
19
}
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

1
Go to SomePage here!
We can use something like :

1
Go to SomePage here!

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.
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
{
14
// An exception was generated trying to access the 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
5
// then check to see if the map contains the field \’isPersonAccount\’
6
return Schema.sObjectType.Account.fields.getMap().containsKey( \’isPersonAccount\’ );
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.

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%2Fui%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 :

1
SELECT Id, Name,(SELECT Count(Id),Name FROM Contacts Group By Name Having count(Id) > 1 ) FROM Account
Ans: No. only root queries support aggregate expressions. Return type is List for above query However the root result expects List 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?
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. If you clone that Changeset, current updated class will be included or that previous class will be included in changset?
Ans : Once changeset is created it cannot be modified. After creation of changset, if we modify any component it will not reflected and when we clone the changeset, all components (offcource old copy of component) will be added to changeset.

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 : While creating workflow on Task, what difference observed on available actions?
Ans : “Send Email” action is not available while creating workflow on task.

130 : 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 originals = new List();
2
if(mirrorResultMap.values().size() > 0)
3
{
4
for(Contact origContact : contactRecs.values())
5
{
6
Contact mirrorContact = mirrorResultMap.get(origContact.Id);
7
//origContact.Linked_Contact__c = mirrorContact.Id; //Link 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
}
11
//update contactRecs.values(); //Update the Records -> THIS WILL FAIL AS ITS ORIGINAL RECORDS IN MEMORY
12
update originals;
13
}
Credit goes to Cory Cowgill for this Blog Entry.

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:

1

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.

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:

Use “apex:stylesheet” tag to import external CSS file
Wrap “Style” tag inside “Head” tag in Visualforce
143 : How to get Ip Address of User in Apex?
Ans :

1
String ipAddress = ApexPages.currentPage().getHeaders().get(\’X-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).

Inline Visualforce page
Trigger on Child Object, which will update field in Parent record if child record is inserted, deleted or undeleted.
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 “” instead of “”. 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.

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);
2
Opportunity newOpportunity = new Opportunity(Name = \’shivasoft\’, StageName = \’Prospecting\’, CloseDate = dt);
3

4
/*
5
Create the parent reference. Used only for foreign key reference and doesn\’t contain any other fields. If we provide any other value it will give following error
6

7
System.DmlException: Insert failed. First exception on row 1; first 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 field. Used for the insert.
14
Account parentAccount = new Account(Name = \’Shiva\’, MyExtID__c = \’SHIVA1234567\’);
15

16
Database.SaveResult[]
17
results = Database.insert(new SObject[] { parentAccount, 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.
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 can you call Apex class using Javascript ? Give Example.
Ans :

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
var account = sforce.sObject(\”Account\”);
2
var id = sforce.apex.execute(\”myClass\” , \”makeContact\”,
3
{lastName:\”Smith\”, a:account});
To call a webService method with no parameters, use {} as the third parameter for sforce.apex.execute .

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.

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

8
String msgBody = \’Test Email\’;
9
String Subject = \’Test from Cogni Force on Lead\’;
10
Messaging.SingleEmailMessage mail = 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 :

Move all reports needs to delete in new folder.
Inform everyone that reports will be deleted after some time may be 30 days.
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 ‘’ ” 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
2
String formatedDt = cutOffDateTime.format(\’yyyy-MM-dd\’T\’HH:mm:ss\’Z\’\’);
3
String sql = \’SELECT a.Id FROM Agents_Answer__c a WHERE 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.
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.
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 Multitenant 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
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.

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:

Determines the best index from which to drive the query, if possible, based on filters in the query
Determines the best table to drive the query from if no good index is available
Determines how to order the remaining tables to minimize cost
Injects custom foreign key value tables as needed to create efficient join paths
Influences the execution plan for the remaining joins, including sharing joins, to minimize database input/output (I/O)
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.

Skinny Table
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
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)
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

Change schema of Object : Check every Lookup field and make sure that in Lookup Option you have not selected “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.
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.
Other reasons of lock may be Rollup Summary, Workflow, Trigger etc.
Salesforce Bulk Data Load – Lookup fields

Leave a Reply

Your email address will not be published. Required fields are marked *

Select Language »