Кастомизация
10
Авг
20

Периодическое выполнение бизнес-процессов, эпизод II

Предположим, что Вам требуется, чтобы Microsoft Dynamics CRM 4.0 автоматически составлять расписание и выполнить повторяющуюся задачу, такую, например, как отправка email Контакту каждый год или добавление Примечания к записи Контакта каждый день и т.д.

Одним из тривиальных решений этой проблемы состоит в разработке кастомного модуля, который будет повторно запускаться с помощью Windows Scheduled Tasks или Windows Service и выполнять необходимую задачу (ну или воспользоваться готовым).

Другое возможное решение, не требует написание кода и может быть реализовано с помощью Бизнес-процессов.

Давайте возьмем, например, сценарий, в котором мы хотим отправлять email «С Днем рождения» нашим Контактам в их День рождения.

Реализуем…

  1. Добавьте на форму объекта Контакт новое поле дата/время (нам нужна только дата), с названием, например, «Дата поздравления»;


  1. Теперь нужно создать новый шаблон электронной почты – его будем рассылать нашим контактам!
    • Перейдите: Параметры — Шаблоны — Шаблоны электронной почты — Создать;
    • Введите название нового шаблона, Тему сообщения электронного письма и какой-нибудь текст для самого сообщения;
    • Т.к. теория CRM требует индивидуального подхода, то вставим в письмо обращение к получателю поздравления. Поставьте курсор куда-нибудь (в зависимости от Ваших потребностей) в тело сообщения или заголовок и нажмите Вставить или обновит — Добавить — в качестве типа записи укажите Контакт, а в качестве поля Полное имя. Ок;
    • Сохраните и закройте шаблон;



  1. Создайте новый бизнес-процесс для объекта Контакт:
    • Установите срабатывание бизнес-процесса на создание и изменения атрибута «Дата поздравления»;
    • Добавьте шаг Условие ожидания, и задайте условием ожидание Рабочего процесса до следующей Даты поздравления;
    • Добавьте шаг создания записи Электронной почты, установите необходимый почтовый шаблон (тот, который мы создали) и кому будем отправлять (в данном случаи контакту), а в качестве отправителя укажите ответственного за контакт;
    • Добавьте шаг Обновить запись и обновите поле «Дата поздравления» записи Контакт до следующего года (т.е. добавьте к ней 12 месяцев);
    • В конечном итоге Бизнес-процесс должен быть похож примерно как на скриншоте;
    • Опубликуйте бизнес-процесс;




  1. Проверяем бизнес-процесс… создайте новый тестовый Контакт с текущей датой для поля «Дата поздравления». Также обязательно задайте адрес электронной почты, т.к. без него бизнес-процесс застрянет с сообщением о том, что не может отправить письмо. Если Вы все сделали правильно, то в связанных Бизнес-процессах этой записи контакта появится новый экземпляр созданного нами Бизнес-процесса. Он тут же выполнится, т.к. сработало событие выполнения (создание записи Контакт) и условие достигнуто – наступила «Дата поздравления» (мы ее задали сегодняшним днем). Сразу произойдет две вещи: создастся электронное письмо (и попытается отправиться в путь 🙂 ) и обновится дата поздравления (увеличится ровно на один год). Также удостоверьтесь, что новый экземпляр бизнес-процесса снова висит в связанных записях контакта в состоянии ожидания (ждет нового дня рождения 🙂 ). А он появиля потому, что сработало другое событие для бизнес-процесса – обновление поля «Дата поздравления», которую обновил предыдущий экземпляр бизнес-процесса!




Комментарии (20)
  • Дмитрий 10.08.2009

    Добрый день!

    а подскажите пожалуйста как в бизнес процессе получить текущую дату и поместить ее в поле типа CrmData на форме.

    За ранее спасибо!

  • slivka_83 10.08.2009

    Когда обновляете в БП запись. В поле дата/время вставляете динамическое значение: установить на (все нули), перед (или после это не важно, т.е. мы нулевое приращение задали), рабочий процесс, выполнение.

  • Дмитрий 10.08.2009

    просто супер! спасибо огромное 😉

    у меня еще вопросик, правда не в этой теме его правильно задавать, однако тему про вьюшки я не нашел.

    у меня с одним классом (действие сервиса) связанно много представлений. существует ли возможность назначать представления определенным пользователям, что-бы не весь список вываливался?

    на сегодняшний момент я нашел один способ — создаешь представление (пользовательское) и расшариваешь его с определенными пользователями.

    это правильный подход или есть решения лучше?

  • slivka_83 10.08.2009

    Вам сюда http://mmcrm.ru/?p=301

  • SOULCAR 10.08.2009

    Respect, но 2 вопроса:

    1) Поле «День рождения» оказывается ненужным? Оно нигде не фигурирует в бизнес-процессе? Почему не использовать его, а создавать новое поле?

    2) При выставлении таймера на 12 месяцев, совпадёт ли дата?

  • slivka_83 10.08.2009

    Добрый день 🙂

    1) Новое поле сделал специально, чтобы не менять День рождения. Т.к. Дата поздравления каждый год меняется 🙂 Т.е. если менять День рождения, то Вы не будуте знать когда (точнее какого года) у Вашего клиента день рождения 🙂

    2) Думаю день совпадет 🙂 но не проверял — слишком долго 🙂

  • Алексей 10.08.2009

    Метод замечательный! Спасибо!
    Но есть одно замечание и вопрос.
    CRM умеет отрубать циклические бизнес-процессы, если один процесс порождает другой меньше, чем через час (так называемое, обнаружение циклов).
    И вопрос: если, например, изменилась дата поздравления (что порождает процесс), а у сущности уже есть процесс. Как быть в таком случае? Можно ли как-то остановить активный экземпляр процесса? То есть такое условие: Если есть работающий процесс, то остановить его и т.д.

  • slivka_83 10.08.2009

    Добрый день… про отключение циклических БП слышать не приходилось… я знаю только про прекращение асинхронных опрераций, уровень вложенности у которых больше 8…

    А зачем отключать БП? ведь если дата поздравления изменит, то БП просто сработает на новой дате… вроде как…

    А если по сути, то мне не известна о такой функциональности (разве чо запрограммировать)

  • Алексей 10.08.2009

    Да, он сработает на новой дате и уже два процесса будут ожидать каждый своей даты поздравления. Вот нашел решение этой проблемы
    http://blogs.msdn.com/crm/archive/2010/01/05/microsoft-dynamics-crm-advanced-workflows.aspx

  • Анна 10.08.2009

    Подскажите пожалуйста, пытаюсь создать бизнес-процесс, для массовой рассылки писем с вложениями. Создала-там в действиях ввела только одно действие «отправить электронную почту», вызов поставила по требованию, формат почты завела, опубликовала, а при запуске этого процесса для выбранных «Интересов» отправка писем не происходит, письмо в действиях Интересов появляется, кастомизированное, но в примечаниях указано что Отложенная отправка и комментраии в справке, а из справки не понятно, почему не отправилось. Подскажите какие условия может указать, или где то инструкцию толковую прочитать можно, уже лоб разбила весь!

  • slivka_83 10.08.2009

    Ну причин может быть несколько:
    1. Не настроен роутер (или оутлук если он используется).
    2. У получателя в карточке не прописан почтовый ящик (т.е. некуда отправлять)
    3. У отправителя в карточке не прописан почтовый ящик (т.е. не от кого отправлять)

  • Anna 10.08.2009

    Может вопрос ге совсем в эту тему, но подходящей что-то не найду..
    Подскажите, пожалуйста! Я создала список ожидания «Вопросы к техническому специалисту». Как сделать, чтобы когда в этот список поступает обращение, ответственному за этот список отправлялось электронное сообщение??

  • Anna 10.08.2009

    вопрос в продолжение к предыдущему… при создании очереди указан ответственный и настроена пересылка писем на ответственного.. Должны ли приходить этому ответственному уведомления о новых эдлементах в очереди автоматически или нет?

  • Анна 10.08.2009

    И снова я со своим вопросом по отправке писем через бизнес-процессы с вложениями. По Вашим причинам (slivka_83 | 11th Май 2010 ) 2 и 3 исключено, поскольку для выбранных интересов срабатывает быстрая компания по отправке электронной почты и слияние проходит (подтягиваются поля из базы) и отправка проходит, но мне нужно к письмам добавлять вложения, поэтому хочу добится работы бизнесс-процесса. Может у меня ошибка при формировании бизнесс-процесса? Могли бы Вы попробовать повторить у себя на тестовой базе мою задачу и хотя бы в кратце сказать как сделать и подтвердить что у вас всё работает и отправляет?

  • slivka_83 10.08.2009

    Я не понимаю что такого сложного в Вашем действии что требует повторения 🙂 Элементарная отправка почты 🙂 попробуйте включить логи http://mmcrm.ru/?p=199 🙂

  • Евгений 10.08.2009

    Та же самая проблема, что и у Анны. Создаю массовую рассылку с вложением через бизнес-процесс. Применяю процесс на нужных мне контактах. Не отправляет.
    Адреса почты везде есть, и у отправителей и у получателей.
    Правило отчасти работает только если в шаблоне письма заполняется поле «кому», но тогда этот контакт получит всю пачку писем, а контакты, на которых применяется правило не получат ниодного.

  • slivka_83 10.08.2009

    Даже не знаю чего тут посоветовать.. разве что это может быть баг CRM и нужно накатить последние падейты на все…

  • Евгений 10.08.2009

    Всё оказалось гораздо проще — в поле получателя проставлять «контакт.контакт» через правую панель заполнения свойств письма.
    Чайники форева!

  • Евгений 10.08.2009

    Добрый день!
    Ок, через день рождения нельзя, создаём новый атрибут в контакте «дата поздравления».
    Как задать дату поздравления соответствующую дню рождения уже существующей многотысячной клиентской базе?

  • slivka_83 10.08.2009

    Добрый день 🙂
    Либо ручкам. Т.е. создаете простой бизнес-процесс, который копирует одну дату в другую. А затем применяете его для нужных записей. Соответственно, поддерживаемым способом можно за раз применить только на 250 записях. А не поддерживаемым на многих: http://mmcrm.ru/?p=1146 и http://mmcrm.ru/?p=524. А еще можно применить такой способ — http://mmcrm.ru/?p=385 — тоже поддерживаемый 🙂
    Либо писать консольное приложение: http://mmcrm.ru/?p=1238 🙂

*

code