protected override void ProcessRecord()
        {
            base.ProcessRecord();

            Logger.LogVerbose("Entering MergeXrmSolution");

            if (AsyncWaitTimeout == 0)
            {
                AsyncWaitTimeout = 15 * 60;
                base.WriteVerbose(string.Format("Setting Default AsyncWaitTimeout: {0}", AsyncWaitTimeout));
            }

            if (SleepInterval == 0)
            {
                SleepInterval = 15;
                base.WriteVerbose(string.Format("Setting Default SleepInterval: {0}", SleepInterval));
            }

            XrmConnectionManager xrmConnection = new XrmConnectionManager(
                Logger);

            IOrganizationService pollingOrganizationService = xrmConnection.Connect(
                ConnectionString,
                120);

            SolutionManager solutionManager = new SolutionManager(
                Logger,
                OrganizationService,
                pollingOrganizationService);

            SolutionApplyResult result = solutionManager.ApplySolution(
                UniqueSolutionName,
                ImportAsync,
                SleepInterval,
                AsyncWaitTimeout);

            if (!result.Success)
            {
                throw new Exception(string.Format("Solution upgrade Failed. Error: {0}", result.ErrorMessage));
            }

            Logger.LogVerbose("Leaving MergeXrmSolution");

            //base.ProcessRecord();

            //base.WriteVerbose(string.Format("Upgrading Solution: {0}", UniqueSolutionName));

            //if (AsyncWaitTimeout == 0)
            //{
            //    AsyncWaitTimeout = 15 * 60;
            //    base.WriteVerbose(string.Format("Setting Default AsyncWaitTimeout: {0}", AsyncWaitTimeout));
            //}

            //if (SleepInterval == 0)
            //{
            //    SleepInterval = 15;
            //    base.WriteVerbose(string.Format("Setting Default SleepInterval: {0}", SleepInterval));
            //}

            //var upgradeSolutionRequest = new DeleteAndPromoteRequest
            //{
            //    UniqueName = UniqueSolutionName
            //};

            //if (ImportAsync)
            //{
            //    var asyncRequest = new ExecuteAsyncRequest
            //    {
            //        Request = upgradeSolutionRequest
            //    };

            //    base.WriteVerbose("Applying using Async Mode");

            //    var asyncResponse = OrganizationService.Execute(asyncRequest) as ExecuteAsyncResponse;

            //    Guid asyncJobId = asyncResponse.AsyncJobId;

            //    base.WriteVerbose(string.Format("Async JobId: {0}", asyncJobId));

            //    WriteObject(asyncJobId);

            //    if (WaitForCompletion)
            //    {
            //        base.WriteVerbose("Waiting for completion");
            //        AwaitCompletion(asyncJobId);
            //    }
            //}
            //else
            //{
            //    OrganizationService.Execute(upgradeSolutionRequest);
            //}

            //base.WriteVerbose(string.Format("{0} Upgrade Completed", UniqueSolutionName));

            //VerifyUpgrade();
        }