Migrate Selected Objects between Projects

Sometimes, you may need to migrate selected objects from one project to another. For example, you may need to migrate dashboards or other metadata from your development project into one or more production projects.

Alternatively, you can clone a whole project. For more information, see Clone a Project.

Contents:

What You Can Migrate Between Projects

You can migrate the following objects between projects:

  • Metrics, attributes, facts
  • Reports
  • Dashboards

If you migrate a report or dashboard that contains computed attributes, the migration will fail with the following error:

Can't find %s with identifier %s

To migrate an object with computed attributes, see Use Computed Attributes.

Prerequisites

Before you start, make sure that the following prerequisites are met:

  • You are a project administrator in both projects.
  • You use the same account to access the projects.
  • The projects have the same logical data model.

Migrate Objects between Projects

To migrate objects between projects, complete the following steps:

  1. Acquire the project IDs.
  2. Acquire the object URI or ID.
  3. Choose the migration method:

Acquire the Project IDs

Find the ID of the both source and target projects (see Find the Project ID).

Acquire the Object URI or ID

In the source project, acquire the URI or the ID of the object that you want to migrate.

Whether you are going to need the URI or ID of the object depends on the migration method:

  • Gray pages or API: use the object URI
  • CL Tool: use the object ID

You can find the object URI and ID via the GoodData Portal or via the gray pages.

Find the Object URI or ID via the GoodData Portal

The following procedures assume that you access your projects at https://secure.gooddata.com/.

If you are a white-labeled customer, replace secure.gooddata.com with your white-labeled domain in the procedure steps when needed.

Steps:

  1. Log in to the source project in the GoodData Portal at https://secure.gooddata.com/.
  2. Navigate to the object that you want to migrate.
  3. Check the URL in the browser address bar. For example, the URL for a report would look similar to the following:

    https://secure.gooddata.com/#s=/gdc/projects/e863ii0azrnng2zt4fuu81ifgqtyeoj21|analysisPage|head|/gdc/md/e863ii0azrnng2zt4fuu81ifgqtyeoj21/obj/2579
    • The object URI is the string that follows the analysisPage|head| segment. In this case, the object URI is /gdc/md/e863ii0azrnng2zt4fuu81ifgqtyeoj21/obj/2579.

    • The object ID is the number in the last segment of the URI. In this case, the object ID is 2579.

Find the Object URI or ID via the Gray Pages

Steps:

  1. In the source project, go to the gray page for reviewing metadata resources:

    https://secure.gooddata.com/gdc/md/{source_project_id}/query

    The metadata resource page opens.

  2. Navigate the object hierarchy to locate and select the object by its title.
  3. On the object detail page, locate the keyword URI.
    • The value of this keyword is the object URI.
      Example: /gdc/md/e863ii0azrnng2zt4fuu81ifgqtyeoj21/obj/2579
    • The number in the last segment of the URI is the object ID.
      Example: 2579

Migrate Objects via Gray Pages

This procedure alternates between two projects: source and target. It may be helpful to use a text editor for staging the code that you copy and paste.

This procedure assumes that you access your projects at https://secure.gooddata.com/.

If you are a white-labeled customer, replace secure.gooddata.com with your white-labeled domain in the procedure steps when needed.

Steps:

  1. In the source project, go to the gray page for project maintenance actions:

    https://secure.gooddata.com/gdc/md/{source_project_id}/maintenance

    The project maintenance page opens.

  2. Click partial-md-export.
    The partial export page opens.
  3. Depending on your requirements, select some or all export options to apply during the export.
  4. In the text box, enter the URI of the object to migrate.
  5. Click submit.
    The export process starts.
    When the export is generated, the response similar to the following is displayed:
  6. Copy the value of the token keyword and save it for later. You are going to use it when importing the generated partial export to the target project.
  7. In the target project, go to the gray page for project maintenance actions:

    https://secure.gooddata.com/gdc/md/{target_project_id}/maintenance

    The project maintenance page opens.

  8. Click partial-md-import.
    The partial import page opens.

  9. In the Import token field, paste or enter the value of the token that was generated during the export.

  10. Make sure that the checkbox for overwriting newer objects in the project is selected.

  11. Depending on your requirements, select other options to apply during the import.

    If the imported object forces changes into the logical data model, you can choose to overwrite the logical data model. However, making changes to the logical data model may have cascading effects throughout the project, including the unexpected deletion of project data. We do not recommend that you select this option unless you have thoroughly tested the impacts of this overwrite first.

  12. Click submit.
    The import process starts. Depending on the size of the imported object, this process may take a while.
    When the import completes, the OK status of the import task is returned.The object has been imported.
  13. Log in to the target project, and verify that the migrated object is available there.

Migrate Objects via API

This method is typically used for migrating an object from a single source project to multiple target projects.

Steps:

  1. Perform partial export from the source project. See API: Export part of a project.
  2. Perform partial import into the target project. See API: Import part of a project.
  3. Log in to the target project, and verify that the migrated object is available there.

Migrate Objects via CL Tool

The CL Tool is a legacy interface and may be deprecated in a future release. Instead of using the CL Tool, you may want to switch to migrating via API or via gray pages.

Steps:

  1. Execute the ExportMetadataObjects command:

    UseProject(fileName="..."); // or OpenProject
    ExportMetadataObjects(tokenFile="...", objectIDs="...");
    • tokenFile is the file where the generated import token will be stored when the script is executed.
    • objectIDs is a comma-separated list of the IDs of the objects to migrate.
    The ExportMetadataObjects command exports the objects with all dependencies.
  2. Execute the ImportMetadataObjects command:

    UseProject(fileName="..."); // or OpenProject
    ImportMetadataObjects(tokenFile="...", overwrite="1", updateLDM="<1|0>");
    • overwrite="1"  overwrites the existing objects in the project. Disabling the overwriting is not supported.
    • updateLDM specifies whether to update the attribute/fact names and descriptions in the logical data model (updateLDM="1") or not (updateLDM="0").

      If the imported object forces changes into the logical data model, you can choose to overwrite the logical data model. However, making changes to the logical data model may have cascading effects throughout the project, including the unexpected deletion of project data. We do not recommend that you select this option unless you have thoroughly tested the impacts of this overwrite first.

    TheThe ImportMetadataObjects command imports objects from the import token.
  3. Log in to the target project, and verify that the migrated objects are available there.