Migrating Existing Projects into the Organization

Once the Organization resource has been created for your domain, you can move your existing projects into the organization. You must be an owner or an editor of the project and a Project Creator of the organization to be able to move the projects.

All projects created after the creation of the Organization resource will automatically belong to the Organization resource. You can migrate a project into an Organization using the Cloud Platform Console, the Resource Manager API, or the gcloud command-line tool.

Console


  1. Open the Projects page in the Cloud Platform Console.

    Open the Projects page

  2. Select the project you wish to migrate and then click Migrate.

  3. In the Migrate project [project_name] pop-up box, select the organization you wish to migrate the project to, and then click Migrate.

gcloud


To migrate a project into an organization, run the follwing command:

gcloud alpha projects move [PROJECT_ID] --organization [ORGANIZATION_ID]

where,

  • PROJECT_ID is the ID of the project you wish to move into the organization.
  • ORGANIZATION_ID is the ID of the organization to which you wish to move the project.

API


Using the Resource Manager API, you can move a project into the Organization resource by setting its parent field to the organization ID of the Organization. To move a project, you must have the owner or the editor role on the project, and the Project Creator role on the Organization.

To migrate a project into the Organization:

  • Get the project object using projects.get() method.
  • Set its parent field to the Organization ID of the Organization.
  • Update the project object using projects.update() method.

You cannot move a project out of an Organization or move a project from one Organization to another. That is, the parent field is immutable once its set.

The following code snippet demonstrates the steps above:

    project = crm.projects().get(projectId=flags.projectId).execute()
    project['parent'] = {
        'type': 'organization',
        'id': flags.organizationId
    }

    project = crm.projects().update(
    projectId=flags.projectId, body=project).execute()

Note on policy implications

IAM policies that are defined at the projects that are being imported will move with the projects, so users that have permissions on the project before them move, will maintain them after the project is migrated into the organization.

Because IAM permissions are inherited and additive, if there are roles defined at the organization level, those roles will be inherited by the projects as they are moved into the organization. If, for example bob@myorganization.com has Project Editor role defined at the organization level, he will also get this role also on any project that is migrated into the organization. This will not break anything in existing projects, but more users may gain access due to inheritance.

Similarly, organization policies are also inherited down the hierarchy. By default no organization policy is defined for the organization when it is created. If you have subsequently defined organization policies at your organization, care needs to be take when moving projects into the organization, to make sure projects are consistent with such policies.

Migrating existing billing accounts

Use the following steps to migrate your existing billing accounts into an Organization. You must be a Billing Creator to be able to migrate billing accounts. Migrating a billing account into an Organization does not impact project services.

Console


  1. Open the Google Cloud Platform Console:

    Open the Billing Page

  2. Click on the Organization drop-down on top of the page, and select No organization.

  3. Click on the billing account name that you want to migrate.

  4. Click Change Organization to move the billing account into the organization.

Send feedback about...

Google Cloud Resource Manager Documentation
Google Cloud Resource Manager Documentation