Como o provisionamento do Microsoft Entra se integra ao SAP SuccessFactors
O serviço de provisionamento de usuários Microsoft Entra integra-se ao SAP SuccessFactors Employee Central para gerenciar o ciclo de vida da identidade dos usuários. O Microsoft Entra ID oferece três integrações pré-criadas:
- SuccessFactors para provisionamento de usuário do Ative Directory local
- SuccessFactors para provisionamento de usuários do Microsoft Entra
- Write-back SuccessFactors
Este artigo explica como a integração funciona e como você pode personalizar o comportamento de provisionamento para diferentes cenários de RH.
O Microsoft Entra também oferece suporte ao logon único para SuccessFactors. Para obter mais informações, consulte Integração de logon único (SSO) do Microsoft Entra com SuccessFactors.
Estabelecendo conectividade
O serviço de provisionamento Microsoft Entra usa autenticação básica para se conectar aos pontos de extremidade da API OData do Employee Central. Ao configurar o aplicativo de provisionamento SuccessFactors, use o parâmetro URL do locatário na seção Credenciais do administrador para configurar a URL do data center da API.
Para proteger ainda mais a conectividade entre o serviço de provisionamento Microsoft Entra e o SuccessFactors, adicione os intervalos de IP do Microsoft Entra na lista de permissões de IP do SuccessFactors:
- Transfira os intervalos de IP mais recentes para a nuvem pública do Azure.
- Abra o ficheiro e procure a etiqueta
AzureActiveDirectory
. - Copie todos os intervalos de endereços IP listados no elemento addressPrefixes e use o intervalo para criar sua lista de restrição de endereços IP.
- Traduza os valores CIDR para intervalos IP.
- Faça login no portal de administração do SuccessFactors para adicionar intervalos de IP à lista de permissões. Consulte a nota de suporte SAP 2253200. Agora você pode inserir intervalos de IP nesta ferramenta.
Entidades suportadas
Para cada usuário no SuccessFactors, o serviço de provisionamento do Microsoft Entra recupera as seguintes entidades. Cada entidade é expandida usando a API OData $expand parâmetro de consulta, conforme descrito na coluna Regra de recuperação. Algumas entidades são expandidas por padrão, enquanto algumas entidades são expandidas somente se um atributo específico estiver presente no mapeamento.
# | Entidade SuccessFactors | Nó OData | Regra de recuperação |
---|---|---|---|
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 |
Somente se company ou companyId atributo for mapeado |
11 | FODepartment |
employmentNav/jobInfoNav/departmentNav |
Somente se department ou departmentId atributo for mapeado |
12 | FOBusinessUnit |
employmentNav/jobInfoNav/businessUnitNav |
Somente se businessUnit ou businessUnitId atributo for mapeado |
13 | FOCostCenter |
employmentNav/jobInfoNav/costCenterNav |
Somente se costCenter ou costCenterId atributo for mapeado |
14 | FODivision |
employmentNav/jobInfoNav/divisionNav |
Somente se division ou divisionId atributo for mapeado |
15 | FOJobCode |
employmentNav/jobInfoNav/jobCodeNav |
Somente se jobCode ou jobCodeId atributo for mapeado |
16 | FOPayGrade |
employmentNav/jobInfoNav/payGradeNav |
Somente se payGrade o atributo for mapeado |
17 | FOLocation |
employmentNav/jobInfoNav/locationNav |
Somente se location o atributo for mapeado |
18 | FOCorporateAddressDEFLT |
employmentNav/jobInfoNav/addressNavDEFLT |
Se o mapeamento contiver um dos seguintes atributos: officeLocationAddress, officeLocationCity, officeLocationZipCode |
19 | FOEventReason |
employmentNav/jobInfoNav/eventReasonNav |
Somente se eventReason o atributo for mapeado |
20 | EmpGlobalAssignment |
employmentNav/empGlobalAssignmentNav |
Apenas se assignmentType estiver mapeado |
21 | EmploymentType Picklist |
employmentNav/jobInfoNav/employmentTypeNav |
Apenas se employmentType estiver mapeado |
22 | EmployeeClass Picklist |
employmentNav/jobInfoNav/employeeClassNav |
Apenas se employeeClass estiver mapeado |
23 | EmplStatus Picklist |
employmentNav/jobInfoNav/emplStatusNav |
Apenas se emplStatus estiver mapeado |
24 | AssignmentType Picklist |
employmentNav/empGlobalAssignmentNav/assignmentTypeNav |
Apenas se assignmentType estiver mapeado |
25 | Position |
employmentNav/jobInfoNav/positionNav |
Apenas se positioNav estiver mapeado |
26 | Manager User |
employmentNav/jobInfoNav/managerUserNav |
Apenas se managerUserNav estiver mapeado |
Como funciona a sincronização completa
Com base no mapeamento de atributos, durante a sincronização completa, o serviço de provisionamento Microsoft Entra envia a seguinte consulta de API OData "GET" para buscar dados efetivos de todos os trabalhadores ativos e encerrados.
Parâmetro | Descrição |
---|---|
OData API Host | Acrescenta https à URL do locatário. Exemplo: https://api4.successfactors.com |
Ponto de extremidade da API OData | /odata/v2/PerPerson |
OData $format parâmetro de consulta | json |
OData $filter parâmetro de consulta | (personEmpTerminationInfoNav/activeEmploymentsCount ne null) and (lastModifiedDateTime le <CurrentExecutionTime>) |
OData $expand parâmetro de consulta | Esse valor de parâmetro depende dos atributos mapeados. Exemplo: employmentNav/userNav,employmentNav/jobInfoNav,personalInfoNav,personEmpTerminationInfoNav,phoneNav,emailNav,employmentNav/jobInfoNav/companyNav/countryOfRegistrationNav,employmentNav/jobInfoNav/divisionNav,employmentNav/jobInfoNav/departmentNav |
Parâmetro de consulta OData customPageSize | 100 |
Observação
Durante a sincronização inicial completa, os trabalhadores ativos e demitidos do SAP SuccessFactors são buscados.
Para cada usuário SuccessFactors, o serviço de provisionamento procura uma conta no destino (ID do Microsoft Entra / Ative Directory local) usando o atributo de correspondência definido no mapeamento. Por exemplo: se personIdExternal mapeia para employeeId e é definido como o atributo correspondente, o serviço de provisionamento usa o valor personIdExternal para procurar o usuário com o filtro employeeId. Se uma correspondência de usuário for encontrada, ela atualizará os atributos de destino. Se nenhuma correspondência for encontrada, criará uma nova entrada no destino.
Para validar os dados retornados pelo ponto de extremidade da API OData para um ponto de extremidade específico personIdExternal
, atualize a SuccessFactorsAPIEndpoint
consulta na API com a URL do servidor do data center da API e use uma ferramenta como cURL ou Graph Explorer para invocar a consulta. Se o filtro "in" não funcionar, você pode tentar o 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
Como funciona a sincronização incremental
Após a sincronização completa, o serviço de provisionamento Microsoft Entra o mantém LastExecutionTimestamp
e o usa para criar consultas delta para recuperar alterações incrementais. Os atributos de carimbo de data/hora presentes em cada entidade SuccessFactors, como lastModifiedDateTime
, startDate
, endDate
, e latestTerminationDate
, são avaliados para ver se a alteração está entre o LastExecutionTimestamp
e CurrentExecutionTime
. Se sim, então a alteração de entrada é considerada eficaz e processada para sincronização.
Aqui está o modelo de solicitação de API OData que o Microsoft Entra ID usa para consultar SuccessFactors para alterações incrementais. Você pode atualizar as variáveis SuccessFactorsAPIEndpoint
eCurrentExecutionTime
, no modelo de solicitação, LastExecutionTimestamp
usar uma ferramenta como cURL ou Graph Explorer para verificar quais dados são retornados. Como alternativa, você também pode recuperar a carga útil de solicitação real de SuccessFactors habilitando logs de auditoria de 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
Como funciona o processamento pré-contratação
Esta seção explica como o conector SAP SuccessFactors processa registros de pré-contratação (trabalhadores com data de contratação/data de início no futuro).
Digamos que haja uma pré-contratação com employeeId "1234" na SuccessFactors Employee Central com data de início em 1-Junho-2023. Vamos supor ainda que esse registro de pré-contratação foi criado pela primeira vez na Central de Funcionários ou no módulo de Integração em 15 de maio de 2023. Quando o serviço de provisionamento observa esse registro pela primeira vez em 15 de maio de 2023 (como parte da sincronização completa ou incremental), esse registro ainda está no estado de pré-contratação. Devido a isso, SuccessFactors não envia ao serviço de provisionamento todos os atributos (exemplo: userNav/username) associados ao usuário. Apenas dados mínimos sobre o usuário, como companyName
, personIdExternal
, firstname
, lastname
e startDate
estão disponíveis. Para processar pré-contratações com sucesso, os seguintes pré-requisitos devem ser atendidos:
- O
personIdExternal
atributo deve ser definido como o identificador de correspondência primário (propriedade de junção). Se você configurar um atributo diferente (exemplo: userName) como a propriedade de associação, o serviço de provisionamento não poderá recuperar as informações de pré-contratação. - O
startDate
atributo deve estar disponível e seu JSONPath deve ser definido como ou$.employmentNav.results[0].startDate
$.employmentNav.results[-1:].startDate
. - O registro de pré-contratação deve estar em um dos seguintes estados na Central do Funcionário: 'ativo' (t), 'inativo' (f) ou 'ative_external_suite' (e). Para obter detalhes sobre esses estados, consulte a nota de suporte do SAP 2736579.
Observação
Para uma pré-contratação que não tenha histórico com a organização, o índice [0] e [-1:] funcionará para startDate
. Para uma pré-contratação que é uma recontratação ou conversão, não podemos dizer deterministicamente o pedido e isso pode fazer com que certos trabalhadores recontratados/convertidos sejam processados em sua data de início real. Esta é uma limitação conhecida no conector.
Durante a sincronização completa, a sincronização incremental ou o provisionamento sob demanda, quando o serviço de provisionamento encontra um registro de pré-contratação, ele envia a seguinte consulta OData para SuccessFactors com o filtro "asOfDate" definido como startDate do usuário (como 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 você estiver observando problemas com o processamento de pré-contratação, poderá usar o formato de solicitação OData acima para consultar sua instância SuccessFactors substituindo o ponto personIdExternal
de extremidade da API e asOfDate
filtrar com valores correspondentes ao seu cenário de teste.
Leitura de dados de atributos
Quando o serviço de provisionamento Microsoft Entra consulta SuccessFactors, ele recupera um conjunto de resultados JSON. O conjunto de resultados JSON inclui muitos atributos armazenados no Employee Central. Por padrão, o esquema de provisionamento é configurado para recuperar apenas um subconjunto desses atributos.
Para recuperar mais atributos, siga as etapas listadas:
Navegue até a página Enterprise Applications ->SuccessFactors App ->Provisioning ->Edit Provisioning ->attribute-mapping.
Desloque-se para baixo e clique em Mostrar opções avançadas.
Clique em Editar lista de atributos para SuccessFactors.
Observação
Se a opção Editar lista de atributos para SuccessFactors não aparecer no centro de administração do Microsoft Entra, use a URL https://portal.azure.com/?Microsoft_AAD_IAM_forceSchemaEditorEnabled=true para acessar a página.
A coluna de expressão da API nesta exibição exibe as expressões JSONPath usadas pelo conector.
Você pode editar um valor JSONPath existente ou adicionar um novo atributo com uma expressão JSONPath válida ao esquema.
A próxima seção fornece uma lista de cenários comuns para editar os valores JSONPath.
Lidar com diferentes cenários de RH
JSONPath é uma linguagem de consulta para JSON que é semelhante a XPath para XML. Como o XPath, o JSONPath permite a extração e filtragem de dados de uma carga útil JSON.
Usando a transformação JSONPath, você pode personalizar o comportamento do aplicativo de provisionamento Microsoft Entra para recuperar atributos personalizados e lidar com cenários como recontratação, conversão de trabalhador e atribuição global.
Esta seção aborda como você pode personalizar o aplicativo de provisionamento para os seguintes cenários de RH:
- Recuperando mais atributos
- Recuperando atributos personalizados
- Mapeando o status do emprego para o status da conta
- Lidando com cenários de conversão e recontratação de trabalhadores
- Recuperando o registro de emprego ativo atual
- Manipulando o cenário de atribuição global
- Lidando com o cenário de trabalhos simultâneos
- Recuperando detalhes da posição
- Provisionamento de usuários no módulo de integração
- Habilitando logs de auditoria de API OData no SuccessFactors
Recuperando mais atributos
O esquema padrão do aplicativo de provisionamento Microsoft Entra SuccessFactors é fornecido com 90+ atributos predefinidos. Para adicionar mais atributos SuccessFactors ao esquema de provisionamento, use as etapas listadas:
Use a consulta OData para recuperar dados para um usuário de teste válido do 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
Determinar a entidade Employee Central associada ao atributo
- Se o atributo fizer parte da entidade EmpEmployment , procure o atributo no nó employmentNav .
- Se o atributo fizer parte da entidade User , procure o atributo no nó employmentNav/userNav .
- Se o atributo fizer parte da entidade EmpJob , procure o atributo no nó employmentNav/jobInfoNav .
Construa o caminho JSON associado ao atributo e adicione esse novo atributo à lista de atributos SuccessFactors.
- Exemplo 1: Digamos que você queira adicionar o atributo
okToRehire
, que faz parte daemploymentNav
entidade, e usar o JSONPath$.employmentNav.results[0].okToRehire
- Exemplo 2: Digamos que você queira adicionar o atributo timeZone, que faz parte da entidade userNav , e usar o JSONPath
$.employmentNav.results[0].userNav.timeZone
- Exemplo 3: Digamos que você queira adicionar o atributo flsaStatus, que faz parte da entidade jobInfoNav , e usar o JSONPath
$.employmentNav.results[0].jobInfoNav.results[0].flsaStatus
- Exemplo 1: Digamos que você queira adicionar o atributo
Salve o esquema.
Reinicie o provisionamento.
Recuperando atributos personalizados
Por padrão, os seguintes atributos personalizados são predefinidos no aplicativo de provisionamento Microsoft Entra SuccessFactors:
- custom01-custom15 da entidade User (userNav)
- customString1-customString15 da entidade EmpEmployment (employmentNav) chamada empNavCustomString1-empNavCustomString15
- customString1-customString15 da entidade EmpJobInfo (jobInfoNav) chamada empJobNavCustomString1-empNavJobCustomString15
Digamos que, em sua instância do Employee Central, o atributo customString35 em EmpJobInfo armazene a descrição do local. Você deseja fluir esse valor para o atributo physicalDeliveryOfficeName do Ative Directory. Para configurar o mapeamento de atributos para esse cenário, use as etapas:
- Edite a lista de atributos SuccessFactors para adicionar um novo atributo chamado empJobNavCustomString35.
- Defina a expressão da API JSONPath para este atributo como:
$.employmentNav.results[0].jobInfoNav.results[0].customString35
- Salve e recarregue a alteração de mapeamento no centro de administração do Microsoft Entra.
- Na folha de mapeamento de atributos, mapeie empJobNavCustomString35 para physicalDeliveryOfficeName.
- Salve o mapeamento.
Estendendo este cenário:
- Se você quiser mapear o atributo custom35 da entidade User , use o JSONPath
$.employmentNav.results[0].userNav.custom35
- Se você quiser mapear o atributo customString35 da entidade EmpEmployment , use o JSONPath
$.employmentNav.results[0].customString35
Mapeando o status do emprego para o status da conta
Por padrão, o conector Microsoft Entra SuccessFactors usa o activeEmploymentsCount
campo do objeto para definir o PersonEmpTerminationInfo
status da conta. Você pode encontrar um dos seguintes problemas com esse atributo.
- Há um problema conhecido em que o conector pode desativar a conta de um trabalhador demitido um dia antes da rescisão no último dia de trabalho.
- Se o objeto for definido como nulo, durante o
PersonEmpTerminationInfo
encerramento, a desativação da conta do AD não funcionará porque o mecanismo de provisionamento filtra os registros em que opersonEmpTerminationInfoNav
objeto está definido como nulo.
Se você estiver enfrentando algum desses problemas ou preferir mapear o status do emprego para o status da conta, você pode atualizar o mapeamento para expandir o emplStatus
campo e usar o código de status de emprego presente no campo emplStatus.externalCode
. Com base na nota de suporte SAP 2505526, aqui está uma lista de códigos de status de emprego que você pode recuperar no aplicativo de provisionamento.
- A = Ativo
- D = Adormecido
- U = Licença sem vencimento
- P = Licença remunerada
- S = Suspenso
- F = Furlough
- O = Eliminado
- R = Aposentado
- T = Terminado
Use as etapas para atualizar seu mapeamento para recuperar esses códigos.
Abra a folha de mapeamento de atributos do seu aplicativo de provisionamento SuccessFactors.
Em Mostrar opções avançadas, clique em Editar lista de atributos SuccessFactors.
Encontre o atributo
emplStatus
e atualize o JSONPath para$.employmentNav.results[0].jobInfoNav.results[0].emplStatusNav.externalCode
. A atualização faz com que o conector recupere os códigos de status de emprego na tabela.Salve as alterações.
Na folha de mapeamento de atributos, atualize o mapeamento de expressão para o sinalizador de status da conta.
Trabalho de provisionamento Atributo de status da conta Mapeando expressão SuccessFactors para provisionamento de usuários do Ative Directory accountDisabled
Switch([emplStatus], "True", "A", "False", "U", "False", "P", "False")
SuccessFactors para provisionamento de usuários do Microsoft Entra accountEnabled
Switch([emplStatus], "False", "A", "True", "U", "True", "P", "True")
Salve as alterações.
Teste a configuração usando o provisionamento sob demanda.
Depois de confirmar que a sincronização funciona conforme o esperado, reinicie o trabalho de provisionamento.
Lidando com cenários de conversão e recontratação de trabalhadores
Sobre o cenário de conversão de trabalhadores: A conversão de trabalhadores é o processo de conversão de um funcionário existente em tempo integral em um contratante ou de um contratante em um funcionário em tempo integral. Nesse cenário, o Employee Central adiciona uma nova entidade EmpEmployment junto com uma nova entidade User para a mesma entidade Person . A entidade User aninhada sob a entidade EmpEmployment anterior é definida como null.
Sobre cenários de recontratação: Na SuccessFactors, há duas opções para processar a recontratação de funcionários:
- Opção 1: Criar um novo perfil de pessoa na Central de funcionários
- Opção 2: Reutilizar o perfil de pessoa existente na Central do Funcionário
Se o seu processo de RH usar a Opção 1, nenhuma alteração será necessária no esquema de provisionamento. Se o seu processo de RH usar a Opção 2, a Employee Central adicionará uma nova entidade EmpEmployment juntamente com uma nova entidade User para a mesma entidade Person .
Você pode lidar com ambos os cenários para que os novos dados de emprego apareçam quando ocorrer uma conversão ou recontratação. Atualize em massa o esquema do aplicativo de provisionamento usando as etapas listadas:
Abra a folha de mapeamento de atributos do seu aplicativo de provisionamento SuccessFactors.
Desloque-se para baixo e clique em Mostrar opções avançadas.
Clique no link Revise seu esquema aqui para abrir o editor de esquema.
Clique no link Download para salvar uma cópia do esquema antes de editar.
No editor de esquema, pressione a tecla Ctrl-H para abrir o controle find-place.
Na caixa de texto localizar, copie e cole o valor
$.employmentNav.results[0]
Na caixa de texto substituir, copie e cole o valor
$.employmentNav.results[-1:]
. Esta expressão JSONPath retorna o registro EmpEmployment mais recente.Clique na opção "substituir tudo" para atualizar o esquema.
Salve o esquema.
O processo acima atualiza todas as expressões JSONPath da seguinte maneira:
- Antigo JSONPath:
$.employmentNav.results[0].jobInfoNav.results[0].departmentNav.name_localized
- Novo JSONPath:
$.employmentNav.results[-1:].jobInfoNav.results[0].departmentNav.name_localized
- Antigo JSONPath:
Teste a configuração usando o provisionamento sob demanda.
Depois de confirmar que a sincronização funciona conforme o esperado, reinicie o trabalho de provisionamento.
Observação
A abordagem descrita acima só funciona se o SAP SuccessFactors retornar os objetos de emprego em ordem crescente, onde o registro de emprego mais recente é sempre o último registro na matriz de resultados employmentNav . A ordem em que vários registros de emprego são retornados não é garantida pela SuccessFactors. Se sua instância SuccessFactors tiver vários registros de emprego correspondentes a um trabalhador e você sempre quiser recuperar atributos associados ao registro de emprego ativo, use as etapas descritas na próxima seção.
Recuperando o registro de emprego ativo atual
Usar a raiz JSONPath de ou $.employmentNav.results[-1:]
para buscar registros de $.employmentNav.results[0]
emprego funciona na maioria dos cenários e mantém a configuração simples. No entanto, dependendo de como sua instância SuccessFactors está configurada, pode ser necessário atualizar essa configuração para garantir que o conector sempre busque o registro de emprego ativo mais recente.
Esta seção descreve como você pode atualizar as configurações JSONPath para recuperar definitivamente o registro de emprego ativo atual do usuário. Ele também lida com cenários de conversão e recontratação de trabalhadores.
Abra a folha de mapeamento de atributos do seu aplicativo de provisionamento SuccessFactors.
Desloque-se para baixo e clique em Mostrar opções avançadas.
Clique no link Revise seu esquema aqui para abrir o editor de esquema.
Clique no link Download para salvar uma cópia do esquema antes de editar.
No editor de esquema, pressione a tecla Ctrl-H para abrir o controle find-place.
Execute as seguintes operações de substituição de localização. Certifique-se de que não há espaço à esquerda ou à direita ao executar as operações de localização-substituição. Se você estiver usando
[-1:]
índice em vez de[0]
, atualize o campo string-to-find de acordo.String para encontrar String a ser usada para substituir Finalidade $.employmentNav.results[0].jobInfoNav.results[0].emplStatus
$.employmentNav..jobInfoNav..results[?(@.emplStatusNav.externalCode == 'A' || @.emplStatusNav.externalCode == 'U' || @.emplStatusNav.externalCode == 'P' )].emplStatusNav.externalCode
Com esse find-replace, estamos adicionando a capacidade de expandir o objeto emplStatusNav OData. $.employmentNav.results[0].jobInfoNav.results[0]
$.employmentNav..jobInfoNav..results[?(@.emplStatusNav.externalCode == 'A' || @.emplStatusNav.externalCode == 'U' || @.emplStatusNav.externalCode == 'P')]
Com esse find-replace, instruímos o conector a sempre recuperar atributos associados ao registro EmpJobInfo SuccessFactors ativo. Os atributos associados a registros encerrados/inativos em SuccessFactors são ignorados. $.employmentNav.results[0]
$.employmentNav..results[?(@.jobInfoNav..results[?(@.emplStatusNav.externalCode == 'A' || @.emplStatusNav.externalCode == 'U' || @.emplStatusNav.externalCode == 'P')])]
Com esse find-replace, instruímos o conector a sempre recuperar atributos associados ao registro ativo SuccessFactors Employment. Os atributos associados a registros encerrados/inativos em SuccessFactors são ignorados. Salve o esquema.
O processo acima atualiza todas as expressões JSONPath.
Para que o processamento de pré-contratação funcione, o JSONPath associado
startDate
ao atributo deve usar um ou[0]
[-1:]
indexar. Em Mostrar opções avançadas, clique em Editar lista de atributos SuccessFactors. Encontre o atributostartDate
e defina-o com o valor$.employmentNav.results[-1:].startDate
Salve o esquema.
Para garantir que as terminações sejam processadas conforme o esperado, você pode usar uma das seguintes configurações na seção de mapeamento de atributos.
Trabalho de provisionamento Atributo de status da conta Expressão a utilizar se o estado da conta se basear em "activeEmploymentsCount" Expressão a ser usada se o status da conta for baseado no valor "emplStatus" SuccessFactors para provisionamento de usuários do Ative Directory accountDisabled
Switch([activeEmploymentsCount], "False", "0", "True")
Switch([emplStatus], "True", "A", "False", "U", "False", "P", "False")
SuccessFactors para provisionamento de usuários do Microsoft Entra accountEnabled
Switch([activeEmploymentsCount], "True", "0", "False")
Switch([emplStatus], "False", "A", "True", "U", "True", "P", "True")
Salve suas alterações. 1.
Teste a configuração usando o provisionamento sob demanda.
Depois de confirmar que a sincronização funciona conforme o esperado, reinicie o trabalho de provisionamento.
Manipulando o cenário de atribuição global
Quando um usuário no Employee Central é processado para atribuição global, SuccessFactors adiciona uma nova entidade EmpEmployment e define a assignmentClass como "GA". Ele também cria uma nova entidade de usuário . Assim, o usuário passa a ter:
- Uma entidade EmpEmployment + User que corresponde à atribuição de casa com assignmentClass definida como "ST" e
- Outra entidade EmpEmployment + User que corresponde à atribuição global com assignmentClass definida como "GA"
Para buscar atributos pertencentes à atribuição padrão e ao perfil de usuário da atribuição global, use as etapas listadas:
Abra a folha de mapeamento de atributos do seu aplicativo de provisionamento SuccessFactors.
Desloque-se para baixo e clique em Mostrar opções avançadas.
Clique no link Revise seu esquema aqui para abrir o editor de esquema.
Clique no link Download para salvar uma cópia do esquema antes de editar.
No editor de esquema, pressione a tecla Ctrl-H para abrir o controle find-place.
Na caixa de texto localizar, copie e cole o valor
$.employmentNav.results[0]
Na caixa de texto substituir, copie e cole o valor
$.employmentNav.results[?(@.assignmentClass == 'ST')]
. Observe o espaço em branco ao redor do operador == , que é importante para o processamento bem-sucedido da expressão JSONPath.Clique na opção "substituir tudo" para atualizar o esquema.
Salve o esquema.
O processo acima atualiza todas as expressões JSONPath da seguinte maneira:
- Antigo JSONPath:
$.employmentNav.results[0].jobInfoNav.results[0].departmentNav.name_localized
- Novo JSONPath:
$.employmentNav.results[?(@.assignmentClass == 'ST')].jobInfoNav.results[0].departmentNav.name_localized
- Antigo JSONPath:
Recarregue a folha de mapeamento de atributos do aplicativo.
Desloque-se para baixo e clique em Mostrar opções avançadas.
Clique em Editar lista de atributos para SuccessFactors.
Adicione novos atributos para buscar dados de atribuição global. Por exemplo: se quiser buscar o nome do departamento associado a um perfil de atribuição global, você pode adicionar o atributo globalAssignmentDepartment com a expressão JSONPath definida como
$.employmentNav.results[?(@.assignmentClass == 'GA')].jobInfoNav.results[0].departmentNav.name_localized
.Agora você pode fluir ambos os valores de departamento para atributos do Ative Directory ou fluir seletivamente um valor usando o mapeamento de expressão. Exemplo: a expressão define o valor do atributo de departamento do AD como globalAssignmentDepartment se presente, caso contrário, define o valor como departamento associado à atribuição padrão.
IIF(IsPresent([globalAssignmentDepartment]),[globalAssignmentDepartment],[department])
Salve o mapeamento.
Teste a configuração usando o provisionamento sob demanda.
Depois de confirmar que a sincronização funciona conforme o esperado, reinicie o trabalho de provisionamento.
Lidando com o cenário de trabalhos simultâneos
Quando um usuário no Employee Central tem trabalhos simultâneos/múltiplos, há duas entidades EmpEmployment e User com assignmentClass definido como "ST". Para buscar atributos pertencentes a ambos os trabalhos, use as etapas listadas:
- Abra a folha de mapeamento de atributos do seu aplicativo de provisionamento SuccessFactors.
- Desloque-se para baixo e clique em Mostrar opções avançadas.
- Clique em Editar lista de atributos para SuccessFactors.
- Digamos que você queira puxar o departamento associado ao trabalho 1 e ao trabalho 2. O departamento de atributos predefinidos já busca o valor do departamento para o primeiro trabalho. Você pode definir um novo atributo chamado secondJobDepartment e definir a expressão JSONPath como
$.employmentNav.results[1].jobInfoNav.results[0].departmentNav.name_localized
- Agora você pode fluir ambos os valores de departamento para atributos do Ative Directory ou fluir seletivamente um valor usando o mapeamento de expressão.
- Salve o mapeamento.
- Teste a configuração usando o provisionamento sob demanda.
- Depois de confirmar que a sincronização funciona conforme o esperado, reinicie o trabalho de provisionamento.
Recuperando detalhes da posição
O conector SuccessFactors suporta a expansão do objeto position. Para expandir e recuperar atributos de objeto de posição, como nível de trabalho ou nomes de posição em um idioma específico, você pode usar expressões JSONPath conforme mostrado.
Nome do atributo | Expressão 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 |
Provisionamento de usuários no módulo de integração
O provisionamento de usuários de entrada do SAP SuccessFactors para o Ative Directory local e o Microsoft Entra ID agora oferece suporte ao provisionamento antecipado de pré-contratações presentes no módulo SAP SuccessFactors Onboarding 2.0. Quando o serviço de provisionamento Microsoft Entra encontra um novo perfil de contratação com uma data de início futura, ele consulta o SAP SuccessFactors para obter novas contratações com um dos seguintes códigos de status: active
, inactive
, active_external_suite
. O código active_external_suite
de status corresponde às pré-contratações presentes no módulo SAP SuccessFactors Onboarding 2.0. Para obter uma descrição desses códigos de status, consulte a nota de suporte SAP 2736579.
O comportamento padrão do serviço de provisionamento é processar pré-contratações no módulo Integração.
Se você quiser excluir o processamento de pré-contratações no módulo Integração, atualize a configuração do trabalho de provisionamento da seguinte maneira:
- Abra a folha de mapeamento de atributos do seu aplicativo de provisionamento SuccessFactors.
- Em mostrar opções avançadas, edite a lista de atributos SuccessFactors para adicionar um novo atributo chamado
userStatus
. - Defina a expressão da API JSONPath para este atributo como:
$.employmentNav.results[0].userNav.status
- Salve o esquema para retornar à folha de mapeamento de atributos.
- Editar o escopo Objeto de origem para aplicar um filtro de escopo
userStatus NOT EQUALS
- Salve o mapeamento e valide se o filtro de escopo funciona usando o provisionamento sob demanda.
Habilitando logs de auditoria de API OData no SuccessFactors
O conector Microsoft Entra SuccessFactors usa a API OData SuccessFactors para recuperar alterações e provisionar usuários. Se você observar problemas com o serviço de provisionamento e quiser confirmar quais dados foram recuperados do SuccessFactors, poderá habilitar os logs de auditoria da API OData no SuccessFactors. Recupere a carga útil da solicitação enviada pelo ID do Microsoft Entra dos logs de auditoria. Para solucionar problemas, você pode copiar essa carga útil de solicitação em uma ferramenta como cURL ou Graph Explorer, configurá-la para usar o mesmo usuário de API usado pelo conector e ver se ela retorna as alterações desejadas de SuccessFactors.
Cenários de write-back
Esta seção aborda diferentes cenários de write-back. Ele recomenda abordagens de configuração com base em como o e-mail e o número de telefone são configurados no SuccessFactors.
Cenários suportados para write-back de telefone e e-mail
# | Requisito do cenário | E-mail principal valor da bandeira |
Telefone comercial Valor do sinalizador primário |
Telemóvel Valor do sinalizador primário |
Telefone comercial mapeamento |
Telemóvel mapeamento |
---|---|---|---|---|---|---|
1 | * Defina apenas o e-mail comercial como principal. * Não defina números de telefone. |
verdadeiro | verdadeiro | falso | [Não definido] | [Não definido] |
2 | * No SuccessFactors, o e-mail comercial e o telefone comercial são os principais * Sempre fluir o número de telefone Microsoft Entra para o telefone comercial e celular para o telefone celular. |
verdadeiro | verdadeiro | falso | Número de telefone | telemóvel |
3 | * Em SuccessFactors, e-mail comercial e telefone celular é principal * Sempre fluir o número de telefone Microsoft Entra para o telefone comercial e celular para o telefone celular |
verdadeiro | falso | verdadeiro | Número de telefone | telemóvel |
4 | * No SuccessFactors, o e-mail comercial é primário. * No Microsoft Entra ID, verifique se o número de telefone do trabalho está presente, se estiver presente, em seguida, verifique se o número de celular também está presente. Marque o número de telefone profissional como principal somente se o número de celular não estiver presente. |
verdadeiro | Use o mapeamento de expressão: IIF(IsPresent([telephoneNumber]), IIF(IsPresent([mobile]),"false", "true"), "false") |
Use o mapeamento de expressão: IIF(IsPresent([mobile]),"false", "true") |
Número de telefone | telemóvel |
5 | * No SuccessFactors, o e-mail comercial e o telefone comercial são primários. * No Microsoft Entra ID, se o celular estiver disponível, em seguida, defini-lo como o telefone comercial, caso contrário, use phoneNumber. |
verdadeiro | verdadeiro | falso | IIF(IsPresent([mobile]), [mobile], [telephoneNumber]) |
[Não definido] |
- Se não houver nenhum mapeamento para o número de telefone no mapeamento de atributos de write-back, somente o e-mail será incluído no write-back.
- Durante a integração de novos contratados na Central de Funcionários, o e-mail comercial e o número de telefone podem não estar disponíveis. Se a definição do e-mail comercial e do telefone comercial como principal for obrigatória durante a integração, você poderá definir um valor fictício para o telefone comercial e o e-mail durante a criação de novas contratações. Depois de algum tempo, o aplicativo write-back atualiza o valor.
Ativando write-back com UserID
O aplicativo SuccessFactors Writeback usa a seguinte lógica para atualizar os atributos de objeto User:
- Como primeiro passo, ele procura o atributo userId no conjunto de alterações. Se estiver presente, ele usará "UserId" para fazer a chamada da API SuccessFactors.
- Se userId não for encontrado, o padrão será usar o valor do atributo personIdExternal .
Normalmente, o valor do atributo personIdExternal em SuccessFactors corresponde ao valor do atributo userId. No entanto, em cenários como recontratação e conversão de trabalhadores, um funcionário na SuccessFactors pode ter dois registros de emprego, um ativo e outro inativo. Nesses cenários, para garantir que o write-back atualize o perfil de usuário ativo, atualize a configuração dos aplicativos de provisionamento SuccessFactors conforme descrito. Essa configuração garante que userId esteja sempre presente no conjunto de alterações visível para o conector e seja usado na chamada da API SuccessFactors.
- Abra o aplicativo de provisionamento de usuário SuccessFactors para Microsoft Entra ou SuccessFactors para aplicativo de provisionamento de usuário do AD local.
- Certifique-se de que
extensionAttribute[1-15]
no Microsoft Entra ID sempre armazene ouserId
registro de emprego ativo de cada trabalhador. O registro mapeia o atributo SuccessFactorsuserId
paraextensionAttribute[1-15]
no Microsoft Entra ID. - Para obter orientação sobre as configurações do JSONPath, consulte a seção Manipulando cenários de conversão e recontratação de trabalhadores para garantir que o valor userId do registro de emprego ativo flua para o Microsoft Entra ID.
- Salve o mapeamento.
- Execute o trabalho de provisionamento para garantir que os valores userId fluam para o Microsoft Entra ID.
Observação
Se você estiver usando SuccessFactors para provisionamento de usuários do Ative Directory local, configure o Microsoft Entra Connect para sincronizar o valor do atributo userId do Ative Directory local para o Microsoft Entra ID.
- Abra o aplicativo SuccessFactors Writeback no portal do Azure.
- Mapeie o extensionAttribute desejado que contém o valor userId para o atributo userId SuccessFactors.
- Salve o mapeamento.
- Vá para Mapeamento de atributos -> Avançado -> Revisar esquema para abrir o editor de esquema JSON.
- Faça o download de uma cópia do esquema como backup.
- No editor de esquema, pressione Ctrl-F e procure o nó JSON que contém o mapeamento userId, onde ele é mapeado para um atributo Microsoft Entra de origem.
- Atualize o atributo flowBehavior de "FlowWhenChanged" para "FlowAlways", conforme mostrado.
- Salve o mapeamento e teste o cenário de write-back com provisionamento sob demanda.
Cenários sem suporte para write-back de telefone e e-mail
- Na Central de funcionários, durante a integração, o e-mail pessoal e o telefone pessoal são definidos como principais. O aplicativo de write-back não pode alternar essa configuração e definir o e-mail comercial e o telefone comercial como principais.
- Na Central de funcionários, o telefone comercial é definido como principal. O aplicativo write-back não pode alterar isso e definir o telefone celular como principal.
- O aplicativo write-back não pode ler as configurações atuais do sinalizador primário e usar os mesmos valores para a operação de gravação. Os valores de sinalizador configurados no mapeamento de atributos são sempre usados.