Salesforce CPQ data migration with Salesforce Inspector

Written by
Dennis Palmer
Salesforce CPQ Expert
August 15, 2023
min read

Table of Contents

View all guides


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

This is some text inside of a div block.

In the world of data migration, Salesforce Inspector has made a name for itself as an indispensable tool that can greatly simplify the complex process of migrating data, particularly when dealing with Salesforce CPQ.

Salesforce Inspector is a powerful extension for Chrome and Firefox browsers, allowing Salesforce admins, developers, and consultants to efficiently inspect, analyze, and work with their Salesforce data. It streamlines Salesforce data migration process by enabling easy export, facilitating data cleaning, and seamless import into the destination instance. The tool ensures data integrity through pre and post-migration data validation and boasts a user-friendly interface, requiring no advanced technical skills.

In this article, we will delve into how Salesforce Inspector can be leveraged for Salesforce CPQ migration, discussing in detail the reasons you might perform a migration, pre-migration planning stage, data export, and import stages. We will also explore how Google Sheets can complement Salesforce Inspector in managing and relating exported data. It's crucial to note that a successful data migration project requires a well-thought-out plan and the right set of tools. When equipped with Salesforce Inspector and a thorough migration strategy, your Salesforce CPQ migration journey can be made substantially smoother and more reliable.

Experience the Ease & Confidence of NetSuite Customizations with Salto

Get Started with Salto

Elevate your Salesforce CPQ Deployments

Request a demo ≥

Why Migrate Salesforce CPQ Data?

Sometimes, you make a change to an org to solve an acute problem that is happening.  You wouldn’t necessarily need to do a whole data migration for this.  You test the change, then make the same change in production.  That being said, there are a few scenarios where doing a data migration becomes relevant.

  • Implementing a CPQ solution from scratch or making a large change to a solution involving multiple related objects: 
  • Staging Sandbox → UAT Sandbox → Production
  • Seeding a developer org that has no data:
  • Production → Developer Org
  • Completing a partial sandbox refresh, adding the CPQ configuration:
  • Production → Partial Sandbox

In each of these scenarios, you will need to do some planning before doing the actual migration.  In the next section, we’ll dive into pre-migration planning and how to go about it.

Pre-migration Planning

Embarking on a data migration process without a comprehensive plan is like setting sail without a compass - you might get somewhere, but probably not where you intended.  Pre-migration planning is a crucial stage where you set up the groundwork for a successful migration process.  With Salesforce Inspector and Google Sheets, this stage becomes much less daunting and more manageable.

Start by understanding the data you will be migrating.  Salesforce CPQ comprises a multitude of data types, including products, pricing, features, options, and more.  Identify which of these objects need to be migrated.  A clear understanding of what data you have and what you need to move will prevent unnecessary hiccups down the line.

Once the data to be migrated is identified, you can use Salesforce Inspector to import it into Google Sheets and then review it!  The tools provide you with a detailed view of your data at a granular level.  During this review, you might identify redundant data, incorrect data, or inconsistencies that need to be cleaned up.  Taking care of these early on ensures that only relevant, correct data is migrated, enhancing the efficiency of the process.  In the next section, we’ll show you an example of how this is done.

Furthermore, consider dependencies between different data types.  For instance, if you're migrating product data, products may have dependencies to other objects like product features or product options.  Mapping out these dependencies beforehand allows you to plan the sequence of your migration, ensuring related data types are migrated together to maintain data integrity.  Below is a basic list of CPQ configuration objects and the dependent order in which they should be migrated.  Be sure to add any custom objects you have in your solution to this list in the proper place.  What are your custom objects related to?  What needs to be imported before your custom objects?

  1. Pricebook
  2. Product
  1. Product Feature
  2. Product Option
  3. Configuration Attribute
  4. Price Dimension
  5. Costs
  6. Pricebook Entry
  1. Product Rule
  1. Error Conditions
  2. Lookup Queries
  3. Product Actions
  1. Configuration Rule
  2. Price Rules
  1. Price Conditions
  2. Lookup Queries
  3. Price Actions
  1. Template Contents
  2. Quote Templates
  1. Line Columns
  2. Template Sections

In the “Using Google Sheets to Relate Data” section below, we go into detail about mapping data, using an example set of objects within Google Sheets.  It is a good idea to set up your Google Sheet with tabs for the objects you’ll be migrating.

Lastly, plan your resources and schedule.  Depending on the size and complexity of your Salesforce CPQ data, the migration process might be time-consuming.  Determine how much time you can allocate daily or weekly for the migration and create a realistic timeline.

With a well-laid plan in place, you're ready to begin the actual data migration process.  But remember, the pre-migration stage is not to be rushed.  It's the foundation upon which successful data migration is built. 

Using Salesforce Inspector and Google Sheets to Export Data

Below is a step-by-step guide to exporting data with Salesforce Inspector.  Let’s say we’re migrating Products, Product Features and Product Options!

Access Salesforce Inspector: Log in to your source org.  There is a small tab stuck to the right side edge of the Salesforce screen.  Click it!

Initiate the Data Export: Right-click ‘Data Export’ from the menu that appears and choose ‘Open in New Tab’.

Select the Data: Use the SOQL box to type in your query.  You can choose to export all fields or select specific fields that you may have identified during your pre-migration planning stage.  Usually, if you need to do a data migration, there will be too many fields to single out so you’ll likely need to export all fields.

Export the Data: Click the ‘Export’ button to generate the data.

Copy the Data to the Clipboard: Click the ‘Copy (Excel Format)’ button to put the data into the clipboard in a format that will paste easily into a Google Sheet.

Paste the Data into a Google Sheet: In a new Google Sheet, select the top left cell, go to the ‘Edit’ menu and click ‘Paste’.

There you have it!  You have successfully exported your object!

Review the Data: From here, you can review the data and analyze it to make sure everything you want to import is there.  Maybe there is missing data, and you need to adjust your query.  Maybe there is too much data, and you’re including something you don’t have to.  Definitely review your data!  Validate that this is the data you want to import!  Make any adjustments you might need.

Prepare the Data: Now is also the time to identify fields you won’t be importing.

In your Google Sheet, put an underscore (_) at the beginning of each column you will not import.  It is likely you identified these columns in the data prep stage above.  For example, in the screenshot above, you’ll notice there are fields like CreatedDate and CreatedById.  These fields you will not need in the import.  You can either delete the column or use the underscore trick.

If this is not a modification to an existing implementation, and you’ll be only inserting records, you do not need the ‘Id’ column.

Using Google Sheets and Salesforce Inspector to Import Data

Now that we have the data in our Google Sheet, we need to import it into the destination org.

Access Salesforce Inspector: Log in to your destination org and click the small inspector tab.

Initiate the Data Import: Right-click ‘Data Import’ from the menu and choose ‘Open in New Tab’.

Choose your Action: Is it an insert?  An update?  An UPSERT?!  You get to choose.  If this is the first migration, it is likely an insert.  If this is a modification migration, it is likely an upsert.

Choose your Object: This is a picklist of all the objects in your destination org.  This is a place where you might ask yourself: “Why don’t I see the object I’m importing in this list?”  You have to install CPQ into the destination org first, silly!  Go do that.  Then pick an object.

Select your Data in the Google Sheet: Click to the Google Sheet tab and select all the data from the tab you’re importing.  Make sure to select the row of column names.  Then Edit -> Copy.  Or right-click -> Copy.  Or ctrl/command ‘C’.

Paste Excel data here: Click back over to the Inspector Data Import tab.  Click into the ‘Paste Excel data here’ box and paste!

Other Fields: You should be able to leave the External Id, Batch Size, and Threads fields with their default values.

Import: Click the ‘Import’ button!  You will see your data imported in increments of ‘Batch Size’.

Paste the Ids: You need to put the Ids of the records you just imported into the Google Sheet in an Id column.  Why?  So we can relate future imports back to the Ids of the products in the destination org.  We will detail this in the next section!

Click the ‘Copy (Excel Format)’ just above the import results table.  Then navigate to the Google Sheet and make a new tab.  Paste in the data and select just the Id column and copy that.  Then switch to your object’s tab and paste in the Id column.

Verify the Imported Data: Once the import process is complete, it's always a good practice to validate the data in the destination org.  This helps ensure all necessary data has been imported correctly, and no data corruption has occurred during the process.

Using Google Sheets to Relate Data

We have been through exporting and importing Product data to and from a Google Sheet using Salesforce Inspector.  Good job!

It’s time for that next object, Product Features!  The export is the same.  Just export your data using the SOQL box in the ‘Data Export’ screen of Inspector like we did above.  But which features should we export?  You can identify which features in many ways.  The straightforward approach would be to make a comma-delimited list of product names and include them in an ‘IN’ clause against the Product Feature field in your SOQL statement.  

You might, instead, use a ‘LIKE’ clause to say the feature name ‘starts with’ a particular string.  In our below example, we are querying all features for simplicity.  We also added the Configured SKU’s Name so we know which products are which.

Once you have your data queried, copy the data using the ‘Copy (Excel Format)’ button and paste it into a new tab for this object.

Here comes the fun part.  VLOOKUP.  Why do we need the VLOOKUP, you ask?  Great question!  Well, your new data, product features, has a lookup reference field that contains Id values.  And when you imported products, the Ids of those records became different from the Ids in the ‘Configured SKU’ field of the features you just exported. In other words, the Ids of the new products in the destination org are not the same as those in the source org, so we need a way to reconcile them so that we can import their related Product Features.  Keep in mind, you will have to identify all of the Id columns in each object you’re importing so you know which columns to use VLOOKUP for.  For features, it's the Configured SKU field.

Let’s blank that column out.

Before we do the VLOOKUP, we need to decide on/create a key column for the lookup to use in identifying the correct record in the Product tab.  Sometimes, it’s the Product Code, and sometimes, it’s another field.  We will use Configured SKU Name in our example.

Let’s do the VLOOKUP!  Below is the formula for our example.  This is placed in the header for the Configured SKU column.  This will look up the Id for every row.  

={"SBQQ__ConfiguredSku__c";ARRAYFORMULA(VLOOKUP(B2:B, Products!1:8, 2, false))}

  1. We are using the column ‘Configured SKU Name’ for what to look up (C2:C).
  2. Then choose the range of where to find the record.  You must situate the key column as the first column in this range.  We moved the Product Name column in the products tab one to the left so it’s the first column.

  1. Next you choose which column is the Id value to place in our empty column.
  2. Lastly, is false.  This is the is_sorted value.  It’s always false.  Because it’s recommended.

Now that your VLOOKUP is situated and your column is filled with the new Ids from the recently imported Products tab, you can select your data (including the header row), Copy the data (Edit -> Copy), then paste it into the ‘Paste Excel data here’ box in the Import Data screen of Salesforce Inspector. From here on, you can import the Product Features, just like we imported the Products earlier.  You can perform the same process over the features and then import product options in the same way.

Pain Points

Ouch!  There are so many pain points!  Here are a few:

  1. Timing: As you can imagine, if we have many objects to import that are all related to each other, this process could take quite a while.
  2. Accuracy: We are all human.  We all make mistakes!  And it is likely that would happen.  When this happens, your features might all get imported under the same product.  So then you have to delete the records you imported, go back to your Google Sheet, and fix the VLOOKUP.  Then reimport everything again.  This is something that might not be noticed until the users are in the system and experiencing undesired functionality.

    You might also miss an Id column in an object and skip putting the VLOOKUP in.  That will cause some records to fail, so now you have a half-complete import, possibly in production!  Yikes.
  3. Complete Data: You may have missed something in the planning step at the beginning of this process.  Sometimes, this is also not noticed until the users are in the system and are experiencing errors.
  4. Data Compatibility: When migrating from one Salesforce instance to another, there might be changes or differences in the data structure that may not be compatible. For instance, field types, picklist values, or record types could differ, leading to import errors.

There has to be a Better Way!

The landscape of data migration doesn't have to be filled with such complexity. While Salesforce Inspector serves as a useful tool for understanding the granular steps of the process, the evolution of more automated data migration solutions promises a smoother, more efficient path.

Automated migration tools are designed to streamline and simplify the process. They are engineered to handle large volumes of complex data and manage the relationships and dependencies inherent in Salesforce CPQ data. These tools can offer features such as advanced data mapping, error handling, and even rollback capabilities that can mitigate many of the pain points associated with manual processes.

By moving towards more automated solutions, we shift our focus from the intricate details of data migration to a more strategic view of ensuring data integrity, efficiency, and the successful transfer of business processes from one instance to another. As we strive to drive our sales processes forward in new instances, automated migration tools can serve as powerful allies, enabling us to make the journey not just manageable but more rewarding.

Get Started with Salto

Elevate your Salesforce CPQ Deployments

Request a demo ≥


The process of migrating Salesforce CPQ data, while achievable with tools like Salesforce Inspector and Google Sheets, can be a daunting task that requires meticulous planning and attention to detail. Each step, from pre-migration planning to exporting and importing data, comes with its unique challenges and potential pitfalls.

As you look to your next Salesforce CPQ migration, consider embracing an automated solution. It not only promises to reduce the time and effort involved but also enhances the accuracy and reliability of the migration, ensuring your data is ready to power your sales processes as soon as it arrives in its new home.

Written by
Dennis Palmer

Dennis boasts an impressive 8 years in the Salesforce domain, distinguishing himself as a knowledgeable figurehead in the world of CPQ. His dedication and expertise can be observed through his widely-read blog, Passionate about optimizing processes and leveraging technology for maximum efficiency, Dennis has fortified his expertise with 5 Salesforce certifications. His nuanced insights and extensive experience promise to guide you in maximizing the value of your CRM systems.

Written by