Пример #1
0
        /// <summary>
        /// Deletes any entity records that were created for this sample.
        /// <param name="prompt">Indicates whether to prompt the user
        /// to delete the records created in this sample.</param>
        /// </summary>
        public void DeleteRequiredRecords(bool prompt)
        {
            bool toBeDeleted = true;

            if (prompt)
            {
                // Ask the user if the created entities should be deleted.
                Console.Write("\nDo you want these entity records deleted? (y/n) [y]: ");
                String answer = Console.ReadLine();
                if (answer.StartsWith("y") ||
                    answer.StartsWith("Y") ||
                    answer == String.Empty)
                {
                    toBeDeleted = true;
                }
                else
                {
                    toBeDeleted = false;
                }
            }

            if (toBeDeleted)
            {
                // First disable the org
                EntityInstanceId organizationCreated = new EntityInstanceId();
                organizationCreated.Id = _organizationID;
                Microsoft.Xrm.Sdk.Deployment.Organization organization =
                    (Microsoft.Xrm.Sdk.Deployment.Organization)client.Retrieve(
                        DeploymentEntityType.Organization, organizationCreated);

                // Update status to disabled
                organization.State = OrganizationState.Disabled;

                client.Update(organization);
                Console.WriteLine("Organization has been disabled.");

                // Second delete it
                client.Delete(DeploymentEntityType.Organization, organizationCreated);
                Console.WriteLine("Organization has been deleted.");
            }
        }
        /// <summary>
        /// Demonstrates how to use the Deployment Web Service to create an organization 
        /// and poll the status of the job.
        /// </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
            {
                // Connect to the Organization service. 
                // The using statement assures that the service proxy will be properly disposed.
                using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri,serverConfig.Credentials, serverConfig.DeviceCredentials))
                {
                    // This statement is required to enable early-bound type support.
                    _serviceProxy.EnableProxyTypes();

                    CreateRequiredRecords(serverConfig, promptforDelete);

		    //<snippetUseAsyncDeploymentServiceMessages1>
                    // Instantiate DeploymentServiceClient for calling the service.
                    client =
                        ProxyClientHelper.CreateClient(
                        new Uri(serverConfig.DiscoveryUri.ToString()
                            .Replace("Services", "Deployment")
                            .Replace("Discovery", "Deployment")));

                    // Setting credentials from the current security context. 
                    if (serverConfig.Credentials == null)
                    {
                        client.ClientCredentials.Windows.ClientCredential =
                            CredentialCache.DefaultNetworkCredentials;
                    }
                    else
                    {
                        client.ClientCredentials.Windows.ClientCredential =
                            serverConfig.Credentials.Windows.ClientCredential;
                    }

                    using (client)
                    {
                        // Set properties for the new organization
                        Microsoft.Xrm.Sdk.Deployment.Organization organization = 
                            new Microsoft.Xrm.Sdk.Deployment.Organization
                        {
                            BaseCurrencyCode = "USD",
                            BaseCurrencyName = "US Dollar",
                            BaseCurrencyPrecision = 2,
                            BaseCurrencySymbol = "$",
                            BaseLanguageCode = 1033,
                            FriendlyName = _friendlyName,
                            UniqueName = _uniqueName,
                            SqlCollation = "Latin1_General_CI_AI",
                            SqlServerName = _sqlServerName,
                            SrsUrl = _srsUrl,
                            SqmIsEnabled = false
                        };

                        // Create a request for the deployment web service
                        // CRM server app pool must have permissions on SQL server
                        BeginCreateOrganizationRequest request = 
                            new BeginCreateOrganizationRequest
                        {
                            Organization = organization,
                            SysAdminName = _sysAdminName
                        };

                        // Execute the request
                        BeginCreateOrganizationResponse response = 
                            (BeginCreateOrganizationResponse)client.Execute(request);

                        // The operation is asynchronous, so the response object contains
                        // a unique identifier for the operation
                        Guid operationId = response.OperationId;

                        // Retrieve the Operation using the OperationId
                        RetrieveRequest retrieveOperationStatus = new RetrieveRequest();
                        retrieveOperationStatus.EntityType = 
                            DeploymentEntityType.DeferredOperationStatus;
                        retrieveOperationStatus.InstanceTag = 
                            new EntityInstanceId { Id = operationId };

                        RetrieveResponse retrieveResponse;
                        DeferredOperationStatus deferredOperationStatus;

                        Console.WriteLine("Retrieving state of the job...");

                        // Retrieve the Operation State until Organization is created
                        do
                        {
                            // Wait 3 secs to not overload server
                            Thread.Sleep(3000);

                            retrieveResponse =
                            (RetrieveResponse)client.Execute(retrieveOperationStatus);

                            deferredOperationStatus = 
                                ((DeferredOperationStatus)retrieveResponse.Entity);
                        }
                        while (deferredOperationStatus.State != 
                            DeferredOperationState.Processing &&
                            deferredOperationStatus.State != 
                            DeferredOperationState.Completed);

                        // Poll OrganizationStatusRequest
                        RetrieveRequest retrieveReqServer = new RetrieveRequest();
                        retrieveReqServer.EntityType = DeploymentEntityType.Organization;
                        retrieveReqServer.InstanceTag = new EntityInstanceId();
                        retrieveReqServer.InstanceTag.Name = organization.UniqueName;

                        RetrieveResponse retrieveRespServer;
                        OrganizationState orgState;

                        Console.WriteLine("Retrieving state of the organization...");

                        // Retrieve and check the Organization State until is enabled
                        do
                        {
                            retrieveRespServer =
                                (RetrieveResponse)client.Execute(retrieveReqServer);
                            _organizationID = 
                                ((Microsoft.Xrm.Sdk.Deployment.Organization)retrieveRespServer.Entity).Id;
                            orgState =
                                ((Microsoft.Xrm.Sdk.Deployment.Organization)retrieveRespServer.Entity).State;

                            // Wait 5 secs to not overload server
                            Thread.Sleep(5000);
                        }
                        while (orgState != OrganizationState.Enabled);

                        Console.WriteLine("Organization has been created!");

         		    //</snippetUseAsyncDeploymentServiceMessages1>
                        DeleteRequiredRecords(promptforDelete);

                    }
                }
            }

            // Catch any service fault exceptions that Microsoft Dynamics CRM throws.
            catch (FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault>)
            {
                // You can handle an exception here or pass it back to the calling method.
                throw;
            }
        }
        /// <summary>
        /// This method first connects to the Deployment service. Then,
        /// a variety of messages are used to retrieve deployment information.
        /// </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
            {
                //<snippetUseDeploymentServiceMessages1>
                // Connect to the Organization service.
                // The using statement assures that the service proxy will be properly disposed.
                using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri, serverConfig.Credentials, serverConfig.DeviceCredentials))
                {
                    // This statement is required to enable early-bound type support.
                    _serviceProxy.EnableProxyTypes();

                    // Instantiate DeploymentServiceClient for calling the service.
                    DeploymentServiceClient serviceClient =
                        Deployment.Proxy.ProxyClientHelper.CreateClient(
                            new Uri(serverConfig.DiscoveryUri.ToString()
                                    .Replace("Services", "Deployment")
                                    .Replace("Discovery", "Deployment")));

                    // Setting credentials from the current security context.
                    if (serverConfig.Credentials == null)
                    {
                        serviceClient.ClientCredentials.Windows.ClientCredential =
                            CredentialCache.DefaultNetworkCredentials;
                    }
                    else
                    {
                        serviceClient.ClientCredentials.Windows.ClientCredential =
                            serverConfig.Credentials.Windows.ClientCredential;
                    }

                    // Retrieve all deployed instances of Microsoft Dynamics CRM.
                    var organizations =
                        serviceClient.RetrieveAll(DeploymentEntityType.Organization);

                    // Print list of all retrieved organizations.
                    Console.WriteLine("Organizations in your deployment");
                    Console.WriteLine("================================");
                    foreach (var organization in organizations)
                    {
                        Console.WriteLine(organization.Name);
                    }
                    Console.WriteLine("<End of Listing>");
                    Console.WriteLine();


                    // Retrieve details of first organization from previous call.
                    Deployment.Organization deployment =
                        (Deployment.Organization)serviceClient.Retrieve(
                            DeploymentEntityType.Organization,
                            organizations[0]);

                    // Print out retrieved details about your organization.
                    Console.WriteLine(String.Format(
                                          "Selected deployment details for {0}",
                                          serverConfig.OrganizationName));
                    Console.WriteLine("=========================================");
                    Console.Write("Friendly Name: ");
                    Console.WriteLine(deployment.FriendlyName);
                    Console.Write("Unique Name: ");
                    Console.WriteLine(deployment.UniqueName);
                    Console.Write("Organization Version: ");
                    Console.WriteLine(deployment.Version);
                    Console.Write("SQL Server Name: ");
                    Console.WriteLine(deployment.SqlServerName);
                    Console.Write("SRS URL: ");
                    Console.WriteLine(deployment.SrsUrl);
                    Console.WriteLine("<End of Listing>");
                    Console.WriteLine();

                    // Retrieve license and user information for your organization.
                    TrackLicenseRequest  licenseRequest  = new TrackLicenseRequest();
                    TrackLicenseResponse licenseResponse =
                        (TrackLicenseResponse)serviceClient.Execute(licenseRequest);

                    // Print out the number of servers and the user list.
                    Console.WriteLine(String.Format(
                                          "License and user information for {0}",
                                          serverConfig.OrganizationName));
                    Console.WriteLine("=========================================");
                    Console.Write("Number of servers: ");
                    Console.WriteLine(licenseResponse.Servers != null
                        ? licenseResponse.Servers.Count.ToString()
                        : "null");
                    Console.WriteLine("Users:");
                    foreach (OrganizationUserInfo user in licenseResponse.Users.ToArray())
                    {
                        Console.WriteLine(user.FullName);
                    }
                    Console.WriteLine("<End of Listing>");
                    Console.WriteLine();

                    // Retrieve advanced settings for your organization.
                    // Note that the columnset must contain at least one column. Setting
                    // AllColumns to true results in an error.
                    RetrieveAdvancedSettingsRequest request =
                        new RetrieveAdvancedSettingsRequest
                    {
                        ConfigurationEntityName = "Server",
                        ColumnSet = new ColumnSet(
                            new string[] { "Id", "FullName", "Name", "Roles", "State", "Version" })
                    };
                    ConfigurationEntity configuration =
                        ((RetrieveAdvancedSettingsResponse)serviceClient.Execute(request)).Entity;

                    // Print out all advanced settings where IsWritable==true.
                    Console.WriteLine("Advanced deployment settings that can be updated");
                    Console.WriteLine("================================================");
                    foreach (var setting in configuration.Attributes)
                    {
                        if (setting.Key != "Id")
                        {
                            Console.WriteLine(
                                String.Format("{0}: {1}",
                                              setting.Key,
                                              setting.Value));
                        }
                    }
                    Console.WriteLine("<End of Listing>");
                    Console.WriteLine();
                }
                //</snippetUseDeploymentServiceMessages1>
            }

            // Catch any service fault exceptions that Microsoft Dynamics CRM throws.
            catch (FaultException <Microsoft.Xrm.Sdk.OrganizationServiceFault> )
            {
                // You can handle an exception here or pass it back to the calling method.
                throw;
            }
        }
Пример #4
0
        /// <summary>
        /// Demonstrates how to use the Deployment Web Service to create an organization
        /// and poll the status of the job.
        /// </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
            {
                // Connect to the Organization service.
                // The using statement assures that the service proxy will be properly disposed.
                using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri, serverConfig.Credentials, serverConfig.DeviceCredentials))
                {
                    // This statement is required to enable early-bound type support.
                    _serviceProxy.EnableProxyTypes();

                    CreateRequiredRecords(serverConfig, promptforDelete);

                    // Instantiate DeploymentServiceClient for calling the service.
                    client =
                        ProxyClientHelper.CreateClient(
                            new Uri(serverConfig.DiscoveryUri.ToString()
                                    .Replace("Services", "Deployment")
                                    .Replace("Discovery", "Deployment")));

                    // Setting credentials from the current security context.
                    if (serverConfig.Credentials == null)
                    {
                        client.ClientCredentials.Windows.ClientCredential =
                            CredentialCache.DefaultNetworkCredentials;
                    }
                    else
                    {
                        client.ClientCredentials.Windows.ClientCredential =
                            serverConfig.Credentials.Windows.ClientCredential;
                    }

                    using (client)
                    {
                        // Set properties for the new organization
                        Microsoft.Xrm.Sdk.Deployment.Organization organization =
                            new Microsoft.Xrm.Sdk.Deployment.Organization
                        {
                            BaseCurrencyCode      = "USD",
                            BaseCurrencyName      = "US Dollar",
                            BaseCurrencyPrecision = 2,
                            BaseCurrencySymbol    = "$",
                            BaseLanguageCode      = 1033,
                            FriendlyName          = _friendlyName,
                            UniqueName            = _uniqueName,
                            SqlCollation          = "Latin1_General_CI_AI",
                            SqlServerName         = _sqlServerName,
                            SrsUrl       = _srsUrl,
                            SqmIsEnabled = false
                        };

                        // Create a request for the deployment web service
                        // CRM server app pool must have permissions on SQL server
                        BeginCreateOrganizationRequest request =
                            new BeginCreateOrganizationRequest
                        {
                            Organization = organization,
                            SysAdminName = _sysAdminName
                        };

                        // Execute the request
                        BeginCreateOrganizationResponse response =
                            (BeginCreateOrganizationResponse)client.Execute(request);

                        // The operation is asynchronous, so the response object contains
                        // a unique identifier for the operation
                        Guid operationId = response.OperationId;

                        // Retrieve the Operation using the OperationId
                        RetrieveRequest retrieveOperationStatus = new RetrieveRequest();
                        retrieveOperationStatus.EntityType =
                            DeploymentEntityType.DeferredOperationStatus;
                        retrieveOperationStatus.InstanceTag =
                            new EntityInstanceId {
                            Id = operationId
                        };

                        RetrieveResponse        retrieveResponse;
                        DeferredOperationStatus deferredOperationStatus;

                        Console.WriteLine("Retrieving state of the job...");

                        // Retrieve the Operation State until Organization is created
                        do
                        {
                            // Wait 3 secs to not overload server
                            Thread.Sleep(3000);

                            retrieveResponse =
                                (RetrieveResponse)client.Execute(retrieveOperationStatus);

                            deferredOperationStatus =
                                ((DeferredOperationStatus)retrieveResponse.Entity);
                        }while (deferredOperationStatus.State !=
                                DeferredOperationState.Processing &&
                                deferredOperationStatus.State !=
                                DeferredOperationState.Completed);

                        // Poll OrganizationStatusRequest
                        RetrieveRequest retrieveReqServer = new RetrieveRequest();
                        retrieveReqServer.EntityType       = DeploymentEntityType.Organization;
                        retrieveReqServer.InstanceTag      = new EntityInstanceId();
                        retrieveReqServer.InstanceTag.Name = organization.UniqueName;

                        RetrieveResponse  retrieveRespServer;
                        OrganizationState orgState;

                        Console.WriteLine("Retrieving state of the organization...");

                        // Retrieve and check the Organization State until is enabled
                        do
                        {
                            retrieveRespServer =
                                (RetrieveResponse)client.Execute(retrieveReqServer);
                            _organizationID =
                                ((Microsoft.Xrm.Sdk.Deployment.Organization)retrieveRespServer.Entity).Id;
                            orgState =
                                ((Microsoft.Xrm.Sdk.Deployment.Organization)retrieveRespServer.Entity).State;

                            // Wait 5 secs to not overload server
                            Thread.Sleep(5000);
                        }while (orgState != OrganizationState.Enabled);

                        Console.WriteLine("Organization has been created!");

                        DeleteRequiredRecords(promptforDelete);
                    }
                }
            }

            // Catch any service fault exceptions that Microsoft Dynamics CRM throws.
            catch (FaultException <Microsoft.Xrm.Sdk.OrganizationServiceFault> )
            {
                // You can handle an exception here or pass it back to the calling method.
                throw;
            }
        }
        private void CreateOrganization()
        {
            if (string.IsNullOrWhiteSpace(this.DeploymentUrl) || !Uri.IsWellFormedUriString(this.DeploymentUrl, UriKind.Absolute))
            {
                Log.LogError(string.Format(CultureInfo.CurrentCulture, "The Deployment service URL is not valid. {0}", this.DeploymentUrl));
                return;
            }

            if (string.IsNullOrWhiteSpace(this.Name))
            {
                Log.LogError("Missing required parameter: Name");
                return;
            }

            if (string.IsNullOrWhiteSpace(this.DisplayName))
            {
                Log.LogError("Missing required parameter: Display Name");
                return;
            }

            if (string.IsNullOrWhiteSpace(this.SqlServerInstance))
            {
                Log.LogError("Missing required parameter: Sql Server Instance");
                return;
            }

            if (string.IsNullOrWhiteSpace(this.SsrsUrl) || !Uri.IsWellFormedUriString(this.SsrsUrl, UriKind.Absolute))
            {
                Log.LogError(string.Format(CultureInfo.CurrentCulture, "The Sql Server Reporting Service URL is not valid. {0}", this.SsrsUrl));
                return;
            }

            Log.LogMessage(MessageImportance.Normal, string.Format(CultureInfo.CurrentCulture, "Connecting to the deployment service {0}.", this.DeploymentUrl));
            using (var service = ProxyClientHelper.CreateClient(new Uri(this.DeploymentUrl)))
            {
                var newOrganization = new Microsoft.Xrm.Sdk.Deployment.Organization
                {
                    FriendlyName = this.DisplayName,
                    UniqueName = this.Name,
                    SqlServerName = this.SqlServerInstance,
                    SrsUrl = this.SsrsUrl
                };

                try
                {
                    var request = new BeginCreateOrganizationRequest
                    {
                        Organization = newOrganization
                    };

                    var response = service.Execute(request) as BeginCreateOrganizationResponse;
                    if (response == null)
                    {
                        Log.LogError(string.Format(CultureInfo.CurrentCulture, "No response was received while creating Organization {0}", this.Name));
                        return;
                    }

                    var operationId = new EntityInstanceId
                    {
                        Id = response.OperationId
                    };

                    int waitCount = 0;
                    var organizationCreationStatus = service.Retrieve(DeploymentEntityType.DeferredOperationStatus, operationId) as DeferredOperationStatus;

                    // Wait for the organization to be created. Checking the stauts repeatedly
                    while (organizationCreationStatus != null && 
                        (organizationCreationStatus.State == DeferredOperationState.Processing || organizationCreationStatus.State == DeferredOperationState.Queued))
                    {
                        Thread.Sleep(WaitIntervalInMilliseconds);
                        Log.LogMessage(MessageImportance.High, "Processing...");
                        organizationCreationStatus = service.Retrieve(DeploymentEntityType.DeferredOperationStatus, operationId) as DeferredOperationStatus;
                        if (++waitCount > this.Timeout)
                        {
                            break;
                        }
                    }

                    if (waitCount >= this.Timeout)
                    {
                        Log.LogMessage(MessageImportance.High, string.Format(CultureInfo.CurrentCulture, "Your request for creation of Organization {0} is still being processed but the task has exceeded its timeout value of {1} minutes.", this.Name, this.Timeout));
                    }
                    else
                    {
                        Log.LogMessage(MessageImportance.High, string.Format(CultureInfo.CurrentCulture, "The Organization {0} was created successfully.", this.Name));
                    }
                }
                catch (Exception exception)
                {
                    Log.LogError(string.Format(CultureInfo.CurrentCulture, "An error occurred while creating Organization  {0}. [{1}]", this.Name, exception.Message));
                }
            }
        }
Пример #6
0
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            connection = cm.MSCRMConnections[comboBoxSource.SelectedIndex];
            LogManager.WriteLog("Loading Server Settings.");
            toolStripStatusLabel1.Text = "";
            try
            {
                string deploymentURI = connection.ServerAddress.Replace(connection.OrganizationName + "/", "") + "XRMDeployment/2011/Deployment.svc";
                serviceClient = Microsoft.Xrm.Sdk.Deployment.Proxy.ProxyClientHelper.CreateClient(new Uri(deploymentURI));
                serviceClient.ClientCredentials.Windows.ClientCredential.UserName = connection.UserName;
                serviceClient.ClientCredentials.Windows.ClientCredential.Password = connection.Password;

                // Retrieve all deployed instances of Microsoft Dynamics CRM.
                var organizations = serviceClient.RetrieveAll(DeploymentEntityType.Organization);

                Microsoft.Xrm.Sdk.Deployment.EntityInstanceId currentOrganization = null;
                foreach (var organization in organizations)
                {
                    if (organization.Name.ToLower() == connection.OrganizationName.ToLower())
                    {
                        currentOrganization = organization;
                    }
                }

                RetrieveAdvancedSettingsRequest request = new RetrieveAdvancedSettingsRequest()
                {
                    ConfigurationEntityName = "Deployment",
                    ColumnSet = new ColumnSet()
                };

                ConfigurationEntity ce = ((RetrieveAdvancedSettingsResponse)serviceClient.Execute(request)).Entity;

                foreach (var setting in ce.Attributes)
                {
                    if (setting.Key == "AggregateQueryRecordLimit")
                    {
                        numericUpDownAggregateQueryRecordLimit.Text = setting.Value.ToString();
                    }
                    else if (setting.Key == "AutomaticallyInstallDatabaseUpdates")
                    {
                        checkBoxAutomaticallyInstallDatabaseUpdates.Checked = (bool)setting.Value;
                    }
                    else if (setting.Key == "AutomaticallyReprovisionLanguagePacks")
                    {
                        checkBoxAutomaticallyReprovisionLanguagePacks.Checked = (bool)setting.Value;
                    }
                }

                // Retrieve details of first organization from previous call.
                Microsoft.Xrm.Sdk.Deployment.Organization deployment =
                    (Microsoft.Xrm.Sdk.Deployment.Organization)serviceClient.Retrieve(
                        DeploymentEntityType.Organization,
                        currentOrganization);

                // Print out retrieved details about your organization.
                string organizationProperties = "";
                organizationProperties += "Friendly Name: " + deployment.FriendlyName + "\r\n";
                organizationProperties += "Unique Name: " + deployment.UniqueName + "\r\n";
                organizationProperties += "Organization Version: " + deployment.Version + "\r\n";
                organizationProperties += "SQL Server Name: " + deployment.SqlServerName + "\r\n";
                organizationProperties += "SRS URL: " + deployment.SrsUrl + "\r\n";
                organizationProperties += "Base Currency Code: " + deployment.BaseCurrencyCode + "\r\n";
                organizationProperties += "Base Currency Name: " + deployment.BaseCurrencyName + "\r\n";
                organizationProperties += "Base Currency Precision: " + deployment.BaseCurrencyPrecision + "\r\n";
                organizationProperties += "Base Currency Symbol: " + deployment.BaseCurrencySymbol + "\r\n";
                organizationProperties += "Base Language Code: " + deployment.BaseLanguageCode + "\r\n";
                organizationProperties += "Database Name: " + deployment.DatabaseName + "\r\n";
                organizationProperties += "Sql Collation: " + deployment.SqlCollation + "\r\n";
                organizationProperties += "Sqm Is Enabled: " + deployment.SqmIsEnabled + "\r\n";
                organizationProperties += "State: " + deployment.State + "\r\n";

                textBoxOrganizationProperties.Text = organizationProperties;

                // Retrieve license and user information for your organization.
                TrackLicenseRequest  licenseRequest  = new TrackLicenseRequest();
                TrackLicenseResponse licenseResponse = (TrackLicenseResponse)serviceClient.Execute(licenseRequest);

                // Print out the number of servers and the user list.
                string licenseanduserinformation = "Number of servers: ";
                licenseanduserinformation += licenseResponse.NumberOfServers.HasValue ? licenseResponse.NumberOfServers.Value.ToString() : "null";
                licenseanduserinformation += "\r\n";
                licenseanduserinformation += "Users:\r\n";
                foreach (String user in licenseResponse.UsersList)
                {
                    licenseanduserinformation += user + "\r\n";
                }
                textBoxLicenceanduserinformation.Text = licenseanduserinformation;

                // Retrieve server settings for your organization.
                RetrieveAdvancedSettingsRequest requestServerSettings =
                    new RetrieveAdvancedSettingsRequest
                {
                    ConfigurationEntityName = "ServerSettings",
                    ColumnSet = new ColumnSet(false)
                };
                ConfigurationEntity configuration = ((RetrieveAdvancedSettingsResponse)serviceClient.Execute(requestServerSettings)).Entity;

                // Print out all advanced settings where IsWritable==true.
                foreach (var setting in configuration.Attributes)
                {
                    if (setting.Key != "Id")
                    {
                        if (setting.Key == "DisableUserInfoClaim")
                        {
                            checkBoxDisableUserInfoClaim.Checked = (bool)setting.Value;
                        }
                        else if (setting.Key == "MaxExpandCount")
                        {
                            numericUpDownMaxExpandCount.Text = setting.Value.ToString();
                        }
                        else if (setting.Key == "MaxResultsPerCollection")
                        {
                            numericUpDownMaxResultsPerCollection.Text = setting.Value.ToString();
                        }
                        else if (setting.Key == "NlbEnabled")
                        {
                            checkBoxNlbEnabled.Checked = (bool)setting.Value;
                        }
                        else if (setting.Key == "PostponeAppFabricRequestsInMinutes")
                        {
                            numericUpDownPostponeAppFabricRequestsInMinutes.Text = setting.Value.ToString();
                        }
                        else if (setting.Key == "PostViaExternalRouter")
                        {
                            checkBoxPostViaExternalRouter.Checked = (bool)setting.Value;
                        }
                        else if (setting.Key == "SslHeader")
                        {
                            textBoxSslHeader.Text = setting.Value.ToString();
                        }
                    }
                }

                toolStripStatusLabel1.Text = connection.OrganizationName + " deployment properties were successfully loaded.";
            }
            catch (FaultException <Microsoft.Xrm.Sdk.OrganizationServiceFault> ex)
            {
                //string url = connection.ServerAddress + "main.aspx?pagetype=entityrecord&etn=eaf_contrat_client&id=" + entity.Id.ToString();
                LogManager.WriteLog("Error: " + ex.Detail.Message + "\n" + ex.Detail.TraceText);
                MessageBox.Show("Error: " + ex.Detail.Message + "\n" + ex.Detail.TraceText);
            }
            catch (Exception ex)
            {
                if (ex.InnerException != null)
                {
                    LogManager.WriteLog("Error:" + ex.Message);
                    MessageBox.Show("Error:" + ex.Message + "\n" + ex.InnerException.Message);
                }
                else
                {
                    LogManager.WriteLog("Error:" + ex.Message);
                    MessageBox.Show("Error:" + ex.Message);
                }
            }
        }
Пример #7
0
        private void CreateOrganization()
        {
            if (string.IsNullOrWhiteSpace(this.DeploymentUrl) || !Uri.IsWellFormedUriString(this.DeploymentUrl, UriKind.Absolute))
            {
                Log.LogError(string.Format(CultureInfo.CurrentCulture, "The Deployment service URL is not valid. {0}", this.DeploymentUrl));
                return;
            }

            if (string.IsNullOrWhiteSpace(this.Name))
            {
                Log.LogError("Missing required parameter: Name");
                return;
            }

            if (string.IsNullOrWhiteSpace(this.DisplayName))
            {
                Log.LogError("Missing required parameter: Display Name");
                return;
            }

            if (string.IsNullOrWhiteSpace(this.SqlServerInstance))
            {
                Log.LogError("Missing required parameter: Sql Server Instance");
                return;
            }

            if (string.IsNullOrWhiteSpace(this.SsrsUrl) || !Uri.IsWellFormedUriString(this.SsrsUrl, UriKind.Absolute))
            {
                Log.LogError(string.Format(CultureInfo.CurrentCulture, "The Sql Server Reporting Service URL is not valid. {0}", this.SsrsUrl));
                return;
            }

            Log.LogMessage(MessageImportance.Normal, string.Format(CultureInfo.CurrentCulture, "Connecting to the deployment service {0}.", this.DeploymentUrl));
            using (var service = ProxyClientHelper.CreateClient(new Uri(this.DeploymentUrl)))
            {
                var newOrganization = new Microsoft.Xrm.Sdk.Deployment.Organization
                {
                    FriendlyName  = this.DisplayName,
                    UniqueName    = this.Name,
                    SqlServerName = this.SqlServerInstance,
                    SrsUrl        = this.SsrsUrl
                };

                try
                {
                    var request = new BeginCreateOrganizationRequest
                    {
                        Organization = newOrganization
                    };

                    var response = service.Execute(request) as BeginCreateOrganizationResponse;
                    if (response == null)
                    {
                        Log.LogError(string.Format(CultureInfo.CurrentCulture, "No response was received while creating Organization {0}", this.Name));
                        return;
                    }

                    var operationId = new EntityInstanceId
                    {
                        Id = response.OperationId
                    };

                    int waitCount = 0;
                    var organizationCreationStatus = service.Retrieve(DeploymentEntityType.DeferredOperationStatus, operationId) as DeferredOperationStatus;

                    // Wait for the organization to be created. Checking the stauts repeatedly
                    while (organizationCreationStatus != null &&
                           (organizationCreationStatus.State == DeferredOperationState.Processing || organizationCreationStatus.State == DeferredOperationState.Queued))
                    {
                        Thread.Sleep(WaitIntervalInMilliseconds);
                        Log.LogMessage(MessageImportance.High, "Processing...");
                        organizationCreationStatus = service.Retrieve(DeploymentEntityType.DeferredOperationStatus, operationId) as DeferredOperationStatus;
                        if (++waitCount > this.Timeout)
                        {
                            break;
                        }
                    }

                    if (waitCount >= this.Timeout)
                    {
                        Log.LogMessage(MessageImportance.High, string.Format(CultureInfo.CurrentCulture, "Your request for creation of Organization {0} is still being processed but the task has exceeded its timeout value of {1} minutes.", this.Name, this.Timeout));
                    }
                    else
                    {
                        Log.LogMessage(MessageImportance.High, string.Format(CultureInfo.CurrentCulture, "The Organization {0} was created successfully.", this.Name));
                    }
                }
                catch (Exception exception)
                {
                    Log.LogError(string.Format(CultureInfo.CurrentCulture, "An error occurred while creating Organization  {0}. [{1}]", this.Name, exception.Message));
                }
            }
        }