Migrate Google Cloud Resources between Projects

It’s not possible to merge Google Cloud Projects. Sorry, I need to start with that so you don’t waste time. Google Cloud is meant to be structured by organizations and then folders and then projects. Those projects can then be migrated between folders and organizations, but the actual projects cannot be merged with other projects.

There is hope for you to simplify the process of manually migrating these API configurations, compute, etc…

Google Cloud Asset Inventory – it allows an engineer to visualize all of the resources in a project.

Here’s a sample view of the project I needed to decommission:

Clicking on the ‘RESOURCE’ tab will give you this view, where you can visually filter or download a CSV of those resources enabled, in use, along with last used dates.

Fortunately, for me, this project was relatively simple to scope. I downloaded the CSV file for both the ‘RESOURCE’ and ‘IAM POLICY’ tabs so I could track my progress as I duplicate the services in my consolidated environment.

Before activating and especially before deprecating any services, I needed to map the enabled resources from the CSV to active services on other systems. Knowing that this project was dedicated to a singular purpose, I knew exactly where to look, my WordPress instance where I had to upload and authenticate my ‘app’ for SMTP authentication. Once my new environment was configured, I needed to ensure that I set up the service to work on the origin server again.

This part is easy, create an additional column on the CSV in excel/sheets, label it ‘migrated’ and start checking off each service as you set it up in the new project. If you have overlapping services already enabled, even better! For me, I just needed to jump over to the actual OAuth consent screen to start building my SMTP connection.


Yes, you can just totally decommission a project like this after following the documentation on a new project to set up SMTP for the first time, but I used this project as a simple example of how you can best utilize Cloud Asset Inventory. The next time, we’ll parse the JSON output to automate the enablement hands-free!


Now, once all resources mimic the CSV downloads, you can test that everything is communicating with the new environment for 24-48 hours before setting the original project for deletion. Some organizations may have a retention policy set for 30-365 days before allowing you to delete the project. Since this project has no associated fees/costs, we’ll be good keeping it active, but I know it works and I’m ready to shut it down and delete the unused scope.

Leave a Reply

Your email address will not be published. Required fields are marked *