Плагины (plug-in) – сто специализированные .NET библиотеки, позволяющие вносить изменения или каким-либо другим способом реагировать на события, сгенерированные Microsoft Dynamics 365. Они позволяют отправлять или получать данные из внешних систем, добавлять, изменять или удалять данные в CRM. Важной особенностью плагинов является то, что они выполняются на сервере, а, следовательно, он будет работать во всех случаях, в том числе и при вызове Web Service API, и при импорте данных. Рассмотрим пошаговую инструкцию создания плагина.
Создаем новое решение с проектом библиотеки классов (.NET Framework).

С помощью NuGet подключаем библиотеку Microsoft.Xrm.Sdk.


Добавляем ссылки на необходимые библиотеки. Создаем класс плагин, который должен реализовывать интерфейс IPlugin, содержащий один метод Execute.
using System; using Microsoft.Xrm.Sdk; namespace CrmPlugin { public class Plugin : IPlugin { public void Execute(IServiceProvider serviceProvider) { // Получить контекст выполнения от поставщика услуг IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); // Коллекция InputParameters содержит все данные, переданные в запросе if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) { // Получить целевой объект из входных параметров Entity entity = (Entity)context.InputParameters["Target"]; // Убедимся, что целевой объект представляет собой случай. // Если нет, этот плагин был зарегистрирован неправильно. if (entity.LogicalName == "new_case") { // Изменяем атрибут new_name, дописываем к существующему значению дополнительный текст. entity.Attributes["new_name"] += " (Тестовый случай созданный из плагина)"; } } else { throw new InvalidPluginExecutionException($"Плагин {nameof(Plugin)} был зарегистрирован неправильно"); } } } }
После этого нам необходимо подписать проект самоподписным сертификатом. Для этого заходим в свойства проекта.

Переходим во вкладку «Подписание», ставим галочку в поле «Подписать сборку», в выпадающем списке выбираем «Новый».

Вводим имя файла сертификата и пароль состоящий не менее чем из 6 символов. После этого нажимаем кнопку «ОК». Файл сертификата будет добавлен в решение. После этого собираем проект.

Теперь нам необходимо зарегистрировать созданный плагин в CRM. Это удобнее всего сделать с помощью специальной утилиты PluginRegistration, поставляемой в составе SDK пакета Dynamics 365. Нажимаем на кнопку «Создать новое подключение».

В окне настройки подключения вводим необходимые данные: тип CRM – локальная или в облаке, путь к серверу, порт, тип авторизации. У всех данные свои. Обратите внимание, что имя сервера вводится без http:// и без названия организации. После ввода нажимаем кнопку «Войти». Если экземпляр CRM содержит более одной организации будет выведено окно выбора организации.

В меню выбираем пункт «Зарегистрировать новую сборку»

Указываем путь к .dll файлу сборки, проверяем чтобы плагин был отмечен галочкой, выбираем режим изоляции «Песочница», выбираем место хранения плагина «База данных» и нажимаем кнопку «Зарегистрировать выбранные плагины».

Если все корректно получаем следующее сообщение

После этого необходимо привязать плагин к какому-либо событию в CRM. Для этого необходимо добавить шаг.

В меню добавления шага необходимо ввести сообщение (событие), при возникновении которого будет вызываться плагин. Список возможных сообщений можно посмотреть на сайте MSDN или в файле «Message-entity support for plug-ins.xlsx», поставляемом в составе SDK. После этого указывается имя сущности, в котором генерируется сообщение. Затем нажимаем кнопку «Зарегистрировать новый шаг».

В результате должна получиться следующая структура.

Проверяем работу плагина с Microsoft Dynamics 365.

