L'architecture des cartridges est le point de départ des questions d'entretien pour un développeur Salesforce Commerce Cloud. Le poste consiste à faire évoluer un storefront SFRA, à écrire des contrôleurs et des templates ISML, à brancher un PSP, un PIM ou un OMS par le service framework, et à régler catalogue, promotions et jobs dans Business Manager. Sur un projet headless, le front est en React, avec PWA Kit ou Storefront Next, et passe par la SCAPI.
La plateforme est fermée. Pas de base de données accessible, pas de npm côté serveur, un moteur JavaScript propre à Salesforce et des quotas qui coupent un traitement trop lourd. Un profil venu de Magento ou de Node.js le découvre souvent en production. L'expérience s'entend quand la personne explique pourquoi elle étend un contrôleur au lieu de le copier, comment elle garde en cache une page qui affiche un prix personnalisé, ou ce qu'elle fait d'un service tiers qui ne répond plus.
Sur un projet headless, vérifiez aussi le niveau en React. Storefront Next, le nouveau storefront de Salesforce, repose sur React Router 7, React 19 et TypeScript, et Salesforce fournit un outil de migration depuis SFRA et PWA Kit. Le cas pratique du PDF porte sur le retrait en magasin dans un site SFRA.
Les briques techniques d'un développeur SFCC
Cartridges et chemin de cartridges
Le code d'un site SFCC est rangé en cartridges, des dossiers qui regroupent contrôleurs, templates, scripts et ressources. Business Manager définit pour chaque site un chemin de cartridges, lu de gauche à droite : la première cartridge qui fournit un fichier l'emporte. La bonne pratique consiste à ne jamais modifier le socle et à surcharger dans ses propres cartridges, pour garder les mises à jour possibles.
SFRA (Storefront Reference Architecture)
Le storefront de référence côté serveur, qui a remplacé SiteGenesis. Les contrôleurs JavaScript déclarent des routes avec server.get ou server.post, et une cartridge peut les étendre avec append, prepend ou replace. Les sites les plus anciens tournent parfois encore sur SiteGenesis et ses pipelines.
ISML et Page Designer
ISML est le langage de templates de SFCC, avec ses balises isif, isloop, isinclude et iscache. Page Designer permet au marketing de composer des pages à partir de composants que le développeur déclare, avec un fichier JSON de métadonnées et un script. La balise iscache et les remote includes décident de ce qui est mis en cache.
Script API (dw.*)
L'API serveur de la plateforme : dw.catalog pour les produits, dw.order pour le panier et les commandes, dw.system.Transaction pour les écritures. Le code tourne dans un moteur JavaScript propre à Salesforce, sans npm ni accès libre aux fichiers. Des quotas limitent ce qu'une requête ou un job peut faire, et un code qui les ignore casse dès que le volume monte.
Business Manager
L'interface d'administration : catalogue, listes de prix, stocks, promotions, préférences de site, jobs, réglages du cache et des API. Le développeur y déclare des attributs personnalisés, lance des imports et lit les logs. Demandez comment la personne fait passer ces réglages d'une instance à l'autre.
OCAPI et SCAPI
Les deux familles d'API pour le headless et les intégrations. OCAPI, la plus ancienne, se configure dans Business Manager. La SCAPI (Salesforce Commerce API) authentifie les clients avec SLAS et accepte des hooks et des endpoints personnalisés écrits en cartridge. Salesforce oriente les nouveaux projets vers la SCAPI.
PWA Kit et Storefront Next
Les fronts headless en React, hébergés sur Managed Runtime. PWA Kit, aussi appelé Composable Storefront, est le premier des deux. Storefront Next, plus récent, repose sur React Router 7, React 19 et TypeScript et interroge la SCAPI. Un candidat qui a déjà migré l'un vers l'autre a des difficultés précises à raconter.
Service framework et jobs
Le service framework encadre les appels sortants vers un PSP, un ERP ou un OMS : timeout, limiteur de débit, coupe-circuit et journalisation, réglés dans Business Manager. Les jobs exécutent les traitements planifiés, comme les imports de catalogue ou les exports de commandes, avec des étapes par lots pour les gros volumes.
Versions de code et outillage
Le code est envoyé dans une version de code sur une instance, puis activé. Un realm compte des sandboxes, une instance de development, une de staging et la production, alimentée par réplication depuis staging. Les équipes travaillent avec sfcc-ci ou le CLI B2C de Salesforce, une extension VS Code et une CI qui pousse les versions.
Le travail dépend de l'âge du site. Sur un site SFRA en place, le développeur ajoute des fonctionnalités dans des cartridges personnalisées, corrige les régressions après une montée de version et surveille le cache et les quotas avant les soldes. Sur une refonte headless, il écrit des hooks et des endpoints personnalisés de la SCAPI, un front React et le déploiement sur Managed Runtime. Les sites internationaux ajoutent le multi-site, le multi-devise et les listes de prix par pays. La certification Salesforce Certified B2C Commerce Developer atteste la connaissance de la plateforme. Elle ne dit rien de la qualité du code ni de la tenue en charge.
Les points à contrôler chez un développeur Commerce Cloud
- Cartridges et extension de SFRA
- Script API, transactions et quotas
- Cache et performance du storefront
- OCAPI, SCAPI et front headless
- Intégrations par le service framework
- Jobs, imports et déploiement
Questions techniques à poser à un développeur SFCC
Chaque question vient avec ce qu'une bonne réponse contient et le signal qui doit vous alerter. Pas besoin d'être technique pour les poser : écoutez si le candidat raconte du vécu.
Question 1 · confirmé
Vous devez ajouter un champ au formulaire de livraison de SFRA. Où écrivez-vous le code, et comment ?
Une bonne réponseDans une cartridge à soi, placée avant app_storefront_base dans le chemin de cartridges. La personne surcharge la définition XML du formulaire et le template ISML concerné, puis étend le contrôleur avec server.append ou server.prepend en partant de module.superModule, sans recopier le fichier d'origine. La valeur est stockée dans un attribut personnalisé de l'adresse ou de l'expédition, déclaré dans Business Manager.
Signal d'alerteModifier directement app_storefront_base, ou copier tout le contrôleur dans sa cartridge pour changer trois lignes. Dans les deux cas, chaque montée de version de SFRA devient un chantier.
Question 2 · senior
Une fiche produit doit rester en cache, mais elle affiche un prix qui dépend du client connecté. Comment faites-vous ?
Une bonne réponseLa page reste en cache avec iscache, et la partie personnalisée sort dans un remote include, une sous-requête qui a sa propre durée de cache, courte ou nulle. Pour des prix et des promotions qui varient selon le groupe de clients, la personne connaît l'option varyby="price_promotion", qui garde une version en cache par combinaison de prix et de promotions. Elle vérifie ensuite le taux de cache dans les rapports techniques de Business Manager.
Signal d'alerteDésactiver le cache de toute la page, ou lire un prix stocké en session depuis un template mis en cache, ce qui finit par montrer le prix d'un client à un autre.
Question 3 · confirmé
Un job lit 200 000 produits pour mettre à jour un attribut et s'arrête au milieu sur une erreur de quota. Qu'est-ce qui ne va pas ?
Une bonne réponseLe script charge trop d'objets d'un coup ou ouvre une transaction trop grosse. La personne passe à une étape de job orientée lots (chunk) qui lit, traite et écrit par paquets, avec une transaction par paquet, et parcourt les produits avec un itérateur qu'elle ferme à la fin. Pour une simple mise à jour d'attribut, elle propose aussi un import XML du catalogue, prévu pour ce volume.
Signal d'alerteAugmenter le timeout du job, ou mettre toute la boucle dans un seul Transaction.wrap. Aucune idée des quotas de la plateforme.
Question 4 · confirmé
Pendant les soldes, le PSP met dix secondes à répondre et le tunnel de commande se bloque. Comment l'appel aurait-il dû être configuré ?
Une bonne réponsePar le service framework : LocalServiceRegistry.createService avec un profil qui fixe un timeout court, le coupe-circuit et le limiteur de débit dans Business Manager. Le code traite l'échec (message au client, commande en attente ou annulation propre), journalise sans données de carte et se teste avec le mock du service. La personne sait que la notification du PSP sert à confirmer un paiement dont la réponse synchrone s'est perdue.
Signal d'alerteUn appel HTTP écrit à la main sans timeout, ou « on augmente le timeout ».
Question 5 · senior
Sur un front PWA Kit, vous avez besoin d'une donnée que la SCAPI standard ne renvoie pas. Quelles options avez-vous ?
Une bonne réponseUn attribut personnalisé sur le produit ou le panier, renvoyé dans la réponse avec le préfixe c_. Un hook SCAPI qui modifie la réponse. Ou un endpoint personnalisé écrit dans une cartridge, avec son schéma OpenAPI et son script. La personne pèse le coût de chaque option : un hook s'exécute à chaque appel et ajoute sa durée, un endpoint personnalisé doit gérer son authentification par SLAS ou par un client technique.
Signal d'alerteAppeler OCAPI depuis le navigateur avec un identifiant client technique, ou monter un service à côté pour une donnée qui existe déjà dans la plateforme.
Recevez la fiche d'entretien complète en PDF
La fiche pour mener l'entretien de bout en bout, prête à imprimer ou à partager avec le manager.
- 30 questions sur 6 axes, avec la bonne réponse, le signal d'alerte et la relance
- Le niveau visé pour chaque question
- Une mise en situation de 20 minutes et ce qu'on attend du candidat
- La grille d'évaluation de 1 à 4, axe par axe
Recruter un développeur SFCC, les questions qui reviennent
Quelle différence entre un développeur SFCC et un développeur Salesforce classique ?
Le développeur Salesforce classique travaille sur la plateforme CRM, avec Apex, Lightning Web Components et les flows. B2C Commerce vient du rachat de Demandware et n'a presque rien en commun avec elle : JavaScript côté serveur, cartridges, ISML, Business Manager. Salesforce B2B Commerce, en revanche, tourne sur la plateforme CRM. Un profil Apex ne tient pas un poste SFCC sans formation. Sur le CV, cherchez SFRA, PWA Kit ou les cartridges plutôt que le seul mot Salesforce.
Un développeur Magento ou Node.js peut-il passer sur SFCC ?
Oui, s'il est solide en JavaScript et connaît déjà le e-commerce : panier, promotions, paiement, flux de catalogue. Il lui faudra du temps pour les cartridges, Business Manager, le cache de page et les quotas, qui n'ont pas d'équivalent ailleurs. Trailhead propose des parcours gratuits sur B2C Commerce. Pour un poste qui démarre vite sur un site en production, préférez un profil qui a déjà livré sur SFRA.
Que regarder sur le CV d'un développeur SFCC ?
Le type de storefront (SiteGenesis, SFRA, PWA Kit, Storefront Next), les intégrations réalisées (PSP, OMS, PIM, ERP), le nombre de sites et de pays gérés et la durée passée en maintenance. La certification B2C Commerce Developer montre que la personne connaît la plateforme. Un profil qui n'a fait que de l'intégration de maquettes en ISML n'a pas le même niveau qu'un développeur qui a écrit des jobs et des services.
Quel test technique pour un développeur SFCC ?
Un candidat n'a en général pas accès à un sandbox hors mission, donc un exercice à faire chez soi sur la plateforme est difficile à organiser. Proposez plutôt une revue de code en entretien : un contrôleur qui recopie le socle, un template qui appelle la Script API, un appel de service sans timeout. La personne explique ce qu'elle changerait. Le cas du PDF de Delectus se prête aussi à un échange de 20 minutes.
Pour structurer vos autres entretiens, consultez aussi nos pages sur les questions d'entretien de recrutement, la méthode de l'entretien structuré et la grille d'évaluation d'entretien.




