Friday, March 20, 2015

Salesforce Deployment Guide using Ant Migration Tool


In Salesforce, we have three different ways by which we can perform the deployment activities. They are -
  • Change Sets - This is available from Salesforce.com site.
  • By using "Deploy to force.com server" option in Eclipse.
  • Using Java based tool - ANT.
In this post, I will provide a complete deployment guide using Ant Migration Tool.

Before I start, let me tell you the prerequisite for doing deployment using Ant Migration Tool.
  • Requirement - Java: You should have java installed in your machine. To verify whether you have java installed, do the below steps -
    • Open a command prompt
    • At the prompt, type java -version. You should see something like below which indicates your installed java version
  • Requirement - Ant: You should have ant installed in your machine. To install ant, do the below steps -
    • Download ant from http://ant.apache.org/bindownload.cgi
    • Set environment variable "ANT_HOME" which should be the path of your installation. Add the bin folder to your path as well like %ANT_HOME%/bin
    • Verify by issuing the command ant -version from command prompt. You should see something like below which indicates your installed ant version.
Once you have configured Java and Ant successfully into your machine, it's time to download the Force.com Migration Tool. You can download the same by logging into your Org and then Setup | Develop | Tools and then click Force.com Migration Tool. Once downloaded, extract the zip file and copy ant-salesforce.jar file to the lib directory of your ANT installation path.

To start with the deployment process, you need mainly below files -
  • build.xml - This file will exercise the deploy and retrieve API calls
  • build.properties - This file will be used to store your Salesforce credentials and other properties in order to run sample ant tasks.
  • package.xml - This file will be used to identify what are the stuffs we are interested from org (ex. Custom Objects, Standard Object, Custom Fields, Apex Classes, VisualForce Pages etc.)
Now we will do two exercises here. In first exercise, we will retrieve/download specified items from Salesforce Org and save it in own local machine. And in the next exercise, we will upload the previously downloaded items to our Production Org.

Exercise 1 -
In this exercise, we will retrieve/download specified items from Salesforce Org and save it in own local machine. 
The build.properties file is -
The package.xml file is - 
Note - In my Sandbox, I have created a new custom object names Country (API Name: Country__c). This object is not present in my Production environment. What I am trying to do is download County__c and save it in my local machine.

The build.xml file is -

Now we will execute the ant command ant fetchNewItems to download the item from Salesforce and Save it into my local machine.
As a result, we will see that a new folder with retrieveOutput is created and content from Salesforce is copied into that folder. 
So COOL. We now know how to copy items from Salesforce Org to Local Machine. 
Just for your information, you can download not only Custom Objects, but you can download anything like Standard Object, Standard Fields, Custom Fields, Apex Classes, Visual Force Pages etc. The only thing is that you need to mention that in your package.xml file.

Below is one example package.xml file, which can be used to download -
  • All Custom Objects
  • All Apex Classes
  • All Visual Force Pages.

Now let's move to the new exercise.
Exercise 2 -
In this exercise, we will upload the previously downloaded items to our Production Org.
The build.properties file is -
The package.xml file is -
This is the same package.xml mentioned in Exercise 1.
The build.xml file is -
Now we will execute the ant command ant deploy to deploy the items present in the folder "retrieveOutput" into Production environment.

DONE. So with the above two exercises, we now know how to deploy changes from one Org to another with Ant. We can combine steps from the above two exercised to achieve the below requirement -

I am sure you are now feeling more comfortable in using Ant for deployment purpose. Please let me know if you have any specific doubts. Thanks.

0 comments:

Post a Comment