Skip to content

Commit 155cf52

Browse files
committed
Merge remote-tracking branch 'origin/main' into dsierman-patch-3
2 parents e92435e + 558992e commit 155cf52

File tree

50 files changed

+467
-415
lines changed

Some content is hidden

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

50 files changed

+467
-415
lines changed

.openpublishing.redirection.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8724,6 +8724,11 @@
87248724
"source_path": "powerapps-docs/maker/portals/create-common-problems.md",
87258725
"redirect_url": "/power-pages/getting-started/create-manage",
87268726
"redirect_document_id": false
8727+
},
8728+
{
8729+
"source_path": "powerapps-docs/maker/canvas-apps/working-with-dynamic-schema.md",
8730+
"redirect_url": "/power-apps/maker/canvas-apps/untyped-and-dynamic-objects#converting-formulas-that-return-untyped-objects-that-previously-returned-boolean",
8731+
"redirect_document_id": false
87278732
}
87288733
]
87298734
}

powerapps-docs/developer/data-platform/authenticate-oauth.md

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: "Use OAuth authentication with Microsoft Dataverse (Dataverse) | Microsoft Docs" # Intent and product brand in a unique string of 43-59 chars including spaces
33
description: "Learn how to authenticate applications with Microsoft Dataverse using OAuth." # 115-145 characters including spaces. This abstract displays in the search result.
44
ms.custom: has-adal-ref
5-
ms.date: 09/12/2022
5+
ms.date: 10/16/2023
66
ms.reviewer: pehecke
77
ms.topic: article
88
author: ritesp # GitHub ID
@@ -16,11 +16,11 @@ contributors:
1616

1717
# Use OAuth authentication with Microsoft Dataverse
1818

19-
[OAuth 2.0](https://oauth.net/2/) is the industry-standard protocol for authorization. After application users provide credentials to authenticate, OAuth determines whether they are authorized to access the resources.
19+
[OAuth 2.0](https://oauth.net/2/) is the industry-standard protocol for authorization. After application users provide credentials to authenticate, OAuth determines whether they're authorized to access the resources.
2020

2121
Client applications must support the use of OAuth to access data using the Web API. OAuth enables two-factor authentication (2FA) or certificate-based authentication for server-to-server application scenarios.
2222

23-
OAuth requires an identity provider for authentication. For Dataverse, the identity provider is Azure Active Directory (AAD). To authenticate with AAD using a Microsoft work or school account, use the [Microsoft Authentication Library](/azure/active-directory/develop/msal-overview#languages-and-frameworks) (MSAL).
23+
OAuth requires an identity provider for authentication. For Dataverse, the identity provider is Azure Active Directory (AD). To authenticate with AD using a Microsoft work or school account, use the [Microsoft Authentication Library](/azure/active-directory/develop/msal-overview#languages-and-frameworks) (MSAL).
2424

2525
> [!NOTE]
2626
> This topic will introduce common concepts related to connecting to Dataverse using OAuth with authentication libraries. This content will focus on how a developer can connect to Dataverse but not on the inner workings of OAuth or the libraries. For complete information related to authentication see the Azure Active Directory documentation. [What is authentication?](/azure/active-directory/develop/authentication-scenarios) is a good place to start.
@@ -29,38 +29,38 @@ OAuth requires an identity provider for authentication. For Dataverse, the ident
2929
3030
## App Registration
3131

32-
When you connect using OAuth you must first register an application in your Azure AD tenant. How you should register your app depends on the type of app you want to make.
32+
When you connect using OAuth, you must first register an application in your Azure AD tenant. How you should register your app depends on the type of app you want to make.
3333

34-
In all cases, start with basic steps to register an app described in the AAD topic: [Quickstart: Register an application with the Microsoft identity platform](/azure/active-directory/develop/quickstart-register-app). For Dataverse specific instructions see [Walkthrough: Register an app with Azure Active Directory > Create an application registration](walkthrough-register-app-azure-active-directory.md#create-an-application-registration).
34+
In all cases, start with basic steps to register an app described in the AD article: [Quickstart: Register an application with the Microsoft identity platform](/azure/active-directory/develop/quickstart-register-app). For Dataverse specific instructions see [Walkthrough: Register an app with Azure Active Directory > Create an application registration](walkthrough-register-app-azure-active-directory.md#create-an-application-registration).
3535

36-
The decisions you will need to make in this step mostly depend on the Application Type choice (see below).
36+
The decisions you need to make in this step mostly depend on the Application Type choice (see below).
3737

3838
### Types of app registration
3939

40-
When you register an app with Azure AD one of the decisions you must make is the application type. There are two types of applications you can register:
40+
When you register an app with Azure AD one of the decisions, you must make is the application type. There are two types of applications you can register:
4141

4242
| Application type | Description|
4343
|------------------|------------|
4444
| Web app /API | **Web client**<br />A type of [client application](/azure/active-directory/develop/developer-glossary#client-application) that executes all code on a web server.<br /><br />**User-agent-based client**<br />A type of [client application](/azure/active-directory/develop/developer-glossary#client-application) that downloads code from a web server and executes within a user-agent (for instance, a web browser), such as a Single Page Application (SPA). |
4545
|Native|A type of [client application](/azure/active-directory/develop/developer-glossary#client-application) that is installed natively on a device. |
4646

47-
When you select **Web app /API** you must provide a **Sign-On URL** which is the URL where Azure AD will send the authentication response, including a token if authentication was successful. While you develop an app, this is usually set to `https://localhost/appname:[port]` so you can develop and debug your app locally. When you publish your app, you need to change this value to the published URL of the app.
47+
When you select **Web app /API** you must provide a **Sign-On URL** which is the URL where Azure AD sends the authentication response, including a token if authentication was successful. While you develop an app, this URL is usually set to `https://localhost/appname:[port]` so you can develop and debug your app locally. When you publish your app, you need to change this value to the published URL of the app.
4848

49-
When you select **Native**, you must provide a Redirect URI. This is a unique identifier to which Azure AD will redirect the user-agent in an OAuth 2.0 request. This is typically a value formatted like so: `app://<guid>`.
49+
When you select **Native**, you must provide a Redirect URI. This URL is a unique identifier to which Azure AD will redirect the user-agent in an OAuth 2.0 request. This URL is typically a value formatted like so: `app://<guid>`.
5050

5151
### Giving access to Dataverse
5252

53-
If your app will be a client which allows the authenticated user to perform operations, you must configure the application to have the Access Dynamics 365 as organization users delegated permission.
53+
If your app is a client that allows the authenticated user to perform operations, you must configure the application to have the Access Dynamics 365 as organization users delegated permission.
5454

55-
For specific steps to do this, see [Walkthrough: Register an app with Azure Active Directory > Apply Permissions](walkthrough-register-app-azure-active-directory.md).
55+
For specific steps to set permissions, see [Walkthrough: Register an app with Azure Active Directory > Apply Permissions](walkthrough-register-app-azure-active-directory.md).
5656

5757
<!-- TODO Verify this -->
5858

59-
If your app will use Server-to-Server (S2S) authentication, this step is not required. That configuration requires a specific system user and the operations will be performed by that user account rather than any user that must be authenticated.
59+
If your app uses Server-to-Server (S2S) authentication, this step isn't required. That configuration requires a specific system user and the operations are performed by that user account rather than any user that must be authenticated.
6060

6161
### Use Client Secrets & Certificates
6262

63-
For server to server scenarios there will not be an interactive user account to authenticate. In these cases, you need to provide some means to confirm that the application is trusted. This is done using client secrets or certificates.
63+
For server-to-server scenarios there won't be an interactive user account to authenticate. In these cases, you need to provide some means to confirm that the application is trusted. This is done using client secrets or certificates.
6464

6565
For apps that are registered with the **Web app /API** application type, you can configure secrets. These are set using the **Keys** area under **API Access** in the **Settings** for the app registration.
6666

@@ -85,12 +85,14 @@ Dataverse SDK for .NET includes client classes [CrmServiceClient](xref:Microsoft
8585

8686
## Use the AccessToken with your requests
8787

88-
The point of using the authentication libraries is to get an access token that you can include with your requests.
89-
This only requires a few lines of code, and just a few more lines to configure an [HttpClient](xref:System.Net.Http.HttpClient) to execute a request.
88+
The point of using the authentication libraries is to get an access token that you can include with your requests. Getting the token only requires a few lines of code, and just a few more lines to configure an [HttpClient](xref:System.Net.Http.HttpClient) to execute a request.
89+
90+
> [!IMPORTANT]
91+
> As demonstrated in the sample code of this article, use a "\<environment-url>/user_impersonation" scope for a public client. For a confidential client, use a scope of "\<environment-url>/.default".
9092
9193
### Simple example
9294

93-
The following is the minimum amount of code needed to execute a single Web API request, but it is not the recommended approach. Note that this code uses the MSAL library and is taken from the [QuickStart](https://github.com/microsoft/PowerApps-Samples/tree/master/dataverse/webapi/C%23/QuickStart) sample.
95+
The following is the minimum amount of code needed to execute a single Web API request, but it isn't the recommended approach. Note that this code uses the MSAL library and is taken from the [QuickStart](https://github.com/microsoft/PowerApps-Samples/tree/master/dataverse/webapi/C%23/QuickStart) sample.
9496

9597
```csharp
9698
string resource = "https://contoso.api.crm.dynamics.com";
@@ -102,7 +104,7 @@ var authBuilder = PublicClientApplicationBuilder.Create(clientId)
102104
.WithAuthority(AadAuthorityAudience.AzureAdMultipleOrgs)
103105
.WithRedirectUri(redirectUri)
104106
.Build();
105-
var scope = resource + "/.default";
107+
var scope = resource + "/user_impersonation";
106108
string[] scopes = { scope };
107109

108110
AuthenticationResult token =
@@ -148,7 +150,7 @@ class OAuthMessageHandler : DelegatingHandler
148150
.WithAuthority(AadAuthorityAudience.AzureAdMultipleOrgs)
149151
.WithRedirectUri(redirectUrl)
150152
.Build();
151-
var scope = serviceUrl + "//.default";
153+
var scope = serviceUrl + "/user_impersonation";
152154
string[] scopes = { scope };
153155
// First try to get an authentication token from the cache using a hint.
154156
AuthenticationResult authBuilderResult=null;

powerapps-docs/developer/data-platform/data-export-service.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ var authBuilder = PublicClientApplicationBuilder.Create(AppId)
117117
.WithAuthority(AadAuthorityAudience.AzureAdMultipleOrgs)
118118
.WithRedirectUri(redirectUri)
119119
.Build();
120-
var scope = resource + "/.default";
120+
var scope = resource + "/user_impersonation";
121121
string[] scopes = { scope };
122122

123123
// Use interactive username and password prompt

powerapps-docs/developer/data-platform/dependent-assembly-plugins.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Dependent Assembly plug-ins (preview)
33
description: Learn how to include more assemblies that your plug-in assembly can depend on.
4-
ms.date: 08/08/2023
4+
ms.date: 10/12/2023
55
ms.reviewer: jdaly
66
ms.topic: article
77
author: divkamath
@@ -44,7 +44,7 @@ If you have questions or issues with this feature, you can contact technical sup
4444
The following limitations apply to dependent assembly plug-ins.
4545

4646
- [Workflow extensions](workflow/workflow-extensions.md), also known as *workflow assemblies*, *workflow activities* or *custom workflow activities* aren't supported.
47-
- Plug-ins for virtual table data providers aren't supported.
47+
- Plug-ins for virtual table data providers aren't supported. Importing a solution into an environment will fail if the solution contains plug-ins (with dependent assemblies) that are registered on virtual entities.
4848
- On-premises environments aren't supported.
4949
- Unmanaged code isn't supported. You can't include references to unmanaged resources.
5050

powerapps-docs/developer/data-platform/email-activity-entities.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: "Email activity tables (Microsoft Dataverse) | Microsoft Docs" # Intent and product brand in a unique string of 43-59 chars including spaces
33
description: "The email activity in lets you track and manage email communications with customers." # 115-145 characters including spaces. This abstract displays in the search result.
4-
ms.date: 06/08/2023
4+
ms.date: 10/10/2023
55
ms.reviewer: pehecke
66
ms.topic: article
77
author: DanaMartens # GitHub ID
@@ -113,7 +113,7 @@ Email descriptions (body of the email) have up to this point been stored in the
113113

114114
### Transition period
115115

116-
The data migration from Dataverse relation store to Azure Blob storage for all customers is expected to start in May 2023. This data migration will take place as a background process. The initial data movement for existing customers is expected to last for about 6 to 12 weeks, and possibly even longer depending on the size of the data. After the initial data movement, any remaining migration is a continuous process. All email descriptions older than 12 months will be moved into Azure Blob storage automatically. Newer emails will not be moved until they become 12 months old.
116+
The data migration from Dataverse relation store to Azure Blob storage for all customers is expected to start in May 2023. This data migration will take place as a background process (job). The initial data movement for existing customers is expected to last for about 6 to 12 weeks, and possibly even longer depending on the size of the data. After the initial data movement, any remaining migration is a continuous process. All email descriptions older than 12 months will be moved into Azure Blob storage automatically. Newer emails will not be moved until they become 12 months old. The email description migration job runs periodically - about once every 30-60 days per tenant.
117117

118118
This data migration will be transparent to you with the exception that you will see a reduction in the size of the [ActivityPointer](reference/entities/activitypointer.md) table after the migration process is fully completed. In Power Platform admin center within the **Capacity** report, a new email line item will be available in **File usage**. The end result is an increase in the overall File storage consumption and reduction in the database storage consumed.
119119

powerapps-docs/developer/data-platform/register-plug-in.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ When you register a step, there are several registration options available to yo
9292
|**Message**|PRT auto-completes available message names in the system. More information: [Use messages with the SDK for .NET](org-service/use-messages.md)|
9393
|**Primary Entity**|PRT auto-completes valid tables that apply to the selected message. These messages have a `Target` parameter that accepts an <xref:Microsoft.Xrm.Sdk.Entity> or <xref:Microsoft.Xrm.Sdk.EntityReference> type. If valid tables apply, you should set this field value when you want to limit the number of times the plug-in is called. <br />If you leave it blank for core table messages like `Update`, `Delete`, `Retrieve`, and `RetrieveMultiple` or any message that can be applied with the message the plug-in will be invoked for all the tables that support this message.|
9494
|**Secondary Entity**|This field remains for backward compatibility for deprecated messages that accepted an array of <xref:Microsoft.Xrm.Sdk.EntityReference> as the `Target` parameter. This field is typically not used anymore.|
95-
|**Filtering Attributes**|With the `Update` or `OnExternalUpdated` message, when you set the **Primary Entity**, filtering columns limits the execution of the plug-in to cases where the selected columns are included in the update. Setting this field is a best practice for performance. |
95+
|**Filtering Attributes**|With the `Update` or `OnExternalUpdated` message, when you set the **Primary Entity**, filtering columns limits the execution of the plug-in to cases where the selected columns are included in the update. Setting this field is a best practice for performance. Don't include the primary key of the entity in the filtering attributes. The primary key is always included in update operations, so doing this will negate all other filtered attributes. |
9696
|**Event Handler**|This field value will be populated based on the name of the assembly and the plug-in class. |
9797
|**Step Name**|The name of the step. A value is pre-populated based on the configuration of the step, but this value can be overridden.|
9898
|**Run in User's Context**|Provides options for applying impersonation for the step. The default value is **Calling User**. If the calling user doesn't have privileges to perform operations in the step, you may need to set this field value to a user who has these privileges. More information: [Set user impersonation for a step](#set-user-impersonation-for-a-step) |

powerapps-docs/developer/data-platform/webapi/quick-start-console-app-csharp.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ Follow these next steps to add code for the main program.
100100
.WithAuthority(AadAuthorityAudience.AzureAdMultipleOrgs)
101101
.WithRedirectUri(redirectUri)
102102
.Build();
103-
var scope = resource + "/.default";
103+
var scope = resource + "/user_impersonation";
104104
string[] scopes = { scope };
105105

106106
AuthenticationResult token =

powerapps-docs/limits-and-config.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ This list identifies all services to which Power Apps communicates and their usa
103103
| localhost | http | Power Apps Mobile|
104104
| 127.0.0.1 | http <br><br>You may need to explicitly list the port (5040 and up) for localhost/127.0.0.1.| Power Apps Mobile|
105105
| ecs.office.com | https | Retrieve feature flags for Power Apps |
106+
| augloop.office.com<br>\*.augloop.office.com | ws | Power Apps Studio Copilot |
106107
| config.edge.skype.com | https | Retrieve feature flags for Power Apps (backup)|
107108
| api.powerplatform.com<br>\*.api.powerplatform.com | https | Required for Power Platform API connectivity used internally by Microsoft products, and Power Platform [programmability and extensibility](/power-platform/admin/programmability-extensibility-overview).|
108109
| *.sharepointonline.com| https | Retrieve assets for presenting the header that appears at the top of app playing experiences |

0 commit comments

Comments
 (0)