1

I am in the process of planning out and executing how we're going to migrate data from one SF organization to another. I want to make sure I do this properly.

Based on https://help.salesforce.com/articleView?id=000322219&type=1&mode=1

It states that: Recommended sample order for importing core objects =

  1. Accounts
  2. Campaigns
  3. Contacts
  4. Opportunities
  5. Cases
  6. Pricebooks
  7. Products
  8. Leads
  9. Contracts

I understand that I have to create the relevant metadata (pagelayouts, fields, etc.) so that the data can have a home in the receiving org.

I plan on doing this with Dataloader. I've never actually done this and I don't want to mess it up.

-Q: What do I need to do in order to avoid duplicates?

-Q: Also, step by step, how do I use Dataloader to do this perfectly?

-Q: Do I need to move irrelevant Users also? Can the Accounts exist without the user who created it?

-Q: Do I need to do anything with ID's if so what?-and please be specific.

-Q: What batch size should I set Dataloader for?

-Q: Is there anything else that I'm missing?

-**Note:**I have no coding experience, I will be doing this "manually" and I am a Beginner Admin so please answer in layman's terms.

Thank you and I'm sorry if this is a bad post, I just want to make sure that it goes smoothly. I am also actively researching this but I wanted to drop questions here because I know that you guys know best practices from experience.

2

I would really recommend that you engage a consultant at least to assist you in planning this process. Attempting to do a data migration while very new to the platform and with no exposures to the pitfalls involved can place your organization's data and data integrity at risk. At minimum, you should practice and evaluate your results on a sandbox.

The full answers to your questions would literally be a book on Salesforce data migration and ETL. I'll try to answer them briefly and give you scope for more research.

Q: What do I need to do in order to avoid duplicates?

There's some more background nuance here. If you're moving from Org A to Org B, and Org B is empty, you have less to worry about. Preferably, you'd want to deduplicate the data inside Org A prior to initiating the migration.

If Org B is not empty and you need to deduplicate the data as you migrate, your situation is quite a bit more complex. The last time I executed such a process, I worked for several weeks closely with the involved business users reviewing reports of the top-level records in both orgs to identify duplicates and map them. In that case, it was just Accounts. If you need to identify duplicates across multiple records, your situation will be a good deal more complex. You may wish to use a commercial tool to make this process easier.

-Q: Also, step by step, how do I use Dataloader to do this perfectly?

This is way too broad to give a complete answer. At the top level summary, you will need to execute the load of your objects in dependency order (parents first, then children, with junction objects after both parents).

My preference is to maintain a global ID file, a spreadsheet where I collect the results of each load in a simple two column layout ("Old Id", "New Id"). That makes it easy on each file you load to do an INDEX()/MATCH() construct to map each parent Id reference column to the new Ids of the inserted records in the new org.

That is also the step at which, for example, you might remap child records from parents in Org A to identified duplicates in Org B.

-Q: Do I need to move irrelevant Users also? Can the Accounts exist without the user who created it?

It's up to you how you handle the OwnerId column. You can pre-seed your Global Id file as described above with a mapping between the old Owner Id and the new Owner Id.

-Q: Do I need to do anything with ID's if so what?-and please be specific.

This is the question that raises the biggest concern for me. Doing a large-scale org-to-org migration absolutely requires that you be comfortable with the structure of the Salesforce data model, including all the permutations of relationships (foreign keys). If you don't have that comfort, hire a consultant.

-Q: What batch size should I set Dataloader for?

Highly org-specific and depends on how much code you have running on each object, and how well that code is implemented. You may have to experiment in a sandbox. The default is 200; you can set it as low as 1 if you need to to get past lousy code, but it will take far longer.

-Q: Is there anything else that I'm missing?

Data Loader is not your only option. I would strongly consider an commercial product that is designed to do multi-object backup and load (there are several; I'm not specifically endorsing any of them), or an open source solution like Amaxa or even CumulusCI (although note that there are significant limitations of both of those products and they might or might not meet your needs here).

Disclosure: I'm the author of Amaxa and on the CumulusCI team.

| improve this answer | |
  • Thanks David. I appreciate your experienced input. – Steve Feb 20 at 14:45
2

Steve, several things here. You can always use dataloader to import data or you can use some tools like Talend, Informatica etc..

-Q: What do I need to do in order to avoid duplicates?

It is not to avoid duplicates but rather to have all your parent records before you insert any child records. So for ex, you cannot load contacts for an Account without actually having the account. So always parent to child

-Q: Also, step by step, how do I use Dataloader to do this perfectly?

How to use dataloader perfectly is simply by practice. There is no specific perfect way.

-Q: Do I need to move irrelevant Users also? Can the Accounts exist without the user who created it?

You do not have to move the users if you dont want to. When you load the data, createdby and lastmodified will be saved with whoever is loading the data. Just in case if you want to insert values into audit fields as well, you will have to create a permission set with audit field permissions

-Q: Do I need to do anything with ID's if so what?-and please be specific.

ID's from the source org, if you wish you can save them to a custom field in your target org but is purely dependent on your use case. You can also use them as external ID in your target org and refer them when loading child records.

-Q: What batch size should I set Dataloader for?

the default batch size for dataloader is 200 and if you use Bulk API then the max is 10000

-Q: Is there anything else that I'm missing?

You may be missing a ton of details here. You can also explore Command Line Dataloader, you dont have to having coding exp to setup Dataloader CLI.

| improve this answer | |

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.