Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 14
0
        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);
        }
Esempio n. 15
0
        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);
        }
Esempio n. 17
0
        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);
        }
Esempio n. 18
0
        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);
        }
Esempio n. 19
0
        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);
        }
Esempio n. 24
0
        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);
        }
Esempio n. 25
0
        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);
        }