Skip to main content

DumpIT - Migrate / Clone Salesforce Org - Data

How complicated can it be to clone data from one Salesforce Org to another? It can take from minutes to weeks depending on the number of objects and relationships between them.

I am glad to share a tool I developed which may save you a lot of time. DumpIT comes as an executable jar file which helps to clone data from one Salesforce Org to another. Recently Salesforce released a feature to clone a Sandbox but it has its own limitations and cannot always be used.

How to use DumpIT?

Prerequisite - You must have Java installed and setup on your local machine. Try running "Java -v" command on your command prompt to make sure its all setup and working. 

Step 1: Download the tool

  1. Download the tool from this link https://crossdoor.io/dumpit/
  2. Create a folder on your local machine and place all the three downloaded items in that folder. You will see these three items:
  • results folder: Success and Error files are placed on this folder on execution, for each object. You can use this folder OR any other folder on your local machine by specifying the folder path in build.properties.
  • build.properties: This is where you configure the tool.
  • DumpIT.jar: This is the executable jar file (THE tool itself).

Step 2: Configure build.properties

Open build.properties file and setup the source and target Orgs and which all objects needs to be cloned. build.properties is explained below in more details. 

Step 3: Create a field on target Objects

Create a new custom field on all the objects for which we want to move the data. Make sure the API name is exactly as mentioned below with the same case. 
  • Field Label: Dump Id
  • API Name: Dump_Id__c 
  • Type: Text (18)
  • Unique: true
  • External Id: true

Step 4: Run It

1. Open the command prompt and go to the folder path where you have downloaded the tool.
2. Type this command to run it: *java -jar DumpIT.jar*

build.properties

The current version has some basic functionality but I working on adding more advanced options in the future. The current options are:

Credentials of the Source and Target Orgs.


  • source.username=Username of the source Salesforce Org
  • source.password=password+securitytoken of the source Org
  • source.serverURL=https://login.salesforce.com
  • target.username=Username of the target Salesforce Org
  • target.password=password+securitytoken of the target Org
  • target.serverURL=https://test.salesforce.com
Comma-separated API Names of the Objects you want to clone data. THE SEQUENCE MATTERS. Please make sure the sequence in which the objects are listed is from Parent to Children.

  • process.objects =  Account, Contact, Opportunity

In case you want to push selective records, you can add SOQL conditions for a specific object. You can do that using the given format  --Object API Name.where--. Make sure to escape the ='s in the condition. Example for Account is given below:

 Account.where =  Rating\\= 'Hot' AND Industry \\= 'Information Technology'


Path of the folder where you want to place the Success and Error files, you can set the path to the result folder downloaded with the tool above.


 process.statusOutputDirectory = /Users/gulshanmiddha/Desktop/dumpit/results/


Make sure the API names mentioned above are all case sensitive. You can copy them from Salesforce UI OR using workbench.


Disclaimer - This tool modifies data in your target Org. Please test it on Sandboxes or Developer Orgs before using it on Production.

Comments

  1. Hi, nice tool. Is there a way to exclude fields from being merged?

    ReplyDelete
  2. Hi, I'm trying to execute this for some of the CPQ objects looks like its doing good for all the object except one PricebookEntry object its not inserting/upserting records the error file shows the "Pricebook2Id: Required fields are missing: [Pricebook2Id]", the dependencies objects are loaded succesfully, Any idea what I'm missing?

    ReplyDelete
  3. Looks like there a bug in this tool, it doesn't preserve the RecordType of a given sObject. Has this been reported before?

    ReplyDelete

Post a Comment

Popular posts from this blog

Autocomplete Lookups for Salesforce1

We all are seeing that Salesforce1 is evolving with every passing day and there is yet lot to be done. One of the many items is a custom lookup field on a Visualforce page. Lightning design systems do provide us with the CSS we can use to create lookup fields the logic has to be written by the developer. Below is a basic example that can be used to implement the basic autocomplete version of the lookup field. The auto complete text box is implemented using the CSS provided by Salesforce1  lightning design . The Visualforce page uses Visualforce remoting to fetch records based on the user input. A call to the controller method is made every time a keyup event is fired and the results are updated.

DumpIT - Adding / Ignoring fields

Default settings for DumpIT, migrates data for all the creatable fields of an object. For example, if the build.properties file ONLY mentions account as: process.objects =Account This migrates all creatable fields for "Account" object. There ar scenarios where you want to migrate data for certain specific fields or ignore certain fields, to do so you can use these given properties in the build properties file. Ignoring field: To avoid migrating a certain set of fields, add the below-given property: Account.ignorefields =Industry,OwnerId This will migrate all the Account creatable fields except the ones mentioned in the above statement. Selective fields: To migrate data for only selective fields, add the below-given property: Account.fields = Name,BillingAddress,RecordTypeId In this scenario, only the fields mentioned in the above statement will be migrated, make sure you select all the required fields for that object.