UTILISATION DE L'API DE MASSE DE SALESFORCE ET DES CODES APEX AVEC BRIGHTCOVE

Photo de JESS R
JESS R
blog-placeholder image

Chez Brightcove, nous utilisons Salesforce pour gérer les informations relatives à nos clients. Nos équipes de vente, de gestion des comptes, d'assistance et de finance l'utilisent également pour diverses activités telles que la prise de contact avec des prospects, le suivi des cas d'assistance et la génération de rapports d'utilisation. Il est important pour notre entreprise de continuer à alimenter Salesforce en données clients de manière opportune et fiable.

Le modèle de données de nos produits prend en charge une relation de plusieurs à plusieurs entre les utilisateurs et les comptes. Un objet compte représente une organisation ou un département au sein d'une grande organisation, et un objet utilisateur représente une personne qui travaille pour une ou plusieurs organisations. Dans Salesforce, nous personnalisons l'objet Contact intégré pour représenter chaque utilisateur des services Brightcove et nous définissons un objet personnalisé appelé BCAccount pour représenter un compte (voir figure 1).

Figure 1

Figure 1. Modèle de données dans le service Brightcove et Salesforce

Il y a plusieurs années, nous avons développé la fonction de synchronisation des données en utilisant l'API SOAP de Salesforce et quartz, et nous avons constaté quelques problèmes avec cette implémentation. Il y a deux difficultés majeures :

  • Il est trop bavard, ce qui le rend lent. Seuls 700 objets peuvent être synchronisés avec Salesforce par heure.
  • Il faut beaucoup d'efforts pour apporter des modifications au modèle de données. Pour ajouter un nouveau champ à un objet, nous devons exporter un nouveau fichier WSDL depuis Salesforce et générer des classes Java à partir du fichier WSDL.

À la lumière de ces difficultés, nous avons décidé de construire un nouveau système de synchronisation en utilisant l'API en vrac de Salesforce et le code Apex. La nouvelle implémentation se compose d'un moteur de poussée de données appelé RedLine et d'un ensemble de classes Apex Salesforce pour traiter les données en vrac poussées depuis RedLine.

Figure 2

Figure 2. Synchronisation des nouvelles données

RedLine est construit à l'aide de Sinatra, un serveur Web Ruby léger, en tant que service autonome indépendant des autres services de Brightcove. RedLine utilise le planificateur rufus pour interroger périodiquement les créations, mises à jour et suppressions d'objets de Brightcove via les API RESTful. RedLine transforme ensuite la réponse JSON en CSV et l'envoie à Salesforce en tant que demande groupée. Salesforce a une limite de 10 000 objets par demande groupée, ce qui est suffisant pour notre utilisation. Étant donné que la demande groupée est traitée de manière asynchrone dans Salesforce, aucun des services Brightcove ni RedLine n'a besoin d'attendre après l'envoi des données à Salesforce.

Nous avons écrit quelques classes Apex pour traiter les demandes en masse, notamment en adaptant les objets utilisateur et compte aux objets Salesforce, puis nous avons déployé les classes Apex dans Salesforce et programmé des tâches Apex par lots pour exécuter ces classes une fois que les données arrivent sous forme de demande en masse. Ainsi, aucun code n'existe dans les services Brightcove pour le modèle de données Salesforce et seul le code Apex de Salesforce doit traiter le modèle de données Salesforce. Salesforce fournit un ensemble d'outils de surveillance pour les requêtes en masse et les tâches par lots Apex.

S'il y a des erreurs pendant le traitement d'une demande groupée, nous pouvons facilement les voir dans l'interface Web de Salesforce. Nous avons également déployé une classe Apex qui s'exécute périodiquement pour vérifier si une demande groupée arrive à la fréquence prévue et qui émet une alerte si une demande n'est pas arrivée depuis un certain temps.

Dans le nouveau système de synchronisation, pour publier une modification des nouveaux champs de l'objet utilisateur ou compte, il suffit d'ajouter les nouveaux champs dans l'objet personnalisé Salesforce, puis d'exposer les nouveaux champs dans la réponse JSON de l'API du service Brightcove. Nous n'avons pas besoin de modifier ou de redémarrer RedLine pour modifier le format de l'objet, car RedLine est suffisamment intelligent pour convertir les nouveaux champs JSON en nouvelles colonnes CSV dans les requêtes en masse.

Quatre modifications ont été apportées aux objets "compte" et une aux objets "utilisateur", et nous n'avons pas eu à modifier une ligne de code RedLine pour ces changements. Avec l'ancien système de synchronisation basé sur l'API SOAP, il nous fallait une à deux semaines pour synchroniser un nouveau champ pour les objets utilisateurs ou comptes.

Après avoir fait fonctionner cette nouvelle application de synchronisation en production pendant 8 mois, nous l'avons vue gérer quelques changements de données en rafale avec élégance. Récemment, un lot de 900 comptes a été modifié au cours d'un déploiement, et tous ont été synchronisés avec Salesforce en moins d'une minute (la plupart du temps, les classes Apex s'exécutaient dans Salesforce). Dans l'ancien système de synchronisation, il fallait plus d'une heure pour synchroniser le même nombre d'objets.

Partager

Tags

Brightcove a aidé un fabricant d'équipements de diagnostic à réduire le temps et les dépenses consacrés à la salle de classe tout en améliorant la réussite ...
Brightcove a aidé la place de marché automobile la plus reconnue à gérer son énorme vidéothèque et à la rentabiliser...
Pour préserver l'intégrité de leur marque, les enseignes de distribution ont besoin de lecteurs vidéo personnalisables qui leur permettent d'ajuster les couleurs, la police...

PRÊT À COMMENCER ?

Contactez-nous pour savoir comment nous pouvons améliorer vos efforts de marketing vidéo et vous aider à générer les résultats et le retour sur investissement dont vous avez besoin.