예제 #1
0
        /// <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;
        }
예제 #3
0
        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);
            }
        }
예제 #5
0
        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);
        }
예제 #7
0
        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);
        }
예제 #8
0
        /// <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);
        }
예제 #9
0
        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);
        }
예제 #10
0
        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());
            }
        }
예제 #11
0
        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);
        }
예제 #13
0
        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;
        }
예제 #15
0
        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;
        }
예제 #16
0
        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);
        }
예제 #17
0
        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);
        }
예제 #18
0
        /// <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);
        }
예제 #20
0
        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());
        }
예제 #23
0
        /// <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}");
            }
        }
예제 #24
0
        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());
        }
예제 #25
0
        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;
        }
예제 #26
0
        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)));
        }
예제 #29
0
        /// <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);
        }
예제 #31
0
        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);
        }
예제 #32
0
 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>();
 }
예제 #33
0
        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;
        }
예제 #35
0
        /// <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;
            }
        }
예제 #36
0
        /// <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;
        }