I am new to salesforce and just discovered that there are two options to deploy metadata to production:

  1. using ChangeSets
  2. using Force.com Migration tool

Could somebody please clarify me on which one to use under what conditions?

  • 1
    Not sure if its important to you or not, but if you want to use a conventional version control system such as SVN or Git, the Force.com Migration tool allows you to hold a copy of your metadata on a computer that is external to Salesforce and so bridge to the version control system - see e.g. Svn-logicalv2.png.
    – Keith C
    Commented May 29, 2015 at 8:03

2 Answers 2


Both can be used for deployment for almost anything. Personally I found, if deployment is small, I use changeset but for larger deployments(and first time deployment of large project) we prefer Ant(Migration Tool).

Reason - in changeset- if i've to deploy say 100 fields for some object. I've to make individual selection of each field to add in changeset before uploading to other environment. Consider If you've 10-15 such object!. This is too much time consuming and error-prone. Through Ant, all what I've to do is to mention object in XML, all fields will automatically get deployed

Other thing, If I've to delete components in production, I've option to do through ANT( Destructive.XML) while no such option is available in changeset

last thing changeset is only used for deployment in connected orgs, while through ANT you can deploy in any org.


Changesets are a way to deploy components through the standard salesforce UI. A user first creates a Outbound Changeset on the Source org and adds the components they wish to deploy. Once ready, the changes is uploaded to a Destination ORG. The deployment can then be validated and deployed from within the Destination ORG>


  • Don't need to be a developer

  • UI interface

  • Anyone can see list of components deployed


  • UI Interface (it's horrible)

The Ant Migration Tool uses a technology called Apache Ant to allow you to retrieve and deploy meta-data. Besides typical deployments, there are countless uses for this, but here are some common ones:

  • Deploying the same package to multiple orgs
  • Continuos integration
  • Auto-Backups
  • Editing object meta data through XML (often faster than using the UI)

With ant, you typically build XML packages of the meta-data your concerned with then use the command line to first retrieve the meta data. Now that the meta data is locally on your machine, you can use the command line to push it to a different ORG.

The real power of the migration tool comes from the ability to write scripts to do complex and receptive deployment tasks.

Not the answer you're looking for? Browse other questions tagged .