Добро пожаловать в мой блог! Изначально он не задумывался как блог CRM разработчика, но жизнь сама внесла нужные коррективы. Тут я публикою все свои наблюдения относительно обозначенных в заголовке систем. Если Вы найдете в нем что-то интересное для Вас, как для заказчика, то буду рад сотрудничать с Вами! В моей компетенции 100% задач по MS CRM 3.0/4.0/2011:
MVP 2010, 2011
- Консалтинг
- Проектирование
- Разработка
- Обучение
MVP 2010, 2011
Правила поиска дубликатов (Duplicate Detection Rules) CRM 2011. Автоматическая публикация правил
Запись от Артем Enot Грунин размещена 06.06.2013 в 16:34
Теги customization, duplicate, plugin
В одном из своих прошлых постов Правила поиска дубликатов (Duplicate Detection Rules) CRM 2011. Как это работает и почему правила иногда автоматически становятся черновиками? я писал о проблеме, которая иногда портит жизнь администраторам систему. Суть в том, что проблема автоматической деактивации правил не неизлечима, так как является функционалом "by design" (так и задумано), однако можно попробовать автоматизировать повторную публикацию правил.
Сегодня мне надоело тренировать бдительность при обновлении решения и я решил написать плагин, который будет публиковать нужные мне правила при публикации всех настроек:
В идеале плагин должен стартовать при установке и обновлении решения (solution), но, к сожалению, система не поддерживает это сообщение.
Как он работает? Плагин ищет правила в состоянии черновиков, название которых начинается с "AlwaysOn:" и публикует их. Его следует регистрировать на шаге пост обработки события "PublishAll" в асинхронном режиме. Результат работы можно увидеть в системном журнале:
Сегодня мне надоело тренировать бдительность при обновлении решения и я решил написать плагин, который будет публиковать нужные мне правила при публикации всех настроек:
X++:
QueryExpression query = new QueryExpression { EntityName = "duplicaterule", ColumnSet = new ColumnSet("duplicateruleid"), Criteria = new FilterExpression { Conditions = { new ConditionExpression { AttributeName = "name", Operator = ConditionOperator.BeginsWith, Values = { "AlwaysOn:" } }, new ConditionExpression { AttributeName = "statuscode", Operator = ConditionOperator.Equal, Values = { 0 } } }, FilterOperator = LogicalOperator.And } }; EntityCollection rules = localContext.OrganizationService.RetrieveMultiple(query); ExecuteMultipleRequest publishRulesRequest = new ExecuteMultipleRequest { Settings = new ExecuteMultipleSettings { ContinueOnError = true, ReturnResponses = false }, Requests = new OrganizationRequestCollection() }; foreach (Entity rule in rules.Entities) { publishRulesRequest.Requests.Add(new PublishDuplicateRuleRequest() { DuplicateRuleId = rule.Id }); } ExecuteMultipleResponse publishRulesResponse = (ExecuteMultipleResponse)localContext.OrganizationService.Execute(publishRulesRequest); if (publishRulesResponse.IsFaulted == true) { String message = String.Format("{0} rules where not published. First error: {1}", publishRulesResponse.Responses.Count, publishRulesResponse.Responses[0].Fault.Message); throw new InvalidPluginExecutionException(message); }
Как он работает? Плагин ищет правила в состоянии черновиков, название которых начинается с "AlwaysOn:" и публикует их. Его следует регистрировать на шаге пост обработки события "PublishAll" в асинхронном режиме. Результат работы можно увидеть в системном журнале:
Всего комментариев 0