/// <summary>Discovers the organizations that the calling user belongs to.</summary> /// <param name="service">A Discovery service proxy instance.</param> /// <returns>Array containing detailed information on each organization that /// the user belongs to.</returns> public static OrganizationDetailCollection DiscoverOrganizations(IDiscoveryService service) { var orgRequest = new RetrieveOrganizationsRequest(); var orgResponse = (RetrieveOrganizationsResponse)service.Execute(orgRequest); return(orgResponse.Details); }
private static OrganizationDetailCollection DiscoverOrganizations(DiscoveryServiceProxy service) { RetrieveOrganizationsRequest request = new RetrieveOrganizationsRequest(); RetrieveOrganizationsResponse response = (RetrieveOrganizationsResponse)service.Execute(request); return response.Details; }
static void Main(string[] args) { Uri local = new Uri("https://disco.crm2.dynamics.com/XRMServices/2011/Discovery.svc"); ClientCredentials clientcred = new ClientCredentials(); clientcred.UserName.UserName = lerEntradaCmd("Digite o Usuário"); clientcred.UserName.Password = lerEntradaCmd("Digite a Senha"); ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; DiscoveryServiceProxy dsp = new DiscoveryServiceProxy(local, null, clientcred, null); dsp.Authenticate(); RetrieveOrganizationsRequest rosreq = new RetrieveOrganizationsRequest(); rosreq.AccessType = EndpointAccessType.Default; rosreq.Release = OrganizationRelease.Current; RetrieveOrganizationsResponse r = (RetrieveOrganizationsResponse)dsp.Execute(rosreq); foreach (var item in r.Details) { Console.WriteLine("Nome " + item.UniqueName); Console.WriteLine("Nome Exibição " + item.FriendlyName); foreach (var endpoint in item.Endpoints) { Console.WriteLine(endpoint.Key); Console.WriteLine(endpoint.Value); } } Console.ReadLine(); }
public static OrganizationDetailCollection GetOrganizations(Settings settings) { var credentials = new ClientCredentials(); if (settings.UseIFD || settings.UseOffice365 || settings.UseOnline) { credentials.UserName.UserName = settings.Username; credentials.UserName.Password = settings.Password; } else { credentials.Windows.ClientCredential = new System.Net.NetworkCredential(settings.Username, settings.Password, settings.Domain); } using (var discoveryProxy = new DiscoveryServiceProxy(settings.GetDiscoveryUri(), null, credentials, null)) { discoveryProxy.Authenticate(); var retrieveOrganizationsRequest = new RetrieveOrganizationsRequest { AccessType = EndpointAccessType.Default, Release = OrganizationRelease.Current }; var retrieveOrganizationsResponse = (RetrieveOrganizationsResponse)discoveryProxy .Execute(retrieveOrganizationsRequest); return(retrieveOrganizationsResponse.Details); } }
static void Descoberta() { Uri local = new Uri("https://disco.crm2.dynamics.com/XRMServices/2011/Discovery.svc"); ClientCredentials clientecred = new ClientCredentials(); clientecred.UserName.UserName = "******"; clientecred.UserName.Password = "******"; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; DiscoveryServiceProxy dsp = new DiscoveryServiceProxy(local, null, clientecred, null); dsp.Authenticate(); RetrieveOrganizationsRequest rosreq = new RetrieveOrganizationsRequest(); rosreq.AccessType = EndpointAccessType.Default; rosreq.Release = OrganizationRelease.Current; RetrieveOrganizationsResponse response = (RetrieveOrganizationsResponse)dsp.Execute(rosreq); foreach (var item in response.Details) { Console.WriteLine("Unique " + item.UniqueName); Console.WriteLine("Friendly " + item.FriendlyName); foreach (var endpoints in item.Endpoints) { Console.WriteLine(endpoints.Key); Console.WriteLine(endpoints.Value); } } }
private static OrganizationDetailCollection DiscoverOrganizations(DiscoveryServiceProxy service) { RetrieveOrganizationsRequest request = new RetrieveOrganizationsRequest(); RetrieveOrganizationsResponse response = (RetrieveOrganizationsResponse)service.Execute(request); return(response.Details); }
internal OrganizationDetail GetOrganizationDetail() { // Retrieve a list of available organizations from the CrmDiscoveryService Web service. RetrieveOrganizationsRequest orgRequest = new RetrieveOrganizationsRequest { UserId = Globals.CrmServiceSettings.DomainName + @"\" + Globals.CrmServiceSettings.Username, Password = Globals.UnwrapSecureString(Globals.CrmServiceSettings.Password) }; // Make request to organization service using global credentials. if (Globals.CrmServiceSettings.DeploymentType == 0) { // _disco.PreAuthenticate = true; //_disco.UnsafeAuthenticatedConnectionSharing = true; _disco.Credentials = new NetworkCredential(Globals.CrmServiceSettings.Username, orgRequest.Password, Globals.CrmServiceSettings.DomainName); } RetrieveOrganizationsResponse orgResponse = (RetrieveOrganizationsResponse)_disco.Execute(orgRequest); // Find the target organization. OrganizationDetail orgInfo = orgResponse.OrganizationDetails.FirstOrDefault(p => p.OrganizationName.ToLower() == Globals.CrmServiceSettings.OrganizationName.ToLower()); // Check whether a matching organization was not found. if (orgInfo == null) { ApplicationException ex = new ApplicationException("The specified organization was not found."); ex.Data.Add("Organization", Globals.CrmServiceSettings.OrganizationName); throw ex; } return(orgInfo); }
/// <summary> /// Gets the organization address for the given organization name. This uses the currently /// configured discovery service. /// </summary> /// <param name="orgName">Name of the organization.</param> /// <returns>The organization's endpoint URI.</returns> private Uri GetOrganizationAddress(string orgName) { Uri endpoint; if (!organizationEndpoints.TryGetValue(orgName, out endpoint)) { lock (syncObj) { if (!organizationEndpoints.TryGetValue(orgName, out endpoint)) { // Obtain information about the organizations that the system user belongs to. var orgRequest = new RetrieveOrganizationsRequest(); var orgResponse = (RetrieveOrganizationsResponse)this.discoveryService.Execute(orgRequest); var org = orgResponse.Details.FirstOrDefault( o => o.UniqueName.Equals(orgName, StringComparison.OrdinalIgnoreCase)); if (org != null) { endpoint = new Uri(org.Endpoints[EndpointType.OrganizationService]); organizationEndpoints[orgName] = endpoint; } else { throw new InvalidOperationException("Organization " + orgName + "does not exist on the server."); } } } } return(endpoint); }
private string GetCurrentOrganizationName(ServerConnection.Configuration serverConfig) { using (_serviceProxy = ServerConnection.GetOrganizationProxy(serverConfig)) { RetrieveOrganizationsRequest orgsRequest = new RetrieveOrganizationsRequest() { AccessType = EndpointAccessType.Default, Release = OrganizationRelease.Current }; RetrieveOrganizationsResponse organizations = (RetrieveOrganizationsResponse)_discoveryProxy.Execute(orgsRequest); foreach (OrganizationDetail organization in organizations.Details) { foreach (var endpoint in organization.Endpoints) { if (endpoint.Value.ToLowerInvariant() == serverConfig.OrganizationUri.ToString().ToLowerInvariant()) { return(organization.FriendlyName); } } } } return(String.Empty); }
public static void Main(string[] args) { try { var crmUrl = ConfigurationManager.AppSettings["CrmUrl"]; var url = new Uri(crmUrl + "/XRMServices/2011/Discovery.svc"); var config = ServiceConfigurationFactory.CreateConfiguration <IDiscoveryService>(url); var credentials = new ClientCredentials(); credentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials; var discoveryService = new DiscoveryServiceProxy(config, credentials); discoveryService.Authenticate(); var request = new RetrieveOrganizationsRequest(); var response = (RetrieveOrganizationsResponse)discoveryService.Execute(request); foreach (var detail in response.Details) { var organizationServiceUrl = detail.Endpoints[EndpointType.OrganizationService]; var organizationName = detail.UniqueName; GetOrganizationInfo(organizationName, organizationServiceUrl); } Console.WriteLine("Press any key to close the window."); Console.ReadKey(); } catch (Exception ex) { Console.WriteLine("Error occured." + Environment.NewLine + ex.ToString()); } }
private OrganizationDetailCollection DiscoverOrganizations() { var request = new RetrieveOrganizationsRequest(); var response = (RetrieveOrganizationsResponse)_service.Execute(request); return(response.Details); }
private OrganizationDetailCollection DiscoverOrganizations(IDiscoveryService service) { RetrieveOrganizationsRequest orgRequest = new RetrieveOrganizationsRequest(); RetrieveOrganizationsResponse orgResponse = (RetrieveOrganizationsResponse)service.Execute(orgRequest); return(orgResponse.Details); }
public static OrganizationDetail[] GetAllOrganizations(this IDiscoveryService service) { var request = new RetrieveOrganizationsRequest(); var response = (RetrieveOrganizationsResponse)service.Execute(request); var details = response.Details.ToArray(); return(details); }
/// <summary> /// Discovers the organizations that the calling user belongs to. /// </summary> /// <param name="service">A Discovery service proxy instance.</param> /// <returns> /// Array containing detailed information on each organization that /// the user belongs to. /// </returns> public OrganizationDetailCollection DiscoverOrganizations(IDiscoveryService service) { if (service == null) throw new ArgumentNullException("service"); var orgRequest = new RetrieveOrganizationsRequest(); var orgResponse = (RetrieveOrganizationsResponse)service.Execute(orgRequest); return orgResponse.Details; }
public OrganizationDetailCollection DiscoverOrganizations(IDiscoveryService service) { if (service == null) throw new ArgumentNullException("service"); RetrieveOrganizationsRequest orgRequest = new RetrieveOrganizationsRequest(); RetrieveOrganizationsResponse orgResponse = (RetrieveOrganizationsResponse)service.Execute(orgRequest); return orgResponse.Details; }
private OrganizationDetailCollection RetrieveOrganizations(ConnectionDetail currentDetail) { WebRequest.GetSystemWebProxy(); var service = CrmConnectionHelper.GetDiscoveryService(currentDetail); var request = new RetrieveOrganizationsRequest(); var response = (RetrieveOrganizationsResponse)service.Execute(request); return(response.Details); }
public static OrganizationDetailCollection GetOrganizations(Settings settings) { var connection = CrmConnection.Parse(settings.GetDiscoveryCrmConnectionString()); var service = new DiscoveryService(connection); var request = new RetrieveOrganizationsRequest(); var response = (RetrieveOrganizationsResponse)service.Execute(request); return(response.Details); }
/// <summary> /// Executa a consulta do DiscoveryService. /// </summary> /// <param name="service">DiscoveryService</param> /// <returns></returns> public OrganizationDetailCollection DiscoverOrganizations(IDiscoveryService service) { if (Organizations == null) { RetrieveOrganizationsRequest orgRequest = new RetrieveOrganizationsRequest(); RetrieveOrganizationsResponse orgResponse = (RetrieveOrganizationsResponse)service.Execute(orgRequest); Organizations = orgResponse.Details; } return(Organizations); }
private OrganizationDetailCollection DiscoverOrganizations(IDiscoveryService service) { if (service == null) { throw new ArgumentNullException("service"); } RetrieveOrganizationsRequest orgRequest = new RetrieveOrganizationsRequest(); RetrieveOrganizationsResponse orgResponse = (RetrieveOrganizationsResponse)service.Execute(orgRequest); return(orgResponse.Details); }
public IEnumerable <OrganizationDetail> GetOrganisations() { var dsp = _crmServiceProvider.GetDiscoveryService(); var orgRequest = new RetrieveOrganizationsRequest(); var orgResponse = dsp.Execute(orgRequest) as RetrieveOrganizationsResponse; if (orgResponse != null) { return(orgResponse.Details); } return(new List <OrganizationDetail>()); }
private static IOrganizationService ConnectToCRM() { #region connect to D365 online var appSettings = ConfigurationManager.AppSettings; if (appSettings["discoveryService"] == null || appSettings["orgService"] == null) { Connection.Result = false; return(null); } Uri dInfo = new Uri(appSettings["discoveryService"]); ClientCredentials clientcred = new ClientCredentials(); if (Connection.UserName == null || Connection.Password == null) { return(null); } clientcred.UserName.UserName = Connection.UserName; clientcred.UserName.Password = Connection.Password; DiscoveryServiceProxy dsp = new DiscoveryServiceProxy(dInfo, null, clientcred, null); try { dsp.Authenticate(); Connection.Result = true; } catch (Exception) { Connection.Result = false; return(null); } RetrieveOrganizationsRequest rosreq = new RetrieveOrganizationsRequest(); RetrieveOrganizationsResponse retieveOrg = (RetrieveOrganizationsResponse)dsp.Execute(rosreq); //get the OrganizationService OrganizationServiceProxy _serviceproxy = new OrganizationServiceProxy(new Uri(appSettings["orgService"]), null, clientcred, null); _serviceproxy.ServiceConfiguration.CurrentServiceEndpoint.EndpointBehaviors.Add(new ProxyTypesBehavior()); _serviceproxy.EnableProxyTypes(); IOrganizationService service = (IOrganizationService)_serviceproxy; foreach (OrganizationDetail o in retieveOrg.Details) { //lblOrg.Text = o.FriendlyName; //WhoAmIResponse whoAMIResponse = (WhoAmIResponse)service.Execute(new Microsoft.Crm.Sdk.Messages.WhoAmIRequest()); //lblUser.Text = whoAMIResponse.UserId.ToString(); break; } #endregion return(service); }
public IEnumerable <OrganizationDetail> GetOrganization() { RetrieveOrganizationsRequest request = new RetrieveOrganizationsRequest(); RetrieveOrganizationsResponse response = (RetrieveOrganizationsResponse)CrmContext.DiscoveryProxy.Execute(request); if (response.Details == null || response.Details.Count == 0) { return(null); } return(response.Details.AsEnumerable()); }
/// <summary> /// Метод получает список организаций на сервере CRM. /// </summary> /// <param name="service">Ссылка на сервис обнаружения CRM.</param> private static void ShowOrganizations(IDiscoveryService service) { var request = new RetrieveOrganizationsRequest { AccessType = EndpointAccessType.Default, Release = OrganizationRelease.Current }; var response = (RetrieveOrganizationsResponse)service.Execute(request); foreach (var organization in response.Details) { Console.WriteLine($"{organization.UniqueName}\t{organization.OrganizationVersion}\t{organization.FriendlyName}"); } }
private async Task <OrganizationDetail> RetrieveOrganizationAsync(ConnectionDetail currentDetail) { if (currentDetail.OrganizationId == null) { return(null); } WebRequest.GetSystemWebProxy(); var service = await CrmConnectionHelper.GetDiscoveryServiceAsync(currentDetail); var request = new RetrieveOrganizationsRequest(); var response = (RetrieveOrganizationsResponse)service.Execute(request); return(response.Details.Where(d => d.OrganizationId == new Guid(currentDetail.OrganizationId)).FirstOrDefault()); }
private void bwResolveNameWorker_DoWork(object sender, DoWorkEventArgs e) { var worker = (BackgroundWorker)sender; CrmConnection connection; try { connection = CrmConnection.Parse(e.Argument.ToString()); } catch { throw new Exception("Invalid connection string!"); } var discoService = new DiscoveryService(connection); var orgRequest = new RetrieveOrganizationsRequest(); var orgResponse = (RetrieveOrganizationsResponse)discoService.Execute(orgRequest); foreach (var org in orgResponse.Details) { worker.ReportProgress(0, "Retrieving users for organization " + org.FriendlyName); var orgData = new OrganizationData { Id = org.OrganizationId, Name = org.UniqueName }; var url = org.Endpoints[EndpointType.OrganizationService]; url = url.Replace("/XRMServices/2011/Organization.svc", ""); var orgService = new OrganizationService(CrmConnection.Parse("Url=" + url)); var users = orgService.RetrieveMultiple(new QueryExpression("systemuser") { ColumnSet = new ColumnSet(new[] { "systemuserid", "fullname" }) }); foreach (var user in users.Entities) { orgData.Users.Add(user.Id, user.GetAttributeValue <string>("fullname")); } oData.Add(orgData); } e.Result = connection.ServiceUri; }
private static string GetOrganizationName(string crmDiscoveryUrl, Guid orgId) { IServiceConfiguration <IDiscoveryService> dinfo = ServiceConfigurationFactory.CreateConfiguration <IDiscoveryService>(GetDiscoveryServiceUri(crmDiscoveryUrl)); var creds = new ClientCredentials(); DiscoveryServiceProxy dsp = new DiscoveryServiceProxy(dinfo, creds); dsp.Authenticate(); RetrieveOrganizationsRequest orgRequest = new RetrieveOrganizationsRequest(); RetrieveOrganizationsResponse orgResponse = dsp.Execute(orgRequest) as RetrieveOrganizationsResponse; if (orgResponse == null || orgResponse.Details == null || orgResponse.Details.Count == 0) { throw new Exception("Organization not found"); } return(orgResponse.Details.First(o => o.OrganizationId == orgId).UrlName); }
private string ResolveCrmOnlineUniqueOrg() { string endpointUri = string.Format("https://disco.{0}/XrmServices/2011/Discovery.svc", ServerName.Remove(0, ServerName.IndexOf('.') + 1)); DiscoveryServiceProxy discoveryProxy = GetProxy <IDiscoveryService, DiscoveryServiceProxy>(new Uri(endpointUri)); discoveryProxy.Execute(new RetrieveOrganizationsRequest()); RetrieveOrganizationsRequest orgRequest = new RetrieveOrganizationsRequest(); RetrieveOrganizationsResponse orgResponse = (RetrieveOrganizationsResponse)discoveryProxy.Execute(orgRequest); var org = orgResponse.Details.FirstOrDefault(d => d.UrlName == OrganizationUrlName); if (org == null) { throw new Exception("Unable to find the organization based on its url name"); } return(org.UniqueName); }
/// <summary> /// Get Passport Tiket /// </summary> /// <param name="login"> /// The login. /// </param> /// <param name="password"> /// The password. /// </param> /// <param name="organizationName"> /// The organization name. /// </param> /// <param name="partner"> /// The partner. /// </param> /// <param name="environment"> /// The environment. /// </param> /// <returns> /// Passport Tiket /// </returns> private CrmCampaignIntegrations.Core.Ticket GetPassportTiket(string login, string password, string organizationName, string partner, string environment) { var disco = new CrmDiscoveryService { Url = String.Format("https://dev.{0}/MSCRMServices/2007/{1}/CrmDiscoveryService.asmx", string.IsNullOrEmpty(partner) ? "crm.dynamics.com" : partner, "Passport") }; var retrievePolicyResponse = (RetrievePolicyResponse)disco.Execute(new RetrievePolicyRequest()); var passportTicket = LiveIdTicketManager.RetrieveTicket(Guid.NewGuid().ToString("N"), Guid.NewGuid().ToString("N"), partner, login, password, retrievePolicyResponse.Policy, LiveIdTicketManager.LiveIdEnvironment.PROD); var retrieveOrganizationsRequest = new RetrieveOrganizationsRequest { PassportTicket = passportTicket }; var retrieveOrganizationsResponse = (RetrieveOrganizationsResponse)disco.Execute(retrieveOrganizationsRequest); string onlineOrganizationName = string.Empty; foreach (OrganizationDetail organizationDetail in retrieveOrganizationsResponse.OrganizationDetails) { if (!organizationDetail.FriendlyName.Equals(organizationName)) { continue; } var detail = organizationDetail; onlineOrganizationName = detail.OrganizationName; } var retrieveCrmTicketRequest = new RetrieveCrmTicketRequest(); retrieveCrmTicketRequest.OrganizationName = onlineOrganizationName; retrieveCrmTicketRequest.PassportTicket = passportTicket; var retrieveCrmTicketResponse = (RetrieveCrmTicketResponse)disco.Execute(retrieveCrmTicketRequest); return(new CrmCampaignIntegrations.Core.Ticket(retrieveCrmTicketResponse.CrmTicket, retrieveCrmTicketResponse.OrganizationDetail.OrganizationName, (AuthenticationType)1, DateTime.Parse(retrieveCrmTicketResponse.ExpirationDate, null, DateTimeStyles.AdjustToUniversal))); }
/// <summary> /// Get organization data for a specific known region only /// </summary> /// <param name="creds"></param> /// <param name="dataCenter"></param> /// <returns></returns> public static List <OrganizationDetail> GetOrganizationsForDataCenter(string userName, string password, DataCenter dataCenter) { if (dataCenter == DataCenter.Unknown) { throw new ArgumentOutOfRangeException("DataCenter.Unknown cannot be used as a parameter for this method."); } //Get the DataCenter URL from the Description Attribute applied for the DataCenter member var type = typeof(DataCenter); var memInfo = type.GetMember(dataCenter.ToString()); var attributes = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false); Uri targeturl = new Uri(((DescriptionAttribute)attributes[0]).Description); var organizations = new List <OrganizationDetail>(); using (var dsvc = new DiscoveryWebProxyClient(targeturl)) { dsvc.HeaderToken = GetAccessToken(userName, password, targeturl); RetrieveOrganizationsRequest orgsRequest = new RetrieveOrganizationsRequest() { AccessType = EndpointAccessType.Default, Release = OrganizationRelease.Current }; try { RetrieveOrganizationsResponse response = (RetrieveOrganizationsResponse)dsvc.Execute(orgsRequest); organizations = response.Details.ToList(); } catch (System.ServiceModel.Security.SecurityAccessDeniedException) { //This error is expected for regions where the user has no organizations } }; return(organizations); }
public OrganizationDetail GetOrganization(string name) { RetrieveOrganizationsRequest request = new RetrieveOrganizationsRequest(); RetrieveOrganizationsResponse response = (RetrieveOrganizationsResponse)CrmContext.DiscoveryProxy.Execute(request); if (response.Details == null || response.Details.Count == 0) { return(null); } OrganizationDetail result = response.Details.SingleOrDefault(o => o.UniqueName.Equals(name, StringComparison.InvariantCultureIgnoreCase)); if (result == null) { result = response.Details.SingleOrDefault(o => o.UrlName.Equals(name, StringComparison.InvariantCultureIgnoreCase)); } if (result == null) { result = response.Details.SingleOrDefault(o => o.FriendlyName.Equals(name, StringComparison.InvariantCultureIgnoreCase)); } return(result); }
private OrganizationServiceProxy GetInfo(DiscoveryServiceProxy serviceProxy) { var orgsRequest = new RetrieveOrganizationsRequest { AccessType = EndpointAccessType.Default, Release = OrganizationRelease.Current }; var orgs = (RetrieveOrganizationsResponse)serviceProxy.Execute(orgsRequest); foreach (var endpoint in orgs.Details[0].Endpoints) { listBox1.Items.Add($" Name: {endpoint.Key}"); listBox1.Items.Add($" URL: {endpoint.Value}"); if (endpoint.Key == EndpointType.OrganizationService) { var orgProxy = new OrganizationServiceProxy(new Uri(endpoint.Value), null, userCred, deviceCred); return(orgProxy); } } return(null); }
public IEnumerable<OrganizationDetail> GetOrganisations() { var dsp = _crmServiceProvider.GetDiscoveryService(); var orgRequest = new RetrieveOrganizationsRequest(); var orgResponse = dsp.Execute(orgRequest) as RetrieveOrganizationsResponse; if (orgResponse != null) { return orgResponse.Details; } return new List<OrganizationDetail>(); }
private OrganizationDetailCollection RetrieveOrganizations(ConnectionDetail currentDetail) { WebRequest.GetSystemWebProxy(); var service = currentDetail.GetDiscoveryService(); var request = new RetrieveOrganizationsRequest(); var response = (RetrieveOrganizationsResponse)service.Execute(request); return response.Details; }
private static string GetOrganizationName(string crmDiscoveryUrl, Guid orgId) { IServiceConfiguration<IDiscoveryService> dinfo = ServiceConfigurationFactory.CreateConfiguration<IDiscoveryService>(GetDiscoveryServiceUri(crmDiscoveryUrl)); var creds = new ClientCredentials(); DiscoveryServiceProxy dsp = new DiscoveryServiceProxy(dinfo, creds); dsp.Authenticate(); RetrieveOrganizationsRequest orgRequest = new RetrieveOrganizationsRequest(); RetrieveOrganizationsResponse orgResponse = dsp.Execute(orgRequest) as RetrieveOrganizationsResponse; if (orgResponse == null || orgResponse.Details == null || orgResponse.Details.Count == 0) { throw new Exception("Organization not found"); } return orgResponse.Details.First(o => o.OrganizationId == orgId).UrlName; }
/// <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 string GetCurrentOrganizationName(ServerConnection.Configuration serverConfig) { using (DiscoveryServiceProxy _discoveryProxy = new DiscoveryServiceProxy(serverConfig.DiscoveryUri, serverConfig.HomeRealmUri, serverConfig.Credentials, serverConfig.DeviceCredentials)) { RetrieveOrganizationsRequest orgsRequest = new RetrieveOrganizationsRequest() { AccessType = EndpointAccessType.Default, Release = OrganizationRelease.Current }; RetrieveOrganizationsResponse organizations = (RetrieveOrganizationsResponse)_discoveryProxy.Execute(orgsRequest); foreach (OrganizationDetail organization in organizations.Details) { foreach (var endpoint in organization.Endpoints) { if (endpoint.Value.ToLowerInvariant() == serverConfig.OrganizationUri.ToString().ToLowerInvariant()) return organization.FriendlyName; } } } return String.Empty; }