title | description | ms.date | author | ms.author | ms.reviewer | search.audienceType | contributors | |||
---|---|---|---|---|---|---|---|---|---|---|
Sample: Use CrmServiceClient to access the Global Discovery Service (Microsoft Dataverse) | Microsoft Docs |
This sample code shows how to use discovery services |
07/18/2022 |
JimDaly |
jdaly |
pehecke |
|
|
This sample code shows how to use the discovery service with the <xref:Microsoft.Xrm.Tooling.Connector.CrmServiceClient.DiscoverGlobalOrganizations%2A?text=CrmServiceClient.DiscoverGlobalOrganizations Method>.
[!div class="nextstepaction"] SDK for .NET: Use CrmServiceClient to access the Global Discovery Service sample code
Note
This sample is limited to .NET Full Framework. There is a newer sample compatible with .NET Core using the <xref:Microsoft.PowerPlatform.Dataverse.Client.ServiceClient.DiscoverOnlineOrganizationsAsync%2A?text=Dataverse.Client.ServiceClient.DiscoverOnlineOrganizationsAsync Method>. See Sample: Global Discovery Service (C#).
This sample will not open dialog to prompt you for connection information.
If you have set and values in the App.config connection strings, it will use them. Otherwise, set the username
and password
variables in the SampleProgram.Main
method.
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.
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.
In order to simulate the scenario described in What this sample does, the sample will do the following:
This sample requires no special setup except that there are valid user credential username and password to use.
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.
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.
-
Using the user credentials and the
cloud
value, the program uses theGetAllOrganizations
static method to retrieve all known environments for the user. -
The
GetAllOrganizations
method detects whether thecloud
value is set toCloud.Unknown
. If it is set to this member, this method will choose the commericalCloud
enum and retrieve any environments that are found using theGetOrganizationsForCloud
static method.If a specific data center is set,
GetAllOrganizations
will simply callGetOrganizationsForCloud
with those values. -
The
GetOrganizationsForCloud
method extracts the cloud's discovery service Url from the memberDescription
decoration and uses it together with the user credentials to execute theDiscoverGlobalOrganizations
CrmServiceClient helper message.A
System.ServiceModel.Security.SecurityAccessDeniedException
is expected when the user has no environments in a specific data center. -
If any environments are returned by the
GetAllOrganizations
method, they will be listed in the console and you will be prompted to choose one by typing a number. If your choice is valid, the selected environment data is used to execute aWhoAmIRequest
and return theSystemUser.UserId
for the user in that environment.
This sample creates no records. No cleanup is required.
Discover user organizations
Sample: Global Discovery Service (C#)
Sample: Blazor WebAssembly with Global Discovery
[!INCLUDE footer-banner]