Oro - Synolab

Définir un process automatisé au sein d’OroCRM

Par Julien V. le 25 octobre 2016

La personnalisation d’un outil de CRM passe aussi par la création de routines automatisées au sein de l’application afin de reproduire des habitudes de travail ou de définir des règles communes à un groupe d’utilisateur. Ces routines peuvent prendre plusieurs formes : notamment celle d’une action déclenchée automatiquement en fonction de critères bien définis.

La définition du process

Prenons l’exemple d’une société disposant d’une équipe commerciale. L’objectif principal de cette équipe est de concrétiser une phase de prospection par la vente de biens ou de services.

Dans un premier temps, le commercial démarche un ou plusieurs prospects et enregistre leurs informations au sein du CRM. Un premier process automatisé peut alors être envisagé : Dès la création d’un Compte de type Prospect, une tâche « Qualification du client » est alors ajoutée pour l’utilisateur.

Initialisation

La définition de process automatisés au sein d’OroCRM se fait au travers d’un fichier YAML. Il doit obligatoirement être nommé process.yml et se trouver dans le dossier /Resources/config/ d’un bundle. Il contient deux parties qui décrivent la définition du trigger et le déroulé.

Le trigger

Dans notre exemple, nous souhaitons qu’une tâche soit créée dès qu’un nouveau Compte est enregistré comme Prospect. Nous allons donc demander l’exécution de notre process à la création de l’enregistrement :

 

La partie trigger se compose :

Du nom du process à exécuter
Du type d’événement sur lequel déclencher le process (create ou update)
D’autres options sont disponibles et se trouve dans la documentation associée : Process configuration

La définition

La définition du process est réalisée en plusieurs étapes. La première consiste à :

  • Reprendre le nom du procces défini dans la partie trigger (voir plus haut)
  • Donner un libellé
  • L’associer à une entité de l’application

 

Ce qui donne :

Viens ensuite la partie contenant les conditions auxquelles l’enregistrement doit répondre :

Dans cet exemple les règles sont simples :

  • Le type de Compte ne doit pas être vide
  • Le Compte doit être de type Prospect

Dans la suite, nous rentrons dans le coeur du sujet. Nous allons définir nos différentes actions permettant la création d’un ticket :

Dans l’ordre nous avons :

  • La recherche de l’entité priorité normale
  • La définition du titre au travers d’un @format_string. Dans cet exemple, le nom du compte est repris en préfixe du nom de la tâche.
  • La création de l’entité Tache avec les différentes données (data)
  • L’association de la tâche au compte pour que celui-ci apparaisse comme contexte

Le chargement du process dans l’application

Les process rédigés au sein d’un fichier YAML doivent être chargés en base de données. Les différentes étapes seront aussi traduites sous forme de listener Doctrine et de code PHP afin d’être exécuté.

Pour initialiser ou mettre à jour un process en base, il faut exécuter la commande

oro proces configuration load

Désormais, lors de l’enregistrement d’un Compte répondant aux critères du process, la tâche sera créée pour l’utilisateur connecté.

Différer son exécution

Dans le cas où le process est susceptible de consommer du temps pour l’envoi d’un email par exemple. Il est alors préférable de différer son exécution pour ne pas ralentir l’application. Il suffit alors simplement d’ajouter 2 options à la définition du trigger :

 

Dans cet exemple :

  • L’option queued à true indique que le process sera exécuté plus tard par la job queue Oro
  • L’option timeshift prend comme argument toutes les valeurs acceptées par la méthode __construct de la class DateInterval ou un entier correspondant à un nombre de secondes
LinkedIn Google+ Email
Julien V.

Développeur passionné toujours à la recherche d'un trending topic à explorer

GIF