Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This sample code shows how to use the discovery service with the CrmServiceClient.DiscoverGlobalOrganizations Method.
Note
This sample is limited to .NET Full Framework. There is a newer sample compatible with .NET Core using the Dataverse.Client.ServiceClient.DiscoverOnlineOrganizationsAsync Method. See Sample: Global Discovery Service (C#).
How to run this sample
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.
What this sample does
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.
How this sample works
In order to simulate the scenario described in What this sample does, the sample will do the following:
Setup
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.
Demonstrate
Using the user credentials and the
cloudvalue, the program uses theGetAllOrganizationsstatic method to retrieve all known environments for the user.The
GetAllOrganizationsmethod detects whether thecloudvalue is set toCloud.Unknown. If it is set to this member, this method will choose the commericalCloudenum and retrieve any environments that are found using theGetOrganizationsForCloudstatic method.If a specific data center is set,
GetAllOrganizationswill simply callGetOrganizationsForCloudwith those values.The
GetOrganizationsForCloudmethod extracts the cloud's discovery service Url from the memberDescriptiondecoration and uses it together with the user credentials to execute theDiscoverGlobalOrganizationsCrmServiceClient helper message.A
System.ServiceModel.Security.SecurityAccessDeniedExceptionis expected when the user has no environments in a specific data center.If any environments are returned by the
GetAllOrganizationsmethod, 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 aWhoAmIRequestand return theSystemUser.UserIdfor the user in that environment.
Clean up
This sample creates no records. No cleanup is required.
See Also
Discover user organizations
Sample: Global Discovery Service (C#)
Sample: Blazor WebAssembly with Global Discovery