Here is a scenario I have never dealt before with. I have a sandbox which is a trial org. - I have configured some objects and written some code in it.

What is the best way to deploy the configuration and customization to a Salesforce.com sandbox with a different production org? The trial sandbox is clearly not in the same hierarchy so change sets won't work.

Components to be moved:

  1. Objects, fields, Page Layouts
  2. Profiles, Permissions
  3. Apex Classes and Visualforce
  4. Tabs

Any suggestions would be helpful.


You have three basic routes, two of which differ primarily in presentation.

The first method is to use an unmanaged package. This has the benefit of being able to automatically resolve dependencies, increasing your chance of a successful deployment. Simply go to Setup > Create > Packages, create a new package, add the elements, validate that all components are present, then upload. Once uploaded, you can use the Installation URL to install the components into the other organization. While this is virtually foolproof, it does not necessarily allow packaging of some data, and name conflicts are common. For example, if you have a layout called Account-Account Layout in both organizations, you'll have to rename one of them before you can deploy successfully.

The second method is to use the Force.com IDE. Create a new project, download the contents, then use the deployment wizard to copy the components. Unlike the first option, you have to manually ensure that all components are present, including fields, page layouts, etc that you intend to deploy. Unlike the first method, though, duplicately named items will simply update the existing component instead of causing an error. This also lets you copy picklist values for standard fields, etc. More powerful, but more difficult to use.

The third method is to use the Ant Toolkit. Like the Force.com IDE, you have to specify the components manually. However, you can create packages (as the first option), then specify that package name for download. Like the Force.com IDE, deployment can overwrite existing items. The downside, of course, is that this is a command-line driven interface that uses XML files, so there can be a lot of manual editing without the aid of a graphical interface. However, this method is ideal if there will be repeated deployments, because it is far faster to reuse a package in Ant than either of the two prior methods; you can create shell files to automate retrievals and deployments.

Consider the following graph:

                    Difficulty Flexibility Complexity Setup Time Retrieve Time Deploy Time
Unmanaged Package   Easy       Limited     Simple     Low        High          High
Force.com IDE       Moderate   Moderate    Moderate   Medium     Medium        Medium
Ant Toolkit         Hard       Extreme     High       High       Low           Low

Difficulty: The level of skill needed to use effectively.

Flexibility: The features offered.

Complexity: How much configuration is required.

Setup Time: The average amount of time needed to prepare for retrieve/upload.

Retrieve Time: The amount of time to actually execute retrieval/upload.

Deploy Time: The average amount of time taken to deploy a set of data.


You could create an un-managed package.

The following from the developerforce page helped me learn how to use packages



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.