Beispiel #1
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);
        }
        private static IOrganizationService Connect()
        {
            var config = _configurationService.Get <XrmClientConfiguration>();


            Uri dInfo = new Uri(config.XrmUri);
            ClientCredentials clientcred = new ClientCredentials();

            clientcred.UserName.UserName = config.XrmClientCredUserName;
            clientcred.UserName.Password = config.XrmClientCredPassword;


            #region on-premise/online

            DiscoveryServiceProxy dsp = new DiscoveryServiceProxy(dInfo, null, clientcred, null);
            dsp.Authenticate();
            RetrieveOrganizationsRequest  rosreq = new Microsoft.Xrm.Sdk.Discovery.RetrieveOrganizationsRequest();
            RetrieveOrganizationsResponse r      = (RetrieveOrganizationsResponse)dsp.Execute(rosreq);

            //get the OrganizationService
            ManagedTokenOrganizationServiceProxy _serviceproxy = new ManagedTokenOrganizationServiceProxy(new Uri(config.XrmOrgServiceProxy), clientcred);
            //In order to use the generated types when dealing with the organization service, you have to add the ProxyTypesBehavior to the endpoint Behaviors collection. This instructs the OrganizationServiceProxy to look in the assembly for classes with certain attributes to use. The generated classes are already attributed with these attributes. Simply, this makes all interactions with the organization service to be done using the generated typed classes for each entity instead of the generic Entity class we used earlier.
            _serviceproxy.ServiceConfiguration.CurrentServiceEndpoint.EndpointBehaviors.Add(new ProxyTypesBehavior());
            //Do not forget to include _serviceproxy.EnableProxyTypes();. Without this line,you will be unable to use early binding.
            _serviceproxy.EnableProxyTypes();
            IOrganizationService service = (IOrganizationService)_serviceproxy;

            #endregion
            return(service);
        }
Beispiel #3
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);
        }
Beispiel #5
0
        public OrganizationDetailCollection DiscoverOrganizations()
        {
            RetrieveOrganizationsRequest  request  = new RetrieveOrganizationsRequest();
            RetrieveOrganizationsResponse response = (RetrieveOrganizationsResponse)_service.Execute(request);

            return(response.Details);
        }
Beispiel #6
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();
        }
        /// <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)
        {
            if (service == null)
            {
                throw new AdapterException(string.Format(CultureInfo.CurrentCulture, Resources.ParamterNullExceptionMessage), new ArgumentNullException("service"))
                      {
                          ExceptionId = AdapterException.SystemExceptionGuid
                      };
            }

            RetrieveOrganizationsResponse orgResponse = null;

            try
            {
                orgResponse = (RetrieveOrganizationsResponse)service.Execute(new RetrieveOrganizationsRequest());
            }
            catch (SecurityNegotiationException ex)
            {
                throw new AdapterException(string.Format(CultureInfo.CurrentCulture, ex.InnerException != null ? ex.InnerException.Message : ex.Message), ex)
                      {
                          ExceptionId = AdapterException.SystemExceptionGuid
                      };
            }

            return(orgResponse != null ? orgResponse.Details : null);
        }
Beispiel #8
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);
        }
        /// <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)
        {
            RetrieveOrganizationsRequest  orgRequest  = new RetrieveOrganizationsRequest();
            RetrieveOrganizationsResponse orgResponse =
                (RetrieveOrganizationsResponse)service.Execute(orgRequest);

            return(orgResponse.Details);
        }
 //</snippetAuthenticateWithNoHelp2>
 /// <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");
     RetrieveOrganizationsRequest orgRequest = new RetrieveOrganizationsRequest();
     RetrieveOrganizationsResponse orgResponse =
         (RetrieveOrganizationsResponse)service.Execute(orgRequest);
     return orgResponse.Details;
 }
        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());
        }
Beispiel #13
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 Microsoft.Xrm.Sdk.Discovery.OrganizationDetailCollection DiscoverOrganizations(
            Microsoft.Xrm.Sdk.Discovery.IDiscoveryService service)
        {
            if (service == null)
            {
                throw new ArgumentNullException("service");
            }
            RetrieveOrganizationsRequest  orgRequest  = new RetrieveOrganizationsRequest();
            RetrieveOrganizationsResponse orgResponse =
                (RetrieveOrganizationsResponse)service.Execute(orgRequest);

            return(orgResponse.Details);
        }
Beispiel #14
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);
        }
Beispiel #16
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);
        }
Beispiel #18
0
        public static OrganizationInfo GetOrganizations(string DiscoverServiceURL, string UserName, string Password)
        {
            ClientCredentials credentials = new ClientCredentials();

            credentials.UserName.UserName = UserName;
            credentials.UserName.Password = Password;

            using (var discoveryProxy = new DiscoveryServiceProxy(new Uri(DiscoverServiceURL), null, credentials, null))
            {
                discoveryProxy.Authenticate();

                // Get all Organizations using Discovery Service

                RetrieveOrganizationsRequest retrieveOrganizationsRequest = new RetrieveOrganizationsRequest()
                {
                    AccessType = EndpointAccessType.Default,
                    Release    = OrganizationRelease.Current
                };

                RetrieveOrganizationsResponse retrieveOrganizationsResponse =
                    (RetrieveOrganizationsResponse)discoveryProxy.Execute(retrieveOrganizationsRequest);

                if (retrieveOrganizationsResponse.Details.Count > 0)
                {
                    var orgs = new List <String>();
                    OrganizationInfo OrgInfo             = new OrganizationInfo();
                    List <string>    FriendlyName        = new List <string>();
                    List <Guid>      OrganizationId      = new List <Guid>();
                    List <string>    OrganizationVersion = new List <string>();
                    List <string>    State                   = new List <string>();
                    List <string>    UniqueName              = new List <string>();
                    List <string>    URlName                 = new List <string>();
                    List <string>    WebApplication          = new List <string>();
                    List <string>    OrganizationService     = new List <string>();
                    List <string>    OrganizationDataService = new List <string>();

                    foreach (OrganizationDetail orgInfo in retrieveOrganizationsResponse.Details)
                    {
                        FriendlyName.Add(orgInfo.FriendlyName);
                        OrganizationId.Add(orgInfo.OrganizationId);
                        OrganizationVersion.Add(orgInfo.OrganizationVersion);
                        State.Add(orgInfo.State.ToString());
                        UniqueName.Add(orgInfo.UniqueName);
                        WebApplication.Add(orgInfo.Endpoints[EndpointType.WebApplication]);
                        OrganizationService.Add(orgInfo.Endpoints[EndpointType.OrganizationService]);
                        OrganizationDataService.Add(orgInfo.Endpoints[EndpointType.OrganizationDataService]);
                        URlName.Add(orgInfo.UrlName);
                    }
                    OrgInfo.FriendlyName        = FriendlyName;
                    OrgInfo.OrganizationId      = OrganizationId;
                    OrgInfo.OrganizationVersion = OrganizationVersion;
                    OrgInfo.State                   = State;
                    OrgInfo.UniqueName              = UniqueName;
                    OrgInfo.WebApplication          = WebApplication;
                    OrgInfo.OrganizationService     = OrganizationService;
                    OrgInfo.OrganizationDataService = OrganizationDataService;
                    OrgInfo.URlName                 = URlName;
                    return(OrgInfo);
                }
                else
                {
                    return(null);
                }
            }
        }
Beispiel #19
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;
            }
        }