private void ProgressReport(object importId) { var options = new ProgressBarOptions { ProgressCharacter = '_', ProgressBarOnBottom = false }; var pbar = new ProgressBar(100, $"\t Import Job Id : {importId}\t Connected : {CdsClient.ConnectedOrgFriendlyName}", options); while (true) { try { var job = CdsClient.Retrieve("importjob", (Guid)importId, new ColumnSet("solutionname", "progress", "completedon")); var progress = Convert.ToDecimal(job["progress"]); var completed = job.Attributes.ContainsKey("completedon") ? job["completedon"] : null; pbar.Tick(Convert.ToInt32(job["progress"])); if (progress == 100 || completed != null) { return; } } catch (Exception ex) { pbar.WriteLine(ex.Message); } Thread.Sleep(1000); } }
private void ImportSolution() { var solutionFilePath = $@"{_solutionSettings.SolutionExportDirectory}{_solutionSettings.SolutionName}.zip"; var data = File.ReadAllBytes(solutionFilePath); var importId = Guid.NewGuid(); Console.WriteLine("Importing unmanged solution {0} to environment {1}.", _solutionSettings.SolutionName, CdsClient.ConnectedOrgFriendlyName); var importSolutionRequest = new ImportSolutionRequest { CustomizationFile = data, ImportJobId = importId, PublishWorkflows = true, OverwriteUnmanagedCustomizations = true, ConvertToManaged = false, SkipProductUpdateDependencies = false }; void Starter() => ProgressReport(importId); var t = new Thread(Starter); t.Start(); CdsClient.Execute(importSolutionRequest); Console.WriteLine("Solution {0} successfully imported into {1}", solutionFilePath, CdsClient.ConnectedOrgFriendlyName); }
private void Publish() { var publishAllXmlRequest = new PublishAllXmlRequest(); if (!(CdsClient.Execute(publishAllXmlRequest) is PublishAllXmlResponse)) { Console.WriteLine("Not Connected"); return; } Console.WriteLine("All customizations published successfully"); }
private void ExportSolution() { Console.WriteLine("Exporting solution {0} to environment {1}.", _solutionSettings.SolutionName, CdsClient.ConnectedOrgFriendlyName); var exportSolutionRequest = new ExportSolutionRequest { Managed = false, SolutionName = _solutionSettings.SolutionName }; var exportSolutionResponse = CdsClient.Execute(exportSolutionRequest) as ExportSolutionResponse; var solutionFilePath = $@"{_solutionSettings.SolutionExportDirectory}{_solutionSettings.SolutionName}.zip"; if (exportSolutionResponse == null) { _logger.LogError("Failed exporting {0}.", _solutionSettings.SolutionName); return; } File.WriteAllBytes(solutionFilePath, exportSolutionResponse.ExportSolutionFile); _logger.LogDebug("Solution exported to {0}.", solutionFilePath); }
private void WhoAmI() { var whoAmIRequest = new WhoAmIRequest(); if (!(CdsClient.Execute(whoAmIRequest) is WhoAmIResponse whoAmIResponse)) { Console.WriteLine("Not Connected"); return; } var systemUser = CdsClient.Retrieve("systemuser", whoAmIResponse.UserId, new ColumnSet("firstname", "lastname", "domainname")); Console.WriteLine("Logged in as {0} {1} to {2}\n", systemUser.Attributes["firstname"], systemUser.GetAttributeValue <string>("lastname"), CdsClient.ConnectedOrgFriendlyName); Console.WriteLine("Organization Information:"); Console.WriteLine("\tOrg ID:\t{0}", CdsClient.ConnectedOrgId); Console.WriteLine("\tUnique Name:\t{0}", CdsClient.ConnectedOrgUniqueName); Console.WriteLine("\tFriendly Name:\t{0}", CdsClient.ConnectedOrgFriendlyName); Console.WriteLine("\tOrg Url:\t{0}", CdsClient.CdsConnectOrgUriActual); Console.WriteLine("\tUser Id:\t{0}", systemUser.Attributes["domainname"]); }
private void RetrieveAttributeHistory() { var req = new RetrieveAttributeChangeHistoryRequest { Target = new EntityReference(EntityName, new Guid(EntityId)), AttributeLogicalName = AttributeName }; if (!(CdsClient.Execute(req) is RetrieveAttributeChangeHistoryResponse resp)) { return; } var details = resp.AuditDetailCollection; foreach (var detail in details.AuditDetails) { //Important: the AuditDetailCollection.AuditDetails doesn’t always contain the type of AttributeAuditDetail, so make sure it is of correct type before casting if (!(detail is AttributeAuditDetail attributeDetail)) { continue; } string oldValue = " ", newValue = " "; if (attributeDetail.OldValue.Contains(AttributeName)) { oldValue = attributeDetail.OldValue[AttributeName].ToString(); } Console.WriteLine($"Old Value : {oldValue ?? ""}"); if (attributeDetail.NewValue.Contains(AttributeName)) { newValue = attributeDetail.NewValue[AttributeName].ToString(); } Console.WriteLine($"New Value : {newValue ?? ""}"); } }
private void DeleteSolution() { var queryImportedSolution = new QueryExpression { EntityName = "solution", ColumnSet = new ColumnSet("solutionid", "friendlyname"), Criteria = new FilterExpression() }; queryImportedSolution.Criteria.AddCondition("uniquename", ConditionOperator.Equal, _solutionSettings.SolutionName); var importedSolution = CdsClient.RetrieveMultiple(queryImportedSolution); if (importedSolution.Entities == null || importedSolution.Entities.Count <= 0) { return; } var solution = importedSolution.Entities[0]; CdsClient.Delete("solution", (Guid)solution["solutionid"]); Console.WriteLine("Deleted the {0} solution.", solution["friendlyname"]); }