Integrazione del provisioning di Microsoft Entra con SAP SuccessFactors
Il servizio di provisioning utenti di Microsoft Entra si integra con SAP SuccessFactors Employee Central per gestire il ciclo di vita delle identità degli utenti. Microsoft Entra ID offre tre integrazioni predefinite:
- Provisioning utenti da SuccessFactors ad Active Directory locale
- Provisioning utenti da SuccessFactors a Microsoft Entra
- Writeback di SuccessFactors
Questo articolo illustra il funzionamento dell'integrazione e come personalizzare il comportamento di provisioning per diversi scenari di gestione delle risorse umane.
Microsoft Entra supporta anche l'accesso Single Sign-On a SuccessFactors. Per altre informazioni, vedere Integrazione dell'accesso Single Sign-On (SSO) di Microsoft Entra con SuccessFactors.
Stabilire la connettività
Il servizio di provisioning di Microsoft Entra usa l'autenticazione di base per connettersi agli endpoint dell'API Employee Central OData. Quando si configura l'app di provisioning SuccessFactors, usare il parametro URL del tenant nella sezione Credenziali amministratore per configurare l'URL del data center dell'API.
Per proteggere ulteriormente la connettività tra il servizio di provisioning di Microsoft Entra e SuccessFactors, aggiungere gli intervalli IP di Microsoft Entra nell'elenco IP consentiti di SuccessFactors:
- Scaricare gli intervalli IP più recenti per il cloud pubblico di Azure.
- Aprire il file e cercare il tag
AzureActiveDirectory
. - Copiare tutti gli intervalli di indirizzi IP elencati nell'elemento addressPrefixes e usare l'intervallo per compilare l'elenco di restrizioni degli indirizzi IP.
- Convertire i valori CIDR in intervalli IP.
- Accedere al portale di amministrazione di SuccessFactors per aggiungere gli intervalli IP all'elenco elementi consentiti. Fare riferimento alla nota di supporto SAP 2253200. È ora possibile immettere gli intervalli IP in questo strumento.
Entità supportate
Per ogni utente di SuccessFactors, il servizio di provisioning di Microsoft Entra recupera le entità seguenti. Ogni entità viene espansa usando il parametro di query $expand dell'API OData come riportato nella colona Regola di recupero. Alcune entità vengono espanse per impostazione predefinita, mentre altre solo se nel mapping è presente uno specifico attributo.
# | Entità di SuccessFactors | Nodo OData | Regola di recupero |
---|---|---|---|
1 | PerPerson |
*root node* |
Sempre |
2 | PerPersonal |
personalInfoNav |
Sempre |
3 | PerPhone |
phoneNav |
Sempre |
4 | PerEmail |
emailNav |
Sempre |
5 | EmpEmployment |
employmentNav |
Sempre |
6 | User |
employmentNav/userNav |
Sempre |
7 | EmpJob |
employmentNav/jobInfoNav |
Sempre |
8 | EmpEmploymentTermination |
activeEmploymentsCount |
Sempre |
9 | User's manager |
employmentNav/userNav/manager/empInfo |
Sempre |
10 | FOCompany |
employmentNav/jobInfoNav/companyNav |
Solo se l'attributo company o companyId è presente nel mapping |
11 | FODepartment |
employmentNav/jobInfoNav/departmentNav |
Solo se l'attributo department o departmentId è presente nel mapping |
12 | FOBusinessUnit |
employmentNav/jobInfoNav/businessUnitNav |
Solo se l'attributo businessUnit o businessUnitId è presente nel mapping |
13 | FOCostCenter |
employmentNav/jobInfoNav/costCenterNav |
Solo se l'attributo costCenter o costCenterId è presente nel mapping |
14 | FODivision |
employmentNav/jobInfoNav/divisionNav |
Solo se l'attributo division o divisionId è presente nel mapping |
15 | FOJobCode |
employmentNav/jobInfoNav/jobCodeNav |
Solo se l'attributo jobCode o jobCodeId è presente nel mapping |
16 | FOPayGrade |
employmentNav/jobInfoNav/payGradeNav |
Solo se l'attributo payGrade è presente nel mapping |
17 | FOLocation |
employmentNav/jobInfoNav/locationNav |
Solo se l'attributo location è presente nel mapping |
18 | FOCorporateAddressDEFLT |
employmentNav/jobInfoNav/addressNavDEFLT |
Se il mapping contiene uno degli attributi seguenti: officeLocationAddress, officeLocationCity, officeLocationZipCode |
19 | FOEventReason |
employmentNav/jobInfoNav/eventReasonNav |
Solo se l'attributo eventReason è presente nel mapping |
20 | EmpGlobalAssignment |
employmentNav/empGlobalAssignmentNav |
Solo se assignmentType è presente nel mapping |
21 | EmploymentType Picklist |
employmentNav/jobInfoNav/employmentTypeNav |
Solo se employmentType è presente nel mapping |
22 | EmployeeClass Picklist |
employmentNav/jobInfoNav/employeeClassNav |
Solo se employeeClass è presente nel mapping |
23 | EmplStatus Picklist |
employmentNav/jobInfoNav/emplStatusNav |
Solo se emplStatus è presente nel mapping |
24 | AssignmentType Picklist |
employmentNav/empGlobalAssignmentNav/assignmentTypeNav |
Solo se assignmentType è presente nel mapping |
25 | Position |
employmentNav/jobInfoNav/positionNav |
Solo se positioNav è presente nel mapping |
26 | Manager User |
employmentNav/jobInfoNav/managerUserNav |
Solo se managerUserNav è presente nel mapping |
Funzionamento della sincronizzazione completa
In base al mapping degli attributi, durante la sincronizzazione completa il servizio di provisioning di Microsoft Entra invia la query "GET" dell'API OData seguente per recuperare i dati effettivi di tutti i lavoratori attivi e terminati.
Parametro | Descrizione |
---|---|
Host dell'API OData | Aggiunge https all'URL del tenant. Esempio: https://api4.successfactors.com |
Endpoint dell'API OData | /odata/v2/PerPerson |
Parametro di query $format di OData | json |
Parametro di query $filter di OData | (personEmpTerminationInfoNav/activeEmploymentsCount ne null) and (lastModifiedDateTime le <CurrentExecutionTime>) |
Parametro di query $expand di OData | Questo valore di parametro dipende dagli attributi mappati. Esempio: employmentNav/userNav,employmentNav/jobInfoNav,personalInfoNav,personEmpTerminationInfoNav,phoneNav,emailNav,employmentNav/jobInfoNav/companyNav/countryOfRegistrationNav,employmentNav/jobInfoNav/divisionNav,employmentNav/jobInfoNav/departmentNav |
Parametro di query customPageSize di OData | 100 |
Nota
Durante la sincronizzazione completa iniziale, vengono recuperati i lavoratori attivi e terminati da SAP SuccessFactors.
Per ogni utente di SuccessFactors, il servizio di provisioning cerca un account nella destinazione (Microsoft Entra ID/Active Directory locale) usando l'attributo di corrispondenza definito nel mapping. Ad esempio: se personIdExternal è mappato a employeeId e viene impostato come attributo di corrispondenza, il servizio di provisioning usa il valore personIdExternal per cercare l'utente con il filtro employeeId. Se viene trovata una corrispondenza utente, aggiorna gli attributi di destinazione. Se non viene trovata alcuna corrispondenza, crea una nuova voce nella destinazione.
Per convalidare i dati restituiti dall'endpoint dell'API OData per uno specifico personIdExternal
, aggiornare SuccessFactorsAPIEndpoint
nella query dell'API con l'URL del server del data center dell'API e usare uno strumento come cURL o Graph Explorer per richiamare la query. Se il filtro "in" non funziona, è possibile provare con il filtro "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
Funzionamento della sincronizzazione incrementale
Dopo la sincronizzazione completa, il servizio di provisioning di Microsoft Entra gestisce LastExecutionTimestamp
e lo usa per creare query differenziali per il recupero delle modifiche incrementali. Gli attributi timestamp presenti in ogni entità di SuccessFactors, ad esempio lastModifiedDateTime
, startDate
, endDate
e latestTerminationDate
, vengono valutati per verificare se la modifica rientra tra LastExecutionTimestamp
e CurrentExecutionTime
. In caso affermativo, la modifica della voce viene considerata effettiva ed elaborata per la sincronizzazione.
Ecco il modello di richiesta dell'API OData usato da Microsoft Entra ID per eseguire query su SuccessFactors e recuperare le modifiche incrementali. È possibile aggiornare le variabili SuccessFactorsAPIEndpoint
, LastExecutionTimestamp
e CurrentExecutionTime
nel modello di richiesta e usare uno strumento come cURL o Graph Explorer per verificare quali dati vengono restituiti. In alternativa, è anche possibile recuperare il payload effettivo della richiesta da SuccessFactors abilitando i log di controllo dell'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
Funzionamento dell'elaborazione delle preassunzioni
Questa sezione illustra in che modo il connettore SAP SuccessFactors elabora i record di preassunzione (lavoratori con data di assunzione/di inizio in futuro).
Si supponga che esista un preassunto con employeeId "1234" in SuccessFactors Employee Central con data di inizio il 1° giugno 2023. Si supponga inoltre che questo record di preassunzione sia stato creato per la prima volta in Employee Central o nel modulo Onboarding il 15 maggio 2023. Quando il servizio di provisioning osserva per la prima volta questo record il 15 maggio 2023 (come parte della sincronizzazione completa o incrementale), questo record è ancora nello stato di preassunzione. Per questo motivo, SuccessFactors non invia al servizio di provisioning tutti gli attributi (ad esempio: userNav/username) associati all'utente. Sono disponibili solo dati minimi sull'utente, ad esempio companyName
, personIdExternal
, firstname
, lastname
e startDate
. Per elaborare correttamente le preassunzioni, è necessario soddisfare i prerequisiti seguenti:
- L'attributo
personIdExternal
deve essere impostato come identificatore di corrispondenza primario (proprietà di join). Se si configura un attributo diverso, ad esempio userName, come proprietà di join, il servizio di provisioning non sarà in grado di recuperare le informazioni di preassunzione. - L'attributo
startDate
deve essere disponibile e il relativo valore JSONPath deve essere impostato su$.employmentNav.results[0].startDate
o$.employmentNav.results[-1:].startDate
. - Il record di preassunzione deve trovarsi in uno degli stati seguenti in Employee Central: 'active' (t), 'inactive' (f) o 'active_external_suite' (e). Per informazioni dettagliate su questi stati, vedere la nota di supporto SAP 2736579.
Nota
Per una preassunzione senza cronologia nell'organizzazione, gli indici [0] e [-1:] funzioneranno per startDate
. Per una preassunzione che è una riassunzione o una conversione, non è possibile stabilire in modo deterministico l'ordine e questo può causare l'elaborazione di determinati lavoratori riassunti/convertiti alla data di inizio effettiva. Si tratta di una limitazione nota del connettore.
Durante la sincronizzazione completa o incrementale o per il provisioning su richiesta, quando il servizio di provisioning rileva un record di preassunzione, invia la query OData seguente a SuccessFactors con il filtro "asOfDate" impostato sul valore startDate dell'utente (ad esempio, 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/
Se si riscontrano problemi con l'elaborazione della preassunzione, è possibile usare il formato di richiesta OData precedente per eseguire query sull'istanza di SuccessFactors sostituendo l'endpoint dell'API personIdExternal
e il filtro asOfDate
con valori corrispondenti allo scenario di test.
Lettura dei dati degli attributi
Quando il servizio di provisioning di Microsoft Entra esegue query su SuccessFactors, recupera un set di risultati JSON. Il set di risultati JSON include molti attributi archiviati in Employee Central. Per impostazione predefinita, lo schema di provisioning è configurato per recuperare solo un sottoinsieme di tali attributi.
Per recuperare altri attributi, seguire i passaggi elencati:
Passare a Applicazioni aziendali ->App SuccessFactors ->Provisioning ->Modifica provisioning ->pagina di mapping degli attributi.
Scorrere verso il basso e fare clic su Mostra opzioni avanzate.
Selezionare Edit attribute list for SuccessFactors (Modifica elenco attributi per SuccessFactors).
Nota
Se l'opzione Modifica elenco attributi per SuccessFactors non è visualizzata nell'interfaccia di amministrazione di Microsoft Entra, usare l'URL https://portal.azure.com/?Microsoft_AAD_IAM_forceSchemaEditorEnabled=true per accedere alla pagina.
La colonna Espressione API di questa visualizzazione contiene le espressioni JSONPath usate dal connettore.
È possibile modificare un valore di JSONPath esistente o aggiungere un nuovo attributo con un'espressione JSONPath valida allo schema.
La sezione successiva contiene un elenco di scenari comuni per la modifica dei valori di JSONPath.
Gestione di diversi scenari di risorse umane
JSONPath è un linguaggio di query per JSON simile a XPath per XML. Analogamente a XPath, JSONPath consente l'estrazione e il filtraggio dei dati da un payload JSON.
Usando la trasformazione JSONPath, è possibile personalizzare il comportamento dell'app di provisioning di Microsoft Entra per recuperare attributi personalizzati e gestire scenari come la riassunzione, la conversione del lavoratore e l'assegnazione globale.
Questa sezione illustra come personalizzare l'app di provisioning per gli scenari di gestione di risorse umane seguenti:
- Recupero di altri attributi
- Recupero di attributi personalizzati
- Mapping dello stato di occupazione allo stato dell'account
- Gestione di scenari di conversione e riassunzione di lavoratori
- Recupero dell'attuale record Employment attivo
- Gestione dello scenario di assegnazione globale
- Scenario di gestione dei occupazioni simultanee
- Recupero dei dettagli della posizione
- Provisioning di utenti nel modulo Onboarding
- Abilitazione dei log di controllo dell'API OData in SuccessFactors
Recupero di altri attributi
Lo schema predefinito dell'app di provisioning SuccessFactors di Microsoft Entra viene fornito con oltre 90 attributi predefiniti. Per aggiungere altri attributi di SuccessFactors allo schema di provisioning, seguire questa procedura:
Usare la query OData per recuperare i dati per un utente di test valido da Employee Central.
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
Determinare l'entità di Employee Central associata all'attributo
- Se l'attributo fa parte dell'entità EmpEmployment, cercare l'attributo nel nodo employmentNav.
- Se l'attributo fa parte dell'entità User, cercare l'attributo nel nodo employmentNav/userNav.
- Se l'attributo fa parte dell'entità EmpJob, cercare l'attributo nel nodo employmentNav/jobInfoNav.
Creare il percorso JSON associato all'attributo e aggiungere questo nuovo attributo all'elenco di attributi di SuccessFactors.
- Esempio 1: si supponga di voler aggiungere l'attributo
okToRehire
, che fa parte dell'entitàemploymentNav
e quindi di usare l'espressione JSONPath$.employmentNav.results[0].okToRehire
- Esempio 2: si supponga di voler aggiungere l'attributo timeZone, che fa parte dell'entità userNav, quindi di usare l'espressione JSONPath
$.employmentNav.results[0].userNav.timeZone
- Esempio 3: si supponga di voler aggiungere l'attributo flsaStatus, che fa parte dell'entità jobInfoNav, quindi di usare l'espressione JSONPath
$.employmentNav.results[0].jobInfoNav.results[0].flsaStatus
- Esempio 1: si supponga di voler aggiungere l'attributo
Salvare lo schema.
Riavviare il provisioning.
Recupero di attributi personalizzati
Per impostazione predefinita, gli attributi personalizzati seguenti sono predefiniti nell'app di provisioning SuccessFactors di Microsoft Entra:
- custom01-custom15 dell'entità (userNav)
- customString1-customString15 dell'entità EmpEmployment (employmentNav) denominata empNavCustomString1-empNavCustomString15
- customString1-customString15 dell'entità EmpJobInfo (jobInfoNav) denominata empJobNavCustomString1-empNavJobCustomString15
Si supponga che nell'istanza di Employee Central l'attributo customString35 in EmpJobInfo archivi la descrizione della posizione. Si vuole inviare questo valore all'attributo physicalDeliveryOfficeName di Active Directory. Per configurare il mapping degli attributi per questo scenario, seguire questa procedura:
- Modificare l'elenco di attributi di SuccessFactors in modo da aggiungere un nuovo attributo denominato empJobNavCustomString35.
- Impostare l'espressione API di JSONPath per questo attributo su:
$.employmentNav.results[0].jobInfoNav.results[0].customString35
- Salvare e ricaricare la modifica del mapping nell'interfaccia di amministrazione di Microsoft Entra.
- Nel pannello del mapping degli attributi mappare empJobNavCustomString35 a physicalDeliveryOfficeName.
- Salva il mapping.
Estensione di questo scenario:
- Per mappare l'attributo custom35 dell'entità User, usare JSONPath
$.employmentNav.results[0].userNav.custom35
- Per mappare l'attributo customString35 dell'entità EmpEmployment, usare JSONPath
$.employmentNav.results[0].customString35
Mapping dello stato di occupazione allo stato dell'account
Per impostazione predefinita, il connettore SuccessFactors di Microsoft Entra usa il campo activeEmploymentsCount
dell'oggetto PersonEmpTerminationInfo
per impostare lo stato dell'account. È possibile che si verifichi uno dei problemi seguenti con questo attributo.
- Esiste un problema noto per cui il connettore potrebbe disabilitare l'account di un lavoratore terminato un giorno prima del termine dell'ultimo giorno di lavoro.
- Se l'oggetto
PersonEmpTerminationInfo
viene impostato su Null durante la terminazione, la disabilitazione dell'account AD non funziona perché il motore di provisioning filtra i record in cui l'oggettopersonEmpTerminationInfoNav
è impostato su Null.
Se si verifica uno di questi problemi o si preferisce eseguire il mapping dello stato di occupazione allo stato dell'account, è possibile aggiornare il mapping in modo da espandere il campo emplStatus
e usare il codice di stato dell'occupazione presente nel campo emplStatus.externalCode
. In base alla nota di supporto SAP 2505526, di seguito è riportato un elenco di codici di stato dell'occupazione che è possibile recuperare nell'app di provisioning.
- A = Attivo
- D = Inattivo
- U = Congedo non retribuito
- P = Congedo retribuito
- S = Sospeso
- F = In licenza
- O = Rimosso
- R = Pensionato
- T = Terminato
Usare la procedura per aggiornare il mapping e recuperare questi codici.
Aprire il pannello del mapping degli attributi dell'app di provisioning SuccessFactors.
In Mostra opzioni avanzate fare clic su Modifica elenco di attributi di SuccessFactors.
Trovare l'attributo
emplStatus
e aggiornare JSONPath in$.employmentNav.results[0].jobInfoNav.results[0].emplStatusNav.externalCode
. Con l'aggiornamento, il connettore può recuperare i codici di stato di occupazione nella tabella.Salvare le modifiche.
Nel pannello del mapping degli attributi aggiornare il mapping delle espressioni per il flag di stato dell'account.
Processo di provisioning Attributo dello stato dell'account Espressione di mapping Provisioning utenti da SuccessFactors ad Active Directory accountDisabled
Switch([emplStatus], "True", "A", "False", "U", "False", "P", "False")
Provisioning utenti da SuccessFactors a Microsoft Entra accountEnabled
Switch([emplStatus], "False", "A", "True", "U", "True", "P", "True")
Salvare le modifiche.
Testare la configurazione usando il provisioning su richiesta.
Dopo aver confermato che la sincronizzazione funziona come previsto, riavviare il processo di provisioning.
Gestione di scenari di conversione e riassunzione di lavoratori
Informazioni sullo scenario di conversione dei lavoratori: si tratta del processo di conversione di un attuale dipendente a tempo pieno in un collaboratore a contratto o viceversa. In questo scenario Employee Central aggiunge una nuova entità EmpEmployment insieme a una nuova entità User per la stessa entità Person. L'entità User annidata nella precedente entità EmpEmployment è impostata su Null.
Informazioni sugli scenari di riassunzione: in SuccessFactors sono disponibili due opzioni per elaborare la riassunzione dei dipendenti:
- Opzione 1: Creare un nuovo profilo utente in Employee Central
- Opzione 2: Riutilizzare il profilo utente esistente in Employee Central
Se il processo di risorse umane usa l'opzione 1, non sono necessarie modifiche allo schema di provisioning. Se usa l'opzione 2, Employee Central aggiunge una nuova entità EmpEmployment insieme a una nuova entità User per la stessa entità Person.
È possibile gestire entrambi gli scenari in modo che i nuovi dati sull'occupazione vengano visualizzati quando si verifica una conversione o una riassunzione. Aggiornare in blocco lo schema dell'app di provisioning seguendo i passaggi elencati:
Aprire il pannello del mapping degli attributi dell'app di provisioning SuccessFactors.
Scorrere verso il basso e fare clic su Mostra opzioni avanzate.
Fare clic sul collegamento Esaminare lo schema qui per aprire l'editor di schemi.
Fare clic sul collegamento download per salvare una copia dello schema prima della modifica.
Nell'editor di schemi premere CTRL-H per aprire il controllo Trova e sostituisci.
Nella casella di testo Trova copiare e incollare il valore
$.employmentNav.results[0]
.Nella casella di testo Sostituisci copiare e incollare il valore
$.employmentNav.results[-1:]
. Questa espressione JSONPath restituisce il record EmpEmployment più recente.Fare clic sull'opzione "Sostituisci tutto" per aggiornare lo schema.
Salvare lo schema.
Il processo precedente aggiorna tutte le espressioni JSONPath nel modo seguente:
- Vecchia espressione JSONPath:
$.employmentNav.results[0].jobInfoNav.results[0].departmentNav.name_localized
- Nuova espressione JSONPath:
$.employmentNav.results[-1:].jobInfoNav.results[0].departmentNav.name_localized
- Vecchia espressione JSONPath:
Testare la configurazione usando il provisioning su richiesta.
Dopo aver confermato che la sincronizzazione funziona come previsto, riavviare il processo di provisioning.
Nota
L'approccio descritto sopra funziona solo se SAP SuccessFactors restituisce gli oggetti Employment in ordine crescente, dove il record più recente è sempre l'ultimo record nella matrice di risultati employmentNav. L'ordine in cui vengono restituiti più record Employment non è garantito da SuccessFactors. Se l'istanza di SuccessFactors in uso include più record Employment corrispondenti a un lavoratore e si vogliono sempre recuperare gli attributi associati al record attivo, seguire la procedura descritta nella sezione successiva.
Recupero dell'attuale record Employment attivo
L'uso della radice JSONPath $.employmentNav.results[0]
o $.employmentNav.results[-1:]
per recuperare i record Employment funziona nella maggior parte degli scenari e mantiene la configurazione semplice. Tuttavia, a seconda della configurazione dell'istanza di SuccessFactors, potrebbe essere necessario aggiornare questa configurazione per assicurarsi che il connettore recuperi sempre il record attivo più recente.
Questa sezione descrive come aggiornare le impostazioni di JSONPath per recuperare definitivamente l'attuale record Employment attivo dell'utente. Riguarda anche gli scenari di conversione e riassunzione di lavoratori.
Aprire il pannello del mapping degli attributi dell'app di provisioning SuccessFactors.
Scorrere verso il basso e fare clic su Mostra opzioni avanzate.
Fare clic sul collegamento Esaminare lo schema qui per aprire l'editor di schemi.
Fare clic sul collegamento download per salvare una copia dello schema prima della modifica.
Nell'editor di schemi premere CTRL-H per aprire il controllo Trova e sostituisci.
Eseguire le operazioni di ricerca e sostituzione seguenti. Assicurarsi che non vi siano spazi iniziali o finali durante l'esecuzione delle operazioni. Se si usa l'indice
[-1:]
anziché[0]
, aggiornare di conseguenza il campo string-to-find.Stringa da trovare Stringa da usare in sostituzione Scopo $.employmentNav.results[0].jobInfoNav.results[0].emplStatus
$.employmentNav..jobInfoNav..results[?(@.emplStatusNav.externalCode == 'A' || @.emplStatusNav.externalCode == 'U' || @.emplStatusNav.externalCode == 'P' )].emplStatusNav.externalCode
Con questa operazione di ricerca e sostituzione viene aggiunta la possibilità di espandere l'oggetto OData emplStatusNav. $.employmentNav.results[0].jobInfoNav.results[0]
$.employmentNav..jobInfoNav..results[?(@.emplStatusNav.externalCode == 'A' || @.emplStatusNav.externalCode == 'U' || @.emplStatusNav.externalCode == 'P')]
Con questa operazione di ricerca e sostituzione viene indicato al connettore di recuperare sempre gli attributi associati al record EmpJobInfo attivo di SuccessFactors. Gli attributi associati ai record terminati/inattivi in SuccessFactors vengono ignorati. $.employmentNav.results[0]
$.employmentNav..results[?(@.jobInfoNav..results[?(@.emplStatusNav.externalCode == 'A' || @.emplStatusNav.externalCode == 'U' || @.emplStatusNav.externalCode == 'P')])]
Con questa operazione di ricerca e sostituzione viene indicato al connettore di recuperare sempre gli attributi associati al record Employment attivo di SuccessFactors. Gli attributi associati ai record terminati/inattivi in SuccessFactors vengono ignorati. Salvare lo schema.
Il processo precedente aggiorna tutte le espressioni JSONPath.
Per la corretta elaborazione della riassunzione, l'espressione JSONPath associata all'attributo
startDate
deve usare l'indice[0]
o[-1:]
. In Mostra opzioni avanzate fare clic su Modifica elenco di attributi di SuccessFactors. Trovare l'attributostartDate
e impostarlo sul valore$.employmentNav.results[-1:].startDate
Salvare lo schema.
Per assicurarsi che le terminazioni vengano elaborate come previsto, è possibile usare una delle impostazioni seguenti nella sezione del mapping degli attributi.
Processo di provisioning Attributo dello stato dell'account Espressione da usare se lo stato dell'account è basato su "activeEmploymentsCount" Espressione da usare se lo stato dell'account è basato sul valore "emplStatus" Provisioning utenti da SuccessFactors ad Active Directory accountDisabled
Switch([activeEmploymentsCount], "False", "0", "True")
Switch([emplStatus], "True", "A", "False", "U", "False", "P", "False")
Provisioning utenti da SuccessFactors a Microsoft Entra accountEnabled
Switch([activeEmploymentsCount], "True", "0", "False")
Switch([emplStatus], "False", "A", "True", "U", "True", "P", "True")
Salva le modifiche. 1.
Testare la configurazione usando il provisioning su richiesta.
Dopo aver confermato che la sincronizzazione funziona come previsto, riavviare il processo di provisioning.
Gestione dello scenario di assegnazione globale
Quando un utente in Employee Central viene elaborato per l'assegnazione globale, SuccessFactors aggiunge una nuova entità EmpEmployment e imposta assignmentClass su "GA". Crea anche una nuova entità User. A questo punto, l'utente ha:
- Un'entità EmpEmployment + User che corrisponde all'assegnazione interna con assignmentClass impostato su "ST"
- Un'altra entità EmpEmployment + User che corrisponde all'assegnazione globale con assignmentClass impostato su "GA"
Per recuperare gli attributi appartenenti al profilo utente di assegnazione standard e assegnazione globale, seguire questa procedura:
Aprire il pannello del mapping degli attributi dell'app di provisioning SuccessFactors.
Scorrere verso il basso e fare clic su Mostra opzioni avanzate.
Fare clic sul collegamento Esaminare lo schema qui per aprire l'editor di schemi.
Fare clic sul collegamento download per salvare una copia dello schema prima della modifica.
Nell'editor di schemi premere CTRL-H per aprire il controllo Trova e sostituisci.
Nella casella di testo Trova copiare e incollare il valore
$.employmentNav.results[0]
.Nella casella di testo Sostituisci copiare e incollare il valore
$.employmentNav.results[?(@.assignmentClass == 'ST')]
. Si noti lo spazio vuoto che circonda l'operatore ==, che è importante per la corretta elaborazione dell'espressione JSONPath.Fare clic sull'opzione "Sostituisci tutto" per aggiornare lo schema.
Salvare lo schema.
Il processo precedente aggiorna tutte le espressioni JSONPath nel modo seguente:
- Vecchia espressione JSONPath:
$.employmentNav.results[0].jobInfoNav.results[0].departmentNav.name_localized
- Nuova espressione JSONPath:
$.employmentNav.results[?(@.assignmentClass == 'ST')].jobInfoNav.results[0].departmentNav.name_localized
- Vecchia espressione JSONPath:
Ricaricare il pannello di mapping degli attributi dell'app.
Scorrere verso il basso e fare clic su Mostra opzioni avanzate.
Selezionare Edit attribute list for SuccessFactors (Modifica elenco attributi per SuccessFactors).
Aggiungere nuovi attributi per recuperare i dati di assegnazione globale. Ad esempio: se si vuole recuperare il nome del reparto associato a un profilo di assegnazione globale, è possibile aggiungere l'attributo globalAssignmentDepartment con l'espressione JSONPath impostata su
$.employmentNav.results[?(@.assignmentClass == 'GA')].jobInfoNav.results[0].departmentNav.name_localized
.È ora possibile inviare entrambi i valori di reparto agli attributi di Active Directory oppure inviare selettivamente un valore tramite il mapping delle espressioni. Esempio: l'espressione imposta il valore dell'attributo department di AD su globalAssignmentDepartment se presente; in caso contrario, imposta il valore su department reparto associato all'assegnazione standard.
IIF(IsPresent([globalAssignmentDepartment]),[globalAssignmentDepartment],[department])
Salva il mapping.
Testare la configurazione usando il provisioning su richiesta.
Dopo aver confermato che la sincronizzazione funziona come previsto, riavviare il processo di provisioning.
Scenario di gestione dei occupazioni simultanee
Quando un utente in Employee Central ha più occupazioni simultanee, sono presenti due entità EmpEmployment e User con assignmentClass impostato su "ST". Per recuperare gli attributi appartenenti a entrambe le occupazioni, seguire questa procedura:
- Aprire il pannello del mapping degli attributi dell'app di provisioning SuccessFactors.
- Scorrere verso il basso e fare clic su Mostra opzioni avanzate.
- Selezionare Edit attribute list for SuccessFactors (Modifica elenco attributi per SuccessFactors).
- Si supponga di voler eseguire il pull del reparto associato all'occupazione 1 e all'occupazione 2. L'attributo predefinito department già recupera il valore del reparto per la prima occupazione. È possibile definire un nuovo attributo denominato secondJobDepartment e impostare l'espressione JSONPath su
$.employmentNav.results[1].jobInfoNav.results[0].departmentNav.name_localized
- È ora possibile inviare entrambi i valori di reparto agli attributi di Active Directory oppure inviare selettivamente un valore tramite il mapping delle espressioni.
- Salva il mapping.
- Testare la configurazione usando il provisioning su richiesta.
- Dopo aver confermato che la sincronizzazione funziona come previsto, riavviare il processo di provisioning.
Recupero dei dettagli della posizione
Il connettore SuccessFactors supporta l'espansione dell'oggetto posizione. Per espandere e recuperare gli attributi dell'oggetto posizione, ad esempio il livello di occupazione o i nomi di posizione in una lingua specifica, è possibile usare espressioni JSONPath come illustrato.
Nome attributo | Espressione 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 |
Provisioning di utenti nel modulo Onboarding
Il provisioning utenti in ingresso da SAP SuccessFactors ad Active Directory locale e Microsoft Entra ID supporta ora il provisioning anticipato delle preassunzioni presenti nel modulo SAP SuccessFactors Onboarding 2.0. Quando il servizio di provisioning di Microsoft Entra rileva un nuovo profilo di assunzione con una data di inizio futura, esegue una query su SAP SuccessFactors per ottenere le nuove assunzioni con uno dei codici di stato seguenti: active
, inactive
, active_external_suite
. Il codice di stato active_external_suite
corrisponde alle preassunzioni presenti nel modulo SAP SuccessFactors Onboarding 2.0. Per una descrizione di questi codici di stato, vedere la nota di supporto SAP 2736579.
Il comportamento predefinito del servizio di provisioning consiste nell'elaborare le preassunzioni nel modulo Onboarding.
Se si vuole escludere l'elaborazione delle preassunzioni nel modulo Onboarding, aggiornare la configurazione del processo di provisioning come indicato di seguito:
- Aprire il pannello del mapping degli attributi dell'app di provisioning SuccessFactors.
- In Mostra opzioni avanzate modificare l'elenco di attributi di SuccessFactors in modo da aggiungere un nuovo attributo denominato
userStatus
. - Impostare l'espressione API di JSONPath per questo attributo su:
$.employmentNav.results[0].userNav.status
- Salvare lo schema per tornare al pannello di mapping degli attributi.
- Modificare l'ambito dell'oggetto di origine per applicare un filtro di ambito
userStatus NOT EQUALS
- Salvare il mapping e verificare che il filtro di ambito funzioni usando il provisioning su richiesta.
Abilitazione dei log di controllo dell'API OData in SuccessFactors
Il connettore SuccessFactors di Microsoft Entra usa l'API OData di SuccessFactors per recuperare le modifiche ed effettuare il provisioning degli utenti. Se si riscontrano problemi con il servizio di provisioning e si desidera verificare quali dati sono stati recuperati da SuccessFactors, è possibile abilitare i log di controllo dell'API OData in SuccessFactors. Recuperare il payload della richiesta inviato da Microsoft Entra ID dai log di controllo. Per risolvere i problemi, è possibile copiare questo payload della richiesta in uno strumento come cURL o Graph Explorer, configurarlo per usare lo stesso utente API usato dal connettore e verificare se restituisce le modifiche desiderate da SuccessFactors.
Scenari di writeback
Questa sezione illustra diversi scenari di writeback. Consiglia approcci di configurazione in base al modo in cui sono impostati l'indirizzo di posta elettronica e il numero di telefono in SuccessFactors.
Scenari supportati per il writeback di numero di telefono e indirizzo di posta elettronica
# | Requisito dello scenario | Indirizzo di posta elettronica primario - Valore del flag |
Telefono ufficio primario - Valore del flag |
Cellulare primario - Valore del flag |
Telefono ufficio mapping |
Cellulare mapping |
---|---|---|---|---|---|---|
1 | * Impostare solo l'indirizzo di posta elettronica aziendale come primario. * Non impostare i numeri di telefono. |
true | true | false | [Non impostato] | [Non impostato] |
2 | * In SuccessFactors l'indirizzo di posta elettronica aziendale e il numero di telefono ufficio sono primari * Inviare sempre il numero di telefono di Microsoft Entra al telefono ufficio e al cellulare aziendale. |
true | true | false | telephoneNumber | per dispositivi mobili |
3 | * In SuccessFactors l'indirizzo di posta elettronica aziendale e il cellulare aziendale sono primari. * Inviare sempre il numero di telefono di Microsoft Entra al telefono ufficio e al cellulare aziendale. |
true | false | true | telephoneNumber | per dispositivi mobili |
4 | * In SuccessFactors l'indirizzo di posta elettronica aziendale è primario. * In Microsoft Entra ID verificare se il numero di telefono ufficio è presente e in caso affermativo verificare se è presente anche il numero di cellulare. Contrassegnare il numero di telefono ufficio come primario solo se il numero di cellulare non è presente. |
true | Usare il mapping di espressioni: IIF(IsPresent([telephoneNumber]), IIF(IsPresent([mobile]),"false", "true"), "false") |
Usare il mapping di espressioni: IIF(IsPresent([mobile]),"false", "true") |
telephoneNumber | per dispositivi mobili |
5 | * In SuccessFactors l'indirizzo di posta elettronica aziendale e il numero di telefono ufficio sono primari. * In Microsoft Entra ID, se il cellulare è disponibile, impostarlo come telefono ufficio, altrimenti usare telephoneNumber. |
true | true | false | IIF(IsPresent([mobile]), [mobile], [telephoneNumber]) |
[Non impostato] |
- Se non è presente alcun mapping per il numero di telefono nel mapping degli attributi di writeback, nel writeback viene incluso solo l'indirizzo di posta elettronica.
- Durante l'onboarding di un nuovo assunto in Employee Central, l'indirizzo di posta elettronica aziendale e il numero di telefono potrebbero non essere disponibili. Se l'impostazione dell'indirizzo di posta elettronica aziendale e del telefono ufficio come primari è obbligatoria durante l'onboarding, è possibile impostare valori fittizi durante la creazione di un nuovo assunto. Dopo qualche tempo, l'app Writeback aggiorna il valore.
Abilitazione del writeback con UserID
L'app Writeback di SuccessFactors usa la logica seguente per aggiornare gli attributi dell'oggetto User:
- Come primo passaggio, cerca l'attributo userId nell'insieme di modifiche. Se è presente, usa "UserId" per effettuare la chiamata all'API SuccessFactors.
- Se userId non viene trovato, per impostazione predefinita viene usato il valore dell'attributo personIdExternal.
In genere il valore dell'attributo personIdExternal in SuccessFactors corrisponde al valore dell'attributo userId. Tuttavia, in scenari come la riassunzione e la conversione dei lavoratori, un dipendente in SuccessFactors può avere due record Employment, uno attivo e l'altro inattivo. In tali scenari, per assicurarsi che il writeback aggiorni il profilo utente attivo, aggiornare la configurazione dell'app di provisioning SuccessFactors come descritto. Questa configurazione garantisce che userId sia sempre presente nell'insieme di modifiche visibile al connettore e che venga usato nella chiamata all'API SuccessFactors.
- Aprire l'app di provisioning utenti da SuccessFactors a Microsoft Entra o l'app di provisioning utenti da SuccessFactors ad Active Directory locale.
- Assicurarsi che
extensionAttribute[1-15]
in Microsoft Entra ID archivi sempre l'attributouserId
del record Employment attivo di ogni lavoratore. Il record esegue il mapping dell'attributouserId
SuccessFactors aextensionAttribute[1-15]
in Microsoft Entra ID. - Per indicazioni sulle impostazioni di JSONPath, vedere la sezione Gestione di scenari di conversione e riassunzione di lavoratori per assicurarsi che il valore di userId del record Employment attivo venga inviato in Microsoft Entra ID.
- Salva il mapping.
- Eseguire il processo di provisioning per assicurarsi che i valori di userId vengano inviati a Microsoft Entra ID.
Nota
Se si usa l'app di provisioning utenti da SuccessFactors ad Active Directory locale, configurare Microsoft Entra Connect in modo da sincronizzare il valore dell'attributo userId da Active Directory locale a Microsoft Entra ID.
- Aprire l'app Writeback di SuccessFactors nel portale di Azure.
- Eseguire il mapping dell'attributo extensionAttribute che contiene il valore di userId all'attributo userId di SuccessFactors.
- Salva il mapping.
- Passare a Mapping degli attributi ->Avanzate - >Revisione schema per aprire l'editor di schemi JSON.
- Scaricare una copia dello schema come backup.
- Nell'editor di schemi premere CTRL+F e cercare il nodo JSON contenente il mapping userId, dove viene mappato a un attributo di Microsoft Entra di origine.
- Aggiornare l'attributo flowBehavior da "FlowWhenChanged" a "FlowAlways", come illustrato.
- Salvare il mapping e testare lo scenario di writeback con il provisioning su richiesta.
Scenari non supportati per il writeback di numero di telefono e indirizzo di posta elettronica
- Durante l'onboarding in Employee Central, l'indirizzo di posta elettronica e il numero di telefono personali vengono impostati come primari. L'app Writeback non può cambiare questa impostazione e impostare l'indirizzo di posta elettronica aziendale e il telefono ufficio come primari.
- In Employee Central il telefono ufficio è impostato come primario. L'app Writeback non può cambiare questa impostazione e impostare il cellulare come primario.
- L'app Writeback non può leggere le impostazioni del flag primario corrente e usare gli stessi valori per l'operazione di scrittura. Vengono sempre usati i valori dei flag configurati nel mapping degli attributi.