/// <summary> /// Method creates Dynamics source Control record /// </summary> /// <param name="service">Organization service</param> /// <param name="solutionId">Solution Id</param> /// <param name="mode">Check In or Release mode</param> /// <returns>returns GUID of newly created Dynamics source Control record</returns> public static Guid CreateDynamicsSourceControl(IOrganizationService service, string solutionId, string mode) { syed_sourcecontrolqueue sourcecontrolqueue = new syed_sourcecontrolqueue(); sourcecontrolqueue.syed_Status = "Draft"; sourcecontrolqueue.syed_CheckInBySolution = true; sourcecontrolqueue.syed_CheckInBySolutionId = solutionId; sourcecontrolqueue.syed_name = "SOL-" + DateTime.UtcNow.ToString("dd/MM/yyyy hh:mm:ss"); sourcecontrolqueue.syed_Comment = mode + DateTime.UtcNow.ToString("dd/MM/yyyy hh:mm:ss"); sourcecontrolqueue.syed_overwritesolutionstxt = new OptionSetValue(433710000); sourcecontrolqueue.syed_SourceControl = new OptionSetValue(433710002); sourcecontrolqueue.syed_CheckIn = true; if (mode == "Release") { sourcecontrolqueue.syed_IncludeInRelease = true; } else { sourcecontrolqueue.syed_IncludeInRelease = false; } Guid id = service.Create(sourcecontrolqueue); return(id); }
/// <summary> /// To create Dynamics source control and create associated solution details. /// </summary> /// <param name="service">Organization service</param> /// <param name="solutionId">CRM Solution id</param> /// <param name="checkIn">check In</param> /// <param name="tracingService">Tracing Service to trace error</param> public static void CreateDynmicsSourceControl(IOrganizationService service, string solutionId, string checkIn, ITracingService tracingService) { Guid id = ExecuteOperations.CreateDynamicsSourceControl(service, solutionId, checkIn); syed_sourcecontrolqueue syed_Sourcecontrolqueue = service.Retrieve(syed_sourcecontrolqueue.EntityLogicalName.ToString(), id, new ColumnSet(true)).ToEntity <syed_sourcecontrolqueue>(); CreateSolutionDetail(service, syed_Sourcecontrolqueue, tracingService); }
/// <summary> /// To delete Merge Solution records. /// </summary> /// <param name="service">Organization service</param> /// <param name="sourceControlQueue">Dynamic Source Control entity GUID</param> /// <param name="tracingService">Tracing Service to trace error</param> public static void CreateSolutionDetail(IOrganizationService service, syed_sourcecontrolqueue sourceControlQueue, ITracingService tracingService) { //Copy feilds from Template Record. EntityCollection copyDynamicsTemplate = SolutionHelper.RetrieveDynamicsSourceControlTemplate(service, tracingService); foreach (syed_sourcecontrolqueue syed_Sourcecontrolqueue in copyDynamicsTemplate.Entities) { syed_sourcecontrolqueue _sourcecontrolqueue = new syed_sourcecontrolqueue(); _sourcecontrolqueue.syed_Branch = syed_Sourcecontrolqueue.syed_Branch; _sourcecontrolqueue.syed_RemoteName = syed_Sourcecontrolqueue.syed_RemoteName; _sourcecontrolqueue.syed_RepositoryUrl = syed_Sourcecontrolqueue.syed_RepositoryUrl; _sourcecontrolqueue.syed_SourceControl = syed_Sourcecontrolqueue.syed_SourceControl; _sourcecontrolqueue.Id = sourceControlQueue.Id; _sourcecontrolqueue.syed_IsShedulled = syed_Sourcecontrolqueue.syed_IsShedulled; _sourcecontrolqueue.syed_overwritesolutionstxt = syed_Sourcecontrolqueue.syed_overwritesolutionstxt; service.Update(_sourcecontrolqueue); break; } //Copy Master Solution Record from Template. EntityCollection copyTemplate = SolutionHelper.RetrieveMasterSolutionTemplate(service, tracingService); foreach (syed_solutiondetail solutionDetail in copyTemplate.Entities) { ExecuteOperations.CreateSolutionDetail(service, solutionDetail, sourceControlQueue); break; } EntityCollection crmSolution = SolutionHelper.RetrieveMasterSolutionById(service, sourceControlQueue.syed_CheckInBySolutionId, tracingService); if (crmSolution.Entities.Count > 0) { foreach (syed_mastersolutions mastersolutions in crmSolution.Entities) { ExecuteOperations.CreateSolutionDetail(service, mastersolutions, sourceControlQueue); break; } } else { EntityCollection solutionCollection = SolutionHelper.RetrieveSolutionById(service, new Guid(sourceControlQueue.syed_CheckInBySolutionId), tracingService); foreach (Solution sol in solutionCollection.Entities) { Guid id = ExecuteOperations.CreateMasterSolution(service, sol); syed_mastersolutions syed_Mastersolutions = service.Retrieve(syed_mastersolutions.EntityLogicalName.ToString(), id, new ColumnSet(true)).ToEntity <syed_mastersolutions>(); ExecuteOperations.CreateSolutionDetail(service, syed_Mastersolutions, sourceControlQueue); break; } } }
/// <summary> /// To update comma separated solution list in Dynamic Source Control entity. /// </summary> /// <param name="service">Organization service</param> /// <param name="sourceControlId">Dynamic Source Control entity GUID</param> /// <param name="tracingService">Tracing Service to trace error</param> private static void UpdateListToSourceControl(IOrganizationService service, Guid sourceControlId, ITracingService tracingService) { EntityCollection associatedRecordList = null; string listOfSolution = string.Empty; string solutionName = string.Empty; associatedRecordList = SolutionHelper.RetrieveSolutionDetailsToBeMergedByListOfSolutionId(service, sourceControlId, tracingService); listOfSolution = ExecuteOperations.GetCommaSeparatedListofSolution(service, associatedRecordList, tracingService); associatedRecordList = SolutionHelper.RetrieveMasterSolutionDetailsByListOfSolutionId(service, sourceControlId, tracingService); solutionName = ExecuteOperations.GetCommaSeparatedListofMaster(service, associatedRecordList, tracingService); syed_sourcecontrolqueue sourceControlQueue = new syed_sourcecontrolqueue(); sourceControlQueue.syed_sourcecontrolqueueId = sourceControlId; sourceControlQueue.syed_SourcenSolutions = listOfSolution; sourceControlQueue.syed_SolutionName = solutionName; service.Update(sourceControlQueue); }
/// <summary> /// Method creates Master Solution Record /// </summary> /// <param name="service">Organization service</param> /// <param name="mastersolutions">CRM Solution</param> /// <param name="syed_Sourcecontrolqueue">Dynamics Source control</param> public static void CreateSolutionDetail(IOrganizationService service, syed_mastersolutions mastersolutions, syed_sourcecontrolqueue syed_Sourcecontrolqueue) { syed_solutiondetail solutiondetail = new syed_solutiondetail(); solutiondetail.syed_CRMSolutionsId = new EntityReference(mastersolutions.LogicalName.ToString(), mastersolutions.Id); solutiondetail.syed_ListofSolutionId = new EntityReference(syed_Sourcecontrolqueue.LogicalName.ToString(), syed_Sourcecontrolqueue.Id); solutiondetail.syed_friendlyname = mastersolutions.syed_FriendlyName; solutiondetail.syed_Publisher = mastersolutions.syed_Publisher; solutiondetail.syed_SolutionInstalledOn = mastersolutions.syed_SolutionInstalledOn; solutiondetail.syed_Version = mastersolutions.syed_Version; solutiondetail.syed_IsManaged = mastersolutions.syed_IsManaged; solutiondetail.syed_SolutionId = mastersolutions.syed_SolutionId; solutiondetail.syed_ListofSolutions = mastersolutions.syed_ListofSolutions; solutiondetail.syed_ExportAs = false; solutiondetail.syed_Order = 0; solutiondetail.syed_name = mastersolutions.syed_FriendlyName; service.Create(solutiondetail); syed_sourcecontrolqueue sourcecontrolqueue = new syed_sourcecontrolqueue(); sourcecontrolqueue.Id = syed_Sourcecontrolqueue.Id; sourcecontrolqueue.syed_Status = "Queued"; service.Update(sourcecontrolqueue); }
/// <summary> /// Method creates Master Solution Record /// </summary> /// <param name="service">Organization service</param> /// <param name="syed_Solutiondetail">Master Solution</param> /// <param name="syed_Sourcecontrolqueue">Dynamics Source control</param> public static void CreateSolutionDetail(IOrganizationService service, syed_solutiondetail syed_Solutiondetail, syed_sourcecontrolqueue syed_Sourcecontrolqueue) { syed_solutiondetail solutiondetail = new syed_solutiondetail(); solutiondetail.syed_CRMSolutionsId = syed_Solutiondetail.syed_CRMSolutionsId; solutiondetail.syed_ListofSolutionId = new EntityReference(syed_Sourcecontrolqueue.LogicalName.ToString(), syed_Sourcecontrolqueue.Id); solutiondetail.syed_friendlyname = syed_Solutiondetail.syed_friendlyname; solutiondetail.syed_Publisher = syed_Solutiondetail.syed_Publisher; solutiondetail.syed_SolutionInstalledOn = syed_Solutiondetail.syed_SolutionInstalledOn; solutiondetail.syed_Version = syed_Solutiondetail.syed_Version; solutiondetail.syed_IsManaged = syed_Solutiondetail.syed_IsManaged; solutiondetail.syed_SolutionId = syed_Solutiondetail.syed_SolutionId; solutiondetail.syed_ListofSolutions = syed_Solutiondetail.syed_ListofSolutions; solutiondetail.syed_ExportAs = syed_Solutiondetail.syed_ExportAs; solutiondetail.syed_Order = syed_Solutiondetail.syed_Order; solutiondetail.syed_name = syed_Solutiondetail.syed_name; service.Create(solutiondetail); }