internal static void SetStatus(IOrganizationService service, CustomJob.StatusReasonEnum status, Guid jobId, bool isTriggerRecurrence) { var job = new CustomJob { Id = jobId, StatusReason = status }; if (isTriggerRecurrence) { job.RecurrenceUpdatedTrigger = new Random().Next(111111, 99999999).ToString(); job.TargetDate = new DateTime(2100, 1, 1); } service.Update(job); }
internal static void Close(IOrganizationService service, CustomJob.StatusReasonEnum status, Guid jobId, bool isPropagate = false) { service.Update( new CustomJob { Id = jobId, Status = CustomJob.StatusEnum.Inactive, StatusReason = status }); if (isPropagate) { var parent = service.Retrieve(CustomJob.EntityLogicalName, jobId, new ColumnSet(CustomJob.Fields.ParentJob)) .ToEntity <CustomJob>().ParentJob; if (parent != null) { Close(service, status, parent.Value, true); } } }
internal static CustomJob BuildSubJob(CustomJob parentJob, CustomJob.StatusReasonEnum status, string suffix) { var fieldExclusions = new[] { CustomJob.Fields.CustomJobId, CustomJob.Fields.Name, CustomJob.Fields.RecurrentJob, CustomJob.Fields.RunTrigger, CustomJob.Fields.RecurrenceUpdatedTrigger, CustomJob.Fields.ParentJob, CustomJob.Fields.DeleteOnSuccess, CustomJob.Fields.RetrySchedule, CustomJob.Fields.Status, CustomJob.Fields.StatusReason, CustomJob.Fields.LatestRunMessage, CustomJob.Fields.MarkForWaiting, CustomJob.Fields.PreviousTargetDate, CustomJob.Fields.ParentRecurrent }; var extendingjob = new CustomJob(); foreach (var key in parentJob.Attributes.Keys.Except(fieldExclusions)) { extendingjob[key] = parentJob[key]; } extendingjob.Name = $"{parentJob.Name} | {suffix}"; extendingjob.DeleteOnSuccess = parentJob.DeleteSubJobsOnSuccess; extendingjob.StatusReason = status; extendingjob.ParentJob = parentJob.Id; extendingjob.ParentRecurrent = parentJob.RecurrentJob; extendingjob.RetrySchedule = parentJob.SubJobsRetrySchedule; extendingjob.MarkForWaiting = false; return(extendingjob); }