Tuesday 30 December 2014

Salesforce Organization File and Data Storage usage find out by using APEX

To find org file and data usage copy below class and save 


Step 1:


public class OrgFileSpaceLimit{

public void fileParseMethod(){

Datetime TDate = datetime.now();
String fileStorage = 'Used File Space</td><td class="dataCol">';
String dataStorage = 'Used Data Space</td><td class="dataCol">';
String endpointUrl = 'https://immu-dev-dev-ed.my.salesforce.com/00D90000000iCmb'; //-- endpointUrl = sales force instance/organization id-------

Http http = new Http();
HttpRequest req = new HttpRequest();
req.setEndpoint(endpointUrl);
req.setMethod('GET');
req.setHeader('Cookie','sid='+UserInfo.getSessionId());
HTTPResponse res = http.send(req);
String pageData = res.getBody();

//------Parsing the html body to fetch file and data usage and storing in a string-------------// 

String fileSize = pageData.substringAfter(fileStorage).left(5).remove('&n')+' MB ' + ' and percent used ' + pageData.substringAfter(fileStorage).substringBetween('(',')');
String DataSize = pageData.substringAfter(dataStorage).left(5).remove('&n')+ ' MB ' + ' and percent used ' + pageData.substringAfter(dataStorage).substringBetween('(',')');

//-----send email with out any condition-------------//
 
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
mail.setToAddresses(new string[] {'skimran1038@gmail.com'});
mail.setSubject('Organization File and Data Storage Usage Space');
mail.setPlainTextBody('Total Used File Space by '+ TDate +' is '+ fileSize + '\n \n' + 'Total Used Data Space by ' + TDate + ' is ' + DataSize);
mail.setReplyTo('skimran1038@gmail.com');
mail.setSenderDisplayName(UserInfo.getUserEmail());
Messaging.SendEmailResult[] resp = Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
}
}

Step 2:


Go to developer console or work bench executive below code or schedule the class

OrgFileSpaceLimit org = new OrgFileSpaceLimit();
    org.fileParseMethod();


Wednesday 17 December 2014

STREAMING API IN SALESFORCE

What is Streaming API ?


To put it simple, streaming API is a mechanism which monitors data changes in Salesforce based on the SOQL query you define, and if the condition matches, sends push notifications to all the subscribed clients.

Since Summer ’12, streaming API is available in any API-valid organizations. You can test it to see how it works in the Developer Edition.

Also, push notifications can be received from a page in a Salesforce application, a server and a page outside of Salesforce, and Java client.

For this example, we will use a Visualforce page to receive push notifications.

What is a Push Notification ?


Push notification is the technology that allows you to send information without the clients’ request when an event occurs in the server.

In "pull technology" where information is sent in response to the clients’ request, the page will not be updated unless the user intentionally refreshes or changes the page. Therefore, in order for the client to know an event has occurred in the server, you need to send a page request periodically and receive the result (called polling).

On the server side, a series of processes to generate an HTTP connection, send information, and close the connection by each and every polling is necessary. iI polling is performed by many clients, then it would consume a huge amount of server resources and network bandwidth.

If you use Ajax that sends a request asynchronously by restricting one part of the page, you can reduce some network bandwidth consumption. However, this is not effective as you still need to respond to the requests that are sent regularly regardless of the server event.

I would not recommend you to use polling frequently, especially if you are using Salesforce, because polling from outside of Salesforce, such as SOAP/REST API consumes API request counts.

This is when streaming API becomes useful.

Note : Before going to code we need some java script files 

STEP 1 :  Go through the URL  and download the zip file  (https://github.com/cometd/cometd)

STEP 2 :  Extract the zip file and follow the below process 

              Next, upload the following files as static resources (Your Name > Setup > Develop > Static 

              Resources > New)

                FILE                                                 NAME

             cometd.js                                             cometd

             jquery-1.5.1.js                                      jquery

             json2.js                                                 json2

             jquery.cometd.js                                  jquery_cometd


STEP 3 :  we have to create one push topic on object 
            
            Go to the developer console or workbench copy the below code and executive it 

            PushTopic pushTopic = new PushTopic();
       pushTopic.ApiVersion = 29.0;
       pushTopic.Name = 'pushOnAccout';
       pushTopic.Description = 'All records for the Account object';
       pushtopic.Query = 'SELECT Id, Name,Phone FROM Account';
       insert pushTopic;
       System.debug('Created new PushTopic: '+ pushTopic.Id);

STEP 4

                Visual force Page :

               
<apex:page controller="StreamingApiController"> 
<apex:includeScript value="{!$Resource.cometd}"/>
<apex:includeScript value="{!$Resource.jquery}"/>
<apex:includeScript value="{!$Resource.json2}"/>
<apex:includeScript value="{!$Resource.jquery_cometd}"/>

<script type="text/javascript">

(function($){
    $(document).ready(function() {

    $.cometd.init({
        url: window.location.protocol+'//'+window.location.hostname+'/cometd/29.0/',
        requestHeaders: { Authorization: 'OAuth {!$Api.Session_ID}'}
    });
    $.cometd.subscribe('/topic/pushOnAccout', function(message) {
        var list = new Array();
    list.push(message.channel,message.data.sobject.Name,message.data.sobject.Id,message.data.event.type,message.data.event.createdDate);

Visualforce.remoting.Manager.invokeAction('{!$RemoteAction.StreamingApiController.methodTosendMessage}',list,function(result,event){

},{escape:true});

    $('#content').append('<p>Notification: ' +
        'Channel: ' + JSON.stringify(message.channel) + '<br></br>' +
        'Record name: ' + JSON.stringify(message.data.sobject.Name) + '<br></br>' +
        'ID: ' + JSON.stringify(message.data.sobject.Id) + '<br></br>' +
        'Event type: ' + JSON.stringify(message.data.event.type)+'<br></br>' +
       'Created: ' + JSON.stringify(message.data.event.createdDate) + '</p>');
    });
});
})(jQuery)

</script>

<body>
<div id="content">
<p>Notifications should appear here...</p>
</div>
</body>
</apex:page>

           Controller : 

            public class StreamingApiController {
                @Remoteaction()
                public static void methodTosendMessage(List<String> streamData){
                    Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
                    mail.setToAddresses(new string[] {'xxxxxxxxx@gmail.com'});
                    mail.setCcAddresses(new string[] {'xxxxxxx@gmail.com'});
                    mail.setSubject('Record ' + streamData[3]);
                    mail.setPlainTextBody('Record Details ' + streamData);
                    mail.setReplyTo('xxxxxxxxxx@gmail.com');
                    mail.setSenderDisplayName(UserInfo.getUserEmail());
                    Messaging.SendEmailResult[] res = Messaging.sendEmail(new             
                    Messaging.SingleEmailMessage[] { mail });       
               }
           }

Note

            visual force page is used to monitor the Real time data 

           Controller is used to send a mail , Real time data to  user 's
         


Friday 12 December 2014

TEST CLASSES IN SALESFORCE


Test.startTest() and Test.stopTest() are very useful when your test class hits Sales force Governor Limits.

The code inside Test.startTest() and Test.stopTest() have new set of Sales force Governor Limits.

As a good practice, make sure initializing the variables, fetching records, creating and updating records are coded before Test.startTest() and Test.stopTest()

and calling the controllers for code coverage is done inside Test.startTest() and Test.stopTest().

The code before Test.startTest() and after Test.stopTest() have new set of Sales force Governor Limits and code between Test.startTest() and Test.stopTest()

have new set of Sales force Governor Limits.


EX:

private class TestClass {
    static testMethod void test() {
        Test.startTest();
        Call the controller for code coverage
        Test.stopTest();
    }
}

Normal Test class:

public class demoTestClass(){ 
public void demoMethod(){
.

.

.

}

}

@isTest

public class TestMethodClass {

static testMethod void testMethod() {

demoTestClass newDemo = demoTestClass();

newDemo.demoMethod();

}

}



Test Class for Callout :


To cover callout in class we have to write a test class first which is used for dummy callout and that test class has to use in our original test class

so total we have to write 2 test classes

1. To call dummy web service

2. Real test class



Class :

-----
public class CalloutClass {

public static HttpResponse getInfoFromExternalService() {

HttpRequest req = new HttpRequest();

req.setEndpoint('https://graph.facebook.com/oauth/access_token');

req.setMethod('GET');

Http h = new Http();

HttpResponse res = h.send(req);

return res;

}

}

Test class for dummy web service :


@isTest

global class MockHttpResponseGenerator implements HttpCalloutMock {

global HTTPResponse respond(HTTPRequest req) {

System.assertEquals('https://graph.facebook.com/oauth/access_token', req.getEndpoint());

System.assertEquals('GET', req.getMethod());

HttpResponse res = new HttpResponse();

res.setHeader('Content-Type', 'application/json');

res.setBody('{"foo":"bar"}');

res.setStatusCode(200);

return res;

}

}



Test class for CalloutClass class:


@isTest

private class CalloutClassTest {

@isTest static void testCallout() {

Test.setMock(HttpCalloutMock.class, new MockHttpResponseGenerator());

HttpResponse res = CalloutClass.getInfoFromExternalService();

String contentType = res.getHeader('Content-Type');

System.assert(contentType == 'application/json');

String actualValue = res.getBody();

String expectedValue = '{"foo":"bar"}';

System.assertEquals(actualValue, expectedValue);

System.assertEquals(200, res.getStatusCode());

}

}



Test class for PageReffernce :


Class:

-----

public PageReference add() {

insert technology;

return null;

}

Test Method:

-----------

public static testMethod void testMyController() {

PageReference pageRef = Page.yourPageName;

Test.setCurrentPage(pageRef);

MyController controller = new MyController();

controller.add();

}



Test Class for batch apex:



@isTest

private class myTestClass {

static testMethod void myTestMethod() {

generateTestData();

Test.startTest();

DemoBatchClass batchObj = new DemoBatchClass();

batchObj.execute();

Test.stopTest();

}

}

Saturday 22 November 2014

BATCH APEX IN SALESFORCE



Batch as the name suggests, is used when a large data (bulk) volume is involved and it has to be redundantly processed using a particular logic.
The Batch apex, can be used to conveniently perform time to time task and some real complex job ranging from data cleansing, archiving the data to the other quality improvements.

When to use Batch Apex

The typical use of batch apex is when you want to do a bulk job, but if you do it in a regular apex you’re bound to hit the governor limits.

Batch Classes process the set of records you pass to it in batches of maximum 200 per batch.

Advantages of using Batch Apex

- Higher Governor Limits
- Can be used to process in batches
- Can be scheduled to run at different time. (read more)
- Work around to other governor limits

Here is the governor limit difference in using batch

Area                                 Normal Context                    BatchContext 
1.SOQL queries                 100 SOQL per cycle 200 SOQL per cycle 
2.records SOQL queries         50,000                           50,000,000 (getQueryLocator) 
3.code statements                   200,000                          1,000,000 (Winter '14)
4. Heap Size                             6 MB                                   12 MB 
global class ExampleBatchClass implements Database.Batchable<sObject>{
// Start Method

global Database.QueryLocator start(Database.BatchableContext BC){
return Database.getQueryLocator(query); 

}
// Execute Logic
global void execute(Database.BatchableContext BC, List<sObject>scope){// Logic to be Executed batch wise
}
global void finish(Database.BatchableContext BC){// Logic to be Executed at finish}
}


ExampleBatchClass b = new ExampleBatchClass();
//Parameters of ExecuteBatch(context,BatchSize)
database.executebatch(b,10);


Note : if batch size is not mentioned it is 200 by default.


Note : Database.QueryLocator (If you use a QueryLocator object, the governor limit for the total number of records retrieved by SOQL queries is bypassed up to 50 million records)

ORDER OF EXECUTION IN SALESFORCE

1. The original record is loaded from the database (or initialized for an insert statement)
2. The new record field values are loaded from the request and overwrite the old values
3. All before triggers execute (TRIGGERS)
4. System validation occurs, such as verifying that all required fields have a non-null value, and running any user-defined validation rules (VALIDATIONS)
5. The record is saved to the database, but not yet committed
6. All after triggers execute
7. Assignment rules execute
8. Auto-response rules execute
9. Workflow rules execute (WORKFLOW)
10. If there are workflow field updates, the record is updated again
11. If the record was updated with workflow field updates, before and after triggers fire one more time (and only one more time)
12. Escalation rules execute
13. All DML operations are committed to the database
14. Post-commit logic executes, such as sending email

SALESFORCE CUSTOM SETTINGS


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

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

Map<String_dataset_name, CustomSettingName__c> mcs = CustomSettingName__c.getAll();
CustomSettingName__c mc = CustomSettingName__c.getValues(data_set_name);


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. 
EX: 
CustomSettingName__c mc = CustomSettingName__c.getOrgDefaults();
CustomSettingName__c mc = CustomSettingName__c.getInstance(Profile_ID);

Monday 17 November 2014

SALESFORCE INTEGRATION WITH FACEBOOK



STEP 1 : Login To (https://developers.facebook.com/)

STEP 2 : Give your face book credentials and login

STEP 3 : Go to APP Tab (add new app)

STEP 4 : Select website and give APP Name (Click on create new Facebook App id)

STEP 4 : Under Category Section select (Apps for pages) and click (Create app id)

STEP 5 : Under (Tell us about your website) Section Site Url = Give your Visual force page url 
(https://c.ap1.visual.force.com/apex/facebookPage) and click (Next)

Note: Before going to this process create a visual force page with page name (facebookPage) and controller (FaceBookController)

VF: 
<apex:page controller="FaceBookController">
<apex:form >
<apex:commandButton value="ClickMe" action="{!fbAction}"/>
</apex:form>
</apex:page>



Controller:

public with sharing class FaceBookController {
public PageReference fbAction() {
HttpRequest req=new HttpRequest();
req.setMethod('GET');
req.setEndpoint('https://graph.facebook.com/oauth/access_token? client_id=0000000000000000
&redirect_uri=https://c.ap1.visual.force.com/apex/facebookPage
&client_secret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
&code=oxoxoxoxoxoxoxoxoxoxoxoxoxo');
HttpResponse res = new HttpResponse();
http h = new Http();
res = h.send(req);

system.debug( 'Aceestoken-------'+res.getbody());
return null;
}
}


STEP 6 : Click on Finish

STEP 7 : Copy the (App Id) and (App Secret)


 



STEP 8 : Authenticate URL


https://www.facebook.com/dialog/oauth?client_id=9118292440232323219134043&redirect_uri=https://c.ap2.visual.force.com/apex/facebookPage&scope=public_profile,user_friends,email,user_about_me,user_actions.news,user_actions.video,user_birthday,user_events,user_hometown,user_likes,user_location,user_photos,user_posts,ads_management,ads_read,publish_pages,user_website,user_videos,user_tagged_places&state=hari

In the above url replace

1. client_id : with your Facebook App Id (EX: 1573492886214474)

2. redirect_uri : With your VF page url (EX: https://c.ap1.visual.force.com/apex/facebookPage )

3. state : Any string (EX: abcsdefg..)

Copy the above Authenticate URl

Open a new tab in browser paste it and click enter

It will redirect to visual force page

STEP 9 : Copy the redirect page URL and Paste in note pad

EX:

https://c.ap1.visual.force.com/apex/facebookPage?code=AQCAmhJfKJ5zSa8pYhI11qNz9L7nLEcVHz6YjiS2VUQfUJbvoIylB8DfI1M7Blwjx0jdVluatTgB_cslPf1m4mLN_PQ6ZMkcHNHpTKkiZxctic6dil_4KYpXgZv91L9cSV4t2KH7a3ZXYr3bJ2zf8U_wWEJ1_kRcdwozF7Y22ET6gH70VlnR87qaEjEEWltraO6MyEbcw7e9ChBQNLHsfJCN579lFXNmqwlhCzSmdQHCQxRWxRUNSdvMi9_jy5CGzD0hOo9MaplIbg0StUx-goGANIBz5sM0cXcyeLhc4ArU-bDL8R18zRB_O0yAmvULEq0vgBcvkG8tXOMU34SISffu&state=ShaikImran#_=_

STEP 10 : Open your controller (FaceBookController)

Replace: 
req.setEndpoint('https://graph.facebook.com/oauth/access_token? client_id=0000000000000000
&redirect_uri=https://c.ap1.visual.force.com/apex/facebookPage
&client_secret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
&code=oxoxoxoxoxoxoxoxoxoxoxoxoxo');

1. client_id : Your facebook App Id

2. redirect_uri : Your visual force page url

3. client_secret : Your App Secret

4 . code : Follow step 9 and copy code which is highlighted


STEP 11 : Save it and click the button (Click me)

STEP 12 : Open the debug log and copy the acesstoken

STEP 13 : Open developer console (or) work bench

HttpRequest req=new HttpRequest();
req.setMethod('GET');
req.setEndpoint('https://graph.facebook.com/me/feed?
access_token= CAAWXFVyKF0oBAAT6
jw3zU66dZBX3e6W0zZCL07ppLyYJrSRnTb2aMP7eYAPQdtUGpp2sT
PvuX4N4Q9xlx5H2qDwSHCoDhtlTp5Y3aHvGHgZBFYqRWiaOxVQuEFTwlha574l5
8f6KPULGiSORARMPtlQCcgQGjOVd1IValQJNtvZBFf3ew9SLFbPNFVZ
Aj7B9ZCkrCGTxfXCU7xmt1plZCaE');
HttpResponse res = null;
http h= new Http();
res= h.send(req);
system.debug('resp----------'+ res.getbody());


Copy the above code and paste in your developer console or workbench

Replace security token with your security token

Executive 
Open the debug log find the resp data
NOTE :



1. The security token is time limit , ones it is expired follow the below STEPS


STEP 1: Go to STEP 8 copy the URL

Replace State = new String (EX: ddhjdhjasdhja) 
STEP 2: Follow the STEP 9 , 10 , 11, 12 , 13

2. List of End point URL

To see albums use endpoint urls
https://graph.facebook.com/albums
To see specefied albums's photo
https://graph.facebook.com/albumid/photos
To see posts
https://graph.facebook.com/me/feed

3. To insert photo in to facebook using apex code

HttpRequest req=new HttpRequest();
req.setMethod('POST);
string url ='URL=http://www.visiblebanking.com/wp-content/uploads/
2012/04/Progressive- Flo-FacebookPage-Long-Processed.png';
req.setbody(url);
req.setheader('Content-type', 'application/x-www-form-urlencoded');
req.setHeader('Content-length',string.valueof(url.length()) );
//albumid=000000000000000000
req.setEndpoint('https://graph.facebook.com/000000000000000/photos? access_token=hfsdfhshdfjksdf mdfbsjkf');
HttpResponse res = null;
http h= new Http();
res= h.send(req);

system.debug( 'Resp--------------'+res.getbody());



4 . To comment on photo 
HttpRequest req=new HttpRequest();
req.setMethod('POST);
string comment ='message=hai ra mama';
req.setbody(comment);
req.setheader('Content-type', 'application/x-www-form-urlencoded');
req.setHeader('Content-length',string.valueof(sss.length()) );
req.setEndpoint('https://graph.facebook.com/0000000000000/comments?

access_token=hfsdfhshdfjksdf mdfbsjkf');
HttpResponse res = null;
http h= new Http();
res= h.send(req);

system.debug( 'REsp----------------------'+res.getbody());


THAT'S IT FOLKS


Friday 22 August 2014

ANT SCRIPT TO TAKE DATA BACKUP FROM SALESFORCE ORGANIZATION

                To Take Data Backup by using Apache Ant

 Follow Bellow Steps : 

1. Login to Sales force Instance

2. Go To Set-up>Develop>Tools to download Force.com Migration Tool to your C:\Drive and extract it

3. Go To C:\salesforce_ant_31.0\sample\build.properties
  
   1. sf.username = xxxxxxxxxxx.com
  
   2. sf.password = xxxxxxxxxxx + secuirty Token
  
   3. sf.pkgName = your salesforce package name
  
   4. sf.serverurl = https://login.salesforce.com (If sandbox give your sales force sandbox instance)
  
   5. sf.maxPoll = 20

4. Go To C:\salesforce_ant_31.0\sample\build.xml
   
    1. If your system is in proxy then flow step one
   
        Copy this code and add at end
       
        <target name="checkproxy">
            <setproxy proxyhost="xxxxxxxxxxxxxx" proxypassword="" proxyport="xxxxxx" proxyuser=""/> (Give your proxyhost and proxyport)
        </target>
       
    2. /*Replace the retrievepkg section with the following one*/
   
        <!-- Retrieve metadata for all the packages specified under packageNames -->
        <target name="retrievePkg" depends="checkproxy">
            <mkdir dir="retrievePkg"/>
            <sf:retrieve username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" retrieveTarget="retrievePkg" packageNames="${sf.pkgName}"/>
        </target>
       
5. Download Ant and Install it from http://ant.apache.org/bindownload.cgi if you do not have it (Setting up Ant_Home and Configure Path environment variable)

    a.    Download Apache Ant version 1.6 or newer to a directory of your choice: http://ant.apache.org/bindownload.cgi.
   
    b.    This directory will be known as ANT_HOME. Once the files are on your computer, there is no further installation required.
   
    c.  Add the bin directory to your path. (Only the bin and lib directories are required to run Ant.)
   
    d.    set JAVA_HOME=c:\jdk1.7.0_51
   
    e.    set PATH=%PATH%;%ANT_HOME%\bin
   
6. Copy ant-salesforce.jar and paste into your Ant installation's lib directory. The lib directory is located in the root folder of your Ant installation.

7. Run The Following Command

    open the command prompt and type
   
    C:\Users\shimran>ant -buildfile C:\salesforce_ant_31.0\sample\build.xml retrievePkg
   
    [-----------------------------------------------
    Buildfile: C:\salesforce_ant_31.0\sample\build.xml

    checkproxy:

    retrievePkg:
        [mkdir] Created dir: C:\salesforce_ant_31.0\sample\retrievePkg
    [sf:retrieve] Using proxy: web-proxy.sgp.hp.com:8080 user
    [sf:retrieve] Using proxy: web-proxy.sgp.hp.com:8080 user
    [sf:retrieve] Request for a retrieve submitted successfully.
    [sf:retrieve] Request ID for the current retrieve task: 09S90000001Hb1qEAC
    [sf:retrieve] Waiting for server to finish processing the request...
    [sf:retrieve] Request Status: InProgress
    [sf:retrieve] Request Status: Succeeded
    [sf:retrieve] Finished request 09S90000001Hb1qEAC successfully.

    BUILD SUCCESSFUL
    Total time: 1 minute 6 seconds
    -----------------------------------------------]
   
8. Now Go To Csalesforce_ant_31.0\sample\retrievePkg  (Your Back Up Data Is Here)

-----------------------------------------------------------------------------------------------------

How To Create Package In Salesforce :


1. Go To Set-up>Create>Packages>New

    a. Give your  package Name
   
    b. Language
   
2. Click Add

3. Select what data You want to take back up  and add to package

 


Thursday 10 July 2014

SALES FORCE INTEGRATION WITH JAVA (SOAP API)

  STEPS TO INTEGRATE SALES FORCE WITH JAVA

User not in proxy settings

STEP 1 : Go to (Setup/Develop/API/Generate Partner WSDL) copy all meta-data and save as                                    (Partner.wsdl)
STEP 2 : Check the version of Java like below
C:\>Java -version
Java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
STEP 3 : Download (wsc.jar) From below Link (wsc-23.jar)
https://code.google.com/p/sfdc-wsc/downloads/list
STEP 4 : Download (partner-18.jar) From the below Link
https://code.google.com/p/sfdc-wsc/downloads/detail?name=partner-18.jar&can=2&q=
STEP 5 : Copy all files mention above on to desktop
STEP 6 : Open Command Prompt (cmd) 
C:\Users\skimran> cd desktop 
C:\Users\skimran>Desktop>java -classpath wsc-23.jar com.sforce.ws.tools.wsdlc partner.wsdl                     partner-18.jar
STEP 7 : Open Eclipse and follow the below steps
1. File | New | Java Project (Name: DemoIntegration)
2. Right click on Project | Build Path | Configure Build Path | Libraries | Add External Jar 
3. Select Desktop | wsc-23.jar and partner-18.jar | OK
4. Right click on SRC | New | Folder | (wsc)
5. Right click on wsc | New | Class | (Main)
STEP 8 : Copy below code and paste in Main Class
package wsc;
import com.sforce.soap.partner.*;  
import com.sforce.soap.partner.sobject.*;  
import com.sforce.ws.*;

public class Main {  
 public static void main(String[] args) {

ConnectorConfig config = new ConnectorConfig();
config.setUsername("USER NAME");
config.setPassword("Password + Security Token");
config.setAuthEndpoint("https://salesforce.com/services/Soap/u/18.0");

try {  
PartnerConnection connection = Connector.newConnection(config);      
System.out.println("Creating a new Account...");
SObject user = new SObject();
user.setType("User");
user.setField("LastName", "Imran");
user.setField("Email","ishaik@gmail.com");
user.setField("Username","ishaik@gmail.com");
user.setField("Alias","ishaik");
user.setField("ProfileId","00e900000013RNU");
user.setField("TimeZoneSidKey","Asia/Kolkata");
user.setField("LocaleSidKey","en_US");
user.setField("EmailEncodingKey","UTF-8");
user.setField("LanguageLocaleKey","en_US");
SaveResult[] results = connection.create(new SObject[] { user });
System.out.println("Created Account: " + results[0]);          
} catch (ConnectionException e) {
 e.printStackTrace();
}

 }

}
STEP 9 : Save and Run the program

user in proxy settings

     Just add
    
   config.setProxy("your proxy", your port);

  Ex:  config.setProxy("web-proxy.atql.seqw.com", 8080);

Tuesday 17 June 2014

Publish Your First App with AppExchange Checkout

Getting Started


Before you begin, get to know the Force.com platform, the ecosystem, and popular use cases. There are a lot of ways to do this.DeveloperForce is a developer’s best friend. The Idea Exchange will tell you what customers are asking for. AppExchange will show you which apps are popular. The important thing is to find your niche and start building that app.
Important: AppExchange Checkout works with Managed Packages managed via a License Management Application. If you are selling a Force.com Embedded app or an API only app, contact your ISV AE for non-Checkout options.

Initial Development


Develop your great app and start showing it to people. You can get a free developer org by joining DeveloperForce. It is entirely your call how mature the app should be before showing it to prospects. In general, the earlier, the better. Early viewers and testers will validate your ideas and, more importantly, share theirs. Continue iterating on your app until it is ready for broader testing.

During this early stage of development, you will need to learn about packaging your app, so now is a good time to take a look at theISVForce Guide. Chapter 4, Packaging and Testing Your App, is a great resource. As an ISV, you will only release managed apps, so focus on that section. Keep in mind that once customers start testing your app, and once you start releasing even early versions, it can be difficult to make sweeping changes to your architecture like removing objects and fields. Also, it’s possible for you to package your app in a way that limits its distribution potential. For example, while you can package features such as workflow and record types, these are not standard features in Professional Edition and your app will not install into PE orgs. It is important for you to keep these issues in mind as you develop your app, especially if it is complex, so you can plan and manage your development, and upgrade lifecycles appropriately.


Partner With Salesforce


Signup as a Salesforce partner. This is easy and only takes a few moments. You’ll be asked a few questions and before you know it, you’ll have access to the Partner Portal. Note that your partner portal credentials will end with “@partnerforce.com.” The Partner Portal has great information in it. If you are interested in exploring the ISV program in detail, you should visit the APP Academy.




Become an AppExchange Publisher



Once you are signed up as a partner, create an AppExchange Publishing Org (APO). In the Partner Portal, you’ll see a big button at the top of the screen labeled, “Create A Test Org.” For org type, select “Partner Developer Org.” You will receive new credentials by email. Be sure to login and set your password before proceeding. Note that the system will pick a username for you. If you don’t like it, feel free to change it. The purpose of this org is to help you publish listings on AppExchange.

You are now ready to start publishing on AppExchange. Point your browser to AppExchange, scroll to the bottom of the screen, and click the “List on the AppExchange” link. Login using the APO credentials you just received. You’ll need to answer a few questions. No, you have not published on AppExchange before. Yes, you agree to the terms and conditions. You are now ready to complete your profile. Don’t worry, you can edit this at any time. Notice there’s a link at the bottom labeled “Change Partnership.” You’ll need to save your profile, then click this link. You’ll be prompted for your partnership username and a password. This should be your “@partnerforce.com” username. Be sure to click save again once your partner username and password have been accepted.
Important. AppExchange Publishing Organizations operate on a hub and spoke model. The APO is the hub. It contains all of the information about your company, but doesn't contain any information about your apps. Apps should always be developed in an org other than your APO. When you are ready to publish an app, simply click on the "Your Organizations" link, and add the developer edition where you package your app to your APO. Once you connect the orgs, you will be able see information from your spoke orgs in your hub APO org.
Congratulations, you are now ready to create a new listing. You should now be on the Publisher home screen and see a big red button with the label, “Create New Listing.” Click this. Enter your unique app name, select the “app” option, and submit. You are now on the main listing screen. Note that every field has help text to the right of it. When you run into trouble, look for the help icon in the upper right of your screen. Keep in mind that you’ll be able to edit and enhance this listing as you go.



Signup For AppExchange Checkout



Note: If your app is free, you can skip this step.
Next sign up for AppExchange Checkout, the feature that lets customers pay for your applications directly on the AppExchange. Checkout is a service from salesforce.com and Stripe that bills your customers’ credit cards automatically and deposits money into your account. Stripe provides no-touch recurring billing and subscription management, including trials, coupons, upgrades/downgrades, and automatic renewals. It also automatically updates licenses in the License Management Application (LMA).
Signing up for Checkout is very easy – no merchant bank accounts or payment gateways are required. Start on the publisher home screen. If you’re lost in AppExchange, just stop, scroll to the bottom and click the “List on the AppExchange" link.
To sign up for Checkout, click Learn About Checkout at the top of your publisher home screen. After you agree to the terms and conditions, you can create your Stripe account. Connect your checking account, authorize the AppExchange to use your new Stripe account, and you are ready to use Checkout!
To get your app ready for Checkout, first create your subscription plans in Stripe. Per month, per year, and one-time payment plans are currently supported. Go back to your publisher home screen to edit your listings and choose which plans to offer on the Pricing tab. After you select your plans and associate them with your listing, your app is ready for Checkout. Customers who buy your app on the AppExchange will be asked to provide their credit card information. If they install your app, they will be charged according to the payment details you’ve specified.



Start Your Security Review



Note: you must have a contract in place, either AppExchange Checkout, above, or ISVForce signed up with a rep, in order to start your Security Review.
Next, kick off the Security Review process. Note that all apps on AppExchange must complete the security review process successfully. Click the “Offering” tab. Select the options, “Your application is a package” and “Install it directly from the AppExchange.” Next, associate your package with your listing by clicking “Change Packages.” If you have just uploaded your package, note that it can take a few minutes before that package is visible in AppExchange. Once it is visible, it can be a few more minutes before you can associate it with a listing. Save your page before continuing. Next, click “Start Review.” You will be directed to the Security Review wizard. Here you will supply all of the necessary information to initiate your security review. Take the time to fill this out carefully – incomplete information and failed reviews mean more time until your app can go to market. After completing the form, you will be prompted for your security review payment. Enter your credit card information and your review will be submitted to our security team.


Security Review Complete



Once your security review is complete and your app has passed, you’ll want to request the ISV Business Org by logging a ticket in the Partner Portal. This is a free two-license CRM org that you can use to manage your ISV business (leads, opportunities, licenses, sales and orders) . It comes pre-installed with the License Management App (LMA). The LMA helps you control which customers are allowed to use your app, how many users they are allowed, etc. Note that AppExchange Checkout controls LMA records for any apps a customer purchases through your AppExchange listing.

If you are an API-based app, you might want to request an API token. An API token lets GE and PE customers use your API-based app (SOAP and REST only). If you are not an API-based app, you do not need to do this.
Down to the last few steps. First, revisit the listing you created above. Does it have enough screen shots? Is it easy to understand? Have you added a YouTube demo? Make your listing easy to understand and display your contact information prominently. Also, remember those beta customers? Invite them to review your app so it has some reviews before going live.



Go Live


Now the fun part. Locate your listing in the Private Listings tab. Take a deep breath. Click “Make Public.” That’s it: your listing and your app are now live.
Now the fun part begins: marketing. If you haven’t already, now is the time to get noisy. Tell the world. Post to Facebook. Post to Twitter and mention @appexchange. Post to Pinterest. And then you’ll need to repeat this process with new angles. Post when you get a good review, post when you update your package, post anything you think is newsworthy. It’s important to keep up a regular cadence of marketing activity so you can continue to help prospects get to know you.


Notes


1. This model works for ISVForce apps. However, AppExchange Checkout does not yet support OEM apps, Directory apps, or external apps. If your model is not supported, talk to your ISV AE.
2. When you sign up as a Salesforce partner, our partner team will reach out to you. You should talk to them about your app and describe your use case in detail. In some cases, you might decide you want to pursue a partnership model that does not work with this step by step guide.




Monday 16 June 2014

Unable to fetch organization details for Eclipes


Recent past I came across Force.com IDE tool exception. It's actually network issue and nothing to do with Salesforce.

After installing eclipse and configuring Force.com IDE, I was trying to create a new Force.com project and got error "Unable to fetch organization details for <UserName>".

There can be different reasons for this and one of them is firewall settings. To pass through proxy server, one has to configure proxy settings. Once proxy setting are configured, eclipse bypasses the proxy and gets connected to internet.

Following are steps to configure proxy settings. Steps are almost same for all eclipse versions.

1) In Eclipse IDE, select “Window –> Preferences”
2) Preferences box prompt out, choose “Network Connections”.
3) Select “Manual” from Action Provider drop down list
4) Select Http in the List and click “Edit” button

5) Fill in the proxy server host and port number, (fill in the username and password if any)

Friday 13 June 2014

Salesforce.com Interview Questions



What is Force.com and Salesfore.com? Mention the differences.


Force.com is a cloud computing platform where the developers build multitenant applications.
Salesforce.com is also a cloud computing platform, it contains only standard objects.
Salesforce.com is hoisted on Force.com.

What are the Force.com editions and salesfoce.com editions?


Force.com includes 5 editions.
Free edition
Enterprise with one app
Enterprise with multiple app
Unlimited with one app
Unlimited with multiple apps

 SalesForce.com includes 5 editions
Contact Manager
Group
Professional edition
Enterprise edition
Unlimited edition

How many custom objects available in Professional and Enterprise edition and Unlimited?


Professional    50
Enterprises    200
Unlimited    2000

In Which edition the Apex Data Loader will support? What are those editions?  



Earlier Enterprise and Unlimited editions use to support Apex data loader. Now, Professional, Enterprise and Unlimited edition supports data loader.

Through Sales force Import wizard how many records we can import into S.F Objects and the wizard will support for which Objects?
Using Import wizard, we can upload up to 50000 records. And only Accounts, Contacts and custom object’s data can be imported.  If we want to import other objects like Opportunities and other object’s data, then we need to go for Apex Data Loader.


In which edition work flows are available in S.F?



In Enterprise edition and in unlimited edition, we have these work flows. We do not have these work flows in group and professional editions. We can get these workflows in professional edition also as an add-on.



What is the data and file storage capacity in Professional and Enterprise and Unlimited editions Org wide? What is the storage capacity for each user in above editions?



                            Data storage (Org)        File storage (Org)         Dstorage/Fstorage(User)

Professional         1GB                            1GB                       20MB/100MB
Enterprises     1GB                            1GB                       20MB/100MB
Unlimited                  1GB                            1GB                      120MB/100MB
                       

In Which Edition Outlook and Excel and Mobile Lite are available in S.F? 



Mobile Lite users can view, create, edit, and delete accounts, assets, contacts, leads, opportunities, events, tasks, cases, and solutions from mobile.
 Mobile lite is available in all editions i.e.; Group edition, Professional edition, Enterprise edition, Unlimited edition.
Outlook  connect to sales force is used to sync contacts, Events and mails to sales force. Like mobile lite feature this is also available in all above mentioned editions.

What is app exchange?



The developed custom applications can be uploaded into the app exchange so that the other person can share the applicaition.

What is a VLOOKUP in S.F?



VLOOKUP is actually a function in sales force which is used to bring relevant value to that record from another record automatically.

What are the types of bindings available in Visual force?



Using get; set in apex, we can bind variables in visual force.

ex:     public String textdemo{get;set;} // in apex
        <apex:input text value=”{!textdemo}”>  

Using methods in controller

Ex: <apex:selectlist value=”textdemo”>
            <apex:selectoptions value=”listt”/>
    </apex:selectoptions>
//In apex

Public List<Account> getlistt(){
      Return [select Id,Name from Account]; \\ returns list
}

What are the types of relationships present in S.F?


4 types
Master-Detail
Lookup
Junction Object
Hierarchy

What is junction Object and what does it mean?



Junction object is a custom object which is used to create many to many relationship between two objects.
It always contains two Master-Detail relationships.

Differences between Master-Detail and Lookup
Both are used to create one to many relationship between two objects.
In case of MD, if Parent is deleted, child is also deleted.
In case of Lookup, if Parent is deleted, child is not deleted.

In MD, Child is mandatory, but in Lookup, child is not mandatory.

When I want to export data into SF from Apex Data Loader, which Option should be enable in Profile?


Enable API


Types of Reports in S.F?


3 types of reports in S.F
 Tabular reports:  Tabular report is used to represent the data simply in tabular format.  Summarizing on a particular field cannot be done.

Summary reports: In summary report, we can summate or group the data based on a column.

 Matrix report: In matrix report we can summarize the data both in rows and columns.

What is an Assignments rule?



It is a Rule to specify how leads are assigned to users or queues as they are created manually, captured from the web, or imported via the lead import wizards.

What is a web- lead?



Capturing a lead from a website and routing it into lead object in Sales Force is called wed-lead (web to lead).

What is lookup and Master Details and what is difference between them. 



Both Lookup and Master detail fields are used to link a record in one object to another record in another object.
In lookup, if we delete master records, child records will not be deleted.
In master-detail, if we delete master records, child records will also be deleted.

Child record is mandatory for Master-Detail.

What is an External Id?



External Id is an id that can be given to any field in an object. An external id will be generated on the field that we mention. This field will be used to detect duplicate values when we try to import data into sales force using an external system like apex data loader, informatica data loader etc.

What are the Types of Account and difference between them?



We have two types of accounts.
Personal accounts
Business accounts.
In personal accounts, person’s name will be taken as primary considerations where as in business accounts, there will be no person name, but company name will be taken into consideration.


How many ways to do a field is mandatory?



There are two ways to declare a field to be mandatory.
At the time of creating the field, mentioning the field should contain a value to save a record.
In page layout, we can mention the field to be mandatory.


What is a Field level Security?



Giving permissions to users based on Profiles.
Mentioning the availibity of a field to the users for viewing and editing purpose based on profile is called field level security.
While creating a field,we can mention the security level of that field fr every profile by deciding its level of accessibility to each profile.

Difference between Formula and Roll-up summary



Formula: is a read only field that derives a value from a formula expression that we define.
Roll-up summary: A read-only field that displays the sum, minimum, or maximum value of a field in a related list or the record count of all records listed in a related list.

Difference btw isNull and isBlank



IsNull – it supports for Number field.
IsBlank- it supports for Text field.

What is a workflow? Types of workflow and actions in workflow.



Workflow is a force platform business logic engine that allows us to automatically send email alerts, assign tasks, field updates based on rules that we define.

2 types:
Immediate actions:  That executes when a record matches the criteria.
Time-dependent:  When a record matches the criteria, and executes according to time triggers.

Actions:
Task : Asign a new task to user.
Email-alerts : Send email to one or more recipients that are specified.
Field Updates : Update value of a field.
Outbound Messages: Send a configurable API message to designed listener.

Types of email templates

Text
Html with letter head
Custom Template
Visual Force.

Difference btw Profiles and Roles?



Profiles: Field level or Object level security can be given by profiles
Roles:  Record level security can be given by Roles.

Profile is mandatory.


Types in roles:

Manual Sharing
OWD (organization wide default):
Public read
Public read/write
Private
Sharing rules
Role Hierarchy


What is a wrapper class?


 A wrapper class is a class whose instances are collections of other objects.

What are collections and types of collections?



Collection is an object which groups multiple elements into a single unit.

List: Ordered collection of elements which allows duplicates.
Set: Unordered collection of elements which do not allow duplicates.
Map: Pair of two elements, in which the first element is always unique.


Types of Reports: 



Tabular: Display data in a tabular form. No summarizing is allowed.
Summary: Summarize data on one column based on single criteria.
Matrix: Summarize data on both row and columns.



Difference between VF and S-Control



               VF                      S-Control

It is a markup language like XML, HTML It is a procedural language like Java, Ajax
Automation of data is there- Binding No automation of data- Manual Binding
Style sheet(CSS) is included CSS is not included
Native
Accessibility of object

{! ($Objecttype.ObjectName.accessable)}----------- returns true if object is accessible.

What are Global keywords?
Used to access various values from components on a page or from user objects or from URL, for each object we have each key word.

URL Current Page
Profile Page Reference
User Object Type
Resource Component

What is a Page Reference?



Page reference is a class in apex, which is used to redirect to another page.
By creating an object to this class, we can use this object to forward to another page as shown in example below:

Public Pagereference go()
{
           Pagereference p = new pageReference(‘http://www.google.com’);
Return p;
}

What is MVC?



The main aim of the MVC architecture is to separate the business logic and application data from the presentation data to the user.

Model: The model object knows about all the data that need to be displayed.
View: The view represents the presentation of the application (User Interface).
Controller: Actual business logic of VF is present here.


What are the Controllers available in Force.com?



3 types of controllers are available
Standard Controller: Used for both custom and standard objects.
Custom Controller: is an apex class that implements all the logic for a page without leveraging the functionality of a standard controller.
Extension Controller: is an apex class which adds functionality to existing standard and custom controllers.

What is a difference between render, rerender and renderAs? 



Render: is an attribute used in VF to hide or show certain components in visual force page.
        Rerender: Used to refresh a part of a page in visual force page when an action occurs.
        Render as: Used to convert entire visual force into PDF
        Render as = “pdf”.


How can you access URL Parameters in to a visual force page?



 Using $CurrentPage, you can access the query string parameters for the page by specifying the parameters attribute, after which you can access each individual parameter.
$CurrentPage.parameters.parameter_name

Ex: $CurrentPage.parameters.location

What are annotations ant their types?



Annotations are used to bypass the methods in the way they execute.
@Future: Used to execute the methods asynchronously.
@IsTest: Used to test the methods.
@ReadOnly
@Deprecated
@Remote Action

What is a difference between <apex: dataTable />, <apex: pageBlockTable />?



Only standard style sheets used in page block table,
 If we want to add custom style sheets we have to data table.

What is a Sandbox? Types of sandbox.



Sandbox is the exact replica of the production.
3 Types:
Configuration
Developer
Full

What are triggers? Types of Triggers



Trigger is a piece of code that is executed before or after a particular field of certain type is inserted, updated or deleted.
Bulk Trigger:  All triggers are bulk triggers by default, and can process multiple records at a time. You should always plan on processing more than one record at a time.
   Bulk triggers can handle both single record updates and bulk operations like:
Data import
Mass actions, such as record owner changes and deletes
Recursive Apex methods and triggers that invoke bulk DML statements.
Recursive trigger:


ActionSupport: A component that adds AJAX support to another component, allowing the component to be refreshed asynchronously by the server when a particular event occurs, such as a button click or mouseover.

 ActionFunction: A component that provides support for invoking controller action methods directly from JavaScript code using an AJAX request.

ActionPoller:  A timer that sends an AJAX update request to the server according to a time interval that you specify.

What is Batch Apex? How can you implement Batch Apex?(Dynamic Apex)



Batch Apex gives you the ability to operate over large amounts of data by chunking the job into smaller parts, thereby keeping within the governor limits.
Using batch Apex, you can build complex, long-running processes on the Force.com platform. For example, you could build an archiving solution that runs on a nightly basis, looking for records past a certain date and adding them to an archive.

What is a Callout method? How does it invoke, how many methods available in Classes and Triggers?



It is used to invoke the External services HTTP or web services.
An Apex callout enables you to integrate your Apex with an external service by making a call to an external Web service or sending a HTTP request from an Apex script and then receiving the response. Apex provides integration with Web services that utilize SOAP and WSDL, or HTTP services (RESTful services).

What is a difference between System log and debug log?



System Log console is a separate window that displays debugging information, as well as its cumulative limits and source code. It can be considered a context-sensitive execution viewer showing the source of an operation, what triggered that operation, and what occurred afterward. Use the System Log console to view debug logs that include database events, Apex processing, workflow, and validation logic.

Debug log records database operations, system processes, and errors that occur when executing a transaction or while running unit tests. The system generates a debug log for a user every time that user executes a transaction that is included in the filter criteria.

SOQL: Salesforce.com Object Query Language

SOSL: Salesforce.com Object Search Language

What is a Force.com IDE?



Ans. Force.com IDE is a development environment which is available as a plug-in to be installed in Eclipse and used. This IDE can be used to work on and manipulate the salesforce structure like authoring Apex classes, Visual force pages, apex triggers etc.,

What is a Managed Package and Unmanaged package?



Unmanaged vs. Managed
Managed packages are AppExchange packages that can be upgraded in the installer's organization. They differ from unmanaged packages in that some components are locked, allowing the upgrade process. Unmanaged packages do not include locked components and can not be upgraded.

Before the Winter '07 release, all packages were unmanaged. Now, you can convert an unmanaged package to managed to ensure your installed users get upgrades.

Unmanaged Package Managed Package
What Completely Editable by Developer and Installer
Can NOT be upgraded Certain Components are locked
No Destructive Changes to app
Supports Seamless Upgrading
Supports LMA for Managing Installs
When to Use 1:1 Distribution
Extensive Modification Required 1:Many Distribution
Commerical Intent
Foresee Upgrades
Editions Supported All Editions can create Unmanaged Packages ONLY Developer Edition can create Managed Packages


Managed packages differ from unmanaged packages in many other ways. Before creating managed packages, here are a few things to consider:
You must use a Developer Edition organization to create and work with a managed package.
A Developer Edition organization can contain a single managed package and many unmanaged packages.
You must register a Namespace Prefix - A Namespace Prefix is a series of characters prefixed to your Custom Objects and Fields to prevent conflict when installed in another salesforce.com org.


When you release a managed package, meaning it is uploaded with the Managed - Released option selected, the properties of its components change to prevent developers and installers from making harmful changes. For a list of each package component type and their properties, see Properties of Managed Packages. If you do not want to offer upgrades to your package, consider keeping it unmanaged.

If you plan to release your app as a Managed Package, please read out guide on Planning the Release of Managed Packages

If you already have a Unmanaged Package and you'd like to convert it to Managed, please review the following: Converting Unmanaged Packages to Managed

Now that you understand the difference and benefits of each type of package, let's see how easy it is to make your Unmanaged package from above into a Managed Package.


Customer portal



With Salesforce CRM’s customer portal, your customers can log cases and get updates 24x7. All via the intuitive user experience for which Salesforce CRM is famous. The result—higher customer satisfaction at a lower cost.

Partner portal



Outsource your service management by allowing third-party service reps to manage customer cases via the partner portal. Service partners can do everything they need to resolve customer support issues: search the solution database, log cases, make case comments, and run reports.


53.What are the rules Criteria to create a work flow?  How many ways to fire a work flows and when should those available? What are the actions in work flow?



Ans. Criteria that cause salesforce.com to apply the workflow rule.
    Immediate actions that execute when a record matches the criteria.
     Time-dependent actions that salesforce.com queues when a record matches the criteria, and executes according to time triggers.
In 2 ways,
1. Immediate action: when criteria matches record then workflow will be fired immediately.
2. Timedependent action: Fires according to time triggers.
           Tasks - Assign a new task to a user, role, or record owner.
Email Alerts - Send an email to one or more recipients you specify.
Field Updates - Update the value of a field on a record.
Outbound Messages - Send a secure configurable API message (in XML format) to a                                                        designated listener.

54. Types of Sandboxes and what are those and In Which editions those are available?



Ans.   3 types of Sandboxes available, those are Developer, Full and Configuration. In all editions.

55. What is test coverage code % for the classes and triggers and what is the test method syntax?



Ans.  75%.

56.Types of Triggers and what is a Bulk Trigger?



Ans. All triggers are bulk triggers by default, and can process multiple records at a time. You should always plan on processing more than one record at a time.
        Bulk triggers can handle both single record updates and bulk operations like:
Data import
Bulk Force.com API calls
Mass actions, such as record owner changes and deletes
Recursive Apex methods and triggers that invoke bulk DML statements.



57.What are the types of bindings available in Visual force?



Ans . 1. Using GET-SET in apex, we can bind variables in visual force.
         2. Using methods in controller.


58. What is a Wrapper Class in S.F?



Ans. A wrapper class is a class whose instances are collections of other objects.


59. What are formula and Rollup Summary fields and Difference between them? When should Rollup- Summary field enable?



Formula: A read-only field that derives its value from a formula expression that we define. The formula field is updated when any of the source fields change.
Rollup Summary: A read-only field that displays the sum, minimum, or maximum value of a field in a related list or the record count of all records listed in a related list.

Difference is below:
                  Formula fields calculate values using fields within single record, roll-up summary fields calculate values from a set of related records.
When we give the master-detail relationship it get’s enable to the master object