Autobonplan (Groupe Jean Rouyer), acteur majeur de la voiture d’occasion, a souhaité mettre à jour son logiciel de CRM, Salesforce. L’outil de gestion de la relation client comporte :

  • 1 500 000 contacts
  • 6 000 000 transactions

qu’il faut mettre à jour en raison de l’évolution des données sources. Il est fréquent également que les règles de gestion changent, ou que de nouveaux champs apparaissent. Il faut alors faire ce qu’on appelle un « full ».

NB : un full annule / remplace le chargement complet de toutes les données source dans la cible. 

Aujourd’hui, le temps de traitement actuel pour un full est de 4 jours. Avec l’optimisation réalisée par Effidic, nous sommes passés à…. 45 mn.

Comment avons-nous fait ? Suivez le guide.

1. Passer en mode bulk

Plutôt que le simple tSalesforceOutput…

…mieux vaut utiliser la fonction tSalesforceOutputBulkExec

2. Récupérer les ID Salesforce pour savoir si on est en insert ou en update

Cette manipulation permet de ne pas être en UPSERT :

3. Activer le mode parallèle (intelligemment, en triant les ID)

Attention toutefois, car l’activation du mode « Parallel » peut déclencher l’erreur :

UNABLE_TO_LOCK_ROW:unable to obtain exclusive access to this record or 124 records…

Pour éviter cela, il convient de trier le jeu de données envoyé. En effet, certains des contacts ont une ou plusieurs transactions (relation 1-n).

Lorsque vous uploadez les transactions, Salesforce a besoin de locker le contact associé à la transaction. Or, pendant un chargement en masse en mode parallèle, il peut y avoir des conflits de verrouillage. En triant ainsi, toutes les transactions d’un même contact se retouvent dans le même lot (lot de 10 000), ou au pire dans 2 (à cheval entre 2 lots, 50 transactions à la fin du lot 1, 50 transactions au début du lot 2).

La solution consiste simplement à trier les transactions uploadées par contact ID (via un order by en base, un tsortrow en Talend, au choix !).

Conclusion

Ces quelques étapes permettent d’améliorer grandement les performances d’un outil de CRM majeur, Salesforce. Elles permettent d’envisager de faire des fulls quotidiens, ce qui demeure plus simple et plus fiable que de gérer les deltas.