Comment prévisualiser vos données marketing avec Commerce Server
Commerce Server, Développement Add commentsComme vous devez le savoir, Microsoft Commerce Server via le Marketing System vous permets de gérer les compagnes marketing de votre site e-Commerce via les modules:
Ces modules sont tous horodatables. C’est à dire que vous allez pouvoir définir la date de début et date de fin d’affichage/application d’une opération commerciale ou d’une publicité.
Par défaut, le client riche Marketing, vous permets de visualiser une publicité pour vous donner une idée de son rendue:
Et là, comme la majorité de mes clients, vous allez me dire : “ok, je peux voir ma publicité, mais qu’est-ce que cela va donner sur mon site ? Comment m’assurer que le contenu et contenant soit correcte ? Et quid des opérations commerciales ?”
Si la publicité ou l’opération commerciale en question est prévue de s’afficher maintenant, il suffit d’ouvrir votre site pour voir les contenus publicitaires s’afficher et les opérations commerciales s’appliquer… ou non ! N’oubliez pas que vos contenus peuvent être soumis à condition, comme:
- la publicité ne s’affiche que sur une certaine catégorie de pages (home, produits, panier, …),
- la publicité ne s’affiche ou l’opération commerciale ne s’applique que si une caractéristique de l’utilisateur connecté remplis une condition (utilisateur est un homme ou une femme, …)
- etc, etc, … (si vous avez des questions n’hésitez pas à m’en parler
)
Mais que faire lorsque vos opérations commerciales sont prévues pour dans 2 ou 3 mois ? Devez-vous attendre le jour J tout tremblant pour voir le résultat ? La réponse est non!
(ouf… l’honneur est sauf).
Dans les solutions possibles, et fonction de la qualité de votre consultant Commerce Server, vous aurez comme réponse:
- “Ce n’est pas possible, Commerce Server ne sait pas gérer cela!”
- Changez tout de suite de Consultant => Vous recherchez une expertise Commerce Server?
- “Changez la date de votre serveur et rafraîchissez votre cache pour voir le résultat” (véridique!)
- Pratique si votre environnement de staging et sur la même machine que celui de production
- Oblige une intervention sur la plateforme d’hébergement par l’équipe IT
- Pas idéal, si chaque prévisualisation demande le bien vouloir de l’IT qui en général à bien d’autres choses à faire (du moins j’espère
) - Ne pas oubliez de revenir à la vrai date du jour…
- Pas idéal, si chaque prévisualisation demande le bien vouloir de l’IT qui en général à bien d’autres choses à faire (du moins j’espère
- Pratique si votre environnement de staging et sur la même machine que celui de production
- “Désactivez les opérations commerciales en cours puis n’activez que celles que vous souhaitez voir tout en changeant leurs dates d’application pour qu’elles s’appliquent sur le champ.”
- Fastidieux, j’ai des clients qui ont quasi cent publicités à afficher et bien souvent autant d’opérations commerciales (voir plus)…
- Risque de confusion sur les activations ou désactivations
- Toutes celles désactivées sont-elles à réactiver? Ou comment oublier facilement celles activées…
- Risque d’erreur en changeant les dates pour les remettre sur la période souhaitée
- Certains diront qu’un petit développement custom pourrait très bien activé/désactivé une liste de publicité/opération commerciale et changer les dates d’application. Cela est vrai mais ça reste quand même un peu bancal…
- “Pas de soucis, nous avons la solution!”… et maintenant grâce à cet article nos précédents “experts” ont la solution grâce à la suite de ce post
La solution est en fait très simple. Lors du premier chargement de l’application web, le runtime de Commerce Server va charger de nombreuses informations dans son cache et context afin d’améliorer les performances d’exécution du site.
Ce remplissage du cache se fait via 2 procédures stockées (et une autre indirectement) situées dans la base de données marketing:
- mktg_spRuntimeLoadAdvertisements
- mktg_spRuntimeLoadDiscounts
- mktg_spRuntimeLoadReferenceTables
=> Ces procédures stockées sont exécutées par le runtime à chaque démarrage du site ou rafraichissement du cache.
L’équipe produit de Commerce Server ayant très bien fait les choses, il est possible de dire au runtime de Commerce Server de charger d’autres procédures stockées que celles-ci et donc d’y inclure notre propre logique.
L’idée ici, est d’avoir une application web de prévisualisation où nous viendrons faire charger par le runtime nos propres procédures stockées et une autre application web de production ou staging avec le comportement “par défaut”.
Afin d’exécuter d’autres procédures stockées à charger par le runtime de Commerce Server, il nous faut modifier la gestion du cache via une section du fichier web.config > CommerceServer > Caches (voir MSDN: caches Element).
Dans le web.config de notre application web de prévisualisation, nous allons donc spécifier ces configurations de caches avec ces valeurs:
<cache name="Advertising" type="Advertising" refreshInterval="900" retryInterval="30" loaderProgId="Commerce.CSFLoadAdvertisements" writerProgId="Commerce.CSFWriteEvents"> <config key="LoadAdvertisementsProcedure" value="spGael_staging_mktg_spRuntimeLoadAdvertisements" /> </cache> <cache name="Discounts" type="Discounts" refreshInterval="0" retryInterval="30" loaderProgId="Commerce.CSFLoadDiscounts" writerProgId="Commerce.CSFWriteEvents"> <config key="LoadDiscountsProcedure" value="spGael_staging_mktg_spRuntimeLoadDiscounts" /> </cache>
Comme les différents composants de pipeline prennent tous comme axe de calcul la date et l’heure du moment de l’appel, vouloir changer cela reviendrait à en redévelopper l’intégralité… Fastidieux et risqué, surtout que pour beaucoup, les pipelines sont une espèce de boite noire qu’il ne faut pas toucher…
Afin de contourner cela, l’idée est de faire venir le futur à nous
en calculant le nombre de jours qui nous sépare de la date de prévisualisation et de le retrancher à l’ensemble de nos dates de début et date de fin!
Reprenons la procédure stockée “mktg_spRuntimeLoadAdvertisements” qui charge les publicités actives dans le time frame du jour:
On se rend compte que l’on récupère l’ensemble des publicités applicable à la date du 8 juillet 2010. Pour ma démonstration, j’ai créé une bannière publicitaire qui s’appliquera du 01/08/2010 au 31/08/2010:
En exécutant de nouveau ma procédure stockée mktg_spRuntimeLoadAdvertisements, j’obtiens les même résultats que précédemment. Etonnant? Non, puisque ma nouvelle publicité n’est pas éligible !Sa date de début est au 1er août et nous sommes le 8 juillet 2010:
Comme expliqué précédemment, nous allons reprendre la procédure stockée précedente (“mktg_spRuntimeLoadAdvertisements”) pour en créer une nouvelle, que nous appellerons “spGael_staging_mktg_spRuntimeLoadAdvertisements”. Dans cette procédure, nous allons changer les dates de début et date de fin en retranchant le nombre de jour qui sépare la date de prévisualisation à celle d’aujourd’hui.
Vous noterez au passage que la date de prévisualisation est stockée dans une table appelée altima_doPreview qui ne contient qu’une seule colonne et une seule ligne.
Sur l’exécution de ma procédure stockée, j’obtiens ici qu’un seul résultat, puisque seule ma publicité est valide à la date du 15 août 2010:
Dans ce résultat, nous constatons bien que la date de début de ma publicité a basculé au 25 juin 2010 et la date de fin au 25 juillet 2010. En effet, 37 jours séparent le 08 juillet 2010 (date du jour) au 15 août 2010 (date de la prévisualisation). Soit sur ma publicité :
- Date de début: 1er août 2010 – 37 jours => 25 juin 2010
- Date de fin:, 31 août 2010 – 37 jours => 25 juillet 2010
Lançons maintenant notre application web de preview (n’oubliez pas de mettre à jour le web.config comme spécifié précédemment), et miracle… ![]()
Mon application “normale” affiche bien quant à elle, les publicités actives et applicables du moment
Pour terminer, je vous livre ci-dessous la procédure stockée qui vous chargera vos opérations commerciales en mode preview:
A vous maintenant la prévisualisation !










July 9th, 2010 at 11:12
[...] Ce billet était mentionné sur Twitter par Gaël Duhamel. Gaël Duhamel a dit: Comment prévisualiser vos données marketing avec Commerce Server http://goo.gl/fb/HCAYI [...]