private static string DiscoverOrganizationUrl(SecurityToken token, string organizationName, string discoveryServiceUrl, Uri issuerUri) { using (DiscoveryServiceClient client = new DiscoveryServiceClient("CustomBinding_IDiscoveryService", discoveryServiceUrl)) { client.ConfigureCrmOnlineBinding(issuerUri); client.Token = token; RetrieveOrganizationRequest request = new RetrieveOrganizationRequest() { UniqueName = organizationName }; RetrieveOrganizationResponse response; try { response = (RetrieveOrganizationResponse)client.Execute(request); } catch (CommunicationException) { throw; } foreach (KeyValuePair <EndpointType, string> endpoint in response.Detail.Endpoints) { if (EndpointType.OrganizationService == endpoint.Key) { Console.WriteLine("Organization Service URL: {0}", endpoint.Value); return(endpoint.Value); } } throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "Organization {0} does not have an OrganizationService endpoint defined.", organizationName)); } }
/// <summary> /// Demonstrates parallelized execution of multiple discovery requests /// </summary> /// <param name="organizationNames">The array of organizations to discover by name</param> public List <DiscoveryResponse> ParallelExecuteDiscoveryRequests(string[] organizationNames) { List <DiscoveryResponse> responses = null; var requests = new List <DiscoveryRequest>(); Array.ForEach(organizationNames, name => { var request = new RetrieveOrganizationRequest() { UniqueName = name, AccessType = EndpointAccessType.Default, Release = OrganizationRelease.Current }; requests.Add(request); }); try { responses = this.Manager.ParallelProxy.Execute(requests).ToList(); } catch (AggregateException ae) { // Handle exceptions } return(responses); }
private static string DiscoverOrganizationUrl(ClientCredentials credentials, string organizationName, string discoveryServiceUrl) { using (DiscoveryServiceClient client = new DiscoveryServiceClient("CustomBinding_IDiscoveryService", discoveryServiceUrl)) { ApplyCredentials(client, credentials); RetrieveOrganizationRequest request = new RetrieveOrganizationRequest() { UniqueName = organizationName }; RetrieveOrganizationResponse response = (RetrieveOrganizationResponse)client.Execute(request); foreach (KeyValuePair <CrmSdk.Discovery.EndpointType, string> endpoint in response.Detail.Endpoints) { if (CrmSdk.Discovery.EndpointType.OrganizationService == endpoint.Key) { Console.WriteLine("Organization Service URL: {0}", endpoint.Value); return(endpoint.Value); } } throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "Organization {0} does not have an OrganizationService endpoint defined.", organizationName)); } }
/// <summary> /// Demonstrates the RetrieveOrganization and RetrieveOrganizations messages /// of the Discovery service. /// </summary> /// <param name="serverConfig">Contains server connection information.</param> /// <param name="promptforDelete">When True, the user will be prompted to delete all /// created entities.</param> public void Run(ServerConnection.Configuration serverConfig, bool promptforDelete) { try { //<snippetDiscoveryService1> // Connect to the Discovery service. // The using statement assures that the service proxy will be properly disposed. using (_serviceProxy = new DiscoveryServiceProxy(serverConfig.DiscoveryUri, serverConfig.HomeRealmUri, serverConfig.Credentials, serverConfig.DeviceCredentials)) { // You can choose to use the interface instead of the proxy. IDiscoveryService service = _serviceProxy; #region RetrieveOrganizations Message //<snippetDiscoveryService2> // Retrieve details about all organizations discoverable via the // Discovery service. RetrieveOrganizationsRequest orgsRequest = new RetrieveOrganizationsRequest() { AccessType = EndpointAccessType.Default, Release = OrganizationRelease.Current }; RetrieveOrganizationsResponse organizations = (RetrieveOrganizationsResponse)service.Execute(orgsRequest); //</snippetDiscoveryService2> // Print each organization's friendly name, unique name and URLs // for each of its endpoints. Console.WriteLine(); Console.WriteLine("Retrieving details of each organization:"); foreach (OrganizationDetail organization in organizations.Details) { Console.WriteLine("Organization Name: {0}", organization.FriendlyName); Console.WriteLine("Unique Name: {0}", organization.UniqueName); Console.WriteLine("Endpoints:"); foreach (var endpoint in organization.Endpoints) { Console.WriteLine(" Name: {0}", endpoint.Key); Console.WriteLine(" URL: {0}", endpoint.Value); } } Console.WriteLine("End of listing"); Console.WriteLine(); #endregion RetrieveOrganizations Message #region RetrieveOrganization Message //<snippetDiscoveryService3> // Retrieve details about a single organization discoverable via the Discovery service. // RetrieveOrganizationRequest orgRequest = new RetrieveOrganizationRequest() { UniqueName = organizations.Details[organizations.Details.Count -1].UniqueName, AccessType = EndpointAccessType.Default, Release = OrganizationRelease.Current }; RetrieveOrganizationResponse org = (RetrieveOrganizationResponse)service.Execute(orgRequest); //</snippetDiscoveryService3> // Print the organization's friendly name, unique name and URLs // for each of its endpoints. Console.WriteLine(); Console.WriteLine("Retrieving details of specific organization:"); Console.WriteLine("Organization Name: {0}", org.Detail.FriendlyName); Console.WriteLine("Unique Name: {0}", org.Detail.UniqueName); Console.WriteLine("Endpoints:"); foreach (KeyValuePair<EndpointType, string> endpoint in org.Detail.Endpoints) { Console.WriteLine(" Name: {0}", endpoint.Key); Console.WriteLine(" URL: {0}", endpoint.Value); } Console.WriteLine("End of listing"); Console.WriteLine(); #endregion RetrieveOrganization Message } //</snippetDiscoveryService1> } // Catch any service fault exceptions that Microsoft Dynamics CRM throws. catch (FaultException<Microsoft.Xrm.Sdk.DiscoveryServiceFault>) { // You can handle an exception here or pass it back to the calling method. throw; } }
/// <summary> /// Demonstrates the RetrieveOrganization and RetrieveOrganizations messages /// of the Discovery service. /// </summary> /// <param name="serverConfig">Contains server connection information.</param> /// <param name="promptforDelete">When True, the user will be prompted to delete all /// created entities.</param> public void Run(ServerConnection.Configuration serverConfig, bool promptforDelete) { try { //<snippetDiscoveryService1> // Connect to the Discovery service. // The using statement assures that the service proxy will be properly disposed. using (_serviceProxy = new DiscoveryServiceProxy(serverConfig.DiscoveryUri, serverConfig.HomeRealmUri, serverConfig.Credentials, serverConfig.DeviceCredentials)) { // You can choose to use the interface instead of the proxy. IDiscoveryService service = _serviceProxy; #region RetrieveOrganizations Message //<snippetDiscoveryService2> // Retrieve details about all organizations discoverable via the // Discovery service. RetrieveOrganizationsRequest orgsRequest = new RetrieveOrganizationsRequest() { AccessType = EndpointAccessType.Default, Release = OrganizationRelease.Current }; RetrieveOrganizationsResponse organizations = (RetrieveOrganizationsResponse)service.Execute(orgsRequest); //</snippetDiscoveryService2> // Print each organization's friendly name, unique name and URLs // for each of its endpoints. Console.WriteLine(); Console.WriteLine("Retrieving details of each organization:"); foreach (OrganizationDetail organization in organizations.Details) { Console.WriteLine("Organization Name: {0}", organization.FriendlyName); Console.WriteLine("Unique Name: {0}", organization.UniqueName); Console.WriteLine("Endpoints:"); foreach (var endpoint in organization.Endpoints) { Console.WriteLine(" Name: {0}", endpoint.Key); Console.WriteLine(" URL: {0}", endpoint.Value); } } Console.WriteLine("End of listing"); Console.WriteLine(); #endregion RetrieveOrganizations Message #region RetrieveOrganization Message //<snippetDiscoveryService3> // Retrieve details about a single organization discoverable via the Discovery service. // RetrieveOrganizationRequest orgRequest = new RetrieveOrganizationRequest() { UniqueName = organizations.Details[organizations.Details.Count - 1].UniqueName, AccessType = EndpointAccessType.Default, Release = OrganizationRelease.Current }; RetrieveOrganizationResponse org = (RetrieveOrganizationResponse)service.Execute(orgRequest); //</snippetDiscoveryService3> // Print the organization's friendly name, unique name and URLs // for each of its endpoints. Console.WriteLine(); Console.WriteLine("Retrieving details of specific organization:"); Console.WriteLine("Organization Name: {0}", org.Detail.FriendlyName); Console.WriteLine("Unique Name: {0}", org.Detail.UniqueName); Console.WriteLine("Endpoints:"); foreach (KeyValuePair <EndpointType, string> endpoint in org.Detail.Endpoints) { Console.WriteLine(" Name: {0}", endpoint.Key); Console.WriteLine(" URL: {0}", endpoint.Value); } Console.WriteLine("End of listing"); Console.WriteLine(); #endregion RetrieveOrganization Message } //</snippetDiscoveryService1> } // Catch any service fault exceptions that Microsoft Dynamics CRM throws. catch (FaultException <Microsoft.Xrm.Sdk.DiscoveryServiceFault> ) { // You can handle an exception here or pass it back to the calling method. throw; } }
private static string DiscoverOrganizationUrl(SecurityToken token, string organizationName, string discoveryServiceUrl, Uri issuerUri) { using (DiscoveryServiceClient client = new DiscoveryServiceClient("CustomBinding_IDiscoveryService", discoveryServiceUrl)) { client.ConfigureCrmOnlineBinding(issuerUri); client.Token = token; RetrieveOrganizationRequest request = new RetrieveOrganizationRequest() { UniqueName = organizationName }; RetrieveOrganizationResponse response; try { response = (RetrieveOrganizationResponse)client.Execute(request); } catch (CommunicationException) { throw; } foreach (KeyValuePair<EndpointType, string> endpoint in response.Detail.Endpoints) { if (EndpointType.OrganizationService == endpoint.Key) { Console.WriteLine("Organization Service URL: {0}", endpoint.Value); return endpoint.Value; } } throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "Organization {0} does not have an OrganizationService endpoint defined.", organizationName)); } }