You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: powerapps-docs/developer/common-data-service/best-practices/business-logic/index.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,7 +27,7 @@ This list below contains all of the guidance and best practices regarding the pl
27
27
28
28
|Best Practice |Description |
29
29
|---------|---------|
30
-
|[Avoid usage of batch request types in plug-ins and workflow activities](avoid-batch-requests-plugin.md)|You shouldn't use ExecuteMultipleRequest or ExecuteTransactionRequest message request classes within the context of a plug-in or workflow activity.|
30
+
|[Avoid usage of batch request types in plug-ins and workflow activities](avoid-batch-requests-plugin.md)|You shouldn't use ExecuteMultipleRequest or ExecuteTransactionRequest message request classes within the context of a plug-in or workflow activity.|
31
31
|[Develop IPlugin implementations as stateless](develop-iplugin-implementations-stateless.md)|Members of classes that implement IPlugin are exposed to potential thread-safety issues which could lead to data inconsistency or performance problems. |
32
32
|[Do not duplicate plug-in step registration](do-not-duplicate-plugin-step-registration.md)|Duplicate plug-in step registration will cause the plug-in to fire multiple times on the same message/event. |
33
33
|[Do not use parallel execution within plug-ins and workflow activities](do-not-use-parallel-execution-in-plug-ins.md)|Multi or parallel threading within plug-ins or custom workflow activities is not supported.|
@@ -39,6 +39,7 @@ This list below contains all of the guidance and best practices regarding the pl
39
39
|[Set KeepAlive to false when interacting with external hosts in a plug-in](set-keepalive-false-interacting-external-hosts-plugin.md)|KeepAlive property set to true in the HTTP request header or not explicitly defined as false can cause increased execution times of plug-ins. |
40
40
|[Set Timeout when making external calls in a plug-in](set-timeout-for-external-calls-from-plug-ins.md)|Limit the time period that external calls will expect a response within plug-ins.|
41
41
|[Use InvalidPluginExecutionException in plug-ins and workflow activities](use-invalidpluginexecutionexception-plugin-workflow-activities.md)|Use InvalidPluginExecutionException when raising errors within the context of a plug-in or workflow activity. |
42
+
|[Verify certification dependencies for plug-ins making outbound calls](verify-certification-dependencies.md)|Ensure that any certificates that your code depends on for outbound calls has a valid chain of certificates.|
title: "Verify certification dependencies for plug-ins making outbound calls | MicrosoftDocs"
3
+
description: "Ensure that any certificates that your code depends on for outbound calls has a valid chain of certificates."
4
+
services: ''
5
+
suite: powerapps
6
+
documentationcenter: na
7
+
author: JimDaly
8
+
manager: ryjones
9
+
editor: ''
10
+
tags: ''
11
+
ms.service: powerapps
12
+
ms.devlang: na
13
+
ms.topic: article
14
+
ms.tgt_pltfrm: na
15
+
ms.workload: na
16
+
ms.date: 01/08/2020
17
+
ms.author: jdaly
18
+
search.audienceType:
19
+
- developer
20
+
search.app:
21
+
- PowerApps
22
+
- D365CE
23
+
---
24
+
# Verify certification dependencies for plug-ins making outbound calls
25
+
26
+
**Category**: Maintainability, Supportability
27
+
28
+
**Impact potential**: High
29
+
30
+
<aname='symptoms'></a>
31
+
32
+
## Symptoms
33
+
34
+
You may get this error when your plug-in makes an https call to an external resource:
35
+
36
+
`WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.`
37
+
38
+
39
+
<aname='guidance'></a>
40
+
41
+
## Guidance
42
+
43
+
You should verify that the site you want to connect with has a valid chain of certificates. Use one of the online test tools such as [Qualys SSL Labs SSL Server Test](https://www.ssllabs.com/ssltest/analyze.html) to verify that the site provides a valid chain of certificates.
44
+
45
+
46
+
<aname='additional'></a>
47
+
48
+
## Additional information
49
+
50
+
You may encounter this when connecting to a new endpoint for the first time or when something about the certificate has changed.
51
+
52
+
When the code in your plug-in running in the sandbox attempts to connect to an external endpoint using https, the CDS Sandbox will start SSL/TLS negotiation. The endpoint presents a certificate to use for encryption. If the certificate has one or more intermediate certificates it must present the entire chain to successfully complete SSL/TLS negotiation. If the complete chain is not presented SSL/TLS communication cannot be established.
53
+
54
+
55
+
56
+
57
+
<aname='seealso'></a>
58
+
59
+
### See also
60
+
61
+
[Write a plug-in](../../write-plug-in.md) <br />
62
+
[Set KeepAlive to false when interacting with external hosts in a plug-in](set-keepalive-false-interacting-external-hosts-plugin.md)<br />
63
+
[Set Timeout when making external calls in a plug-in](set-timeout-for-external-calls-from-plug-ins.md)
Copy file name to clipboardExpand all lines: powerapps-docs/developer/common-data-service/data-export-service.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,14 +17,14 @@ search.app:
17
17
---
18
18
# Data export service
19
19
20
-
Data Export is an add-on service made available as a Common Data Service solution that adds the ability to replicate Common Data Service data to a Microsoft Azure SQL Database store in a customer-owned Microsoft Azure subscription. The supported target destinations are Microsoft Azure SQL Database and Microsoft Azure SQL Server on Microsoft Azure virtual machines. Data Export intelligently synchronizes the entire Dynamics 365 schema and data initially and thereafter synchronizes on a continuous basis as changes occur (delta changes) in the Dynamics 365 (online) system.
20
+
Data Export is an add-on service made available as a Common Data Service solution that adds the ability to replicate Common Data Service data to a Microsoft Azure SQL Database store in a customer-owned Microsoft Azure subscription. The supported target destinations are Microsoft Azure SQL Database and Microsoft Azure SQL Server on Microsoft Azure virtual machines. Data Export intelligently synchronizes the entire Common Data Service schema and data initially and thereafter synchronizes on a continuous basis as changes occur (delta changes) in Common Data Service.
21
21
22
-
The Data Export service provides an interface for managing configuration and ongoing administration of this service from within Common Data Service. For more information, see [Data Export](https://technet.microsoft.com/library/a70feedc-12b9-4a2d-baf0-f489cdcc177d). This topic explains the corresponding programmatic interface and issues for this service.
22
+
The Data Export service provides an interface for managing configuration and ongoing administration of this service from within Common Data Service. For more information, see [Replicate data to Azure SQL Database](https://docs.microsoft.com/power-platform/admin/replicate-data-microsoft-azure-sql-database). This topic explains the corresponding programmatic interface and issues for this service.
23
23
24
24
## Prerequisites for using the Data Export Service
25
-
Because this service requires access to an external Microsoft Azure SQL Database from Common Data Service, a number of prerequisites must be satisfied before you can successfully access this service. The following perquisites are more fully explained from an administrator's perspective in the section [Prerequisites for using Data Export Service](https://technet.microsoft.com/library/mt744592.aspx).
25
+
Because this service requires access to an external Microsoft Azure SQL Database from Common Data Service, a number of prerequisites must be satisfied before you can successfully access this service. The following perquisites are more fully explained from an administrator's perspective in the section [Prerequisites for using Data Export Service](/power-platform/admin/replicate-data-microsoft-azure-sql-database#prerequisites-for-using-).
26
26
27
-
Your Common Data Service service must be configured so that:
27
+
Your Common Data Service environment must be configured so that:
28
28
29
29
- The entities that will be exported are enabled with change tracking. For more information, see [Use change tracking to synchronize data with external systems](use-change-tracking-synchronize-data-external-systems.md).
Copy file name to clipboardExpand all lines: powerapps-docs/developer/common-data-service/webapi/perform-conditional-operations-using-web-api.md
+17-12Lines changed: 17 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
title: "Perform conditional operations using the Web API (Common Data Service)| Microsoft Docs"
3
3
description: "Read how to create conditions that decide whether and how to perform certain operations using the Web API"
4
4
ms.custom: ""
5
-
ms.date: 08/31/2019
5
+
ms.date: 01/08/2020
6
6
ms.service: powerapps
7
7
ms.suite: ""
8
8
ms.tgt_pltfrm: ""
@@ -38,8 +38,6 @@ Common Data Service generates a weakly validating `@odata.etag` property for eve
38
38
## If-Match and If-None-Match headers
39
39
40
40
Use [If-Match](https://tools.ietf.org/html/rfc7232#section-3.1) and [If-None-Match](https://tools.ietf.org/html/rfc7232#section-3.2) headers with ETag values to check whether the current version of a resource matches the one last retrieved, matches any previous version or matches no version. These comparisons form the basis of conditional operation support. Common Data Service provides ETags to support conditional retrievals, optimistic concurrency, and limited upsert operations.
41
-
42
-
Queries which expand collection-valued navigation properties may return cached data for those properties that doesn’t reflect recent changes. It is recommended to use `If-None-Match` header with value `null` to override browser caching. See [HTTP Headers](compose-http-requests-handle-errors.md#bkmk_headers) for more details. Use `If-None-Match` header with a specific ETag value to ensure that only changed data is returned.
43
41
44
42
> [!WARNING]
45
43
> Client code should not give any meaning to the specific value of an ETag, nor to any apparent relationship between ETags beyond equality or inequality. For example, an ETag value for a more recent version of a resource is not guaranteed to be greater than the ETag value for an earlier version. Also, the algorithm used to generate new ETag values may change without notice between releases of a service.
@@ -48,16 +46,9 @@ Queries which expand collection-valued navigation properties may return cached d
48
46
49
47
## Conditional retrievals
50
48
51
-
Etags enable you to optimize record retrievals whenever you access the same record multiple times. If you have previously retrieved a record, you can pass the ETag value with the `If-None-Match` header to request data to be retrieved only if it has changed since the last time it was retrieved. If the data has changed, the request returns an HTTP status of 200 (OK) with the latest data in the body of the request. If the data hasn’t changed, the HTTP status code 304 (Not Modified) is returned to indicate that the entity hasn’t been modified. The following example message pair returns data for an account entity with the `accountid` equal to `00000000-0000-0000-0000-000000000001` when the data hasn’t changed since it was last retrieved.
52
-
53
-
> [!NOTE]
54
-
> Conditional retrieval works only for entities that have optimistic concurrency enabled. Check if an entity has optimistic concurrency enabled using the Web API request shown below. Entities that have optimistic concurrency enabled will have <xrefhref="Microsoft.Xrm.Sdk.Metadata.EntityMetadata.IsOptimisticConcurrencyEnabled?text=EntityMetadata.IsOptimisticConcurrencyEnabled" /> property set to `true`.
49
+
Etags enable you to optimize record retrievals whenever you access the same record multiple times. If you have previously retrieved a record, you can pass the ETag value with the `If-None-Match` header to request data to be retrieved only if it has changed since the last time it was retrieved. If the data has changed, the request returns an HTTP status of `200 (OK)` with the latest data in the body of the request. If the data hasn’t changed, the HTTP status code `304 (Not Modified)` is returned to indicate that the entity hasn’t been modified.
55
50
56
-
> ```HTTP
57
-
> GET [Organization URI]/api/data/v9.0/EntityDefinitions(LogicalName='<Entity Logical Name>')?$select=IsOptimisticConcurrencyEnabled
58
-
> ```
59
-
<!-- TODO:
60
-
> For more information about optimistic concurrency, see [Reduce potential data loss using optimistic concurrency](../org-service/reduce-potential-data-loss-using-optimistic-concurrency.md). -->
51
+
The following example message pair returns data for an account entity with the `accountid` equal to `00000000-0000-0000-0000-000000000001` when the data hasn’t changed since it was last retrieved when the Etag value was `W/"468026"`
The following sections describe limitations to using conditional retrievals.
70
+
71
+
### Entity must have optimistic concurrency enabled
72
+
73
+
Check if an entity has optimistic concurrency enabled using the Web API request shown below. Entities that have optimistic concurrency enabled will have <xrefhref="Microsoft.Xrm.Sdk.Metadata.EntityMetadata.IsOptimisticConcurrencyEnabled?text=EntityMetadata.IsOptimisticConcurrencyEnabled" /> property set to `true`.
74
+
75
+
```http
76
+
GET [Organization URI]/api/data/v9.0/EntityDefinitions(LogicalName='<Entity Logical Name>')?$select=IsOptimisticConcurrencyEnabled
77
+
```
78
+
79
+
### Query must not include $expand
80
+
81
+
The Etag can only detect if the single record that is being retrieved has changed. When you use `$expand` in your query, additional records may be returned and it is not possible to detect whether or not any of those records have changed. If the query includes `$expand` it will never return `304 Not Modified`.
Copy file name to clipboardExpand all lines: powerapps-docs/developer/common-data-service/webapi/retrieve-related-entities-query.md
+4-2Lines changed: 4 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
title: "Retrieve related entity records with a query (Common Data Service)| Microsoft Docs"
3
3
description: "ead how you can retrieve related entity records by expanding the navigation properties."
4
4
ms.custom: ""
5
-
ms.date: 07/15/2019
5
+
ms.date: 01/08/2020
6
6
ms.service: powerapps
7
7
ms.suite: ""
8
8
ms.tgt_pltfrm: ""
@@ -31,7 +31,9 @@ Use the `$expand` system query option in the navigation properties to control wh
31
31
If you include only the name of the navigation property, you’ll receive all the properties for related records. You can limit the properties returned for related records using the `$select` system query option in parentheses after the navigation property name. Use this for both single-valued and collection-valued navigation properties.
32
32
33
33
> [!NOTE]
34
-
> To retrieve related entities for an entity instance, see [Retrieve related entities for an entity by expanding navigation properties](retrieve-entity-using-web-api.md#bkmk_expandRelated).
34
+
> - To retrieve related entities for an entity instance, see [Retrieve related entities for an entity by expanding navigation properties](retrieve-entity-using-web-api.md#bkmk_expandRelated).
35
+
> - Queries which expand collection-valued navigation properties may return cached data for those properties that doesn’t reflect recent changes. It is recommended to use `If-None-Match` header with value `null` to override browser caching. See [HTTP Headers](compose-http-requests-handle-errors.md#bkmk_headers) for more details.
Copy file name to clipboardExpand all lines: powerapps-docs/maker/common-data-service/use-solution-explorer.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -87,7 +87,7 @@ In Power Apps, you can view the classic solution explorer by selecting **Solutio
87
87
88
88
The following limitations apply to the use of canvas apps, flows, and custom connectors in solutions.
89
89
90
-
- Canvas app triggered flows are not available in solutions.
90
+
- Canvas app button triggered flows are currently not supported in solutions. Create the app and flow outside of a solution, and export the .msapp file to migrate canvas apps with an embedded button triggered flow.
91
91
- If a canvas app is packaged in a managed solution, it can't be edited and re-published in the target environment. Use unmanaged solutions if the apps require editing in the target environment.
92
92
- Connections require authentication and consent, which requires an interactive user session and therefore cannot be transported via solutions. After importing your solution, play the app to authenticate connections. You can also create the connections in the target enviornment prior to importing the solution.
93
93
- Canvas apps shared as co-owner to an Azure Active Directory (AAD) security group can't be added to solutions. Unshare the app before adding it to a solution.
Copy file name to clipboardExpand all lines: powerapps-docs/maker/portals/add-web-resource.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,13 +2,13 @@
2
2
title: "Add azure storage web resource to a form | MicrosoftDocs"
3
3
description: "Steps to add azure storage web resource to a form to enable uploading attachments to Azure Storage."
4
4
author: sbmjais
5
-
manager: shujoshi
5
+
manager: kvivek
6
6
ms.service: powerapps
7
7
ms.topic: conceptual
8
8
ms.custom:
9
-
ms.date: 11/11/2019
9
+
ms.date: 01/07/2020
10
10
ms.author: shjais
11
-
ms.reviewer:
11
+
ms.reviewer:tapanm
12
12
---
13
13
14
14
# Add the Azure Storage web resource to a form
@@ -62,7 +62,7 @@ The paper-clip icon has been replaced with a cloud icon to denote that this file
62
62
63
63
> [!Note]
64
64
> You must add cross-origin resource sharing (CORS) rule on your Azure Storage account as follows, otherwise you will see the regular attachment icon rather than the cloud icon.
65
-
> -**Allowed origins**: Specify your ___domain. For example, `http://contoso.crm.dynamics.com`.
65
+
> -**Allowed origins**: Specify your ___domain. For example, `https://contoso.crm.dynamics.com`.
66
66
> -**Allowed verbs**: GET, PUT, DELETE, HEAD, POST
67
67
> -**Allowed headers**: Specify the request headers that the origin ___domain may specify on the CORS request. For example, x-ms-meta-data\*, x-ms-meta-target\*. For this scenario, you must specify *, otherwise the web resource will not render properly.
68
68
> -**Exposed headers**: Specify the response headers that may be sent in the response to the CORS request and exposed by the browser to the request issuer. For example, x-ms-meta-\*.
0 commit comments