Skip to content

Commit 679a42b

Browse files
committed
Merge branch 'master' into scm-customer-portal
2 parents 73371fa + 0d36097 commit 679a42b

File tree

507 files changed

+7164
-4330
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

507 files changed

+7164
-4330
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,7 @@ _repo.*/
99
settings.json
1010

1111
# Folder config file
12-
[Dd]esktop.ini
12+
[Dd]esktop.ini
13+
/.vs/slnx.sqlite
14+
/.vs/powerapps-docs-pr/v16/.suo
15+
/.vs/VSWorkspaceState.json

.openpublishing.redirection.json

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,30 @@
11
{
22
"redirections": [
3+
{
4+
"source_path": "powerapps-docs/maker/model-driven-apps/customize-power-bi-content-packs.md",
5+
"redirect_url": "../common-data-service/use-powerbi-with-cds",
6+
"redirect_document_id": "false"
7+
},
8+
{
9+
"source_path": "powerapps-docs/maker/common-data-service/how-managed-solutions-merged.md",
10+
"redirect_url": "https://docs.microsoft.com/power-platform/alm/how-managed-solutions-merged",
11+
"redirect_document_id": "false"
12+
},
13+
{
14+
"source_path": "powerapps-docs/maker/common-data-service/use-solutions-for-your-customizations.md",
15+
"redirect_url": "https://docs.microsoft.com/power-platform/alm/use-solutions-for-your-customizations",
16+
"redirect_document_id": "false"
17+
},
18+
{
19+
"source_path": "powerapps-docs/user/run-app-client.md",
20+
"redirect_url": "run-canvas-and-model-apps-on-mobile",
21+
"redirect_document_id": "false"
22+
},
23+
{
24+
"source_path": "powerapps-docs/user/run-app-client-model-driven.md",
25+
"redirect_url": "https://docs.microsoft.com/dynamics365/mobile-app/dynamics-365-phones-tablets-users-guide",
26+
"redirect_document_id": "false"
27+
},
328
{
429
"source_path": "powerapps-docs/administrator/app-analytics.md",
530
"redirect_url": "/power-platform/admin/analytics-common-data-service",

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ This is the GitHub repository for the technical product documentation for **Powe
44

55
## How to contribute
66

7-
Thanks for your interest in contributing to [Docs.microsoft.com](https://docs.microsoft.com/), home of technical content for Microsoft products and services.
7+
Thanks for your interest in contributing to [docs.microsoft.com](https://docs.microsoft.com/), home of technical content for Microsoft products and services.
88

99
To learn how to make contributions to the content in this repository, start with our [Docs contributor guide](https://docs.microsoft.com/contribute). If you are a Microsoft employee, please visit the [internal version](https://aka.ms/docsguidescontribute) of this guide.
1010

1111
## Code of conduct
1212

13-
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [[email protected]](mailto:[email protected]) with any additional questions or comments.
13+
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [[email protected]](mailto:[email protected]) with any additional questions or comments.

powerapps-docs/developer/common-data-service/TOC.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
href: use-fetchxml-left-outer-join-query-records-not-in.md
2828
- name: Page large result sets with FetchXML
2929
href: org-service/page-large-result-sets-with-fetchxml.md
30+
- name: "Use SQL to query data (Preview)"
31+
href: cds-sql-query.md
3032
- name: Saved Queries
3133
href: saved-queries.md
3234
- name: Query Hierarchical data
@@ -135,6 +137,8 @@
135137
href: data-import-entities.md
136138
- name: Data Export Service
137139
href: data-export-service.md
140+
- name: Migrate data between environments using OData dataflows
141+
href: cds-odata-dataflows-migration.md
138142
- name: Synchronize data
139143
href: data-synchronization.md
140144
items:
@@ -303,6 +307,8 @@
303307
items:
304308
- name: Dependency tracking for solution components
305309
href: dependency-tracking-solution-components.md
310+
- name: Removing dependencies
311+
href: removing-dependencies.md
306312
- name: Maintain managed solutions
307313
href: maintain-managed-solutions.md
308314
- name: Organize your solutions
@@ -402,7 +408,9 @@
402408
- name: Office365 authentication with WS-Trust
403409
href: authenticate-office365-deprecation.md
404410
- name: "Tutorial: Register an app with Azure Active Directory"
405-
href: walkthrough-register-app-azure-active-directory.md
411+
href: walkthrough-register-app-azure-active-directory.md
412+
- name: "Tutorial: Create an ASP.NET Core Blazor WebAssembly App"
413+
href: walkthrough-blazor-webassembly-single-tenant.md
406414
- name: Build web applications using Server-to-Server (S2S) authentication
407415
href: build-web-applications-server-server-s2s-authentication.md
408416
items:

powerapps-docs/developer/common-data-service/authenticate-dot-net-framework.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: "Authentication with .NET Framework applications (Common Data Service) | Microsoft Docs" # Intent and product brand in a unique string of 43-59 chars including spaces
33
description: "How .NET Framework applications can authenticate with Common Data Service" # 115-145 characters including spaces. This abstract displays in the search result.
44
ms.custom: ""
5-
ms.date: 01/25/2019
5+
ms.date: 05/11/2020
66
ms.reviewer: "pehecke"
77
ms.service: powerapps
88
ms.topic: "article"
@@ -48,6 +48,7 @@ More information: [Build Windows client applications using the XRM tools](xrm-to
4848
Use .NET Framework version 4.6.2 or higher when you create client applications. Only applications using Transport Level Security (TLS) 1.2 or better security can connect. TLS 1.2 is not the default protocol used by .NET Framework 4.5.2, but it is in .NET Framework 4.6.2.
4949

5050
> [!NOTE]
51+
> The SDK APIs available in [Microsoft.CrmSdk.XrmTooling.CoreAssembly](https://www.nuget.org/packages/Microsoft.CrmSdk.XrmTooling.CoreAssembly/) and other "CrmSdk" NuGet packages do not support .NET Core code development. Revised packages (containing refactored APIs) that do support .NET Core development can be found here: [Microsoft.Powerplatform.Cds.Client](https://www.nuget.org/packages/Microsoft.Powerplatform.Cds.Client/) and [Microsoft.Dynamics.Sdk.Messages](https://www.nuget.org/packages/Microsoft.Dynamics.Sdk.Messages/).<p/>
5152
> **Known Issue with Visual Studio 2015**
5253
>
5354
> When you are running your project/solution in VS 2015 in debug mode, you may not be able to connect. This happens regardless of whether you are using a Target Framework of 4.6.2 or higher. This can occur because the Visual Studio hosting process is compiled against .NET 4.5 which means by default it does not support TLS 1.2. You can disable the Visual Studio hosting process as a work around.

powerapps-docs/developer/common-data-service/best-practices/work-with-metadata/retrieve-published-metadata.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public RetrieveAllEntitiesAttributesResponse GetAllEntitiesImplicit(IOrganizatio
6060
}
6161
```
6262

63-
### Explictly controlling the behavior
63+
### Explicitly controlling the behavior
6464

6565
Explicitly setting the `RetrieveAsIfPublished` property to retrieve only published customizations
6666

powerapps-docs/developer/common-data-service/build-tools-overview.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ Use Power Apps build tools to automate common build and deployment tasks related
2828
> - Power Apps build tools is a preview feature.
2929
> - [!INCLUDE [cc-preview-features-definition](../../includes/cc-preview-features-definition.md)]
3030
31+
For more information about using the build tools with application lifecycle management see [Power Apps build tools for Azure DevOps](/power-platform/alm/devops-build-tools).
3132

3233
## What are Power Apps build tools?
3334

powerapps-docs/developer/common-data-service/build-tools-tasks.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ The Power Apps checker task runs a static analysis check on your solution(s) aga
3232

3333
| **Parameters** | **Description** |
3434
| --- | --- |
35-
| Power Apps checker service | Select the service endpoint for Power Apps checker. The service endpoint is defined under **Service Connections** in **Project Settings**. **NOTE:** The service connection type that must be used for this specific task only is ‘Power Apps Checker,’ which is a service principals connection. More information on how to configure Service Principals before you can use the task is available [here](https://aka.ms/buildtoolsconnection). |
35+
| Power Apps checker service | Select the service endpoint for Power Apps checker. The service endpoint is defined under **Service Connections** in **Project Settings**. **NOTE:** The service connection type that must be used for this specific task only is ‘Power Apps Checker,’ which is a service principals connection. More information on how to configure Service Principals before you can use the task is available [here](#configure-service-connection-for-power-apps-checker). |
3636
| Location of file to analyze | Specify whether to reference a local file or a reference file from a Sas url.
3737
| Local files to analyze/Sas uri for file to analyze | Specify the path and file name of the zip files to analyze. Wildcards can be used. For example, **\*.zip for all zip files in all sub folders. You can choose to specify the files directly or reference a File from a Sas uri. |
3838
| Rule set | Specify which ruleset to apply. The following two rulesets are available: **Solution Checker:** This is the same ruleset that is run from the [Maker Portal](https://make.powerapps.com/). **AppSource:** This is the extended ruleset that is used to certify an application before it can be published to [AppSource](https://appsource.microsoft.com/). |
Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
---
2+
title: Migrate data between Common Data Service environments using the dataflows OData connector
3+
author: denisem-msft
4+
ms.reviewer: "nabuthuk"
5+
description: Migrate data between Common Data Service environments using dataflows OData connector.
6+
ms.date: 05/05/2020
7+
ms.service: powerapps
8+
ms.topic: "article"
9+
ms.author: demora
10+
search.app:
11+
- PowerApps
12+
---
13+
14+
15+
16+
# Migrate data between Common Data Service environments using the dataflows OData connector
17+
18+
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+
20+
In this article, we walk you through how to migrate data between Common Data Service environments using the dataflows OData connector.
21+
22+
## Prerequisites
23+
24+
- System Administrator or System Customizer security role permission on both the source and target environments.
25+
26+
- Power Apps, Power Automate, or Common Data Service license (per app or per user).
27+
28+
- Two Common Data Service [environments with database](/power-platform/admin/create-environment#create-an-environment-with-a-database).
29+
30+
## Scenarios
31+
32+
- A one-time cross-environment or cross-tenant migration is needed (for example, geo-migration).
33+
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.
35+
36+
## Step 1: Plan out the dataflow
37+
38+
1. Identify the source and target environments.
39+
40+
- The **source environment** is where the data is migrated from.
41+
42+
- The **target environment** is where the data is migrated to.
43+
44+
1. Ensure that the entities are already defined in the target environment. Ideally both environments should have the same entities defined with the same solution.
45+
46+
1. When importing relationships, multiple dataflows are required.
47+
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.
49+
50+
## Step 2: Get the OData endpoint
51+
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).
55+
56+
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:
58+
59+
1. Sign in to [Power Apps](https://make.powerapps.com).
60+
61+
1. Select the required source environment from the upper-right corner.
62+
63+
1. Select the **Settings** (gear) icon in the upper-right corner, and then select **Advanced Settings**.
64+
65+
1. On the **Settings** page, select the drop-down arrow next to **Settings**, and select **Customizations**.
66+
67+
1. On the **Customizations** page, select **Developer Resources**.
68+
69+
1. Copy the **Service Root URL** to Notepad.
70+
71+
> [!div class="mx-imgBorder"]
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")
73+
74+
## Step 3: Create a new OData dataflow
75+
76+
In the **target** environment, create a new dataflow with the OData connector.
77+
78+
1. Sign in to [Power Apps](https://make.powerapps.com).
79+
80+
1. Select the required target environment from the upper-right corner.
81+
82+
1. In the left navigation pane, expand the **Data** menu, and then select **Dataflows**.
83+
84+
1. Select **New dataflow** to create a new dataflow. Provide a meaningful name for the dataflow. Select **Create**.
85+
> [!div class="mx-imgBorder"]
86+
> ![Prompt for a new dataflow](./media/enter-name-for-new-dataflow.png "Prompt for a new dataflow")
87+
88+
1. Select the **OData** connector.
89+
90+
> [!div class="mx-imgBorder"]
91+
> ![Select OData source](media/select-odata-data-source.png "Select OData source")
92+
93+
1. In the **Connection settings** dialog box, type the field values:
94+
95+
> [!div class="mx-imgBorder"]
96+
> ![Confirm the field values are correct](./media/enter-odata-connector-parameters.png "Confirm the field values are correct")
97+
98+
99+
| Field | Description |
100+
|--|--|
101+
| URL | Provide the Service Root URL in the URL field of the connection settings. |
102+
| Connection | Create new connection. This will be automatically chosen if you have not made an OData connection in dataflows before. |
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. |
106+
107+
> [!IMPORTANT]
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.
109+
110+
1. Select **Next** in the lower right.
111+
112+
## Step 4: Select and transform data with Power Query
113+
114+
Use Power Query to select the tables and also transform data as per your requirement.
115+
116+
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.
117+
118+
> [!div class="mx-imgBorder"]
119+
> ![Power query navigator](./media/edit-queries-for-selected-entities.png "Power query navigator")
120+
121+
1. Select one or multiple entities as needed, and then select **Transform data**.
122+
123+
> [!NOTE]
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.
125+
126+
1. In the **Power Query - Edit queries** window, you can transform the query before import.
127+
128+
- If you are only migrating data, there should not be a need to modify anything here.
129+
130+
- Reducing the number of unnecessary columns will improve the dataflow performance for larger data sets.
131+
132+
> [!TIP]
133+
> You can go back to choose more tables in the **Get data** ribbon option for the same OData connector.
134+
135+
1. Select **Next** in the lower right.
136+
137+
## Step 5: Configure target environment settings
138+
139+
This section describes how to define the target environment settings.
140+
141+
### Step 5.1: Map entities
142+
143+
For each entity chosen, select the behavior for importing that entity in these settings and then select **Next**.
144+
145+
> [!div class="mx-imgBorder"]
146+
> ![Map entities](./media/map-entities-to-target.png "Map entities")
147+
148+
- **Load to existing entity (recommended)**
149+
150+
- 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.
151+
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.
153+
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.
155+
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).
159+
160+
- **Load to new entity (not recommended)**
161+
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.
163+
164+
- It creates a new custom entity in the target environment's default solution.
165+
166+
- 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.
167+
168+
### Step 5.2: Refresh settings
169+
170+
Select **Refresh manually** since this is a one-time migration and then select **Create**.
171+
172+
## Step 6: Run the dataflow
173+
174+
The initial dataflow load initiates when you select **Create**.
175+
176+
> [!div class="mx-imgBorder"]
177+
> ![Refresh manually](./media/initiate-dataflow-process.png "Refresh manually")
178+
179+
You can manually initiate a dataflow by selecting **(...)** in the dataflows list. Make sure to run dependent dataflows after the parent flows have completed.
180+
181+
> [!div class="mx-imgBorder"]
182+
> ![Refresh manually](./media/refresh-dataflow-manually.png "Refresh manually")
183+
184+
## Tips
185+
186+
- Try out one entity first to walk through the steps, then build out all the dataflows.
187+
188+
- If there are more entities that contain larger amounts of data, consider configuring multiple separate dataflows for individual entities.
189+
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.
191+
192+
- 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.
193+
194+
## Limitations
195+
196+
- Many-to-many relationship data imports are not supported.
197+
198+
- Parent dataflows must be manually configured to run before child dataflows.

0 commit comments

Comments
 (0)