Comment le provisionnement Microsoft Entra s’intègre à SAP SuccessFactors

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

Cet article explique le fonctionnement de l’intégration et comment 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 l’intégration de l’authentification unique Microsoft Entra à SuccessFactors.

Établir une connectivité

Le service de provisionnement 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 locataire dans la section Informations d’identification de l’administrateur pour configurer l’URL du centre de données de l’API.

Pour sécuriser davantage la connectivité entre le service de provisionnement 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 IP pour le cloud public Azure
  2. Ouvrez le fichier et recherchez la balise Microsoft Entra ID
  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 n° 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 de provisionnement 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 de provisionnement Microsoft Entra envoie la requête API OData « GET » suivante pour récupérer les données effectives de tous les rôles de travail actifs et terminés.

Paramètre Description
Hôte de l’API OData Ajoute https à l’URL du locataire. 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

Notes

Durant la synchronisation initiale complète, les travailleurs actifs et inactifs 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, elle crée une entrée dans la cible.

Pour valider les données retournées par le point de terminaison de votre API OData pour une personIdExternalspécifique, mettez à jour 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 Postman 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

Synchronisation incrémentielle

Après la synchronisation complète, le service de provisionnement 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, endDateet 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 Postman 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 workers 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 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 : 'actif' (t), 'inactif' (f) ou 'active_external_suite' (e). Pour plus d’informations sur ces états, consultez la note de support SAP 2736579.

Notes

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 une conversion, 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 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, le filtre personIdExternal et asOfDate avec des valeurs correspondant à votre scénario de test.

Lecture des données d'attribut

Lorsque le service de provisionnement 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 ->Approvisionner ->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 de provisionnement Microsoft Entra pour récupérer des attributs personnalisés et gérer des scénarios tels que la réembauche, la conversion des rôles de travail 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 de provisionnement 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œudemploymentNav.
    • Si l’attribut fait partie de l’entité Utilisateur, recherchez l’attribut sous le nœudemploymentNav/userNav.
    • Si l’attribut fait partie de l’entité EmpJob, recherchez l’attribut sous le nœudemploymentNav/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 alors le JSONPath $.employmentNav.results[0].okToRehire.
    • Exemple 2 : Supposons que vous souhaitez ajouter l’attribut timeZone, qui fait partie de l’entité userNav, puis utiliser JSONPath $.employmentNav.results[0].userNav.timeZone
    • Exemple 3 : Supposons que vous souhaitez ajouter l’attribut flsaStatus, qui fait partie de l’entité jobInfoNav, puis utiliser 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 de provisionnement Microsoft Entra SuccessFactors :

  • custom01-CUSTOM15 de l’entité utilisateur (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 physicalDeliveryOfficeNameActive 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’attributs, mappez empJobNavCustomString35 à physicalDeliveryOfficeName.
  5. Sauvegardez le mappage.

Extension du scénario :

  • Si vous souhaitez mapper l’attribut custom35 à partir de l’entité Utilisateur, utilisez JSONPath $.employmentNav.results[0].userNav.custom35
  • Si vous souhaitez mapper l’attribut customString35 à partir de l’entité EmpEmployment, utilisez 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 de provisionnement filtre et exclut les enregistrements avec l’objet personEmpTerminationInfoNav défini sur null.

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 de provisionnement, 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 de 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 des attributs, mettez à jour le mappage d’expression pour utiliser l’indicateur d’état du compte.

    Travail de provisionnement Attribut d’état du compte Expression de mappage
    Provisionnement d’utilisateurs SuccessFactors vers Active Directory accountDisabled Switch([emplStatus], "True", "A", "False", "U", "False", "P", "False")
    Approvisionnement des 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 de provisionnement.

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

À propos du scénario de conversion des employés : la conversion 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é Utilisateur pour la même entité Personne. L’entité Utilisateurimbriqué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 n°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. Dans ce scénario 2, le Centre des employés ajoute une nouvelle entité EmpEmployment avec une nouvelle entité Utilisateur pour la même entité Personne.

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 de SuccessFactors.

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

  3. Cliquez sur le lien Passez 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 le contrôle 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 de provisionnement.

Notes

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 travailleur 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 conversion et de réembauche des employés sont également couverts.

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

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

  3. Cliquez sur le lien Passez 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 le contrôle 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 Chaîne à rechercher 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 des attributs.

    Travail de provisionnement 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 »
    Provisionnement d’utilisateurs SuccessFactors vers Active Directory accountDisabled Switch([activeEmploymentsCount], "False", "0", "True") Switch([emplStatus], "True", "A", "False", "U", "False", "P", "False")
    Approvisionnement des utilisateurs SuccessFactors vers Microsoft Entra accountEnabled Switch([activeEmploymentsCount], "True", "0", "False") Switch([emplStatus], "False", "A", "True", "U", "True", "P", "True")
  12. Enregistrez vos modifications. 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 de provisionnement.

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 définit assignmentClass sur « GA ». Il crée également une nouvelle entité Utilisateur. L’utilisateur dispose désormais de :

  • Une entité EmpEmployment + Utilisateur qui correspond à l’affectation de domicile avec assignmentClass défini sur « ST » et
  • Une entité EmpEmployment + Utilisateur 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 de SuccessFactors.

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

  3. Cliquez sur le lien Passez 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 le contrôle 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’attributs 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 extraire 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 Département sur globalAssignmentDepartment, le cas échéant. Sinon elle définit la valeur sur Département 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 de provisionnement.

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 Utilisateur 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 de 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 département 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 de provisionnement.

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

Le provisionnement des utilisateurs entrants de SAP SuccessFactors vers Active Directory local et Microsoft Entra ID prend désormais en charge le provisionnement avancé des pré-embauches présents dans le module SAP SuccessFactors Onboarding 2.0. Lorsque le service de provisionnement 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 de 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’attributs.
  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 de provisionnement 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 Postman, 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 la messagerie 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 courrier électronique

# 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
mapping
1 * Définissez uniquement la messagerie professionnelle comme principale.
* Ne définissez pas de numéro de téléphone.
true true false [Non défini] [Non défini]
2 * Dans SuccessFactors, la messagerie professionnelle 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, la messagerie professionnelle 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, la messagerie professionnelle est principale.
* Dans Microsoft Entra ID, vérifiez si le numéro de téléphone professionnel est présent, s’il est présent, puis vérifiez 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, la messagerie professionnelle 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 le numéro de téléphone.
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 le courrier électronique est inclus dans l’écriture différée.
  • Lors de l’intégration d’un nouvel employé dans le Centre des employés, la messagerie professionnelle et le numéro de téléphone peuvent ne pas être disponibles. Si la définition de la messagerie d’entreprise et du téléphone professionnel comme principale est obligatoire lors de l’intégration, vous pouvez définir une valeur factice pour le téléphone professionnel et la messagerie 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

L’application d’écriture différée SuccessFactors Writeback 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, il 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 la conversion 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 de provisionnement d’utilisateurs SuccessFactors vers Microsoft Entra ou SuccessFactors vers l’application de provisionnement 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 rôle de travail. 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 conversion et de réembauche des rôles de travail pour garantir que la valeur userId du dossier d’emploi actif est transmise à Microsoft Entra ID.
  4. Enregistrez le mappage.
  5. Exécutez la tâche de provisionnement pour vous assurer que les valeurs userId sont transmises à Microsoft Entra ID.

    Remarque

    Si vous utilisez SuccessFactors pour le provisionnement 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 userId à l’attribut userId de SuccessFactors.

    Mappage de l’attribut UserID de Writeback

  8. Sauvegardez le mappage.
  9. Accédez à Mappage d’attributs -> Avancé-> Passer en revue 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 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 le provisionnement à la demande.

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

  • Dans le Centre des employés, pendant l’intégration, la messagerie 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 la messagerie professionnelle et le téléphone professionnel comme principal.
  • Dans le Centre des employés, le téléphone professionnel est défini comme principal. L’application en écriture différée ne peut pas changer et définir le téléphone portable comme principal.
  • L’application en é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’attributs sont toujours utilisées.

Étapes suivantes