This is a slightly large Architectural question. Within Salesforce you have many components. Those components are either declarative or imperative (like APEX and VF). As implementations get larger the need for source control management and potentially CI may be required as opposed to using Salesforce change sets.

So once you've reached this stage there are two ways to go about this.

Solution 1:
use a developer sandbox for Declarative components development and sync with SCM, use an external IDE for Imperative components (i.e. APEX/VF,etc.) and sync with SCM. In here what does a branch release look like if your primaries are coming from two different sources?

Solution 2
You manage all components in an external IDE/editor (like Eclipse). But that means update to things like validation rules and workflows are done by editors and not within a sandbox potentially. But it has an advantage of having a single source of development into an SCM, and from an SCM into a sandbox.

My question is what have people generally fond to be the best approach for developing declarative and imperative components in salesforce, but targeting a single SCM. And what makes sense to be able to automate deployment from that SCM.

1 Answer 1


I don't think it's a definitive answer for this, it depends on the way the developer works. How I imagine is that I essentially have 2 IDEs when developing in Salesforce.

1st IDE is the actual Salesforce administration, developer console and other changes that you have to do in Salesforce, otherwise you will spent lots of time modifying XML retrieved from the Force.com Metadata tool.

2nd IDE is Eclipse or a text editor which has enhanced functionality for the developer to achieve the desired output. An automated script with ANT will then deploy an Apex class to the developer sandbox. Once deployed and verified the various unit test it will be just a matter of a few lines to commit those changes into the repository which will then be picked up by a CI tool.

But that's how I work, it might be that another developer finds everything on the platform good enough, for example writing code in the developer console.

  • So if you use the 2nd option - how do you make sure that any branching from your inputs and inputs from the Salesforce administration (for declarative components) are synced up in your SCM? Jan 28, 2015 at 11:05
  • You would have 1 developer per developer sandbox. And the administrator would have a user on the developer sandbox. He/she will do the administrative changes and then will let the developer know so he/she can retrieve the relevant components with the Force.com migration tool. Have I answered your question? Jan 28, 2015 at 11:18

You must log in to answer this question.

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