private SolutionImportResult VerifySolutionImport( bool importAsync, Guid importJobId, AsyncOperation asyncOperation, Exception syncImportException) { SolutionImportResult result = new SolutionImportResult(); Logger.LogVerbose("Verifying Solution Import"); ImportJobManager jobManager = new ImportJobManager(Logger, OrganizationService); ImportJob importJob = jobManager.GetImportJob( importJobId, new ColumnSet("importjobid", "completedon", "progress", "data")); if (importJob == null) { result.ImportJobAvailable = false; if (importAsync) { result.ErrorMessage = asyncOperation != null ? asyncOperation.Message : ""; } else { result.ErrorMessage = syncImportException != null ? syncImportException.Message : ""; } Logger.LogError("Can't verify as import job couldn't be found. Error Message: {0}", result.ErrorMessage); return(result); } else { result.ImportJobAvailable = true; } if (importJob.Progress == 100) { Logger.LogInformation("Completed Progress: {0}", importJob.Progress); } else { Logger.LogWarning("Completed Progress: {0}", importJob.Progress); } Logger.LogInformation("Completed On: {0}", importJob.CompletedOn); XmlDocument doc = new XmlDocument(); doc.LoadXml(importJob.Data); XmlNode resultNode = doc.SelectSingleNode("//solutionManifest/result/@result"); String solutionImportResult = resultNode != null ? resultNode.Value : null; Logger.LogInformation("Import Result: {0}", solutionImportResult); XmlNode errorNode = doc.SelectSingleNode("//solutionManifest/result/@errortext"); String solutionImportError = errorNode != null ? errorNode.Value : null; Logger.LogInformation("Import Error: {0}", solutionImportError); result.ErrorMessage = solutionImportError; XmlNodeList unprocessedNodes = doc.SelectNodes("//*[@processed=\"false\"]"); result.UnprocessedComponents = unprocessedNodes.Count; if (unprocessedNodes.Count > 0) { Logger.LogWarning("Total number of unprocessed components: {0}", unprocessedNodes.Count); } else { Logger.LogInformation("Total number of unprocessed components: {0}", unprocessedNodes.Count); } if (solutionImportResult == ImportSuccess) { result.Success = true; } return(result); }