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.

Salesforce CPQ - Automatically add a Product to a Quote

Recently I have seen a question popping up on communities that how can we add a product dynamically to a quote (not within the bundle), based on a condition. I'll explain a few simple use cases below. These use cases refer to adding a product on a Quote Line Editor and the CPQ version installed is 214.6 Add a "Warranty" Product if "Macbook Pro" is added to the Quote. While I select "Macbook Pro" to add in my Quote, it should also add the "Warranty" product automatically to my Quote. 1. Product Rule : Create a Product Rule of type Selection and scope equals Quote.  Type: Selection Active: checked Conditions Met: All Scope: Quote Evaluation Event: Always 2. Error Condition : Add an error condition to the Product Rule. This product rule will run if this error condition returns true. As per the use case, it should run if there is a product added to the Quote with a Product code as "MBPRO" Tested Obje