Skip to content

Commit 1db1f7f

Browse files
authored
Merge pull request #2893 from MicrosoftDocs/edit_1819181
Update cds-odata-dataflows-migration.md
2 parents 6f7ae66 + 1d8b818 commit 1db1f7f

File tree

1 file changed

+50
-47
lines changed

1 file changed

+50
-47
lines changed

powerapps-docs/developer/common-data-service/cds-odata-dataflows-migration.md

Lines changed: 50 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Migrate data between Common Data Service environments using the dataflows OData connector
33
author: denisem-msft
44
ms.reviewer: "nabuthuk"
5-
description: Migrate data between Common data Service environments using dataflows OData connector.
5+
description: Migrate data between Common Data Service environments using dataflows OData connector.
66
ms.date: 05/05/2020
77
ms.service: powerapps
88
ms.topic: "article"
@@ -11,6 +11,8 @@ search.app:
1111
- PowerApps
1212
---
1313

14+
15+
1416
# Migrate data between Common Data Service environments using the dataflows OData connector
1517

1618
Common Data Service [Web API](/powerapps/developer/common-data-service/webapi/overview) works with any technology that supports OData and OAuth. There are many options available to move data in and out of Common Data Service. OData connector is one of the dataflows, which is designed to support migration and synchronization of large datasets in Common Data Service.
@@ -19,17 +21,17 @@ In this article, we walk you through how to migrate data between Common Data Ser
1921

2022
## Prerequisites
2123

22-
- System Administrator or System Customizer security role permission on both source and the target environments.
24+
- System Administrator or System Customizer security role permission on both the source and target environments.
2325

2426
- Power Apps, Power Automate, or Common Data Service license (per app or per user).
2527

2628
- Two Common Data Service [environments with database](/power-platform/admin/create-environment#create-an-environment-with-a-database).
2729

2830
## Scenarios
2931

30-
- A one-time cross-environment or cross-tenant migration is needed (for example, geo-migration)
32+
- A one-time cross-environment or cross-tenant migration is needed (for example, geo-migration).
3133

32-
- Developer needs to update an app that is being used in production. Test data is needed in their development environment to easily build out changes.
34+
- A developer needs to update an app that is being used in production. Test data is needed in their development environment to easily build out changes.
3335

3436
## Step 1: Plan out the dataflow
3537

@@ -43,82 +45,83 @@ In this article, we walk you through how to migrate data between Common Data Ser
4345

4446
1. When importing relationships, multiple dataflows are required.
4547

46-
One (parent/independent) to many (children/dependent) entities require separate dataflows. Configure the parent dataflow to run before any child entities, since the data in the parent needs to be loaded first to correctly map to the fields in the corresponding child entities.
48+
Entities that are one (parent/independent) to many (children/dependent) require separate dataflows. Configure the parent dataflow to run before any child entities, since the data in the parent needs to be loaded first to correctly map to the fields in the corresponding child entities.
4749

4850
## Step 2: Get the OData endpoint
4951

50-
Common Data Service provides an OData endpoint that does not require any additional configuration to authenticate with the dataflows connector. It is relatively easy process to connect to the source environment.
52+
Common Data Service provides an OData endpoint that does not require additional configuration to authenticate with the dataflows' connector. It is relatively easy to connect to the source environment.
53+
54+
This article will walk through how to set up a new dataflow with the OData connector. For information on connecting to all data sources supported by dataflows, see [Create and use dataflows](https://docs.microsoft.com/powerapps/maker/common-data-service/create-and-use-dataflows).
5155

52-
This article will walk through how to set up a new dataflow with the OData connector. See, [Creating dataflows](https://docs.microsoft.com/powerapps/maker/common-data-service/create-and-use-dataflows) article for connecting to all data sources supported by dataflows.
5356

54-
From the **source** environment, get the [OData endpoint](https://docs.microsoft.com/powerapps/developer/common-data-service/view-download-developer-resources) (aka Service Root URL) for that environment:
57+
From the **source** environment, get the [OData endpoint](https://docs.microsoft.com/powerapps/developer/common-data-service/view-download-developer-resources) for that environment:
5558

56-
1. Sign into [Power Apps](https://make.powerapps.com).
59+
1. Sign in to [Power Apps](https://make.powerapps.com).
5760

58-
1. Select the required source environment from the top-right corner.
61+
1. Select the required source environment from the upper-right corner.
5962

60-
1. Select the Settings (gear) icon in the top-right corner, and select **Advanced Settings**.
63+
1. Select the **Settings** (gear) icon in the upper-right corner, and then select **Advanced Settings**.
6164

62-
1. On the **Settings** page, select the drop-down arrow next to ****Settings**, and select **Customizations**.
65+
1. On the **Settings** page, select the drop-down arrow next to **Settings**, and select **Customizations**.
6366

6467
1. On the **Customizations** page, select **Developer Resources**.
6568

66-
1. Copy the **Service Root URL** to notepad.
69+
1. Copy the **Service Root URL** to Notepad.
6770

6871
> [!div class="mx-imgBorder"]
69-
> ![Copy the service root URL in the developer resources](./media/get-odata-endpoint-url.png)
72+
> ![Copy the service root URL in the developer resources](./media/get-odata-endpoint-url.png "Copy the service root URL in the developer resources")
7073
7174
## Step 3: Create a new OData dataflow
7275

7376
In the **target** environment, create a new dataflow with the OData connector.
7477

75-
1. Sign into [Power Apps](https://make.powerapps.com).
78+
1. Sign in to [Power Apps](https://make.powerapps.com).
7679

77-
1. Select the required target environment from the top-right corner.
80+
1. Select the required target environment from the upper-right corner.
7881

79-
1. In the left navigation pane, expand the **Data** menu, and select **Dataflows**.
82+
1. In the left navigation pane, expand the **Data** menu, and then select **Dataflows**.
8083

8184
1. Select **New dataflow** to create a new dataflow. Provide a meaningful name for the dataflow. Select **Create**.
8285
> [!div class="mx-imgBorder"]
83-
> ![Prompt for a new dataflow](./media/enter-name-for-new-dataflow.png)
86+
> ![Prompt for a new dataflow](./media/enter-name-for-new-dataflow.png "Prompt for a new dataflow")
8487
8588
1. Select the **OData** connector.
8689

8790
> [!div class="mx-imgBorder"]
88-
> ![Select OData source](media/select-odata-data-source.png)
91+
> ![Select OData source](media/select-odata-data-source.png "Select OData source")
8992
90-
1. In the Connection Settings dialog box, type the field values:
93+
1. In the **Connection settings** dialog box, type the field values:
9194

9295
> [!div class="mx-imgBorder"]
93-
> ![Confirm the field values are correct](./media/enter-odata-connector-parameters.png)
96+
> ![Confirm the field values are correct](./media/enter-odata-connector-parameters.png "Confirm the field values are correct")
9497
9598

9699
| Field | Description |
97100
|--|--|
98-
| URL | Provide the Service Root URL in the URL field of the connection settings |
101+
| URL | Provide the Service Root URL in the URL field of the connection settings. |
99102
| Connection | Create new connection. This will be automatically chosen if you have not made an OData connection in dataflows before. |
100-
| Connection name | Optionally, rename the connection name, but a value is automatically populated | |
101-
| On-premise data gateway | None. An on-premises data gateway is not needed for connections to this cloud service. |
102-
| Authentication kind | Organizational account. Select the Sign in button to open the login dialog that authenticates the account associated with the connection. |
103+
| Connection name | Optionally, rename the connection name, but a value is automatically populated. | |
104+
| On-premises data gateway | None. An on-premises data gateway is not needed for connections to this cloud service. |
105+
| Authentication kind | Organizational account. Select **Sign in** to open the sign-in dialog that authenticates the account associated with the connection. |
103106

104107
> [!IMPORTANT]
105-
> Disable pop-up and cookies blocker in your browser in order to configure the Azure AD authentication. This is orthogonal to the fact that you are using the Common Data Service OData endpoint or any other OAuth based authentication data source.
108+
> Disable pop-up and cookies blockers in your browser in order to configure the Azure AD authentication. This is similar to the fact that you are using the Common Data Service OData endpoint or any other OAuth-based authentication data source.
106109
107-
1. Select **Next** in the bottom right.
110+
1. Select **Next** in the lower right.
108111

109-
## Step 4: Select and transform data with the Power Query
112+
## Step 4: Select and transform data with Power Query
110113

111114
Use Power Query to select the tables and also transform data as per your requirement.
112115

113116
First, select the entities that need to be transferred. You can browse all entities in the source environment and preview some of the data in each entity.
114117

115118
> [!div class="mx-imgBorder"]
116-
> ![Power query navigator](./media/edit-queries-for-selected-entities.png)
119+
> ![Power query navigator](./media/edit-queries-for-selected-entities.png "Power query navigator")
117120
118-
1. Select one or multiple entities as needed, then select **Transform data**.
121+
1. Select one or multiple entities as needed, and then select **Transform data**.
119122

120123
> [!NOTE]
121-
> When importing relationships, remember that the parent entity dataflow need to be imported before the child ones. The data for the child dataflow will require data to be in the parent entity for it to correctly map, otherwise it might throw an error.
124+
> When importing relationships, remember that the parent entity dataflow needs to be imported before the child ones. The data for the child dataflow will require data to be in the parent entity for it to correctly map, otherwise it might throw an error.
122125
123126
1. In the **Power Query - Edit queries** window, you can transform the query before import.
124127

@@ -129,67 +132,67 @@ First, select the entities that need to be transferred. You can browse all entit
129132
> [!TIP]
130133
> You can go back to choose more tables in the **Get data** ribbon option for the same OData connector.
131134
132-
1. Select **Next** in the bottom right.
135+
1. Select **Next** in the lower right.
133136

134137
## Step 5: Configure target environment settings
135138

136139
This section describes how to define the target environment settings.
137140

138141
### Step 5.1: Map entities
139142

140-
For each entity chosen, select the behavior for importing that entity in these settings and select **Next**.
143+
For each entity chosen, select the behavior for importing that entity in these settings and then select **Next**.
141144

142145
> [!div class="mx-imgBorder"]
143-
> ![Map entities](./media/map-entities-to-target.png)
146+
> ![Map entities](./media/map-entities-to-target.png "Map entities")
144147
145-
- **Load to existing Entity (recommended)**
148+
- **Load to existing entity (recommended)**
146149

147150
- The dataflow syncs data from the source environment's entity to the target environment, and the same entity schema is already defined in the target environment.
148151

149-
- Ideally, use the same solution in both target and source environments to make data transfer seamless. Another advantage to having a pre-defined entity is more control over which solution the entity is defined in and the prefix.
152+
- Ideally, use the same solution in both target and source environments to make data transfer seamless. Another advantage to having a predefined entity is more control over which solution the entity is defined in and the prefix.
150153

151-
- Choose the **Delete rows that no longer exist in the query output**. This ensures that the relationships will map correctly because it maintains the values for the lookups.
154+
- Choose **Delete rows that no longer exist in the query output**. This ensures that the relationships will map correctly because it maintains the values for the lookups.
152155

153-
- If the schema is identical in both source and target tables, you can select the **Auto map** button to quickly map the fields.
154-
155-
- Requires a key configuration in the target environment (as the unique identifier fields is not available to modify).
156+
- If the schema is identical in both source and target tables, you can select **Auto map** to quickly map the fields.
157+
158+
- Requires a key configuration in the target environment (as the unique identifier fields are not available to modify).
156159

157160
- **Load to new entity (not recommended)**
158161

159-
- Ideally there should be an entity pre-defined in the target environment from the same solution import as the source environment. However, there are cases where this might not be feasible, so there is this option to choose if there is no existing entity to load to.
162+
- Ideally there should be an entity predefined in the target environment from the same solution import as the source environment. However, there are cases where this might not be feasible, so this is an option if there is no existing entity to load to.
160163

161164
- It creates a new custom entity in the target environment's default solution.
162165

163166
- There is an option to **Do not load**, but do not include entities in the dataflow that are not being loaded. You can select **Back** from this menu to return to the Power Query menu and remove the entities that are not needed.
164167

165168
### Step 5.2: Refresh settings
166169

167-
Select **Refresh manually** since this is a one-time migration ad select **Create**.
170+
Select **Refresh manually** since this is a one-time migration and then select **Create**.
168171

169172
## Step 6: Run the dataflow
170173

171-
The initial dataflow load initiates when you select the **Create** button.
174+
The initial dataflow load initiates when you select **Create**.
172175

173176
> [!div class="mx-imgBorder"]
174-
> ![Refresh manually](./media/initiate-dataflow-process.png)
177+
> ![Refresh manually](./media/initiate-dataflow-process.png "Refresh manually")
175178
176179
You can manually initiate a dataflow by selecting **(...)** in the dataflows list. Make sure to run dependent dataflows after the parent flows have completed.
177180

178181
> [!div class="mx-imgBorder"]
179-
> ![Refresh manually](./media/refresh-dataflow-manually.png)
182+
> ![Refresh manually](./media/refresh-dataflow-manually.png "Refresh manually")
180183
181184
## Tips
182185

183186
- Try out one entity first to walk through the steps, then build out all the dataflows.
184187

185188
- If there are more entities that contain larger amounts of data, consider configuring multiple separate dataflows for individual entities.
186189

187-
- One to many relationships will require separate dataflows for each entity. Configure and run the parent (aka one, or independently) entity dataflow before the child (aka many, or dependent) entity.
190+
- One-to-many relationships will require separate dataflows for each entity. Configure and run the parent (aka one, or independently) entity dataflow before the child entity.
188191

189192
- If there are errors with the dataflow refresh, you can view the refresh history in the **(...)** menu in the dataflows list and download each refresh log.
190193

191194
## Limitations
192195

193-
- Many to many relationship data imports are not supported.
196+
- Many-to-many relationship data imports are not supported.
194197

195198
- Parent dataflows must be manually configured to run before child dataflows.

0 commit comments

Comments
 (0)