Создание Plug-in для Microsoft Dynamics 365

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

Создаем новое решение с проектом библиотеки классов (.NET Framework).

Create dll
Create dll

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

Open nuget manager
Open nuget manager
Add Xrm.Sdk lib
Add Xrm.Sdk lib

Добавляем ссылки на необходимые библиотеки. Создаем класс плагин, который должен реализовывать интерфейс 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)} был зарегистрирован неправильно");
       }
     }
  }
}

После этого нам необходимо подписать проект самоподписным сертификатом. Для этого заходим в свойства проекта.

Open Project Properties
Open Project Properties

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

Add Signing
Add Signing

 

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

Add key file
Add key file

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

PRT connection
PRT connection

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

PRT login
PRT login

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

PRT Register assembly
PRT Register assembly

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

PRT assembly properties
PRT assembly properties

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

PRT correct registration
PRT correct registration

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

PRT register step
PRT register step

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

PRT step properties
PRT step properties

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

PRT Step added
PRT Step added

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

Plugin test start
Plugin test start
Plugin test result
Plugin test result