Skip to content

Commit 5aa53f3

Browse files
committed
Merge branch 'master' into v-ljoel-how-to-architecture
2 parents e6b9195 + ee823da commit 5aa53f3

File tree

412 files changed

+3075
-854
lines changed

Some content is hidden

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

412 files changed

+3075
-854
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@ powerapps-docs/.vs/slnx.sqlite
2020
powerapps-docs/.vs/VSWorkspaceState.json
2121
/.vs/slnx.sqlite-journal
2222
powerapps-docs/teams/media/how-to-architecture/Thumbs.db
23+
powerapps-docs/teams/media/milestones-broad-distribution/Thumbs.db

powerapps-docs/developer/component-framework/community-resources.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,11 @@ The following is the list of blogs created by Power Apps community.
7676

7777
## Tools
7878

79-
The [Code component builder](https://www.xrmtoolbox.com/plugins/Maverick.PCF.Builder/) is a tool that enables you to build code components with ease where you do not need to write the CLI commands but still use the [Microsoft Power Platform CLI](/powerapps/developer/data-platform/powerapps-cli) under the hood. Most of the commands are consolidated, making it easier to build components.
80-
It has two versions:
81-
1. https://www.xrmtoolbox.com/plugins/Maverick.PCF.Builder/ is for XrmToolBox.
82-
2. [Visual Studio Code extension](https://marketplace.visualstudio.com/items?itemName=danish-naglekar.pcf-builder) both of them are called **PCF Builder**.
79+
The [code component builder](https://www.xrmtoolbox.com/plugins/Maverick.PCF.Builder/) is a tool that enables you to build code components with ease where you do not need to write the CLI commands but still use the [Microsoft Power Platform CLI](/powerapps/developer/data-platform/powerapps-cli) under the hood. Most of the commands are consolidated, making it easier to build components.
80+
81+
There are two versions of the code component builder. Both of them are called **PCF Builder** and are listed below:
82+
1. [PCF Builder](https://www.xrmtoolbox.com/plugins/Maverick.PCF.Builder/) for XrmToolBox.
83+
2. [PCF Builder](https://marketplace.visualstudio.com/items?itemName=danish-naglekar.pcf-builder) for Visual Studio Code.
8384

8485
[PCF Builder for XrmToolBox](https://www.xrmtoolbox.com/plugins/Maverick.PCF.Builder/) provides a graphical user interface that lets you create code components in visual manner using Microsoft Power Platform CLI.
8586

powerapps-docs/developer/data-platform/org-service/discovery-service.md

Lines changed: 6 additions & 137 deletions
Original file line numberDiff line numberDiff line change
@@ -25,146 +25,15 @@ search.app:
2525
2626
[!INCLUDE [cc-discovery-service-description](../includes/cc-discovery-service-description.md)]
2727

28-
To access the Discovery Service using SDK assembly APIs, add a reference to the `Microsoft.Xrm.Sdk.dll` assembly in your Visual Studio project, and then add a `using` statement to access the <xref:Microsoft.Xrm.Sdk.Discovery> namespace.
29-
30-
The <xref:Microsoft.Xrm.Sdk.WebServiceClient.DiscoveryWebProxyClient> implements the <xref:Microsoft.Xrm.Sdk.Discovery.IDiscoveryService> interface.
31-
32-
The <xref:Microsoft.Xrm.Sdk.Discovery.IDiscoveryService> interface provides <xref:Microsoft.Xrm.Sdk.Discovery.IDiscoveryService.Execute(Microsoft.Xrm.Sdk.Discovery.DiscoveryRequest)> method you will use to pass a instance of the abstract <xref:Microsoft.Xrm.Sdk.Discovery.DiscoveryRequest> class.
33-
34-
## Regional Discovery services
35-
36-
When you instantiate the <xref:Microsoft.Xrm.Sdk.WebServiceClient.DiscoveryWebProxyClient> you will need to provide a URL for a regional data center using one of the following values.
37-
38-
[!INCLUDE [regional-discovery-services](../../../includes/regional-discovery-services.md)]
39-
40-
> [!NOTE]
41-
> If you do not know the user's region, you need to loop through the available regions until you get results. A single global Discovery Service is also available. More information: [Discover the URL for your organization](../webapi/discover-url-organization-web-api.md)
42-
43-
## Discovery service messages
44-
45-
There are three messages that you can use which all inherit from the abstract <xref:Microsoft.Xrm.Sdk.Discovery.DiscoveryRequest> class.
46-
47-
The following table lists the messages that are supported with <xref:Microsoft.Xrm.Sdk.Discovery.IDiscoveryService.Execute(Microsoft.Xrm.Sdk.Discovery.DiscoveryRequest)> method.
48-
49-
|Message|Description|
50-
|-------------|-----------------|
51-
|<xref:Microsoft.Xrm.Sdk.Discovery.RetrieveUserIdByExternalIdRequest>|Retrieves the logged-on user's ID in Microsoft Dataverse|
52-
|<xref:Microsoft.Xrm.Sdk.Discovery.RetrieveOrganizationRequest>|Retrieves information about a single organization.|
53-
|<xref:Microsoft.Xrm.Sdk.Discovery.RetrieveOrganizationsRequest>|Retrieves information about all organizations to which the user belongs.|
54-
55-
## Example
56-
57-
The following code for a console application uses the <xref:Microsoft.Xrm.Sdk.Discovery.RetrieveOrganizationsRequest> message to retrieve all the organizations for a user.
58-
59-
```csharp
60-
using System;
61-
using System.Linq;
62-
using Microsoft.Xrm.Sdk.Discovery;
63-
using Microsoft.IdentityModel.Clients.ActiveDirectory;
64-
using Microsoft.Xrm.Sdk.WebServiceClient;
65-
66-
namespace DiscoveryServiceSample
67-
{
68-
class Program
69-
{
70-
//These sample application registration values are available for all online instances.
71-
// this sample requires ADAL.net 5.2 or later
72-
public static string clientId = "51f81489-12ee-4a9e-aaae-a2591f45987d";
73-
74-
static OrganizationDetailCollection GetOrganizationDetails(DiscoveryWebProxyClient svc)
75-
{
76-
77-
var request = new RetrieveOrganizationsRequest()
78-
{
79-
AccessType = EndpointAccessType.Default,
80-
Release = OrganizationRelease.Current
81-
};
82-
try
83-
{
84-
var response = (RetrieveOrganizationsResponse)svc.Execute(request);
85-
return response.Details;
86-
}
87-
catch (Exception)
88-
{
89-
throw;
90-
}
91-
}
92-
static void Main(string[] args)
93-
{
94-
string authority = @"https://login.microsoftonline.com/common";
95-
string northAmericaResourceUrl = "https://disco.crm.dynamics.com";
96-
string discoveryUrl = $"{northAmericaResourceUrl}/XRMServices/2011/Discovery.svc/web";
97-
Uri discoveryUri = new Uri(discoveryUrl);
98-
99-
AuthenticationContext authContext = new AuthenticationContext(authority, false);
100-
string username = "[email protected]";
101-
string password = "yourPassword";
102-
103-
AuthenticationResult authResult = null;
104-
if (username != string.Empty && password != string.Empty)
105-
{
106-
UserPasswordCredential cred = new UserPasswordCredential(username, password);
107-
authResult = authContext.AcquireTokenAsync(northAmericaResourceUrl, clientId, cred).Result;
108-
}
109-
110-
111-
using (var svc = new DiscoveryWebProxyClient(discoveryUri))
112-
{
113-
svc.HeaderToken = authResult.AccessToken;
114-
115-
OrganizationDetailCollection details = GetOrganizationDetails(svc);
116-
117-
details.ToList().ForEach(x =>
118-
{
119-
Console.WriteLine("Organization Name: {0}", x.FriendlyName);
120-
Console.WriteLine("Unique Name: {0}", x.UniqueName);
121-
Console.WriteLine("Endpoints:");
122-
foreach (var endpoint in x.Endpoints)
123-
{
124-
Console.WriteLine(" Name: {0}", endpoint.Key);
125-
Console.WriteLine(" URL: {0}", endpoint.Value);
126-
}
127-
Console.WriteLine();
128-
});
129-
};
130-
Console.ReadLine();
131-
}
132-
}
133-
}
134-
135-
```
136-
137-
The results may look like this for a user with access to two instances:
138-
139-
```
140-
Organization Name: Organization A
141-
Unique Name: orga
142-
Endpoints:
143-
Name: WebApplication
144-
URL: https://orgaservice.crm.dynamics.com/
145-
Name: OrganizationService
146-
URL: https://orgaservice.api.crm.dynamics.com/XRMServices/2011/Organization.svc
147-
Name: OrganizationDataService
148-
URL: https://orgaservice.api.crm.dynamics.com/XRMServices/2011/OrganizationData.svc
149-
150-
Organization Name: Organization B
151-
Unique Name: orgb
152-
Endpoints:
153-
Name: WebApplication
154-
URL: https://orgbservice.crm.dynamics.com/
155-
Name: OrganizationService
156-
URL: https://orgbservice.api.crm.dynamics.com/XRMServices/2011/Organization.svc
157-
Name: OrganizationDataService
158-
URL: https://orgbservice.api.crm.dynamics.com/XRMServices/2011/OrganizationData.svc
159-
```
160-
161-
> [!NOTE]
162-
> The `OrganizationDataService` is the deprecated Organization Data Service, not the Web API. This service does not include a URL for the Web API.
28+
- Regional Discovery Services are no longer avaialble.
29+
- To access Global Discovery functionality with the SDK going fowarded, see [here](/powerapps-docs/developer/data-platform/org-service/samples/access-discovery-service.md)
16330

31+
## Globla Discovery Service Endpoints:
32+
[!INCLUDE [global-discovery-services](../../../includes/global-discovery-services.md)]
16433

16534
### See also
16635

167-
[Discovery Services](../discovery-service.md)<br />
36+
[Global Discovery Service Sample](https://github.com/Microsoft/PowerApps-Samples/tree/master/cds/orgsvc/C%23/DiscoveryService)<br />
16837
[Discover the URL for your organization](../webapi/discover-url-organization-web-api.md)
16938

170-
[!INCLUDE[footer-include](../../../includes/footer-banner.md)]
39+
[!INCLUDE[footer-include](../../../includes/footer-banner.md)]

powerapps-docs/developer/data-platform/org-service/samples/access-discovery-service.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ If you have set and values in the App.config connection strings, it will use t
2929

3030
## What this sample does
3131

32-
This sample uses the SDK Assembly `DiscoveryServiceProxy` to query the discovery service with a user's credentials to determine which environments they can connect with.
32+
This sample uses the SDK Assembly `CrmServiceClient` to query the global discovery service with a user's credentials to determine which environments they can connect with.
3333

3434
If one or more environments are returned, the sample will prompt the user to choose one, and then use a `WhoAmIRequest` to return the `SystemUser.UserId` for that environment.
3535

@@ -43,17 +43,17 @@ This sample requires no special setup except that there are valid user credentia
4343

4444
If you know the regional data center that your environments are in, the sample will run faster if you set this value at line 40 of the SampleProgram.cs file.
4545

46-
In SampleMethods.cs there is a `DataCenter` enumeration for each of the known data centers. Each enumeration member is decorated with a `Description` notation. All of these members except `Unknown` have the URL for the regional discovery service set as the description.
46+
In SampleMethods.cs there is a `Clouds` enumeration for each of the known global discovery centers. Each enumeration member is decorated with a `Description` notation. All of these members except `Unknown` have the URL for the global discovery service set as the description.
4747

4848

4949
### Demonstrate
5050

51-
1. Using the user credentials and the `dataCenter` value, the program uses the `GetAllOrganizations` static method to retrieve all known environments for the user.
52-
1. The `GetAllOrganizations`method detects whether the `dataCenter` value is set to `DataCenter.Unknown`. If it is set to this member, this method will loop through all the other members in the `DataCenter` enum and retrieve any environments that are found using the `GetOrganizationsForDataCenter` static method.
51+
1. Using the user credentials and the `cloud` value, the program uses the `GetAllOrganizations` static method to retrieve all known environments for the user.
52+
1. The `GetAllOrganizations`method detects whether the `cloud` value is set to `Cloud.Unknown`. If it is set to this member, this method will choose the commerical `Cloud` enum and retrieve any environments that are found using the `GetOrganizationsForCloud` static method.
5353

54-
If a specific data center is set, `GetAllOrganizations` will simply call `GetOrganizationsForDataCenter` with those values.
54+
If a specific data center is set, `GetAllOrganizations` will simply call `GetOrganizationsForCloud` with those values.
5555

56-
1. The `GetOrganizationsForDataCenter` method extracts the data center discovery service Url from the member `Description` decoration and uses it together with the user credentials to execute the `RetrieveOrganizationsRequest` discovery service message.
56+
1. The `GetOrganizationsForCloud` method extracts the cloud's discovery service Url from the member `Description` decoration and uses it together with the user credentials to execute the `DiscoverGlobalOrganizations` CrmServiceClient helper message.
5757

5858
A `System.ServiceModel.Security.SecurityAccessDeniedException` is expected when the user has no environments in a specific data center.
5959

powerapps-docs/guidance/patterns/inspection-pattern.md

Lines changed: 35 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,14 @@ author: kathyos
55
ms.service: powerapps
66
ms.topic: conceptual
77
ms.custom: guidance
8-
ms.date: 07/20/2020
8+
ms.date: 06/21/2021
99
ms.author: kathyos
1010
ms.reviewer: kathyos
1111

1212
---
1313

1414
# Pattern: Inspection
1515

16-
<!--![Collage of inspection app screenshots](media/inspection-collage.png "Collage of inspection app screenshots")-->
17-
1816
There are a variety of reasons why organizations need to perform inspections,
1917
and Microsoft Power Platform provides a no-code or low-code solution for enabling
2018
inspection, analysis, and action. In this pattern, an app user fills out a
@@ -53,6 +51,40 @@ In a typical inspection scenario:
5351
decide to take it out of service. Or the centralized report might show that daily
5452
maintenance standards need to be improved in a particular ___location.
5553

54+
## Template: Inspection solution for Microsoft Teams
55+
56+
The Inspection solution for Microsoft Teams is a general inspection app that can be used to inspect anything from a ___location (such as a retail store or manufacturing plant) to assets and equipment (such as vehicles and machines). The solution includes an app for performing inspections as well as an app for configuring and managing inspections.
57+
58+
![Screenshot of the Inspection app for Microsoft Teams](media/review-inspection.png "Screenshot of the Inspection app for Microsoft Teams")
59+
60+
Learn more about the solution: [Video](https://aka.ms/TeamsInspectionVideo) | [Documentation](https://aka.ms/TeamsInspectionDocs) | [Teams app installer](https://aka.ms/TeamsInspection)
61+
62+
## Template: Hospital Emergency Response sample solution
63+
64+
The Hospital Emergency Response sample solution provides a set of capabilities
65+
for healthcare organizations to collect data for situational awareness of
66+
available beds and supplies, COVID-19&ndash;related patients, staffing, and pending
67+
discharges. This solution implements the inspection pattern by collecting an
68+
inventory of available hospital beds and supplies. It also uses dashboards to
69+
summarize key data and insights for users to make informed decisions, resulting
70+
in efficient deployment and usage of resources.
71+
72+
![Screenshots of the Hospital Emergency Response app](media/hospital-emergency-response-app.png "Screenshots of the Hospital Emergency Response app")
73+
74+
The main components of the Hospital Emergency Response solution are:
75+
76+
- **Mobile app for frontline staff**: Frontline staff, such as nurses and
77+
medical practitioners, can use the mobile app to quickly view and enter
78+
information as required.
79+
80+
- **Web app for hospital admins**: Hospital admins can use this app to add and
81+
manage system data required for the solution to work.
82+
83+
- **Dashboards for healthcare decision makers**: Decision makers can use dashboards to quickly
84+
view important data and metrics to help make decisions efficiently.
85+
86+
Learn more about the solution: [Video](https://youtu.be/Dg-i3F9G01I) | [Documentation](../../sample-apps/emergency-response/overview.md) | [Blog post](https://powerapps.microsoft.com/blog/emergency-response-solution-a-microsoft-power-platform-solution-for-healthcare-emergency-response/)
87+
5688
## How customers are using the inspection pattern
5789

5890
### Virgin Atlantic safety and compliance app
@@ -125,34 +157,6 @@ as oral reading goals and comprehension goals.
125157

126158
![Screenshots of the Tacoma Public Schools DRA2 app](media/tacoma-schools-dra-app.png "Screenshots of the Tacoma Public Schools DRA2 app")
127159

128-
### Hospital Emergency Response sample solution
129-
130-
The Hospital Emergency Response sample solution provides a set of capabilities
131-
for healthcare organizations to collect data for situational awareness of
132-
available beds and supplies, COVID-19&ndash;related patients, staffing, and pending
133-
discharges. This solution implements the inspection pattern by collecting an
134-
inventory of available hospital beds and supplies. It also uses dashboards to
135-
summarize key data and insights for users to make informed decisions, resulting
136-
in efficient deployment and usage of resources.
137-
138-
![Screenshots of the Hospital Emergency Response app](media/hospital-emergency-response-app.png "Screenshots of the Hospital Emergency Response app")
139-
140-
The main components of the Hospital Emergency Response solution are:
141-
142-
- **Mobile app for frontline staff**: Frontline staff, such as nurses and
143-
medical practitioners, can use the mobile app to quickly view and enter
144-
information as required.
145-
146-
- **Web app for hospital admins**: Hospital admins can use this app to add and
147-
manage system data required for the solution to work.
148-
149-
- **Dashboards for healthcare decision makers**: Decision makers can use dashboards to quickly
150-
view important data and metrics to help make decisions efficiently.
151-
152-
153-
154-
Learn more about the solution: [video](https://youtu.be/Dg-i3F9G01I) | [documentation](../../sample-apps/emergency-response/overview.md) | [blog post](https://powerapps.microsoft.com/blog/emergency-response-solution-a-microsoft-power-platform-solution-for-healthcare-emergency-response/)
155-
156160
### Additional stories
157161

158162
- [Pinnacle Group – Helpdesk employee leads transition from paper to digital](https://powerapps.microsoft.com/blog/pinnacle-group/)
@@ -164,4 +168,3 @@ Learn more about the solution: [video](https://youtu.be/Dg-i3F9G01I) | [document
164168

165169
- [App sample gallery: Audit](https://powerusers.microsoft.com/t5/forums/searchpage/tab/message?advanced=false&allow_punctuation=false&filter=___location&___location=forum-board:AppFeedbackGallery&q=audit)
166170

167-
[!INCLUDE[footer-include](../../includes/footer-banner.md)]
105 KB
Loading
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
|Location|Global Discovery Web service URL|
2+
|--------------|-------------------------------|
3+
|Commercial|`https://disco.crm.dynamics.com/XRMServices/2011/Discovery.svc`|
4+
|North America 2 (GCC)|`https://globaldisco.crm9.dynamics.com`|
5+
|US Government L5 (DOD)|`https://globaldisco.crm.appsplatform.us`|
6+
|US Government L4 (USG)|`https://globaldisco.crm.microsoftdynamics.us`|
7+
|China operated by 21Vianet|`https://globaldisco.crm.dynamics.cn`|

0 commit comments

Comments
 (0)