public override void OnUpsertEntityRecord(CrmCommandsQueue requests, Entity crmEntity, Entity stamdataEntity, Dictionary <string, object> diff) { var upsert = new Entity(crmEntity?.LogicalName ?? stamdataEntity.LogicalName, crmEntity?.Id ?? stamdataEntity.Id); foreach (var item in diff) { upsert[item.Key] = item.Value; } var isNew = crmEntity == null; if (isNew) { requests.AddUpdateStageStage(new CreateRequest { Target = upsert }); requests.AddDeleteStageStep(new PublishDuplicateRuleRequest { DuplicateRuleId = upsert.Id }); } else { requests.AddUpdateStageStage(new UpdateRequest { Target = upsert }); } }
public override void OnDeleteEntityRecord(CrmCommandsQueue requests, Entity excessCrmRow) { requests.AddDeleteStageStep(new DeleteRequest { Target = excessCrmRow.ToEntityReference() }); }
private static void Import(ImportOptions options) { var crmService = new CrmService(options.CrmConnectionString); var fileService = new FileService(options.Directory); var entityStrategyFactory = new EntityStrategyFactory(crmService); var importer = new EntityImporter(crmService, fileService, entityStrategyFactory); var commandsList = new List <CrmCommandsQueue>(); foreach (var entityLogicalName in options.EntitiesList) { var commands = new CrmCommandsQueue(entityLogicalName); importer.Import(commands, entityLogicalName); if (!commands.IsEmpty) { commandsList.Add(commands); } } using (new DisabledWorkflowsScope(crmService, commandsList.Select(x => x.EntityLogicalName))) { foreach (var commands in commandsList) { commands.ExecuteUpdateSteps(crmService); } foreach (var commands in commandsList.AsEnumerable().Reverse()) { commands.ExecuteDeleteSteps(crmService); } } }
public virtual void OnDeleteEntityRecord(CrmCommandsQueue requests, Entity excessCrmRow) { // disable first requests.AddDeleteStageStep(new SetStateRequest { EntityMoniker = excessCrmRow.ToEntityReference(), State = new OptionSetValue(1), Status = new OptionSetValue(2) }); requests.AddDeleteStageStep(new DeleteRequest { Target = excessCrmRow.ToEntityReference() }); }
public virtual void OnUpsertEntityRecord(CrmCommandsQueue requests, Entity crmEntity, Entity stamdataEntity, Dictionary <string, object> diff) { var diffExceptStatus = diff.Where(x => x.Key != "statecode" && x.Key != "statuscode").ToArray(); if (diffExceptStatus.Any()) { var upsert = new Entity(crmEntity?.LogicalName ?? stamdataEntity.LogicalName, crmEntity?.Id ?? stamdataEntity.Id); foreach (var item in diffExceptStatus) { upsert[item.Key] = item.Value; } var isNew = crmEntity == null; if (isNew) { requests.AddUpdateStageStage(new CreateRequest { Target = upsert }); } else { requests.AddUpdateStageStage(new UpdateRequest { Target = upsert }); } } if (diff.ContainsKey("statecode") || diff.ContainsKey("statuscode")) { requests.AddUpdateStageStage(new SetStateRequest { EntityMoniker = new EntityReference(crmEntity?.LogicalName ?? stamdataEntity.LogicalName, crmEntity?.Id ?? stamdataEntity.Id), State = stamdataEntity["statecode"] as OptionSetValue, Status = stamdataEntity["statuscode"] as OptionSetValue }); } }