protected ImportResult ImportM2MEntity(IOrganizationService targetCrmService, CRMEntity sourceEntitiesCE, CRMEntity targetEntitiesCE, CRMM2MEntityMapping m2mEntityMap) { DateTime startedOn = DateTime.Now; List <Entity> souceEntities = GetM2MEntities(sourceEntitiesCE, m2mEntityMap, null); List <Entity> targetEntities = GetM2MEntities(targetEntitiesCE, m2mEntityMap, null); Dictionary <string, OrganizationRequest> m2mAssociateOrDisassociateRequests = GetM2MAssociateAndDisassociateRequests(souceEntities, targetEntities, m2mEntityMap); BulkResponse bulkResponse = _bulkRequest.Write(targetCrmService, m2mAssociateOrDisassociateRequests); DateTime endedOn = DateTime.Now; ImportResult importResult = GetImportResult(bulkResponse, sourceEntitiesCE); if (string.IsNullOrWhiteSpace(importResult.EntityLogicalName) && m2mEntityMap != null) { importResult.EntityLogicalName = m2mEntityMap.IntersectEntity; } importResult.StartedOn = startedOn; importResult.EndedOn = endedOn; return(importResult); }
public ImportResult ImportTaskAnswers(IOrganizationService targetCrmService, CRMEntity sourceTaskAnswersCE, CRMEntity targetTaskAnswersCE) { CRMM2MEntityMapping taskAnswersEntityMap = GetTaskAnswersEntityMap(); ImportResult importResult = ImportM2MEntity(targetCrmService, sourceTaskAnswersCE, targetTaskAnswersCE, taskAnswersEntityMap); return(importResult); }
public ImportResult ImportToolbarButtonActionCalls(IOrganizationService targetCrmService, CRMEntity sourceToolbarButtonActionCallsCE, CRMEntity targetToolbarButtonActionCallsCE) { CRMM2MEntityMapping toolbarButtonActionCallsEntityMap = GetToolbarButtonActionCallsEntityMap(); ImportResult importResult = ImportM2MEntity(targetCrmService, sourceToolbarButtonActionCallsCE, targetToolbarButtonActionCallsCE, toolbarButtonActionCallsEntityMap); return(importResult); }
public ImportResult ImportWNRActionCalls(IOrganizationService targetCrmService, CRMEntity sourceWNRActionCallsCE, CRMEntity targetWNRActionCallsCE) { CRMM2MEntityMapping wnrActionCallsEntityMap = GetWNRActionCallsEntityMap(); ImportResult importResult = ImportM2MEntity(targetCrmService, sourceWNRActionCallsCE, targetWNRActionCallsCE, wnrActionCallsEntityMap); return(importResult); }
private CRMM2MEntityMapping GetToolbarHostedControlsEntityMap() { CRMM2MEntityMapping toolbarButtonActionCallsEntityMap = new CRMM2MEntityMapping { IntersectEntity = "msdyusd_toolbarstrip_uii_hostedapplication", Entity1 = "msdyusd_toolbarstrip", Entity1Attribute = "msdyusd_toolbarstripid", Entity2 = "uii_hostedapplication", Entity2Attribute = "uii_hostedapplicationid" }; return(toolbarButtonActionCallsEntityMap); }
private CRMM2MEntityMapping GetAnswerActionCallsEntityMap() { CRMM2MEntityMapping answerActionCallsM2MEntityMapping = new CRMM2MEntityMapping { IntersectEntity = "msdyusd_answer_agentscriptaction", Entity1 = "msdyusd_answer", Entity1Attribute = "msdyusd_answerid", Entity2 = "msdyusd_agentscriptaction", Entity2Attribute = "msdyusd_agentscriptactionid" }; return(answerActionCallsM2MEntityMapping); }
private CRMM2MEntityMapping GetTaskAnswersEntityMap() { CRMM2MEntityMapping taskAnswersM2MEntityMapping = new CRMM2MEntityMapping { IntersectEntity = "msdyusd_task_answer", Entity1 = "msdyusd_task", Entity1Attribute = "msdyusd_taskid", Entity2 = "msdyusd_answer", Entity2Attribute = "msdyusd_answerid" }; return(taskAnswersM2MEntityMapping); }
private CRMM2MEntityMapping GetEventActionCallsEntityMap() { CRMM2MEntityMapping eventActionCallsM2MEntityMapping = new CRMM2MEntityMapping { IntersectEntity = "msdyusd_uiievent_agentscriptaction", Entity1 = "msdyusd_uiievent", Entity1Attribute = "msdyusd_uiieventid", Entity2 = "msdyusd_agentscriptaction", Entity2Attribute = "msdyusd_agentscriptactionid" }; return(eventActionCallsM2MEntityMapping); }
private CRMM2MEntityMapping GetWNRActionCallsEntityMap() { CRMM2MEntityMapping wnrActionCallsM2MEntityMapping = new CRMM2MEntityMapping { IntersectEntity = "msdyusd_windowroute_agentscriptaction", Entity1 = "msdyusd_windowroute", Entity1Attribute = "msdyusd_windowrouteid", Entity2 = "msdyusd_agentscriptaction", Entity2Attribute = "msdyusd_agentscriptactionid" }; return(wnrActionCallsM2MEntityMapping); }
private CRMM2MEntityMapping GetSubActionCallsEntityMap() { CRMM2MEntityMapping subActionCallsM2MEntityMapping = new CRMM2MEntityMapping { IntersectEntity = "msdyusd_subactioncalls", Entity1 = "msdyusd_agentscriptaction", Entity1Attribute = "msdyusd_agentscriptactionidone", Entity2 = "msdyusd_agentscriptaction", Entity2Attribute = "msdyusd_agentscriptactionidtwo" }; return(subActionCallsM2MEntityMapping); }
private CRMM2MEntityMapping GetTaskActionCallsEntityMap() { CRMM2MEntityMapping taskActionCallsM2MEntityMapping = new CRMM2MEntityMapping { IntersectEntity = "msdyusd_task_agentscriptaction", Entity1 = "msdyusd_task", Entity1Attribute = "msdyusd_taskid", Entity2 = "msdyusd_agentscriptaction", Entity2Attribute = "msdyusd_agentscriptactionid" }; return(taskActionCallsM2MEntityMapping); }
private CRMM2MEntityMapping GetToolbarButtonActionCallsEntityMap() { CRMM2MEntityMapping toolbarButtonActionCallsEntityMap = new CRMM2MEntityMapping { IntersectEntity = "msdyusd_toolbarbutton_agentscriptaction", Entity1 = "msdyusd_toolbarbutton", Entity1Attribute = "msdyusd_toolbarbuttonid", Entity2 = "msdyusd_agentscriptaction", Entity2Attribute = "msdyusd_agentscriptactionid" }; return(toolbarButtonActionCallsEntityMap); }
public static Entity ToEntity(this CRMM2MRecord crmM2MRecord, CRMM2MEntityMapping m2mEntityMapping, Dictionary <Guid, Guid> sourceTargetIdMappings) { Entity entity = null; if (crmM2MRecord == null) { return(entity); } entity = new Entity(crmM2MRecord.EntityLogicalName); entity[m2mEntityMapping.Entity1Attribute] = crmM2MRecord.Entity1AttributeId; entity[m2mEntityMapping.Entity2Attribute] = crmM2MRecord.Entity2AttributeId; return(entity); }
public List <Entity> GetM2MEntities(CRMEntity crmEntity, CRMM2MEntityMapping m2mEntityMap, Dictionary <Guid, Guid> sourceTargetMappings) { List <Entity> entities = new List <Entity>(); if (crmEntity == null || crmEntity.CRMM2MRecords == null || crmEntity.CRMM2MRecords.Count == 0) { return(entities); } foreach (CRMM2MRecord crmM2MRecord in crmEntity.CRMM2MRecords) { Entity entity = crmM2MRecord.ToEntity(m2mEntityMap, sourceTargetMappings); entities.Add(entity); } return(entities); }
private DisassociateRequest GetDisassociateRequestM2M(CRMM2MEntityMapping m2mEntityMapping, Guid entity1Id, Guid entity2Id) { DisassociateRequest disassociateRequest = new DisassociateRequest { Target = new EntityReference(m2mEntityMapping.Entity1, entity1Id), RelatedEntities = new EntityReferenceCollection { new EntityReference(m2mEntityMapping.Entity2, entity2Id) }, Relationship = new Relationship(m2mEntityMapping.IntersectEntity) }; if (m2mEntityMapping.Entity1 == m2mEntityMapping.Entity2) { disassociateRequest.Relationship.PrimaryEntityRole = EntityRole.Referencing; } return(disassociateRequest); }
public CRMEntity GetSubActionCalls(IOrganizationService service, CRMEntity actionCallCE) { List <Entity> actionCalls = GetAnswers(actionCallCE, null); List <Guid> actionCallIds = (actionCalls != null) ? actionCalls.Select(x => x.Id).ToList() : null; if (actionCallIds == null || actionCallIds.Count == 0) { return(null); } CRMM2MEntityMapping subActionCallsM2MEntityMapping = GetSubActionCallsEntityMap(); QueryExpression queryExpression = GetSubActionCallsQuery(actionCallIds); CRMEntity crmEntity = GetCRMEntityM2M(service, queryExpression, subActionCallsM2MEntityMapping); return(crmEntity); }
public CRMEntity GetTaskAnswers(IOrganizationService service, CRMEntity agentScriptTaskCE) { List <Entity> agentScriptTasks = GetAnswers(agentScriptTaskCE, null); List <Guid> agentScriptTaskIds = (agentScriptTasks != null) ? agentScriptTasks.Select(x => x.Id).ToList() : null; if (agentScriptTaskIds == null || agentScriptTaskIds.Count == 0) { return(null); } CRMM2MEntityMapping taskAnswersM2MEntityMapping = GetTaskAnswersEntityMap(); QueryExpression queryExpression = GetTaskAnswersQuery(agentScriptTaskIds); CRMEntity crmEntity = GetCRMEntityM2M(service, queryExpression, taskAnswersM2MEntityMapping); return(crmEntity); }
private Dictionary <string, OrganizationRequest> GetM2MDisassociateRequests(List <Entity> sourceEntities, List <Entity> targetEntities, CRMM2MEntityMapping m2mEntityMapping) { Dictionary <string, OrganizationRequest> disassociateRequests = new Dictionary <string, OrganizationRequest>(); foreach (Entity targetEntity in targetEntities) { Guid targetEntity1Id = targetEntity.GetAttributeValue <Guid>(m2mEntityMapping.Entity1Attribute); Guid targetEntity2Id = targetEntity.GetAttributeValue <Guid>(m2mEntityMapping.Entity2Attribute); string requestId = GetRequestId(targetEntity1Id, targetEntity2Id); bool disassociate = false; if (m2mEntityMapping.Entity1 == m2mEntityMapping.Entity2)//Ex;- SubActionCalls { if (!sourceEntities.Any(x => (x.GetAttributeValue <Guid>(m2mEntityMapping.Entity1Attribute) == targetEntity1Id && x.GetAttributeValue <Guid>(m2mEntityMapping.Entity2Attribute) == targetEntity2Id) || (x.GetAttributeValue <Guid>(m2mEntityMapping.Entity2Attribute) == targetEntity1Id && x.GetAttributeValue <Guid>(m2mEntityMapping.Entity1Attribute) == targetEntity2Id))) { disassociate = true; } } else if (!sourceEntities.Any(x => x.GetAttributeValue <Guid>(m2mEntityMapping.Entity1Attribute) == targetEntity1Id && x.GetAttributeValue <Guid>(m2mEntityMapping.Entity2Attribute) == targetEntity2Id)) { disassociate = true; } if (disassociate) { DisassociateRequest disassociateRequest = GetDisassociateRequestM2M(m2mEntityMapping, targetEntity1Id, targetEntity2Id); disassociateRequests.Add(requestId, disassociateRequest); } } return(disassociateRequests); }
private Dictionary <string, OrganizationRequest> GetM2MAssociateRequests(List <Entity> sourceEntities, List <Entity> targetEntities, CRMM2MEntityMapping m2mEntityMapping) { Dictionary <string, OrganizationRequest> associateRequests = new Dictionary <string, OrganizationRequest>(); foreach (Entity sourceEntity in sourceEntities) { Guid sourceEntity1Id = sourceEntity.GetAttributeValue <Guid>(m2mEntityMapping.Entity1Attribute); Guid sourceEntity2Id = sourceEntity.GetAttributeValue <Guid>(m2mEntityMapping.Entity2Attribute); string requestId = GetRequestId(sourceEntity1Id, sourceEntity2Id); bool associate = false; if (m2mEntityMapping.Entity1 == m2mEntityMapping.Entity2)//Ex;- SubActionCalls { if (!targetEntities.Any(x => (x.GetAttributeValue <Guid>(m2mEntityMapping.Entity1Attribute) == sourceEntity1Id && x.GetAttributeValue <Guid>(m2mEntityMapping.Entity2Attribute) == sourceEntity2Id) || (x.GetAttributeValue <Guid>(m2mEntityMapping.Entity2Attribute) == sourceEntity1Id && x.GetAttributeValue <Guid>(m2mEntityMapping.Entity1Attribute) == sourceEntity2Id))) { associate = true; } } else if (!targetEntities.Any(x => x.GetAttributeValue <Guid>(m2mEntityMapping.Entity1Attribute) == sourceEntity1Id && x.GetAttributeValue <Guid>(m2mEntityMapping.Entity2Attribute) == sourceEntity2Id)) { associate = true; } if (associate) { AssociateRequest associateRequest = GetAssociateRequestM2M(m2mEntityMapping, sourceEntity1Id, sourceEntity2Id); associateRequests.Add(requestId, associateRequest); } } return(associateRequests); }
public CRMEntity GetToolbarHostedControls(IOrganizationService service, CRMEntity toolbarCE, CRMEntity hostedControlsCE) { List <Entity> toolbars = GetAnswers(toolbarCE, null); List <Guid> toolbarIds = (toolbars != null) ? toolbars.Select(x => x.Id).ToList() : null; List <Entity> hostedControls = GetAnswers(hostedControlsCE, null); List <Guid> hostedControlIds = (hostedControls != null) ? hostedControls.Select(x => x.Id).ToList() : null; if (toolbarIds == null || toolbarIds.Count == 0 || hostedControlIds == null || hostedControlIds.Count == 0) { return(null); } CRMM2MEntityMapping toolbarHostedControlsEntityMap = GetToolbarHostedControlsEntityMap(); QueryExpression queryExpression = GetToolbarHostedControlsQuery(toolbarIds, hostedControlIds); CRMEntity crmEntity = GetCRMEntityM2M(service, queryExpression, toolbarHostedControlsEntityMap); return(crmEntity); }
public CRMEntity GetWNRActionCalls(IOrganizationService service, CRMEntity wnrCE, CRMEntity actionCallCE) { List <Entity> navigationRules = GetAnswers(wnrCE, null); List <Guid> navigationRuleIds = (navigationRules != null) ? navigationRules.Select(x => x.Id).ToList() : null; List <Entity> actionCalls = GetAnswers(actionCallCE, null); List <Guid> actionCallIds = (actionCalls != null) ? actionCalls.Select(x => x.Id).ToList() : null; if (navigationRuleIds == null || navigationRuleIds.Count == 0 || actionCallIds == null || actionCallIds.Count == 0) { return(null); } CRMM2MEntityMapping wnrActionCallsM2MEntityMapping = GetWNRActionCallsEntityMap(); QueryExpression queryExpression = GetWNRActionCallsQuery(navigationRuleIds, actionCallIds); CRMEntity crmEntity = GetCRMEntityM2M(service, queryExpression, wnrActionCallsM2MEntityMapping); return(crmEntity); }
public static CRMM2MRecord ToCRMM2MRecord(this Entity entity, CRMM2MEntityMapping crmM2MEntityMapping) { CRMM2MRecord crmM2Mrecord = null; if (entity == null) { return(crmM2Mrecord); } Guid entity1AttributeId = entity.GetAttributeValue <Guid>(crmM2MEntityMapping.Entity1Attribute); Guid entity2AttributeId = entity.GetAttributeValue <Guid>(crmM2MEntityMapping.Entity2Attribute); crmM2Mrecord = new CRMM2MRecord { EntityLogicalName = entity.LogicalName, Entity1LogicalName = crmM2MEntityMapping.Entity1, Entity1AttributeId = entity1AttributeId, Entity2LogicalName = crmM2MEntityMapping.Entity2, Entity2AttributeId = entity2AttributeId }; return(crmM2Mrecord); }
public CRMEntity GetToolbarButtonActionCalls(IOrganizationService service, CRMEntity toolbarButtonCE, CRMEntity actionCallCE) { List <Entity> toolbarButtons = GetAnswers(toolbarButtonCE, null); List <Guid> toolbarButtonIds = (toolbarButtons != null) ? toolbarButtons.Select(x => x.Id).ToList() : null; List <Entity> actionCalls = GetAnswers(actionCallCE, null); List <Guid> actionCallIds = (actionCalls != null) ? actionCalls.Select(x => x.Id).ToList() : null; if (toolbarButtonIds == null || toolbarButtonIds.Count == 0 || actionCallIds == null || actionCallIds.Count == 0) { return(null); } CRMM2MEntityMapping toolbarButtonActionCallsEntityMap = GetToolbarButtonActionCallsEntityMap(); QueryExpression queryExpression = GetToolbarButtonActionCallsQuery(toolbarButtonIds, actionCallIds); CRMEntity crmEntity = GetCRMEntityM2M(service, queryExpression, toolbarButtonActionCallsEntityMap); return(crmEntity); }
private Dictionary <string, OrganizationRequest> GetM2MAssociateAndDisassociateRequests(List <Entity> sourceEntities, List <Entity> targetEntities, CRMM2MEntityMapping m2mEntityMapping) { //Associate M2M Non Configuration Entity Intersect Records : Ex- msdyusd_subactioncalls, msdyusd_answer_agentscriptaction etc. Dictionary <string, OrganizationRequest> associateRequests = GetM2MAssociateRequests(sourceEntities, targetEntities, m2mEntityMapping); Dictionary <string, OrganizationRequest> disassociateRequests = new Dictionary <string, OrganizationRequest>(); if (m2mEntityMapping.IntersectEntity != "msdyusd_uiievent_agentscriptaction" && m2mEntityMapping.IntersectEntity != "msdyusd_windowroute_agentscriptaction" && m2mEntityMapping.IntersectEntity != "msdyusd_task_agentscriptaction") { //Disassociate M2M Non Configuration Entity Intersect Records : Ex- msdyusd_subactioncalls, msdyusd_answer_agentscriptaction etc. disassociateRequests = GetM2MDisassociateRequests(sourceEntities, targetEntities, m2mEntityMapping); } Dictionary <string, OrganizationRequest> associateOrDisassociateRequests = associateRequests.Union(disassociateRequests).ToDictionary(x => x.Key, y => y.Value); return(associateOrDisassociateRequests); }
public CRMEntity GetCRMEntityM2M(IOrganizationService service, QueryExpression query, CRMM2MEntityMapping crmM2MEntityMapping) { EntityCollection results = service.RetrieveMultiple(query); if (results != null && results.Entities != null && results.Entities.Count > 0) { List <CRMM2MRecord> records = new List <CRMM2MRecord>(); foreach (Entity entity in results.Entities) { CRMM2MRecord crmM2MRecord = entity.ToCRMM2MRecord(crmM2MEntityMapping); records.Add(crmM2MRecord); } CRMEntity crmEntity = new CRMEntity { CRMM2MRecords = records, IsIntersect = true, LogicalName = results.EntityName, RecordCount = results.Entities.Count }; return(crmEntity); } return(null); }