Aller au contenu principal

Intégration ServiceNow

L'intégration ServiceNow (Admin > Paramètres > ServiceNow) permet la synchronisation bidirectionnelle entre Canopy et votre ServiceNow CMDB. Ce guide couvre tout, de la configuration initiale aux recettes avancées et aux bonnes pratiques opérationnelles.

Intégration ServiceNow

Pourquoi intégrer ServiceNow avec Canopy ?

ServiceNow CMDB et les outils d'architecture d'entreprise servent des objectifs différents mais complémentaires :

ServiceNow CMDBCanopy
FocusOpérations IT -- ce qui fonctionne, qui en est responsable, quels incidents se sont produitsPlanification stratégique -- à quoi devrait ressembler le paysage dans 3 ans ?
Maintenu parOpérations IT, Gestion des actifsÉquipe EA, Architectes métier
Point fortDécouverte automatisée, workflows ITSM, précision opérationnelleContexte métier, cartographie des capacités, planification du cycle de vie, évaluations
Données typiquesNoms d'hôtes, IP, statut d'installation, groupes d'affectation, contratsCriticité métier, adéquation fonctionnelle, dette technique, feuille de route stratégique

Canopy est le système de référence pour votre paysage d'architecture -- les noms, descriptions, plans de cycle de vie, évaluations et contexte métier vivent tous ici. ServiceNow complète Canopy avec des métadonnées opérationnelles et techniques (noms d'hôtes, IP, données SLA, statut d'installation) provenant de la découverte automatisée et des workflows ITSM. L'intégration maintient ces deux systèmes connectés tout en respectant que Canopy dirige.

Ce que vous pouvez faire

  • Synchronisation pull -- Alimenter Canopy avec des CI depuis ServiceNow, puis en prendre la propriété. Les pulls suivants ne mettent à jour que les champs opérationnels (IP, statut, SLA) que SNOW découvre automatiquement
  • Synchronisation push -- Exporter les données curées par l'EA vers ServiceNow (noms, descriptions, évaluations, plans de cycle de vie) pour que les équipes ITSM voient le contexte EA
  • Synchronisation bidirectionnelle -- Canopy dirige la plupart des champs ; SNOW dirige un petit ensemble de champs opérationnels/techniques. Les deux systèmes restent synchronisés
  • Cartographie d'identité -- Un suivi persistant de références croisées (sys_id <-> UUID de fiche) garantit que les enregistrements restent liés entre les synchronisations

Architecture de l'intégration

+------------------+ HTTPS / Table API +------------------+
| Canopy | <--------------------------------> | ServiceNow |
| | | |
| Fiches | Pull: SNOW CIs -> Fiches Turbo | CMDB CIs |
| (Application, | Push: Fiches Turbo -> SNOW CIs | (cmdb_ci_appl, |
| ITComponent, | | cmdb_ci_server, |
| Provider, ...) | Identity Map suit sys_id &lt;-> UUID | core_company) |
+------------------+ +------------------+

L'intégration utilise l'API Table de ServiceNow via HTTPS. Les identifiants sont chiffrés au repos en utilisant Fernet (AES-128-CBC) dérivé de votre SECRET_KEY. Toutes les opérations de synchronisation sont enregistrées comme événements avec source: "servicenow_sync" pour une piste d'audit complète.


Planification de votre intégration

Avant de configurer quoi que ce soit, répondez à ces questions :

1. Quels types de fiches ont besoin de données depuis ServiceNow ?

Commencez petit. Les points d'intégration les plus courants sont :

PrioritéType CanopySource ServiceNowPourquoi
HauteApplicationcmdb_ci_business_appLes applications sont le cœur de l'EA -- la CMDB a les noms, propriétaires et statuts faisant autorité
HauteITComponent (Logiciel)cmdb_ci_spkgLes produits logiciels alimentent le suivi EOL et le radar technologique
MoyenneITComponent (Matériel)cmdb_ci_serverPaysage de serveurs pour la cartographie d'infrastructure
MoyenneProvidercore_companyRegistre de fournisseurs pour la gestion des coûts et des relations
FaibleInterfacecmdb_ci_endpointPoints d'intégration (souvent maintenus manuellement en EA)
FaibleDataObjectcmdb_ci_databaseInstances de base de données

2. Quel système est la source de vérité pour chaque champ ?

C'est la décision la plus importante. Le choix par défaut devrait être Canopy dirige -- l'outil EA est le système de référence pour votre paysage d'architecture. ServiceNow ne devrait diriger que pour un ensemble restreint de champs opérationnels et techniques provenant de la découverte automatisée ou des workflows ITSM. Tout le reste -- noms, descriptions, évaluations, planification du cycle de vie, coûts -- est possédé et curé par l'équipe EA dans Canopy.

Modèle recommandé -- « Canopy dirige, SNOW complète » :

Type de champSource de véritéPourquoi
Noms et descriptionsTurbo dirigeL'équipe EA cure les noms faisant autorité et écrit les descriptions stratégiques ; les noms CMDB peuvent être brouillons ou auto-générés
Criticité métierTurbo dirigeÉvaluation stratégique de l'équipe EA -- pas des données opérationnelles
Adéquation fonctionnelle / techniqueTurbo dirigeLes scores du modèle TIME relèvent de l'EA
Cycle de vie (toutes les phases)Turbo dirigePlan, phaseIn, active, phaseOut, endOfLife -- toutes des données de planification EA
Données de coûtTurbo dirigeL'EA suit le coût total de possession ; la CMDB peut avoir des lignes de contrat mais l'EA possède la vue consolidée
Type d'hébergement, catégorieTurbo dirigeL'EA classe les applications par modèle d'hébergement pour l'analyse stratégique
Métadonnées techniquesSNOW dirigeIP, versions OS, noms d'hôtes, numéros de série -- données de découverte automatisée que l'EA ne maintient pas
SLA / statut opérationnelSNOW dirigeStatut d'installation, objectifs SLA, métriques de disponibilité -- données opérationnelles ITSM
Groupe d'affectation / supportSNOW dirigePropriété opérationnelle suivie dans les workflows ServiceNow
Dates de découverteSNOW dirigePremière/derniere découverte, dernier scan -- métadonnées d'automatisation CMDB

3. À quelle fréquence synchroniser ?

ScénarioFréquenceNotes
Import initialUne foisMode additif, examiner attentivement
Gestion active du paysageQuotidienAutomatisé via cron pendant les heures creuses
Rapports de conformitéHebdomadaireAvant de générer les rapports
Ad-hocSelon les besoinsAvant les revues ou présentations EA majeures

Étape 1 : Prérequis ServiceNow

Créer un compte de service

Dans ServiceNow, créez un compte de service dédié (n'utilisez jamais de comptes personnels) :

RôleObjectifRequis ?
itilAccès en lecture aux tables CMDBOui
cmdb_readLire les éléments de configurationOui
rest_api_explorerUtile pour tester les requêtesRecommandé
import_adminAccès en écriture aux tables ciblesUniquement pour le push sync

Bonne pratique : Créez un rôle personnalisé avec un accès en lecture seule aux tables spécifiques que vous prévoyez de synchroniser. Le rôle itil est large -- un rôle personnalisé limite le rayon d'impact.

Exigences réseau

  • Le backend Canopy doit pouvoir atteindre votre instance SNOW via HTTPS (port 443)
  • Configurez les règles de pare-feu et les listes blanches IP
  • Format de l'URL de l'instance : https://entreprise.service-now.com ou https://entreprise.servicenowservices.com

Choisir la méthode d'authentification

MéthodeAvantagesInconvénientsRecommandation
Basic AuthConfiguration simpleIdentifiants envoyés à chaque requêteDéveloppement/test uniquement
OAuth 2.0Basé sur les jetons, scope, compatible auditPlus d'étapes de configurationRecommandé pour la production

Pour OAuth 2.0 :

  1. Dans ServiceNow : System OAuth > Application Registry
  2. Créez un nouveau point de terminaison OAuth API pour les clients externes
  3. Notez le Client ID et le Client Secret
  4. Renouvelez les secrets tous les 90 jours

Étape 2 : Créer une connexion

Naviguez vers Admin > ServiceNow > onglet Connexions.

Créer et tester

  1. Cliquez sur Ajouter une connexion
  2. Remplissez :
ChampExemple de valeurNotes
NomCMDB ProductionLibellé descriptif pour votre équipe
URL de l'instancehttps://entreprise.service-now.comDoit utiliser HTTPS
Type d'authBasic Auth ou OAuth 2.0OAuth recommandé pour la production
Identifiants(selon le type d'auth)Chiffrés au repos via Fernet
  1. Cliquez sur Créer, puis cliquez sur l'icône de test (symbole wifi) pour vérifier la connectivité
  • Badge vert « Connecté » -- Prêt à l'emploi
  • Badge rouge « Échoué » -- Vérifiez les identifiants, le réseau et l'URL

Connexions multiples

Vous pouvez créer plusieurs connexions pour :

  • Instances de Production vs développement
  • Instances SNOW regionales (par ex. EMEA, APAC)
  • Différentes équipes avec des comptes de service séparés

Chaque mapping référence une connexion spécifique.


Étape 3 : Concevoir vos mappings

Basculez vers l'onglet Mappings. Un mapping connecte un type de fiche Canopy à une table ServiceNow.

Créer un mapping

Cliquez sur Ajouter un mapping et configurez :

ChampDescriptionExemple
ConnexionQuelle instance ServiceNow utiliserCMDB Production
Type de ficheLe type de fiche Canopy à synchroniserApplication
Table SNOWLe nom API de la table ServiceNowcmdb_ci_business_app
Direction de syncQuelles opérations sont disponibles (voir ci-dessous)ServiceNow -> Canopy
Mode de syncComment gérer les suppressionsConservateur
Ratio max de suppressionSeuil de sécurité pour les suppressions en masse50%
Requête de filtreRequête encodée ServiceNow pour limiter le périmètreactive=true^install_status=1
Sauter le stagingAppliquer les modifications directement sans examenDésactivé (recommandé pour la synchronisation initiale)

Mappings de tables SNOW courants

Type CanopyTable ServiceNowDescription
Applicationcmdb_ci_business_appApplications métier (le plus courant)
Applicationcmdb_ci_applCI d'applications généraux
ITComponent (Logiciel)cmdb_ci_spkgPaquets logiciels
ITComponent (Matériel)cmdb_ci_serverServeurs physiques/virtuels
ITComponent (SaaS)cmdb_ci_cloud_service_accountComptes de services cloud
Providercore_companyFournisseurs / entreprises
Interfacecmdb_ci_endpointPoints de terminaison d'intégration
DataObjectcmdb_ci_databaseInstances de base de données
Systemcmdb_ci_computerCI d'ordinateurs
Organizationcmn_departmentDépartements

Exemples de requêtes de filtre

Toujours filtrer pour éviter d'importer des enregistrements obsolètes ou retirés :

# Uniquement les CI actifs (filtre minimum recommandé)
active=true

# CI actifs avec statut d'installation « Installé »
active=true^install_status=1

# Applications en utilisation de production
active=true^used_for=Production

# CI mis a jour dans les 30 derniers jours
active=true^sys_updated_on>=javascript:gs.daysAgoStart(30)

# Groupe d'affectation spécifique
active=true^assignment_group.name=IT Operations

# Exclure les CI retirés
active=true^install_statusNOT IN7,8

Bonne pratique : Incluez toujours active=true au minimum. Les tables CMDB contiennent souvent des milliers d'enregistrements retirés ou décommissionnés qui ne devraient pas être importés dans votre paysage EA.


Étape 4 : Configurer les mappings de champs

Chaque mapping contient des mappings de champs qui définissent comment les champs individuels se traduisent entre les deux systèmes. Le champ Canopy fournit des suggestions d'autocompletion basées sur le type de fiche sélectionné -- incluant les champs principaux, les dates de cycle de vie et tous les attributs personnalisés du schema du type.

Ajout de champs

Pour chaque mapping de champ, vous configurez :

ParamètreDescription
Champ CanopyChemin du champ dans Canopy (l'autocompletion suggere des options basées sur le type de fiche)
Champ SNOWNom de colonne API ServiceNow (par ex. name, short_description)
DirectionSource de vérité par champ : SNOW dirige ou Turbo dirige
TransformationComment convertir les valeurs : Direct, Correspondance de valeurs, Date, Booleen
Identité (case ID)Utilise pour la correspondance des enregistrements lors de la synchronisation initiale

Chemins de champs Canopy

L'autocompletion regroupe les champs par section. Voici la référence complète des chemins :

CheminCibleExemple de valeur
nameNom d'affichage de la fiche"SAP S/4HANA"
descriptionDescription de la fiche"Système ERP principal pour les finances"
lifecycle.planCycle de vie : Date de planification"2024-01-15"
lifecycle.phaseInCycle de vie : Date de mise en service"2024-03-01"
lifecycle.activeCycle de vie : Date d'activation"2024-06-01"
lifecycle.phaseOutCycle de vie : Date de retrait progressif"2028-12-31"
lifecycle.endOfLifeCycle de vie : Date de fin de vie"2029-06-30"
attributes.<cle>Tout attribut personnalisé du schema de champs du type de ficheVarie selon le type de champ

Par exemple, si votre type Application a un champ avec la clé businessCriticality, sélectionnez attributes.businessCriticality dans la liste déroulante.

Champs d'identité -- Comment fonctionne la correspondance

Marquez un ou plusieurs champs comme Identité (icône de clé). Ceux-ci sont utilisés lors de la première synchronisation pour faire correspondre les enregistrements ServiceNow aux fiches Canopy existantes :

  1. Recherche dans la carte d'identité -- Si un lien sys_id <-> UUID de fiche existe déjà, l'utiliser
  2. Correspondance exacte du nom -- Correspondance sur la valeur du champ d'identité (par ex. correspondance par nom d'application)
  3. Correspondance approximative -- Si aucune correspondance exacte, utilisation de SequenceMatcher avec un seuil de similarité de 85%

Bonne pratique : Marquez toujours le champ name comme champ d'identité. Si les noms diffèrent entre les systèmes (par ex. SNOW inclut des numéros de version comme « SAP S/4HANA v2.1 » mais Canopy a « SAP S/4HANA »), nettoyez-les avant la première synchronisation pour une meilleure qualité de correspondance.

Après la première synchronisation qui établit les liens de la carte d'identité, les synchronisations suivantes utilisent la carte d'identité persistante et ne reposent plus sur la correspondance par nom.


Étape 5 : Exécuter votre première synchronisation

Basculez vers l'onglet Tableau de bord de synchronisation.

Déclenchement d'une synchronisation

Pour chaque mapping actif, vous voyez des boutons Pull et/ou Push selon la direction de synchronisation configurée :

  • Pull (icône de téléchargement cloud) -- Récupère les données de SNOW vers Canopy
  • Push (icône d'envoi cloud) -- Envoie les données Canopy vers ServiceNow

Ce qui se passe pendant un Pull Sync

1. FETCH Recuperer tous les enregistrements correspondants de SNOW (lots de 500)
2. MATCH Faire correspondre chaque enregistrement a une fiche existante :
a) Carte d'identite (recherche persistante sys_id &lt;-> UUID de fiche)
b) Correspondance exacte du nom sur les champs d'identite
c) Correspondance approximative du nom (seuil de similarité 85%)
3. TRANSFORM Appliquer les mappings de champs pour convertir SNOW -> format Canopy
4. DIFF Comparer les donnees transformees aux champs de la fiche existante
5. STAGE Assigner une action a chaque enregistrement :
- create : Nouveau, aucune fiche correspondante trouvee
- update : Correspondance trouvee, champs differents
- skip : Correspondance trouvee, aucune difference
- delete : Dans la carte d'identite mais absent de SNOW
6. APPLY Executer les actions du staging (creer/mettre a jour/archiver les fiches)

Lorsque Sauter le staging est activé, les étapes 5 et 6 fusionnent -- les actions sont appliquées directement sans écrire d'enregistrements en staging.

Examen des résultats de synchronisation

Le tableau Historique de synchronisation affiche après chaque exécution :

ColonneDescription
DébutQuand la synchronisation a commencé
DirectionPull ou Push
Statutcompleted, failed ou running
RécupérésNombre total d'enregistrements récupérés de ServiceNow
CréésNouvelles fiches créées dans Canopy
Mis à jourFiches existantes mises à jour
SupprimésFiches archivées (supprimées de manière logique)
ErreursEnregistrements qui n'ont pas pu être traités
DuréeTemps réel

Cliquez sur l'icône de liste sur n'importe quelle exécution pour inspecter les enregistrements individuels du staging, y compris le diff au niveau des champs pour chaque mise à jour.

Procédure recommandée pour la première synchronisation

1. Definir le mapping en mode ADDITIF avec le staging ACTIVÉ
2. Executer la synchronisation pull
3. Examiner les enregistrements en staging -- vérifier que les creations sont correctes
4. Aller dans l'Inventaire, vérifier les fiches importées
5. Ajuster les mappings de champs ou la requête de filtre si nécessaire
6. Relancer jusqu'à satisfaction
7. Basculer en mode CONSERVATEUR pour l'utilisation continue
8. Apres plusieurs executions reussies, activer Sauter le staging

Comprendre la direction de synchronisation vs la direction des champs

C'est le concept le plus fréquemment mal compris. Il y a deux niveaux de direction qui fonctionnent ensemble :

Niveau table : Direction de synchronisation

Définie sur le mapping lui-même. Contrôle quelles opérations de synchronisation sont disponibles sur le tableau de bord de synchronisation :

Direction de syncBouton Pull ?Bouton Push ?À utiliser quand...
ServiceNow -> CanopyOuiNonLa CMDB est la source maîtresse, vous importez uniquement
Canopy -> ServiceNowNonOuiL'outil EA enrichit la CMDB avec des évaluations
BidirectionnelOuiOuiLes deux systèmes contribuent des champs différents

Niveau champ : Direction

Définie par mapping de champ. Contrôle quelle valeur du système prend le dessus lors d'une exécution de synchronisation :

Direction du champPendant le Pull (SNOW -> Turbo)Pendant le Push (Turbo -> SNOW)
SNOW dirigeLa valeur est importée depuis ServiceNowLa valeur est ignorée (non pushée)
Turbo dirigeLa valeur est ignorée (non écrasée)La valeur est exportée vers ServiceNow

Comment ils fonctionnent ensemble -- Exemple

Mapping : Application <-> cmdb_ci_business_app, Bidirectionnel

ChampDirectionLe Pull fait...Le Push fait...
nameTurbo dirigeIgnore (l'EA cure les noms)Pousse le nom EA -> SNOW
descriptionTurbo dirigeIgnore (l'EA écrit les descriptions)Pousse la description -> SNOW
lifecycle.activeTurbo dirigeIgnore (l'EA gère le cycle de vie)Pousse la date de mise en prod -> SNOW
attributes.businessCriticalityTurbo dirigeIgnore (évaluation EA)Pousse l'évaluation -> champ SNOW personnalisé
attributes.ipAddressSNOW dirigeImporte l'IP depuis la découverteIgnore (donnée opérationnelle)
attributes.installStatusSNOW dirigeImporte le statut opérationnelIgnore (donnée ITSM)

Point clé : La direction au niveau de la table détermine quels boutons apparaissent. La direction au niveau du champ détermine quels champs sont effectivement transférés lors de chaque opération. Un mapping bidirectionnel où Canopy dirige la plupart des champs et SNOW ne dirige que les champs opérationnels/techniques est la configuration la plus puissante.

Bonne pratique : Direction des champs par type de données

Le choix par défaut devrait être Turbo dirige pour la grande majorite des champs. Ne définissez SNOW dirige que pour les métadonnées opérationnelles et techniques provenant de la découverte automatisée ou des workflows ITSM.

Catégorie de donnéesDirection recommandéeJustification
Noms, libellés d'affichageTurbo dirigeL'équipe EA cure des noms faisant autorité et propres -- les noms CMDB sont souvent auto-générés ou incohérents
DescriptionTurbo dirigeLes descriptions EA capturent le contexte stratégique, la valeur métier et la signification architecturale
Criticité métier (modèle TIME)Turbo dirigeÉvaluation fondamentale de l'EA -- pas des données opérationnelles
Adéquation fonctionnelle/techniqueTurbo dirigeNotation et classification de feuille de route spécifiques à l'EA
Cycle de vie (toutes les phases)Turbo dirigePlan, phaseIn, active, phaseOut, endOfLife sont toutes des décisions de planification EA
Données de coûtTurbo dirigeL'EA suit le coût total de possession et l'allocation budgétaire
Type d'hébergement, classificationTurbo dirigeCatégorisation stratégique maintenue par les architectes
Informations fournisseurTurbo dirigeL'EA gère la stratégie fournisseur, les contrats et les risques -- SNOW peut avoir un nom de fournisseur mais l'EA possède la relation
Métadonnées techniques (OS, IP, nom d'hôte)SNOW dirigeDonnées de découverte automatisée -- l'EA ne maintient pas cela
Objectifs SLA, métriques de disponibilitéSNOW dirigeDonnées opérationnelles des workflows ITSM
Statut d'installation, état opérationnelSNOW dirigeLa CMDB suit si un CI est installé, retiré, etc.
Groupe d'affectation, équipe de supportSNOW dirigePropriété opérationnelle gérée dans ServiceNow
Métadonnées de découverte (première/derniere fois vu)SNOW dirigeHorodatages d'automatisation CMDB

Sauter le staging -- Quand l'utiliser

Par défaut, les synchronisations pull suivent un workflow staging puis application :

Fetch -> Match -> Transform -> Diff -> STAGE -> Review -> APPLY

Les enregistrements sont écrits dans une table de staging, vous permettant de passer en revue ce qui va changer avant d'appliquer. Ceci est visible dans le tableau de bord de synchronisation sous « Voir les enregistrements en staging ».

Mode Sauter le staging

Lorsque vous activez Sauter le staging sur un mapping, les enregistrements sont appliqués directement :

Fetch -> Match -> Transform -> Diff -> APPLIQUER DIRECTEMENT

Aucun enregistrement de staging n'est créé -- les modifications sont immédiates.

Staging (par défaut)Sauter le staging
Étape de revueOui -- inspecter les diffs avant d'appliquerNon -- les modifications s'appliquent immédiatement
Table d'enregistrements stagingRemplie avec les entrées de création/mise à jour/suppressionNon remplie
Piste d'auditEnregistrements staging + historique des événementsHistorique des événements uniquement
PerformanceLégèrement plus lent (écriture des lignes de staging)Légèrement plus rapide
AnnulationPeut annuler avant d'appliquerDoit revenir manuellement

Quand utiliser chaque option

ScénarioRecommandation
Premier importUtiliser le staging -- Examiner ce qui sera créé avant d'appliquer
Mapping nouveau ou modifiéUtiliser le staging -- Vérifier que les transformations de champs produisent le bon résultat
Mapping stable et bien testeSauter le staging -- Pas besoin de revoir chaque exécution
Synchronisations quotidiennes automatisées (cron)Sauter le staging -- Les exécutions sans surveillance ne peuvent pas attendre une revue
CMDB volumineuse (10 000+ CI)Sauter le staging -- Evite de créer des milliers de lignes de staging
Environnement sensible à la conformitéUtiliser le staging -- Maintenir une piste d'audit complète dans la table de staging

Bonne pratique : Commencez avec le staging activé pour vos premières synchronisations. Une fois que vous êtes confiant que le mapping produit des résultats corrects, activez le saut de staging pour les exécutions automatisées.


Modes de synchronisation et sécurité des suppressions

Modes de synchronisation

ModeCreationsMises à jourSuppressionsIdeal pour
AdditifOuiOuiJamaisImports initiaux, environnements à faible risque
ConservateurOuiOuiUniquement les fiches créées par la syncPar défaut pour les synchronisations continues
StrictOuiOuiToutes les fiches liéesMiroir complet de la CMDB

Le mode Additif ne supprime jamais de fiches de Canopy, ce qui en fait l'option la plus sûre pour les premiers imports et les environnements où Canopy contient des fiches absentes de ServiceNow (fiches créées manuellement, fiches d'autres sources).

Le mode Conservateur (par défaut) suit si chaque fiche a été originellement créée par le moteur de synchronisation. Seules ces fiches peuvent être auto-archivées si elles disparaissent de ServiceNow. Les fiches créées manuellement dans Canopy ou importées d'autres sources ne sont jamais touchées.

Le mode Strict archive toute fiche liée dont le CI ServiceNow correspondant n'apparaît plus dans les résultats de la requête, quel que soit le créateur. Utilisez-le uniquement lorsque ServiceNow est la source de vérité absolue et que vous souhaitez que Canopy soit un miroir exact.

Ratio max de suppression -- Filet de sécurité

Par mesure de sécurité, le moteur saute toutes les suppressions si le nombre dépasse le ratio configuré :

suppressions / total_lies > ratio_max_suppression -> SAUTER TOUTES LES SUPPRESSIONS

Exemple avec 10 enregistrements liés et un seuil de 50% :

ScénarioSuppressionsRatioRésultat
3 CI supprimés normalement3 / 10 = 30%Sous le seuilLes suppressions procèdent
6 CI supprimés d'un coup6 / 10 = 60%Au-dessus du seuilToutes les suppressions sautées
SNOW retourne vide (panne)10 / 10 = 100%Au-dessus du seuilToutes les suppressions sautées

Cela prévient la perte catastrophique de données suite à des changements de requête de filtre, des pannes temporaires de ServiceNow ou des noms de tables mal configurés.

Bonne pratique : Maintenez le ratio de suppression à 50% ou moins pour les tables avec moins de 100 enregistrements. Pour les grandes tables (1 000+), vous pouvez le définir en sécurité à 25%.

Progression recommandée

Semaine 1 : Mode ADDITIF, staging ACTIVÉ, executer manuellement, examiner chaque enregistrement
Semaine 2-4 : Mode CONSERVATEUR, staging ACTIVÉ, executer quotidiennement, vérifier les résultats par échantillonnage
Mois 2+ : Mode CONSERVATEUR, staging DESACTIVE (sauter), cron quotidien automatise

Recettes recommandées par type

Recette 1 : Applications depuis la CMDB (La plus courante)

Objectif : Importer le paysage applicatif depuis ServiceNow, puis prendre la propriété des noms, descriptions, évaluations et cycle de vie dans Canopy. SNOW ne dirige que les champs opérationnels.

Mapping :

ParamètreValeur
Type de ficheApplication
Table SNOWcmdb_ci_business_app
DirectionBidirectionnel
ModeConservateur
Filtreactive=true^install_status=1

Mappings de champs :

Champ CanopyChamp SNOWDirectionTransformationID ?
namenameTurbo dirigeDirectOui
descriptionshort_descriptionTurbo dirigeDirect
lifecycle.activego_live_dateTurbo dirigeDate
lifecycle.endOfLiferetirement_dateTurbo dirigeDate
attributes.businessCriticalitybusines_criticalityTurbo dirigeCorrespondance de valeurs
attributes.hostingTypehosting_typeTurbo dirigeDirect
attributes.installStatusinstall_statusSNOW dirigeDirect
attributes.ipAddressip_addressSNOW dirigeDirect

Configuration de la correspondance de valeurs pour businessCriticality :

{
"mapping": {
"1 - most critical": "missionCritical",
"2 - somewhat critical": "businessCritical",
"3 - less critical": "businessOperational",
"4 - not critical": "administrativeService"
}
}

Conseil pour la première sync : Lors du tout premier pull, les valeurs SNOW remplissent tous les champs (puisque les fiches n'existent pas encore). Après cela, les champs où Turbo dirige sont possédés par l'équipe EA -- les pulls suivants ne mettent à jour que les champs opérationnels où SNOW dirige (statut d'installation, IP), tandis que l'équipe EA gère tout le reste directement dans Canopy.

Après l'import : Affinez les noms d'applications, écrivez les descriptions stratégiques, mappez aux Capacités Métier, ajoutez les évaluations d'adéquation fonctionnelle/technique et définissez les phases du cycle de vie -- tout cela est maintenant possédé par Canopy et sera repoussée vers ServiceNow lors des push syncs.


Recette 2 : Composants IT (Serveurs)

Objectif : Importer l'infrastructure de serveurs pour la cartographie d'infrastructure et l'analyse de dépendances. Les serveurs sont plus opérationnels que les applications, donc plus de champs viennent de SNOW -- mais Canopy dirige toujours les noms et les descriptions.

Mapping :

ParamètreValeur
Type de ficheITComponent
Table SNOWcmdb_ci_server
DirectionBidirectionnel
ModeConservateur
Filtreactive=true^hardware_statusNOT IN6,7

Mappings de champs :

Champ CanopyChamp SNOWDirectionTransformationID ?
namenameTurbo dirigeDirectOui
descriptionshort_descriptionTurbo dirigeDirect
attributes.manufacturermanufacturer.nameTurbo dirigeDirect
attributes.operatingSystemosSNOW dirigeDirect
attributes.ipAddressip_addressSNOW dirigeDirect
attributes.serialNumberserial_numberSNOW dirigeDirect
attributes.hostnamehost_nameSNOW dirigeDirect

Note : Pour les serveurs, les champs opérationnels/de découverte comme l'OS, l'IP, le numéro de série et le nom d'hôte proviennent naturellement de la découverte automatisée de SNOW. Mais l'équipe EA possède toujours le nom d'affichage (qui peut différer du nom d'hôte) et la description pour le contexte stratégique.

Après l'import : Liez les Composants IT aux Applications en utilisant les relations, ce qui alimente le graphe de dépendances et les rapports d'infrastructure.


Recette 3 : Produits logiciels avec suivi EOL

Objectif : Importer les produits logiciels et les combiner avec l'intégration endoflife.date de Canopy. Canopy dirige sur les noms, descriptions et le fournisseur -- la version est un champ factuel que SNOW peut diriger.

Mapping :

ParamètreValeur
Type de ficheITComponent
Table SNOWcmdb_ci_spkg
DirectionBidirectionnel
ModeConservateur
Filtreactive=true

Mappings de champs :

Champ CanopyChamp SNOWDirectionTransformationID ?
namenameTurbo dirigeDirectOui
descriptionshort_descriptionTurbo dirigeDirect
attributes.versionversionSNOW dirigeDirect
attributes.vendormanufacturer.nameTurbo dirigeDirect

Après l'import : Allez dans Admin > EOL et utilisez la recherche en masse pour faire correspondre automatiquement les Composants IT importés avec les produits endoflife.date. Cela vous donne un suivi automatise des risques EOL qui combine l'inventaire CMDB avec les données publiques de cycle de vie.


Recette 4 : Fournisseurs (Bidirectionnel)

Objectif : Maintenir le registre de fournisseurs en synchronisation. Canopy possède les noms de fournisseurs, les descriptions et le contexte stratégique. SNOW complète avec les données de contact opérationnelles.

Mapping :

ParamètreValeur
Type de ficheProvider
Table SNOWcore_company
DirectionBidirectionnel
ModeAdditif
Filtrevendor=true

Mappings de champs :

Champ CanopyChamp SNOWDirectionTransformationID ?
namenameTurbo dirigeDirectOui
descriptionnotesTurbo dirigeDirect
attributes.websitewebsiteTurbo dirigeDirect
attributes.contactEmailemailSNOW dirigeDirect

Pourquoi Turbo dirige pour la plupart des champs : L'équipe EA cure la stratégie fournisseur, gère les relations et suit les risques -- cela inclut le nom d'affichage du fournisseur, la description et la présence web. SNOW ne dirige que sur les données de contact opérationnelles qui peuvent être mises à jour par les équipes d'approvisionnement ou de gestion des actifs.


Recette 5 : Pousser les évaluations EA vers ServiceNow

Objectif : Exporter les évaluations spécifiques à l'EA vers des champs personnalisés ServiceNow pour que les équipes ITSM voient le contexte EA.

Mapping :

ParamètreValeur
Type de ficheApplication
Table SNOWcmdb_ci_business_app
DirectionCanopy -> ServiceNow
ModeAdditif

Mappings de champs :

Champ CanopyChamp SNOWDirectionTransformationID ?
namenameSNOW dirigeDirectOui
attributes.businessCriticalityu_ea_business_criticalityTurbo dirigeCorrespondance de valeurs
attributes.functionalSuitabilityu_ea_functional_fitTurbo dirigeCorrespondance de valeurs
attributes.technicalSuitabilityu_ea_technical_fitTurbo dirigeCorrespondance de valeurs

Important : Le push sync vers des champs personnalisés (préfixés par u_) nécessite que ces colonnes existent déjà dans ServiceNow. Travaillez avec votre administrateur ServiceNow pour les créer avant de configurer le mapping push. Le compte de service a besoin du rôle import_admin pour l'accès en écriture.

Pourquoi c'est important : Les équipes ITSM voient les évaluations EA directement dans les workflows d'incident/changement ServiceNow. Lorsqu'une application « Mission critique » a un incident, les règles d'escalade de priorité peuvent utiliser le score de criticité fourni par l'EA.


Référence des types de transformation

Direct (par défaut)

Passe la valeur sans modification. Utilisez pour les champs texte qui ont le même format dans les deux systèmes.

Correspondance de valeurs

Traduit les valeurs énumérées entre les systèmes. Configurez avec un mapping JSON :

{
"mapping": {
"1": "missionCritical",
"2": "businessCritical",
"3": "businessOperational",
"4": "administrativeService"
}
}

Le mapping s'inverse automatiquement lors du push de Canopy vers ServiceNow. Par exemple, lors du push, "missionCritical" devient "1".

Format date

Tronque les valeurs datetime de ServiceNow (2024-06-15 14:30:00) en date seule (2024-06-15). Utilisez pour les dates de phase de cycle de vie où l'heure n'est pas pertinente.

Booleen

Convertit entre les booleens en chaînes ServiceNow ("true", "1", "yes") et les booleens natifs. Utile pour les champs comme « is_virtual », « active », etc.


Bonnes pratiques de sécurité

Gestion des identifiants

PratiqueDétails
Chiffrement au reposTous les identifiants chiffrés via Fernet (AES-128-CBC) dérivé de SECRET_KEY. Si vous changez SECRET_KEY, ressaisissez tous les identifiants ServiceNow.
Moindre privilegeCréez un compte de service SNOW dédié avec un accès en lecture seule aux tables spécifiques. N'accordez l'accès en écriture que si vous utilisez le push sync.
OAuth 2.0 préféréBasic Auth envoie les identifiants à chaque appel API. OAuth utilise des jetons de courte durée avec des restrictions de portée.
Rotation des identifiantsChangez les mots de passe ou les secrets client tous les 90 jours.

Sécurité réseau

PratiqueDétails
HTTPS imposéLes URL HTTP sont rejetées lors de la validation. Toutes les connexions doivent utiliser HTTPS.
Validation des noms de tableLes noms de table sont validés par rapport à ^[a-zA-Z0-9_]+$ pour prévenir l'injection.
Validation des sys_idLes valeurs sys_id sont validées comme des chaînes hexadécimales de 32 caractères.
Liste blanche IPConfigurez le contrôle d'accès IP ServiceNow pour n'autoriser que l'IP de votre serveur Canopy.

Contrôle d'accès

PratiqueDétails
Protégé par RBACLes endpoints ServiceNow en lecture seule requièrent la permission servicenow.view ; toute modification requiert servicenow.manage.
Piste d'auditToutes les modifications créées par la synchronisation publient des événements avec source: "servicenow_sync", visibles dans l'historique de la fiche.
Pas d'exposition des identifiantsLes mots de passe et secrets ne sont jamais retournes dans les réponses API.

Checklist de production

  • Compte de service ServiceNow dédié (pas un compte personnel)
  • OAuth 2.0 avec grant client credentials
  • Calendrier de rotation des identifiants (tous les 90 jours)
  • Compte de service restreint aux tables mappées uniquement
  • Liste blanche IP ServiceNow configurée pour l'IP du serveur Canopy
  • Ratio max de suppression défini à 50% ou moins
  • Exécutions de synchronisation surveillées pour les nombres inhabituels d'erreurs ou de suppressions
  • Les requêtes de filtre incluent active=true au minimum

Guide opérationnel

Sequence de configuration initiale

1. Creer le compte de service ServiceNow avec les roles minimum requis
2. Vérifier la connectivité reseau (Canopy peut-il atteindre SNOW via HTTPS ?)
3. Creer la connexion dans Canopy et la tester
4. Vérifier que les types du metamodele ont tous les champs que vous souhaitez synchroniser
5. Creer le premier mapping avec le mode ADDITIF, staging ACTIVÉ
6. Utiliser le bouton Apercu (via API) pour vérifier que le mapping produit le bon resultat
7. Executer la premiere synchronisation pull -- examiner les enregistrements en staging dans le tableau de bord
8. Appliquer les enregistrements en staging
9. Vérifier les fiches importées dans l'Inventaire
10. Ajuster les mappings de champs si nécessaire, relancer
11. Basculer le mapping en mode CONSERVATEUR pour l'utilisation continue
12. Apres plusieurs executions reussies, activer Sauter le staging pour l'automatisation

Opérations courantes

TâcheFréquenceComment
Exécuter la synchronisation pullQuotidien ou hebdomadaireTableau de bord de sync > bouton Pull (ou cron)
Examiner les statistiques de syncAprès chaque exécutionVérifier les compteurs d'erreurs/suppressions
Tester les connexionsMensuelCliquer sur le bouton de test de chaque connexion
Changer les identifiantsTrimestrielMettre à jour dans SNOW et Canopy
Examiner la carte d'identitéTrimestrielVérifier les entrées orphelines via les stats de sync
Auditer l'historique des fichesSelon les besoinsFiltrer les événements par source servicenow_sync

Configuration des synchronisations automatisées

Les synchronisations peuvent être déclenchées via API pour l'automatisation :

# Synchronisation pull quotidienne à 2h00 du matin
0 2 * * * curl -s -X POST \
-H "Authorization: Bearer $TURBOEA_TOKEN" \
"https://canopy.entreprise.com/api/v1/servicenow/sync/pull/$MAPPING_ID" \
>> /var/log/canopy-sync.log 2>&1

Bonne pratique : Exécutez les synchronisations pendant les heures creuses. Pour les grandes tables CMDB (10 000+ CI), prévoyez 2 à 5 minutes selon la latence réseau et le nombre d'enregistrements.

Planification de capacité

Taille CMDBDurée prévueRecommandation
< 500 CI< 30 secondesSynchroniser quotidiennement, staging optionnel
500-5 000 CI30s - 2 minutesSynchroniser quotidiennement, sauter le staging
5 000-20 000 CI2-5 minutesSynchroniser la nuit, sauter le staging
20 000+ CI5-15 minutesSynchroniser hebdomadairement, utiliser des requêtes de filtre pour diviser

Dépannage

Problèmes de connexion

SymptômeCauseSolution
Connection failed: [SSL]Certificat auto-signe ou expiréAssurez-vous que SNOW utilise un certificat CA public validé
HTTP 401: UnauthorizedMauvais identifiantsRessaisissez le nom d'utilisateur/mot de passe ; vérifiez que le compte n'est pas verrouillé
HTTP 403: ForbiddenRôles insuffisantsAccordez itil et cmdb_read au compte de service
Connection failed: timed outBlocage du pare-feuVérifiez les règles ; mettez l'IP de Canopy en liste blanche dans SNOW
Test OK mais sync échouéPermissions au niveau de la tableAccordez l'accès en lecture à la table CMDB spécifique

Problèmes de synchronisation

SymptômeCauseSolution
0 enregistrements récupérésMauvaise table ou filtreVérifiez le nom de la table ; simplifiez la requête de filtre
Tous les enregistrements sont des « create »Non-correspondance d'identitéMarquez name comme identité ; vérifiez que les noms correspondent entre les systèmes
Nombre élevé d'erreursÉchecs de transformationVérifiez les enregistrements staging pour les messages d'erreur
Suppressions sautéesRatio dépasséAugmentez le seuil ou investiguez pourquoi les CI ont disparu
Modifications non visiblesCache du navigateurRafraîchissement forcé ; vérifiez l'historique de la fiche pour les événements
Fiches en doubleMappings multiples pour le même typeUtilisez un mapping par type de fiche par connexion
Modifications push rejetéesPermissions SNOW manquantesAccordez le rôle import_admin au compte de service

Outils de diagnostic

# Apercu du mapping des enregistrements (5 échantillons, sans effet de bord)
POST /api/v1/servicenow/mappings/{mapping_id}/preview

# Parcourir les tables sur l'instance SNOW
GET /api/v1/servicenow/connections/{conn_id}/tables?search=cmdb

# Inspecter les colonnes d'une table
GET /api/v1/servicenow/connections/{conn_id}/tables/cmdb_ci_business_app/fields

# Filtrer les enregistrements staging par action ou statut
GET /api/v1/servicenow/sync/runs/{run_id}/staged?action=create
GET /api/v1/servicenow/sync/runs/{run_id}/staged?action=update
GET /api/v1/servicenow/sync/runs/{run_id}/staged?status=error

Référence API (rapide)

Tous les endpoints nécessitent Authorization: Bearer <token>. Les endpoints en lecture seule nécessitent la permission servicenow.view, les endpoints de modification servicenow.manage. Chemin de base : /api/v1.

Connexions

MéthodeCheminDescription
GET/servicenow/connectionsLister les connexions
POST/servicenow/connectionsCréer une connexion
GET/servicenow/connections/{id}Obtenir une connexion
PATCH/servicenow/connections/{id}Mettre à jour une connexion
DELETE/servicenow/connections/{id}Supprimer une connexion + tous les mappings
POST/servicenow/connections/{id}/testTester la connectivité
GET/servicenow/connections/{id}/tablesParcourir les tables SNOW
GET/servicenow/connections/{id}/tables/{table}/fieldsLister les colonnes de la table

Mappings

MéthodeCheminDescription
GET/servicenow/mappingsLister les mappings avec les mappings de champs
POST/servicenow/mappingsCréer un mapping avec les mappings de champs
GET/servicenow/mappings/{id}Obtenir un mapping avec les mappings de champs
PATCH/servicenow/mappings/{id}Mettre à jour un mapping (remplace les champs si fournis)
DELETE/servicenow/mappings/{id}Supprimer un mapping
POST/servicenow/mappings/{id}/previewAperçu dry-run (5 enregistrements échantillons)

Opérations de synchronisation

MéthodeCheminDescription
POST/servicenow/sync/pull/{mapping_id}Pull sync (?auto_apply=true par défaut)
POST/servicenow/sync/push/{mapping_id}Push sync
GET/servicenow/sync/runsLister l'historique des syncs (?limit=20)
GET/servicenow/sync/runs/{id}Obtenir les détails de l'exécution + statistiques
GET/servicenow/sync/runs/{id}/stagedLister les enregistrements staging d'une exécution
POST/servicenow/sync/runs/{id}/applyAppliquer les enregistrements staging en attente