Comment l’approvisionnement Microsoft Entra s’intègre à SAP SuccessFactors

Le service d’approvisionnement des utilisateurs Microsoft Entra s’intègre à SAP SuccessFactors Employee Central pour gérer le cycle de vie d’identité des utilisateurs. Microsoft Entra ID offre trois intégrations prédéfinies :

Cet article explique le fonctionnement de l’intégration et la manière dont vous pouvez personnaliser le comportement d’approvisionnement pour différents scénarios de RH.

Microsoft Entra prend également en charge l’authentification unique auprès de SuccessFactors. Pour plus d’informations, consultez Intégration de l’authentification unique Microsoft Entra à SuccessFactors.

Établir une connectivité

Le service d’approvisionnement Microsoft Entra utilise l’authentification de base pour se connecter aux points de terminaison de l’API Employee Central OData. Quand vous configurez l’application de configuration SuccessFactors, utilisez le paramètre URL du client dans la section Identifiants de l’administrateur pour configurer l’URL du centre de données de l’API.

Pour sécuriser davantage la connectivité entre le service d’approvisionnement Microsoft Entra et SuccessFactors, ajoutez les plages IP Microsoft Entra dans la liste autorisée IP SuccessFactors :

  1. Téléchargez les dernières plages d’adresses IP pour le cloud public Azure.
  2. Ouvrez ce fichier et recherchez AzureActiveDirectory.
  3. Copiez toutes les plages d’adresses IP répertoriées dans l’élément addressPrefixes et utilisez la plage pour créer votre liste de restrictions d’adresses IP.
  4. Traduisez les valeurs CIDR en plages d’adresses IP.
  5. Connectez-vous au portail d’administration de SuccessFactors pour ajouter des plages d’adresses IP à la liste d’autorisation. Voir la note de support SAP 2253200. Vous pouvez maintenant entrer des plages d’adresses IP dans cet outil.

Entités prises en charge

Pour chaque utilisateur dans SuccessFactors, le service d’approvisionnement Microsoft Entra récupère les entités suivantes. Chaque entité est développée à l’aide du paramètre de requête de l’API OData $expand, comme décrit dans la colonne Règle de récupération. Certaines entités sont développées par défaut, tandis que certaines entités sont développées uniquement si un attribut spécifique est présent dans le mappage.

# Entité SuccessFactors Nœud OData Règle de récupération
1 PerPerson *root node* Toujours
2 PerPersonal personalInfoNav Toujours
3 PerPhone phoneNav Toujours
4 PerEmail emailNav Toujours
5 EmpEmployment employmentNav Toujours
6 User employmentNav/userNav Toujours
7 EmpJob employmentNav/jobInfoNav Toujours
8 EmpEmploymentTermination activeEmploymentsCount Toujours
9 User's manager employmentNav/userNav/manager/empInfo Toujours
10 FOCompany employmentNav/jobInfoNav/companyNav Uniquement si l’attribut company ou companyId est mappé
11 FODepartment employmentNav/jobInfoNav/departmentNav Uniquement si l’attribut department ou departmentId est mappé
12 FOBusinessUnit employmentNav/jobInfoNav/businessUnitNav Uniquement si l’attribut businessUnit ou businessUnitId est mappé
13 FOCostCenter employmentNav/jobInfoNav/costCenterNav Uniquement si l’attribut costCenter ou costCenterId est mappé
14 FODivision employmentNav/jobInfoNav/divisionNav Uniquement si l’attribut division ou divisionId est mappé
15 FOJobCode employmentNav/jobInfoNav/jobCodeNav Uniquement si l’attribut jobCode ou jobCodeId est mappé
16 FOPayGrade employmentNav/jobInfoNav/payGradeNav Uniquement si l’attribut payGrade est mappé
17 FOLocation employmentNav/jobInfoNav/locationNav Uniquement si l’attribut location est mappé
18 FOCorporateAddressDEFLT employmentNav/jobInfoNav/addressNavDEFLT Si le mappage contient l’un des attributs suivants : officeLocationAddress, officeLocationCity, officeLocationZipCode
19 FOEventReason employmentNav/jobInfoNav/eventReasonNav Uniquement si l’attribut eventReason est mappé
20 EmpGlobalAssignment employmentNav/empGlobalAssignmentNav Uniquement si assignmentType est mappé
21 EmploymentType Picklist employmentNav/jobInfoNav/employmentTypeNav Uniquement si employmentType est mappé
22 EmployeeClass Picklist employmentNav/jobInfoNav/employeeClassNav Uniquement si employeeClass est mappé
23 EmplStatus Picklist employmentNav/jobInfoNav/emplStatusNav Uniquement si emplStatus est mappé
24 AssignmentType Picklist employmentNav/empGlobalAssignmentNav/assignmentTypeNav Uniquement si assignmentType est mappé
25 Position employmentNav/jobInfoNav/positionNav Uniquement si positioNav est mappé
26 Manager User employmentNav/jobInfoNav/managerUserNav Uniquement si managerUserNav est mappé

Fonctionnement de la synchronisation complète

Sur la base du mappage d’attributs, pendant la synchronisation complète, le service d'approvisionnement Microsoft Entra envoie la requête API OData « GET » suivante pour récupérer les données effectives de tous les employés actifs et licenciés.

Paramètre Description
Hôte de l’API OData Ajoute https à l’URL du client. Exemple : https://api4.successfactors.com
Point de terminaison d’API OData /odata/v2/PerPerson
Paramètre de requête OData $format json
Paramètre de requête OData $filter (personEmpTerminationInfoNav/activeEmploymentsCount ne null) and (lastModifiedDateTime le <CurrentExecutionTime>)
Paramètre de requête OData $expand La valeur de ce paramètre dépend des attributs mappés. Exemple : employmentNav/userNav,employmentNav/jobInfoNav,personalInfoNav,personEmpTerminationInfoNav,phoneNav,emailNav,employmentNav/jobInfoNav/companyNav/countryOfRegistrationNav,employmentNav/jobInfoNav/divisionNav,employmentNav/jobInfoNav/departmentNav
Paramètre de requête OData customPageSize 100

Remarque

Durant la synchronisation initiale complète, les employés actifs et licenciés de SAP SuccessFactors sont extraits.

Pour chaque utilisateur SuccessFactors, le service d’approvisionnement recherche un compte dans la cible (Microsoft Entra ID/local Active Directory) à l’aide de l’attribut correspondant défini dans le mappage. Par exemple : si personIdExternal est mappé à employeeId et est défini en tant qu’attribut correspondant, alors le service d’approvisionnement utilise la valeur personIdExternal pour rechercher l’utilisateur avec filtre employeeId. Si un utilisateur a trouvé une correspondance, il met à jour les attributs cibles. Si aucune correspondance n’est trouvée, il crée une entrée dans la cible.

Pour valider les données retournées par votre point de terminaison d’API OData pour un personIdExternal spécifique, mettez à jour le SuccessFactorsAPIEndpoint dans la requête d’API avec votre URL de serveur de centre de données d’API, puis utilisez un outil tel que cURL ou l’afficheur Graph pour appeler la requête. Si le filtre « in » ne fonctionne pas, vous pouvez essayer le filtre « eq ».

https://[SuccessFactorsAPIEndpoint]/odata/v2/PerPerson?$format=json&
$filter=(personIdExternal in '[personIdExternalValue]')&
$expand=employmentNav/userNav,employmentNav/jobInfoNav,personalInfoNav,personEmpTerminationInfoNav,
phoneNav,phoneNav/phoneTypeNav,emailNav,employmentNav/jobInfoNav/businessUnitNav,employmentNav/jobInfoNav/companyNav,
employmentNav/jobInfoNav/companyNav/countryOfRegistrationNav,employmentNav/jobInfoNav/costCenterNav,
employmentNav/jobInfoNav/divisionNav,employmentNav/jobInfoNav/departmentNav,employmentNav/jobInfoNav/jobCodeNav,
employmentNav/jobInfoNav/locationNav,employmentNav/jobInfoNav/locationNav/addressNavDEFLT,employmentNav/jobInfoNav/payGradeNav,
employmentNav/empGlobalAssignmentNav,employmentNav/empGlobalAssignmentNav/assignmentTypeNav,employmentNav/jobInfoNav/emplStatusNav,
employmentNav/jobInfoNav/employmentTypeNav,employmentNav/jobInfoNav/employeeClassNav,employmentNav/jobInfoNav/eventReasonNav

Fonctionnement de la synchronisation incrémentielle

Après la synchronisation complète, le service d’approvisionnement Microsoft Entra conserve LastExecutionTimestamp et l’utilise pour créer des requêtes delta afin de récupérer les modifications incrémentielles. Les attributs d’horodatage présents dans chaque entité SuccessFactors, comme lastModifiedDateTime, startDate, endDate et latestTerminationDate, sont évalués pour déterminer si la modification se situe entre le LastExecutionTimestamp et le CurrentExecutionTime. Si c’est le cas, le changement d’entrée est considéré comme effectif et traité pour la synchronisation.

Voici le modèle de demande d’API OData que Microsoft Entra ID utilise pour interroger SuccessFactors sur les modifications incrémentielles. Vous pouvez mettre à jour les variables SuccessFactorsAPIEndpoint, LastExecutionTimestamp et CurrentExecutionTime dans le modèle de requête. Utilisez un outil comme cURL ou l’afficheur Graph pour vérifier les données retournées. Vous pouvez également récupérer la charge utile de requête réelle à partir de SuccessFactors en activant les journaux d’audit de l’API OData.

https://[SuccessFactorsAPIEndpoint]/odata/v2/PerPerson/$count?$format=json&$filter=(personEmpTerminationInfoNav/activeEmploymentsCount ne null) and
((lastModifiedDateTime ge datetimeoffset'<LastExecutionTimestamp>' and lastModifiedDateTime le datetimeoffset'<CurrentExecutionTime>') or
(personalInfoNav/startDate ge datetimeoffset'<LastExecutionTimestamp>' and personalInfoNav/startDate le datetimeoffset'<CurrentExecutionTime>') or
((personalInfoNav/lastModifiedDateTime ge datetimeoffset'<LastExecutionTimestamp>' and personalInfoNav/lastModifiedDateTime le datetimeoffset'<CurrentExecutionTime>') and (personalInfoNav/startDate le datetimeoffset'<CurrentExecutionTime>' and (personalInfoNav/endDate ge datetimeoffset'<CurrentExecutionTime>' or  personalInfoNav/endDate eq null))) or
(employmentNav/startDate ge datetimeoffset'<LastExecutionTimestamp>' and employmentNav/startDate le datetimeoffset'<CurrentExecutionTime>') or
((employmentNav/lastModifiedDateTime ge datetimeoffset'<LastExecutionTimestamp>' and employmentNav/lastModifiedDateTime le datetimeoffset'<CurrentExecutionTime>') and (employmentNav/startDate le datetimeoffset'<CurrentExecutionTime>' and (employmentNav/endDate ge datetimeoffset'<CurrentExecutionTime>' or employmentNav/endDate eq null))) 
(employmentNav/jobInfoNav/startDate ge datetimeoffset'<LastExecutionTimestamp>' and employmentNav/jobInfoNav/startDate le datetimeoffset'<CurrentExecutionTime>') or
((employmentNav/jobInfoNav/lastModifiedDateTime ge datetimeoffset'<LastExecutionTimestamp>' and employmentNav/jobInfoNav/lastModifiedDateTime le datetimeoffset'<CurrentExecutionTime>') and (employmentNav/jobInfoNav/startDate le datetimeoffset'<CurrentExecutionTime>' and (employmentNav/jobInfoNav/endDate ge datetimeoffset'<CurrentExecutionTime>' or employmentNav/jobInfoNav/endDate eq null))) or
(phoneNav/lastModifiedDateTime ge datetimeoffset'<LastExecutionTimestamp>' and phoneNav/lastModifiedDateTime le datetimeoffset'<CurrentExecutionTime>') or
(emailNav/lastModifiedDateTime ge datetimeoffset'<LastExecutionTimestamp>' and emailNav/lastModifiedDateTime le datetimeoffset'<CurrentExecutionTime>') or
(personEmpTerminationInfoNav/latestTerminationDate ge datetimeoffset'<previousDayDateStartTime24hrs>' and personEmpTerminationInfoNav/latestTerminationDate le datetimeoffset'<previousDayDateTime24hrs>') or
(employmentNav/userNav/lastModifiedDateTime ge datetimeoffset'<LastExecutionTimestamp>' and employmentNav/userNav/lastModifiedDateTime le datetimeoffset'<CurrentExecutionTime>'))
&$expand=employmentNav/userNav,employmentNav/jobInfoNav,personalInfoNav,personEmpTerminationInfoNav,phoneNav,emailNav,employmentNav/userNav/manager/empInfo,employmentNav/jobInfoNav/companyNav,employmentNav/jobInfoNav/departmentNav,employmentNav/jobInfoNav/locationNav,employmentNav/jobInfoNav/locationNav/addressNavDEFLT,employmentNav/jobInfoNav/locationNav/addressNavDEFLT/stateNav&customPageSize=100

Fonctionnement du traitement pré-embauche

Cette section explique comment le connecteur SAP SuccessFactors traite les enregistrements préalables à l’embauche (les employés avec date d’embauche/date de début à l’avenir). Supposons qu’il existe une pré-embauche avec employeeId « 1234 » dans SuccessFactors Employee Central dont la date de début est le 1er juin 2023. Supposons également que cet enregistrement de pré-embauche a été créé pour la première fois dans Employee Central ou dans le module d’intégration le 15 mai 2023. Lorsque le service d’approvisionnement observe cet enregistrement pour la première fois le 15 mai 2023 (dans le cadre de la synchronisation complète ou de la synchronisation incrémentielle), cet enregistrement est toujours à l’état de pré-embauche. Pour cette raison, SuccessFactors n’envoie pas au service d’approvisionnement tous les attributs (par exemple : userNav/username) associés à l’utilisateur. Seules les données minimales sur l’utilisateur telles que companyName, personIdExternal, firstname, lastname et startDate sont disponibles. Pour traiter les pré-embauches avec succès, les conditions préalables suivantes doivent être remplies :

  1. L’attribut personIdExternal doit être défini comme identificateur de correspondance principal (propriété de jonction). Si vous configurez un autre attribut (par exemple : userName) comme propriété de jointure, le service d’approvisionnement ne pourra pas récupérer les informations de pré-embauche.
  2. L’attribut startDate doit être disponible et son JSONPath doit être défini sur $.employmentNav.results[0].startDate ou $.employmentNav.results[-1:].startDate.
  3. L’enregistrement de pré-embauche doit se trouver dans l’un des états suivants dans Employee Central : 'active' (t), 'inactive' (f) ou 'active_external_suite' (e). Pour plus d’informations sur ces états, consultez la note de support SAP 2736579.

Remarque

Pour une pré-embauche qui n’a pas d’historique avec l’organisation, les index [0] et [-1:] fonctionnent pour startDate. Pour une pré-embauche qui est une réembauche ou un changement de statut, nous ne pouvons pas déterminer de façon déterministe l’ordre et cela peut entraîner le traitement de certains employés réembauchés/convertis à leur date de début réel. Il s’agit d’une limitation connue dans le connecteur.

Pendant la synchronisation complète ou incrémentielle, ou l’approvisionnement à la demande, lorsque le service d’approvisionnement rencontre un enregistrement de pré-embauche, il envoie la requête OData suivante à SuccessFactors avec le filtre « asOfDate » défini sur startDate de l’utilisateur (par exemple : asOfDate=2023-06-01).

https://[SuccessFactorsAPIEndpoint]/odata/v2/PerPerson?$format=json&$
filter=(personIdExternal in '1234' and employmentNav/userNav/status in 't','f','e')&asOfDate=2023-06-01&$
expand=employmentNav/userNav,employmentNav/jobInfoNav,personalInfoNav,personEmpTerminationInfoNav,phoneNav,emailNav,employmentNav/userNav/manager/empInfo,employmentNav/jobInfoNav/companyNav,employmentNav/jobInfoNav/costCenterNav,employmentNav/jobInfoNav/divisionNav,employmentNav/jobInfoNav/departmentNav,employmentNav/

Si vous observez des problèmes liés au traitement de la pré-embauche, vous pouvez utiliser le format de requête OData ci-dessus pour interroger votre instance SuccessFactors en remplaçant le point de terminaison de l’API, personIdExternal et le filtre asOfDate par des valeurs correspondant à votre scénario de test.

Lecture des données d'attribut

Lorsque le service d'approvisionnement Microsoft Entra interroge SuccessFactors, il récupère un jeu de résultats JSON. Le jeu de résultats JSON comprend de nombreux attributs stockés dans le Centre des employés. Par défaut, le schéma de configuration est configuré pour récupérer uniquement un sous-ensemble de ces attributs.

Pour récupérer d’autres attributs, procédez comme suit :

  1. Accédez à Applications d’entreprise ->Application SuccessFactors ->Approvisionnement ->Modifier l’approvisionnement ->page Mappage des attributs.

  2. Faites défiler vers le bas et cliquez sur Afficher les options avancées.

  3. Cliquez sur Modifier la liste des attributs de SuccessFactors.

    Remarque

    Si l’option Modifier la liste d’attributs pour SuccessFactors ne s’affiche pas dans le centre d’administration Microsoft Entra, utilisez l’URL https://portal.azure.com/?Microsoft_AAD_IAM_forceSchemaEditorEnabled=true pour accéder à la page.

  4. La colonne Expression d’API de cette vue affiche les expressions de chemin JSON utilisées par le connecteur.

    Expression d’API

  5. Vous pouvez modifier une valeur JSONPath existante ou ajouter un nouvel attribut avec une expression JSONPath valide au schéma.

La section suivante fournit une liste de scénarios courants pour la modification des valeurs de JSONPath.

Gestion de différents scénarios RH

JSONPath est un langage de requête pour JSON qui est similaire à XPath pour XML. Comme XPath, JSONPath permet l’extraction et la filtration de données à partir de la charge utile JSON.

En utilisant la transformation JSONPath, vous pouvez personnaliser le comportement de l’application d'approvisionnement Microsoft Entra pour récupérer des attributs personnalisés et gérer des scénarios tels que la réembauche, le changement de statut des employés et l’affectation globale.

Cette section décrit comment vous pouvez personnaliser l’application d’approvisionnement pour les scénarios RH suivants :

Récupération d’autres attributs

Le schéma par défaut de l’application d'approvisionnement Microsoft Entra SuccessFactors est livré avec plus de 90 attributs prédéfinis. Pour ajouter d’autres attributs SuccessFactors au schéma d’approvisionnement, utilisez les étapes répertoriées :

  1. Utilisez la requête OData ci-dessous pour récupérer les données d’un utilisateur de test valide du Centre des employés.

     https://[SuccessFactorsAPIEndpoint]/odata/v2/PerPerson?$format=json&
     $filter=(personIdExternal in '[personIdExternalValue]')&
     $expand=employmentNav/userNav,employmentNav/jobInfoNav,personalInfoNav,personEmpTerminationInfoNav,
     phoneNav,phoneNav/phoneTypeNav,emailNav,employmentNav/jobInfoNav/businessUnitNav,employmentNav/jobInfoNav/companyNav,
     employmentNav/jobInfoNav/companyNav/countryOfRegistrationNav,employmentNav/jobInfoNav/costCenterNav,
     employmentNav/jobInfoNav/divisionNav,employmentNav/jobInfoNav/departmentNav,employmentNav/jobInfoNav/jobCodeNav,
     employmentNav/jobInfoNav/locationNav,employmentNav/jobInfoNav/locationNav/addressNavDEFLT,employmentNav/jobInfoNav/payGradeNav,
     employmentNav/empGlobalAssignmentNav,employmentNav/empGlobalAssignmentNav/assignmentTypeNav,employmentNav/jobInfoNav/emplStatusNav,
     employmentNav/jobInfoNav/employmentTypeNav,employmentNav/jobInfoNav/employeeClassNav,employmentNav/jobInfoNav/eventReasonNav
    
  2. Déterminer l’entité Centre des employés associée à l’attribut

    • Si l’attribut fait partie de l’entité EmpEmployment, recherchez l’attribut sous le nœud employmentNav.
    • Si l’attribut fait partie de l’entité Utilisateur, recherchez l’attribut sous le nœud employmentNav/userNav.
    • Si l’attribut fait partie de l’entité EmpJob, recherchez l’attribut sous le nœud employmentNav/jobInfoNav.
  3. Construisez le chemin JSON associé à l’attribut et ajoutez ce nouvel attribut à la liste des attributs SuccessFactors.

    • Exemple 1 : Supposons que vous souhaitez ajouter l’attribut okToRehire, qui fait partie de l’entité employmentNav, utilisez le JSONPath $.employmentNav.results[0].okToRehire.
    • Exemple 2 : Supposons que vous souhaitez ajouter l’attribut timeZone, qui fait partie de l’entité userNav, utilisez le JSONPath $.employmentNav.results[0].userNav.timeZone
    • Exemple 3 : Supposons que vous souhaitez ajouter l’attribut flsaStatus, qui fait partie de l’entité jobInfoNav, utilisez le JSONPath $.employmentNav.results[0].jobInfoNav.results[0].flsaStatus
  4. Enregistrez le schéma.

  5. Redémarrer l’approvisionnement.

Récupération des attributs personnalisés

Par défaut, les attributs personnalisés suivants sont prédéfinis dans l’application d'approvisionnement Microsoft Entra SuccessFactors :

  • custom01-CUSTOM15 de l’entité User (userNav)
  • customString1-customString15 de l’entité EmpEmployment (employmentNav) appelée empNavCustomString1-empNavCustomString15
  • customString1-customString15 de l’entité EmpEmployment (employmentNav) appelée empJobNavCustomString1-empNavJobCustomString15

Supposons que, dans votre instance d’employé centrale, l’attribut customString35 dans EmpJobInfo stocke la description de l’emplacement. Vous souhaitez transmettre cette valeur à l’attribut physicalDeliveryOfficeName Active Directory. Pour configurer le mappage d’attributs pour ce scénario, procédez comme suit :

  1. Modifiez la liste des attributs SuccessFactors pour ajouter un nouvel attribut appelé empJobNavCustomString35.
  2. Définissez l’expression de l’API JSONPath pour cet attribut comme suit : $.employmentNav.results[0].jobInfoNav.results[0].customString35
  3. Enregistrez et rechargez la modification de mappage dans le centre d’administration Microsoft Entra.
  4. Dans le panneau mappage d’attribut, mappez empJobNavCustomString35 à physicalDeliveryOfficeName.
  5. Sauvegardez le mappage.

Extension du scénario :

  • Si vous souhaitez mapper l’attribut custom35 à partir de l’entité Utilisateur, utilisez le JSONPath $.employmentNav.results[0].userNav.custom35
  • Si vous souhaitez mapper l’attribut customString35 à partir de l’entité EmpEmployment, utilisez le JSONPath $.employmentNav.results[0].customString35

Mappage de l’état de l’emploi à l’état du compte

Par défaut, le connecteur Microsoft Entra SuccessFactors utilise le champ activeEmploymentsCount de l’objet PersonEmpTerminationInfo pour définir le statut du compte. Vous pouvez rencontrer l’un des problèmes suivants avec cet attribut.

  1. Il existe un problème connu où il arrive que le connecteur désactive le compte d’un employé licencié un jour avant la fin du contrat lors du dernier jour de travail.
  2. Si l’objet PersonEmpTerminationInfo est défini sur null, à la cessation du contrat de travail, la désactivation du compte AD ne fonctionne pas, car le moteur d'approvisionnement filtre et exclut les enregistrements avec l’objet personEmpTerminationInfoNav défini sur nul.

Si vous rencontrez l’un de ces problèmes ou préférez mapper l’état de l’emploi à l’état du compte, vous pouvez mettre à jour le mappage pour développer le champ emplStatus et utiliser le code d’état de l’emploi présent dans le champ emplStatus.externalCode. Voici une liste des codes d’état d’emploi que vous pouvez récupérer dans l’application d'approvisionnement, basée sur la note de support SAP 2505526.

  • A = Actif
  • D = Dormant
  • U = Congé sans solde
  • P = Congé payé
  • S = Suspendu
  • F = Chômage partiel
  • O = Annulé
  • R = Retraité
  • T = Licencié

Utilisez les étapes suivantes pour mettre à jour votre mappage, puis récupérer ainsi ces codes.

  1. Ouvrez le panneau mappage d’attributs de votre application d’approvisionnement SuccessFactors.

  2. Sous Afficher les options avancées, cliquez sur Modifier la liste des attributs SuccessFactors.

  3. Recherchez l’attribut emplStatus et définissez le JSONPath sur $.employmentNav.results[0].jobInfoNav.results[0].emplStatusNav.externalCode. La mise à jour permet au connecteur de récupérer les codes d’état d’emploi dans la table.

  4. Enregistrez les modifications.

  5. Dans le panneau de mappage d’attribut, mettez à jour le mappage d’expression pour utiliser l’indicateur d’état du compte.

    Projet d’approvisionnement Attribut d’état du compte Expression de mappage
    Attribution d’utilisateurs SuccessFactors vers Active Directory accountDisabled Switch([emplStatus], "True", "A", "False", "U", "False", "P", "False")
    Attribution d’utilisateurs SuccessFactors vers Microsoft Entra accountEnabled Switch([emplStatus], "False", "A", "True", "U", "True", "P", "True")
  6. Enregistrez les modifications.

  7. Testez la configuration à l’aide du provisionnement à la demande.

  8. Après avoir vérifié que la synchronisation fonctionne comme prévu, redémarrez le travail d’approvisionnement.

Gestion des scénarios de conversion et de réembauche d’employés

À propos du scénario de changement de statut des employés : le changement de statut des employés est le processus qui consiste à convertir un employé à temps plein existant en entrepreneur ou un entrepreneur en employé à temps plein. Dans ce scénario, le Centre des employés ajoute une nouvelle entité EmpEmployment avec une nouvelle entité User pour la même entité Person. L’entité User imbriquée sous l’entité EmpEmployment précédente est définie sur null.

À propos des scénarios de réembauche : dans SuccessFactors, deux options permettent traiter la réembauche des employés :

  • Option 1 : Créer un profil de personne dans le Centre des employés
  • Option 2 : Réutiliser un profil de personne existant dans le Centre des employés

Si votre processus RH utilise l’option 1, aucune modification n’est requise pour le schéma de configuration. Si votre processus RH utilise l’option 2, le Centre des employés ajoute une nouvelle entité EmpEmployment avec une nouvelle entité User pour la même entité Person.

Vous pouvez gérer les deux scénarios afin que les nouvelles données d’emploi s’affichent lors d’une conversion ou d’une réembauche. Mettez à jour le schéma d’application d’approvisionnement en bloc à l’aide des étapes répertoriées :

  1. Ouvrez le panneau mappage d’attributs de votre application d’approvisionnement SuccessFactors.

  2. Faites défiler vers le bas et cliquez sur Afficher les options avancées.

  3. Cliquez sur le lien Passer en revue votre schéma ici pour ouvrir l’éditeur de schéma.

    Capture d’écran montrant le lien Examiner votre schéma ici qui ouvre l’éditeur de schéma.

  4. Cliquez sur le lien Télécharger pour enregistrer une copie du schéma avant de le modifier.

    Capture d’écran montrant l’Éditeur de schéma avec l’option Télécharger sélectionnée pour enregistrer une copie du schéma.

  5. Dans l’éditeur de schéma, appuyez sur Ctrl-H pour ouvrir la commande rechercher/remplacer.

  6. Dans la zone de texte Rechercher, copiez et collez la valeur $.employmentNav.results[0]

  7. Dans la zone de texte Remplacer, copiez et collez la valeur $.employmentNav.results[-1:]. Cette expression JSONPath retourne le dernier enregistrement EmpEmployment.

    find-replace-conversion

  8. Cliquez sur l’option « remplacer tout » pour mettre à jour le schéma.

  9. Enregistrez le schéma.

  10. Le processus ci-dessus met à jour toutes les expressions JSONPath comme suit :

    • Ancien JSONPath : $.employmentNav.results[0].jobInfoNav.results[0].departmentNav.name_localized
    • Nouveau JSONPath : $.employmentNav.results[-1:].jobInfoNav.results[0].departmentNav.name_localized
  11. Testez la configuration à l’aide du provisionnement à la demande.

  12. Après avoir vérifié que la synchronisation fonctionne comme prévu, redémarrez le travail d’approvisionnement.

Remarque

L’approche décrite ci-dessus fonctionne uniquement si SAP SuccessFactors retourne les objets d’emploi dans l’ordre croissant, où l’enregistrement d’emploi le plus récent est toujours le dernier enregistrement dans le tableau de résultats employmentNav. L’ordre dans lequel plusieurs enregistrements d’emploi sont retournés n’est pas garanti par SuccessFactors. Si votre instance SuccessFactors a plusieurs enregistrements d’emploi correspondant à un employé et que vous souhaitez toujours récupérer les attributs associés à l’enregistrement de l’emploi actif, effectuez les étapes décrites dans la section suivante.

Récupération de l’enregistrement actuel de l’emploi actif

L’utilisation de la racine JSONPath de $.employmentNav.results[0] ou $.employmentNav.results[-1:] pour extraire des enregistrements d’emploi fonctionne dans la plupart des scénarios et simplifie la configuration. Toutefois, selon la configuration de votre instance SuccessFactors, il peut être nécessaire de mettre à jour cette configuration pour vous assurer que le connecteur extrait toujours l’enregistrement de l’emploi actif le plus récent.

Cette section décrit comment mettre à jour les paramètres JSONPath pour récupérer avec certitude l’enregistrement actuel de l’emploi actif de l’utilisateur. Les scénarios de changement de statut et de réembauche des employés sont également couverts.

  1. Ouvrez le panneau mappage d’attributs de votre application d’approvisionnement SuccessFactors.

  2. Faites défiler vers le bas et cliquez sur Afficher les options avancées.

  3. Cliquez sur le lien Passer en revue votre schéma ici pour ouvrir l’éditeur de schéma.

  4. Cliquez sur le lien Télécharger pour enregistrer une copie du schéma avant de le modifier.

  5. Dans l’éditeur de schéma, appuyez sur Ctrl-H pour ouvrir la commande rechercher/remplacer.

  6. Effectuez les opérations de recherche et remplacement suivantes. Vérifiez qu’il n’y a pas d’espace de début ou de fin quand les opérations de recherche et remplacement sont exécutées. Si vous utilisez l’index [-1:] au lieu de [0], mettez à jour le champ string-to-find en conséquence.

    Chaîne à rechercher Chaîne à utiliser pour le remplacement Objectif
    $.employmentNav.results[0].jobInfoNav.results[0].emplStatus $.employmentNav..jobInfoNav..results[?(@.emplStatusNav.externalCode == 'A' || @.emplStatusNav.externalCode == 'U' || @.emplStatusNav.externalCode == 'P' )].emplStatusNav.externalCode Avec cette opération de recherche et remplacement, nous ajoutons la possibilité de développer l’objet OData emplStatusNav.
    $.employmentNav.results[0].jobInfoNav.results[0] $.employmentNav..jobInfoNav..results[?(@.emplStatusNav.externalCode == 'A' || @.emplStatusNav.externalCode == 'U' || @.emplStatusNav.externalCode == 'P')] Avec cette opération de recherche et remplacement, nous demandons au connecteur de toujours récupérer les attributs associés à l’enregistrement SuccessFactors EmpJobInfo actif. Les attributs associés aux enregistrements terminés/inactifs dans SuccessFactors sont ignorés.
    $.employmentNav.results[0] $.employmentNav..results[?(@.jobInfoNav..results[?(@.emplStatusNav.externalCode == 'A' || @.emplStatusNav.externalCode == 'U' || @.emplStatusNav.externalCode == 'P')])] Avec cette opération de recherche et remplacement, nous demandons au connecteur de toujours récupérer les attributs associés à l’enregistrement SuccessFactors Employment actif. Les attributs associés aux enregistrements terminés/inactifs dans SuccessFactors sont ignorés.
  7. Enregistrez le schéma.

  8. Le processus ci-dessus met à jour toutes les expressions JSONPath.

  9. Pour que le traitement des préembauches fonctionne, le JSONPath associé à l’attribut startDate doit utiliser l’index [0] ou [-1:]. Sous Afficher les options avancées, cliquez sur Modifier la liste des attributs SuccessFactors. Recherchez l’attribut startDate et définissez-le sur la valeur $.employmentNav.results[-1:].startDate.

  10. Enregistrez le schéma.

  11. Pour avoir la certitude que les fins de contrat sont traitées comme prévu, vous pouvez utiliser l’un des paramètres suivants dans la section de mappage d’attribut.

    Projet d’approvisionnement Attribut d’état du compte Expression à utiliser si l’état du compte est basé sur « activeEmploymentsCount » Expression à utiliser si l’état du compte est basé sur la valeur « emplStatus »
    Attribution d’utilisateurs SuccessFactors vers Active Directory accountDisabled Switch([activeEmploymentsCount], "False", "0", "True") Switch([emplStatus], "True", "A", "False", "U", "False", "P", "False")
    Attribution d’utilisateurs SuccessFactors vers Microsoft Entra accountEnabled Switch([activeEmploymentsCount], "True", "0", "False") Switch([emplStatus], "False", "A", "True", "U", "True", "P", "True")
  12. Enregistrez les changements apportés. 1.

  13. Testez la configuration à l’aide du provisionnement à la demande.

  14. Après avoir vérifié que la synchronisation fonctionne comme prévu, redémarrez le travail d’approvisionnement.

Gestion du scénario d’attribution globale

Lorsqu’un utilisateur dans le Centre des employés est traité pour une attribution globale, SuccessFactors ajoute une nouvelle entité EmpEmployment et définit assignmentClass sur « GA ». Il crée également une nouvelle entité User. L’utilisateur dispose désormais de :

  • Une entité EmpEmployment + User qui correspond à l’affectation de domicile avec assignmentClass défini sur « ST » et
  • Une entité EmpEmployment + User qui correspond à l’affectation globale avec assignmentClass défini sur « GA ».

Pour récupérer les attributs appartenant au profil d’affectation standard et à l’utilisateur d’attribution globale, suivez les étapes indiquées :

  1. Ouvrez le panneau mappage d’attributs de votre application d’approvisionnement SuccessFactors.

  2. Faites défiler vers le bas et cliquez sur Afficher les options avancées.

  3. Cliquez sur le lien Passer en revue votre schéma ici pour ouvrir l’éditeur de schéma.

  4. Cliquez sur le lien Télécharger pour enregistrer une copie du schéma avant de le modifier.

  5. Dans l’éditeur de schéma, appuyez sur Ctrl-H pour ouvrir la commande rechercher/remplacer.

  6. Dans la zone de texte Rechercher, copiez et collez la valeur $.employmentNav.results[0]

  7. Dans la zone de texte Remplacer, copiez et collez la valeur $.employmentNav.results[?(@.assignmentClass == 'ST')]. Notez l’espace blanc qui entoure l’opérateur ==, ce qui est important pour réussir le traitement de l’expression JSONPath.

  8. Cliquez sur l’option « remplacer tout » pour mettre à jour le schéma.

  9. Enregistrez le schéma.

  10. Le processus ci-dessus met à jour toutes les expressions JSONPath comme suit :

    • Ancien JSONPath : $.employmentNav.results[0].jobInfoNav.results[0].departmentNav.name_localized
    • Nouveau JSONPath : $.employmentNav.results[?(@.assignmentClass == 'ST')].jobInfoNav.results[0].departmentNav.name_localized
  11. Rechargez le panneau mappage d’attribut de l’application.

  12. Faites défiler vers le bas et cliquez sur Afficher les options avancées.

  13. Cliquez sur Modifier la liste des attributs de SuccessFactors.

  14. Ajoutez de nouveaux attributs pour récupérer les données d’affectation globale. Par exemple, si vous souhaitez extraire le nom de service associé à un profil d’attribution global, vous pouvez ajouter l’attribut globalAssignmentDepartment avec l’expression JSONPath définie sur $.employmentNav.results[?(@.assignmentClass == 'GA')].jobInfoNav.results[0].departmentNav.name_localized.

  15. Vous pouvez maintenant transmettre les deux valeurs de service aux attributs Active Directory ou transmettre de manière sélective une valeur à l’aide du mappage d’expression. Exemple : l’expression définit la valeur de l’attribut AD department sur globalAssignmentDepartment, le cas échéant. Sinon elle définit la valeur sur department correspondant à l’affectation standard.

    • IIF(IsPresent([globalAssignmentDepartment]),[globalAssignmentDepartment],[department])
  16. Sauvegardez le mappage.

  17. Testez la configuration à l’aide du provisionnement à la demande.

  18. Après avoir vérifié que la synchronisation fonctionne comme prévu, redémarrez le travail d’approvisionnement.

Gestion du scénario de tâches simultanées

Lorsqu’un utilisateur dans le Centre des employés a des tâches simultanées/multiples, il existe deux entités EmpEmployment et User avec assignmentClass défini sur « ST ». Pour récupérer les attributs appartenant aux deux tâches, utilisez les étapes indiquées :

  1. Ouvrez le panneau mappage d’attributs de votre application d’approvisionnement SuccessFactors.
  2. Faites défiler vers le bas et cliquez sur Afficher les options avancées.
  3. Cliquez sur Modifier la liste des attributs de SuccessFactors.
  4. Supposons que vous souhaitez extraire le service associé à la tâche 1 et à la tâche 2. L’attribut prédéfini department extrait déjà la valeur de département pour la première tâche. Vous pouvez définir un nouvel attribut appelé secondJobDepartment et définir l’expression JSONPath sur $.employmentNav.results[1].jobInfoNav.results[0].departmentNav.name_localized
  5. Vous pouvez maintenant transmettre les deux valeurs de service aux attributs Active Directory ou transmettre de manière sélective une valeur à l’aide du mappage d’expression.
  6. Sauvegardez le mappage.
  7. Testez la configuration à l’aide du provisionnement à la demande.
  8. Après avoir vérifié que la synchronisation fonctionne comme prévu, redémarrez le travail d’approvisionnement.

Récupération des détails de l’objet Position

Le connecteur SuccessFactors prend en charge l’extension de l’objet Position. Pour développer et récupérer des attributs de l’objet Position comme les noms de position ou le niveau de travail dans une langue spécifique, vous pouvez utiliser des expressions JSONPath comme indiqué.

Nom de l’attribut Expression JSONPath
positionJobLevel $.employmentNav.results[0].jobInfoNav.results[0].positionNav.jobLevel
positionNameFR $.employmentNav.results[0].jobInfoNav.results[0].positionNav.externalName_fr_FR
positionNameDE $.employmentNav.results[0].jobInfoNav.results[0].positionNav.externalName_de_DE

Approvisionnement d’utilisateurs dans le module d’intégration

L’approvisionnement des utilisateurs entrants de SAP SuccessFactors vers Active Directory local et Microsoft Entra ID prend désormais en charge l’approvisionnement avancé des pré-embauches présents dans le module SAP SuccessFactors Onboarding 2.0. Lorsque le service d'approvisionnement Microsoft Entra rencontre un nouveau profil d’embauche avec une date de début future, il interroge SAP SuccessFactors pour obtenir de nouvelles embauches avec l’un des codes de statut suivants : active, inactive, active_external_suite. Le code d’état active_external_suite correspond aux préembauches présentes dans le module 2.0 de l’intégration de SAP SuccessFactors. Pour obtenir une description de ces codes d’état, reportez-vous à la note de support SAP 2736579.

Le comportement par défaut du service d’approvisionnement consiste à traiter les pré-embauches dans le module d’intégration.

Si vous souhaitez exclure le traitement des pré-embauches dans le module d’intégration, mettez à jour la configuration de votre travail d’approvisionnement comme suit :

  1. Ouvrez le panneau mappage d’attributs de votre application d’approvisionnement SuccessFactors.
  2. Sous Afficher les options avancées, modifiez la liste des attributs SuccessFactors pour ajouter un nouvel attribut appelé userStatus.
  3. Définissez l’expression de l’API JSONPath pour cet attribut comme suit : $.employmentNav.results[0].userNav.status
  4. Enregistrez le schéma pour revenir au panneau mappage d’attribut.
  5. Modifier l’étendue de l’objet source pour appliquer un filtre d’étendue userStatus NOT EQUALS
  6. Enregistrez le mappage et validez que le filtre d’étendue fonctionne à l’aide de l’approvisionnement à la demande.

Activation des journaux d’audit de l’API OData dans SuccessFactors

Le connecteur Microsoft Entra SuccessFactors utilise l’API SuccessFactors OData pour récupérer les modifications et provisionner les utilisateurs. Si vous rencontrez des problèmes avec le service d’approvisionnement et que vous souhaitez vérifier les données récupérées à partir de SuccessFactors, vous pouvez activer les journaux d’audit de l’API OData dans SuccessFactors. Récupérez la charge utile de la demande envoyée par Microsoft Entra ID à partir des journaux d’audit. Pour résoudre ces problèmes, vous pouvez copier la charge utile de cette requête dans un outil tel que cURL ou l’afficheur Graph, la configurer pour utiliser le même utilisateur d’API que celui utilisé par le connecteur et voir si elle retourne les modifications souhaitées de SuccessFactors.

Scénarios d'écriture différée

Cette section aborde différents scénarios d’écriture différée. Elle recommande des approches de configuration basées sur la façon dont l’e-mail et le numéro de téléphone sont configurés dans SuccessFactors.

Scénarios pris en charge pour l’écriture différée par téléphone et par e-mail

# Scénario requis Adresse de messagerie principale
valeur d’indicateur
Téléphone professionnel
valeur de l’indicateur principal
Téléphone portable
valeur de l’indicateur principal
Téléphone professionnel
mappage
Téléphone portable
mappage
1 * Définissez uniquement l’e-mail professionnel comme principal.
* Ne définissez pas de numéro de téléphone.
true true false [Non défini] [Non défini]
2 * Dans SuccessFactors, l’e-mail professionnel et le téléphone professionnel sont principaux
* Transmettez toujours le numéro de téléphone Microsoft Entra vers le téléphone professionnel et le mobile vers le téléphone portable.
true true false telephoneNumber mobile
3 * Dans SuccessFactors, l’e-mail professionnel et le téléphone cellulaire sont principaux
* Transmettez toujours le numéro de téléphone Microsoft Entra vers le téléphone professionnel et le mobile vers le téléphone portable
true false true telephoneNumber mobile
4 * Dans SuccessFactors, l’e-mail professionnel est principal.
* Dans Microsoft Entra ID, vérifiez si le numéro de téléphone professionnel est présent ; s’il est présent, vérifiez ensuite si le numéro de mobile est également présent. Marquez le numéro de téléphone professionnel comme numéro principal uniquement si le numéro de téléphone mobile n’est pas présent.
true Utiliser le mappage d’expression : IIF(IsPresent([telephoneNumber]), IIF(IsPresent([mobile]),"false", "true"), "false") Utiliser le mappage d’expression : IIF(IsPresent([mobile]),"false", "true") telephoneNumber mobile
5 * Dans SuccessFactors, l’e-mail professionnel et le téléphone professionnel sont principaux.
* Dans Microsoft Entra ID, si le mobile est disponible, définissez-le comme téléphone professionnel, sinon utilisez telephoneNumber.
true true false IIF(IsPresent([mobile]), [mobile], [telephoneNumber]) [Non défini]
  • S’il n’existe aucun mappage pour le numéro de téléphone dans le mappage d’attribut d’écriture différée, seul l’e-mail est inclus dans l’écriture différée.
  • Lors de l’intégration d’un nouvel employé dans le Centre des employés, l’e-mail professionnel et le numéro de téléphone peuvent ne pas être disponibles. Si la définition de l’e-mail professionnel et du téléphone professionnel comme principal est obligatoire lors de l’intégration, vous pouvez définir une valeur factice pour le téléphone professionnel et l’e-mail pendant la création du nouvel employé. Après un certain temps, l’application en écriture différée met à jour la valeur.

Activation de l’écriture différée avec le UserID

L’application d’écriture différée SuccessFactors utilise la logique suivante pour mettre à jour les attributs d’objet utilisateur :

  • La première étape consiste à rechercher l’attribut userId dans l’ensemble de modifications. S’il est présent, elle utilise « UserId » pour effectuer l’appel de l’API SuccessFactors.
  • Si userId n’est pas trouvé, la valeur de l’attribut personIdExternal est utilisée par défaut.

En général, la valeur de l’attribut personIdExternal dans SuccessFactors correspond à la valeur de l’attribut userId. Toutefois, dans des scénarios comme la réembauche et le changement de statut d’un employé, un employé peut avoir deux enregistrements de travail dans SuccessFactors, à savoir l’un actif et l’autre inactif. Dans de tels scénarios, pour vérifier que l’écriture différée met à jour le profil utilisateur actif, mettez à jour la configuration des applications d’approvisionnement SuccessFactors comme décrit. Cette configuration garantit que userId est toujours présent dans l’ensemble de modifications visible par le connecteur et est utilisé dans l’appel de l’API SuccessFactors.

  1. Ouvrez l’application d'approvisionnement d’utilisateurs SuccessFactors vers Microsoft Entra ou SuccessFactors vers l’application d'approvisionnement d’utilisateurs AD local.
  2. Assurez-vous que extensionAttribute[1-15] dans Microsoft Entra ID stocke toujours le userId de l’enregistrement d’emploi actif de chaque employé. L’enregistrement mappe l’attribut userId SuccessFactors à extensionAttribute[1-15] dans Microsoft Entra ID.

    Mappage de l’attribut UserID entrant

  3. Pour obtenir des conseils concernant les paramètres JSONPath, reportez-vous à la section Gestion des scénarios de changement de statut et de réembauche des employés pour garantir que la valeur userId de l’enregistrement d’emploi actif est transmise à Microsoft Entra ID.
  4. Sauvegardez le mappage.
  5. Exécutez la tâche d’approvisionnement pour vous assurer que les valeurs userId sont transmises à Microsoft Entra ID.

    Remarque

    Si vous utilisez SuccessFactors pour l’approvisionnement d’utilisateurs Active Directory local, configurez Microsoft Entra Connect pour synchroniser la valeur de l’attribut userId d’Active Directory local avec Microsoft Entra ID.

  6. Ouvrez l’application SuccessFactors Writeback dans le portail Azure.
  7. Mappez l’attribut extensionAttribute souhaité qui contient la valeur du userId à l’attribut userId de SuccessFactors.

    Écriture différée du mappage de l’attribut UserID

  8. Sauvegardez le mappage.
  9. Accédez à Mappage d’attribut -> Avancé -> Revoir le schéma pour ouvrir l’éditeur de schéma JSON.
  10. Téléchargez une copie du schéma en tant que sauvegarde.
  11. Dans l’éditeur de schéma, appuyez sur Ctrl+F et recherchez le nœud JSON contenant le mappage du userId, où il est mappé à un attribut source Microsoft Entra.
  12. Mettez à jour l’attribut flowBehavior en remplaçant « FlowWhenChanged » par « FlowAlways », comme indiqué.

    Mise à jour du comportement du flux de mappage

  13. Enregistrez le mappage et testez le scénario d’écriture différée avec l’approvisionnement à la demande.

Scénarios non-pris en charge pour l’écriture différée par téléphone et par écriture différée électronique

  • Dans le Centre des employés, pendant l’intégration, l’e-mail personnel et le téléphone personnel sont définis comme principaux. L’application en écriture différée ne peut pas changer ce paramètre et définir l’e-mail professionnel et le téléphone professionnel comme principaux.
  • Dans le Centre des employés, le téléphone professionnel est défini comme principal. L’application d’écriture différée ne peut pas changer ceci et définir le téléphone portable comme principal.
  • L’application d’écriture différée ne peut pas lire les paramètres actuels de l’indicateur principal et utiliser les mêmes valeurs pour l’opération d’écriture. Les valeurs d’indicateur configurées dans le mappage d’attribut sont toujours utilisées.

Étapes suivantes