Referência para escrever expressões para mapeamentos de atributo no Microsoft Entra ID
Quando você configura o provisionamento de um aplicativo SaaS, um dos tipos de mapeamentos de atributos que você pode especificar é o mapeamento de expressão. Para esses mapeamentos, você precisa escrever uma expressão semelhante a script que permite transformar os dados de usuários em formatos que são mais aceitáveis para o aplicativo SaaS.
Visão geral da sintaxe
A sintaxe de expressões para mapeamentos de atributos é semelhante à das funções de VBA (Visual Basic for Applications).
A expressão inteira deve ser definida em termos de funções, que consistem em um nome seguido pelos argumentos entre parênteses: FunctionName(
<<argument 1>>
,<<argument N>>
)Você pode aninhar funções umas nas outras. Por exemplo: FunctionOne(FunctionTwo(
<<argument1>>
))Você pode passar três tipos diferentes de argumentos em funções:
- Atributos, que devem ser colocados entre colchetes. Por exemplo: [attributeName]
- Constantes de cadeia de caracteres, que devem ser colocadas entre aspas duplas. Por exemplo: "Estados Unidos"
- Outras funções. Por exemplo: FunctionOne(
<<argument1>>
, FunctionTwo(<<argument2>>
))
Para constantes de cadeia de caracteres, se você precisar de uma barra invertida (\) ou aspas (") na cadeia de caracteres, ela deve ser escapada com o símbolo de barra invertida (\). Por exemplo: "Nome da empresa: \"Contoso\""
A sintaxe diferencia maiúsculas de minúsculas, e isso deve ser levado em conta ao digitá-las como cadeias de caracteres em uma função quando comparado a copiá-las colando-as diretamente aqui.
Lista de funções
AcrescentarAppRoleAssignmentsComplexBitAndCBoolCDateCoalesceConvertToBase64ConvertToUTF8HexContarCStrDateAddDateDiffDateFromNumFormatDateTimeGuidIgnoreFlowIfNullOrEmptyIIFInStrIsNullIsNullOrEmptyIsPresentIsStringItemUnirEsquerdaMidNormalizeDiacriticsNotAgoraNumFromDatePCaseRandomStringRedactRemoveDuplicatesSubstituirSelectUniqueValueSingleAppRoleAssignmentDividirStripSpacesMudarToLowerToUpperPalavra
Acrescentar
Função: Append(source, suffix)
Descrição: seleciona um valor da cadeia de caracteres de origem e acrescenta o sufixo ao final dela.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
source | Obrigatório | String | Normalmente o nome do atributo do objeto de source. |
suffix | Obrigatório | String | A cadeia de caracteres que você deseja acrescentar ao final do valor de source. |
Acrescentar sufixo constante ao nome de usuário
Exemplo: se estiver usando uma Área Restrita Salesforce, talvez será necessário anexar outro sufixo a todos os nomes de usuário antes de sincronizá-los.
Expressão:Append([userPrincipalName], ".test")
Entrada/saída de exemplo:
- INPUT: (userPrincipalName): "John.Doe@contoso.com"
- OUTPUT: "John.Doe@contoso.com.test"
AppRoleAssignmentsComplex
Função: AppRoleAssignmentsComplex([appRoleAssignments])
Descrição: usado para configurar várias funções para um usuário. Para obter informações detalhadas sobre uso, consulte Tutorial: como personalizar mapeamentos de atributos do provisionamento de usuário para aplicativos SaaS no Microsoft Entra ID.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
[appRoleAssignments] | Obrigatório | String | Objeto [appRoleAssignments]. |
BitAnd
Função: BitAnd (value1, value2)
Descrição: esta função converte ambos os parâmetros para a representação binária e define um bit para:
- 0 – se um ou ambos os bits correspondentes em value1 e value2 forem 0
- 1 - se ambos os bits correspondentes são 1.
Em outras palavras, ele retorna 0 em todos os casos, exceto quando os bits correspondentes de ambos os parâmetros são 1.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
value1 | Obrigatório | Num | Valor numérico ao qual deve ser acrescentado o AND com value2 |
value2 | Obrigatório | Num | Valor numérico ao qual deve ser acrescentado o AND com value1 |
Exemplo:BitAnd(&HF, &HF7)
11110111 AND 00000111 = 00000111, portanto BitAnd
retorna 7, o valor binário de 00000111.
CBool
Função:CBool(Expression)
Descrição:CBool
retorna um valor booleano com base na expressão avaliada. Se a expressão é avaliada como um valor diferente de zero, então CBool
retorna True; caso contrário, ele retorna False.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
Expression | Obrigatório | expressão | Qualquer expressão válida |
Exemplo:CBool([attribute1] = [attribute2])
Retorna True se ambos os atributos têm o mesmo valor.
CDate
Função:
CDate(expression)
Descrição:
a função CDate retorna um DateTime UTC a partir de uma cadeia de caracteres. O DateTime não é um tipo de atributo nativo, mas poderá ser usado em funções de data como FormatDateTime e DateAdd.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
Expression | Obrigatório | Expression | Qualquer cadeia de caracteres válida que representa uma data/hora. Para formatos com suporte, consulte cadeias de caracteres de formato de data e hora personalizadas do .NET. |
Comentários:
A cadeia de caracteres retornada é sempre em UTC e segue o formato M/d/aaaa h:mm:ss tt.
Exemplo 1:
CDate([StatusHireDate])
Entrada/saída de exemplo:
- INPUT (StatusHireDate): "2020-03-16-07:00"
- SAÍDA: "16/03/2020 7:00:00" <-- Observe que o equivalente em UTC do DateTime acima é retornado
Exemplo 2:
CDate("2021-06-30+08:00")
Entrada/saída de exemplo:
- INPUT: "2021-06-30+08:00"
- SAÍDA: "29/06/2021 16:00:00" <-- Observe que o equivalente em UTC do DateTime acima é retornado
Exemplo 3:
CDate("2009-06-15T01:45:30-07:00")
Entrada/saída de exemplo:
- INPUT: "2009-06-15T01:45:30-07:00"
- SAÍDA: "15/06/2009 8:45:30 AM" <-- Observe que o equivalente em UTC do DateTime acima é retornado
Coalesce
Função: Coalesce(source1, source2, ..., defaultValue)
Descrição: retornará o primeiro valor de origem que não for NULL. Se todos os argumentos forem NULOS e defaultValue estiver presente, o defaultValue será retornado. Se todos os argumentos forem NULL e defaultValue não estiver presente, Coalesce retornará NULL.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
source1 … sourceN | Obrigatório | String | Obrigatório, número de vezes variável. Normalmente o nome do atributo do objeto de source. |
defaultValue | Opcional | Cadeia de caracteres | Valor padrão a ser usado quando todos os valores de origem forem NULL. Pode ser uma cadeia de caracteres vazia (""). |
Fluir o valor de email, se não for NULL; caso contrário, fluir userPrincipalName
Exemplo: Você deseja fluir o atributo de email caso ele esteja presente. Caso contrário, convém fluir o valor de userPrincipalName.
Expressão:Coalesce([mail],[userPrincipalName])
Entrada/saída de exemplo:
- INPUT (mail): NULL
- INPUT (userPrincipalName): "John.Doe@contoso.com"
- OUTPUT: "John.Doe@contoso.com"
ConvertToBase64
Função: ConvertToBase64(source)
Descrição: a função ConvertToBase64 converte uma cadeia de caracteres em uma cadeia de caracteres Unicode em base64.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
source | Obrigatório | String | Cadeia de caracteres a ser convertida em base 64 |
Exemplo:ConvertToBase64("Hello world!")
retorna "SABlAGwAbABvACAAdwBvAHIAbABkACEA"
ConvertToUTF8Hex
Função: ConvertToUTF8Hex(source)
Descrição: a função ConvertToUTF8Hex converte uma cadeia de caracteres em um valor codificado em UTF8 hexadecimal.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
source | Obrigatório | String | Cadeia de caracteres a ser convertida em UTF8 Hexadecimal |
Exemplo:ConvertToUTF8Hex("Hello world!")
retorna 48656C6C6F20776F726C6421
Contagem
Função: Count(attribute)
Descrição: a função Count retorna o número de elementos em um atributo de valores múltiplos.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
attribute | Obrigatório | atributo | Atributo com valores múltiplos que terá elementos contados |
CStr
Função: CStr(value)
Descrição: A função CStr converte um valor em um tipo de dados de cadeia de caracteres.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
value | Obrigatório | numérico, de referência ou booliano | pode ser um valor numérico, o atributo de referência ou booliano. |
Exemplo:CStr([dn])
Retorna "cn=Joe,dc=contoso,dc=com"
DateAdd
Função:
DateAdd(interval, value, dateTime)
Descrição:
Retorna uma cadeia de caracteres de data/hora que representa uma data à qual um intervalo de tempo especificado foi adicionado. A data retornada está no formato: M/d/aaaa h:mm:ss tt.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
interval | Obrigatório | String | Intervalo de tempo que você deseja adicionar. Veja os valores aceitos depois desta tabela. |
value | Obrigatório | Número | o número de unidades que você deseja adicionar. Ele pode ser positivo (para obter datas no futuro) ou negativo (para obter datas no passado). |
dateTime | Obrigatório | Datetime | DateTime, representando a data à qual o intervalo é adicionado. |
Ao transmitir uma cadeia de caracteres de data como entrada, use a função CDate para encapsular a cadeia de caracteres datetime. Para obter a hora do sistema em UTC, use a função Now.
A cadeia de caracteres do intervalo deve ter um dos seguintes valores:
- aaaa Ano
- m - Mês
- d - Dia
- ww - Semana
- h - Hora
- m - Minuto
- s - Segundo
Exemplo 1: Gerar um valor de data com base no StatusHireDate de entrada do Workday
DateAdd("d", 7, CDate([StatusHireDate]))
Exemplo | intervalo | value | dateTime (valor da variável StatusHireDate) | output |
---|---|---|---|---|
Adicionar sete dias à data de contratação | "d" | 7 | 2012-03-16-07:00 | 23/3/2012 7:00:00 |
Obter uma data de dez dias antes da data de contratação | "d" | -10 | 2012-03-16-07:00 | 6/3/2012 7:00:00 |
Adicionar duas semanas à data de contratação | "ww" | 2 | 2012-03-16-07:00 | 30/3/2012 7:00:00 |
Adicionar dez meses à data de contratação | "m" | 10 | 2012-03-16-07:00 | 16/1/2013 7:00:00 |
Adicionar dois anos à data de contratação | "yyyy" | 2 | 2012-03-16-07:00 | 16/3/2014 7:00:00 |
DateDiff
Função:
DateDiff(interval, date1, date2)
Descrição:
Essa função usa o parâmetro interval para retornar um número que indica a diferença entre as duas datas de entrada. Retorna
- um número positivo se date2 > date1,
- um número negativo se date2 < date1,
- 0 se date2 == date1
Parâmetros:
Nome | Obrigatório/Opcional | Type | Observações |
---|---|---|---|
interval | Obrigatório | String | Intervalo de tempo a ser usado para calcular a diferença. |
date1 | Obrigatório | Datetime | DateTime que representa uma data válida. |
date2 | Obrigatório | Datetime | DateTime que representa uma data válida. |
Ao transmitir uma cadeia de caracteres de data como entrada, use a função CDate para encapsular a cadeia de caracteres datetime. Para obter a hora do sistema em UTC, use a função Now.
A cadeia de caracteres do intervalo deve ter um dos seguintes valores:
- aaaa Ano
- m - Mês
- d - Dia
- ww - Semana
- h - Hora
- m - Minuto
- s - Segundo
Exemplo 1: Comparar a data atual com a data de contratação do Workday com intervalos diferentes
DateDiff("d", Now(), CDate([StatusHireDate]))
Exemplo | intervalo | date1 | date2 | output |
---|---|---|---|---|
Diferença positiva em dias entre duas datas | d | 2021-08-18+08:00 | 2021-08-31+08:00 | 13 |
Diferença negativa em dias entre duas datas | d | 25/8/2021 17:41:18 | 2012-03-16-07:00 | -3449 |
Diferença em semanas entre duas datas | ww | 25/8/2021 17:41:18 | 2012-03-16-07:00 | -493 |
Diferença em meses entre duas datas | m | 25/8/2021 17:41:18 | 2012-03-16-07:00 | -113 |
Diferença em anos entre duas datas | yyyy | 25/8/2021 17:41:18 | 2012-03-16-07:00 | -9 |
Diferença quando as duas datas são iguais | d | 2021-08-31+08:00 | 2021-08-31+08:00 | 0 |
Diferença em horas entre duas datas | h | 2021-08-24 | 2021-08-25 | 24 |
Diferença em minutos entre duas datas | n | 2021-08-24 | 2021-08-25 | 1440 |
Diferença em segundos entre duas datas | s | 2021-08-24 | 2021-08-25 | 86.400 |
Exemplo 2: combinar DateDiff com a função IIF para definir o valor do atributo
Se uma conta estiver ativa no Workday, defina o atributo accountEnabled do usuário como true somente se a data de contratação estiver dentro dos próximos 5 dias.
Switch([Active], ,
"1", IIF(DateDiff("d", Now(), CDate([StatusHireDate])) > 5, "False", "True"),
"0", "False")
DateFromNum
Função: DateFromNum(value)
Descrição: a função DateFromNum converte um valor no formato de data do AD em um do tipo DateTime.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
value | Obrigatório | Data | Data do AD a ser convertida para o tipo DateTime |
Exemplo:DateFromNum([lastLogonTimestamp])
DateFromNum(129699324000000000)
Retorna um DateTime que representa 1º de janeiro de 2012 às 23:00.
FormatDateTime
Função: FormatDateTime(source, dateTimeStyles, inputFormat, outputFormat)
Descrição: converte uma cadeia de caracteres de data de um formato em um formato diferente.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
source | Obrigatório | String | Normalmente o nome do atributo do objeto de source. |
dateTimeStyles | Opcional | Cadeia de caracteres | Use esse parâmetro para especificar as opções de formatação que personalizam a análise de cadeia de caracteres para alguns métodos de análise de data e hora. Para obter os valores com suporte, consulte o Documento DateTimeStyles. Se deixado em branco, o valor padrão usado será DateTimeStyles. RoundtripKind, DateTimeStyles. AllowLeadingWhite, DateTimeStyles. AllowTrailingWhite |
inputFormat | Obrigatório | String | Formato esperado do valor de source. Para formatos com suporte, consulte cadeias de caracteres de formato de data e hora personalizadas do .NET. |
outputFormat | Obrigatório | String | Formato da data de saída. |
Gerar data como uma cadeia de caracteres em um determinado formato
Exemplo: você deseja enviar datas para um aplicativo SaaS como o ServiceNow em um determinado formato. Você pode considerar o uso da expressão a seguir.
Expressão:
FormatDateTime([extensionAttribute1], , "yyyyMMddHHmmss.fZ", "yyyy-MM-dd")
Entrada/saída de exemplo:
- ENTRADA (extensionAttribute1): "20150123105347.1Z"
- SAÍDA: "2015-01-23"
Guid
Função: Guid()
Descrição: A função Guid gera um novo GUID aleatório
Exemplo:
Guid()
Saída de exemplo: "00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
IgnoreFlowIfNullOrEmpty
Função: IgnoreFlowIfNullOrEmpty(expression)
Descrição: a função IgnoreFlowIfNullOrEmpty instrui o serviço de provisionamento a ignorar o atributo e soltá-lo do fluxo se a função ou o atributo incluído for NULL ou vazio.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
Expression | Obrigatório | Expression | Expressão a ser avaliada |
Exemplo 1: não faça um atributo fluir se ele for nulo
IgnoreFlowIfNullOrEmpty([department])
A expressão acima remove o atributo de departamento do fluxo de provisionamento caso ele seja nulo ou vazio.
Exemplo 2: não faça um atributo fluir se o mapeamento de expressão for avaliado como uma cadeia de caracteres vazia ou nulo
Digamos que o prefixo do atributo SuccessFactors esteja mapeado para o atributo Active Directory local personalTitle usando o seguinte mapeamento de expressão:
IgnoreFlowIfNullOrEmpty(Switch([prefix], "", "3443", "Dr.", "3444", "Prof.", "3445", "Prof. Dr."))
A expressão acima avalia primeiro a função Switch. Se o atributo prefix não tiver nenhum dos valores listados na função Switch, então, ** retornará uma cadeia de caracteres vazia e o atributo personalTitle não será incluído no fluxo de provisionamento para o Active Directory local.
IIF
Função: IIF(condition,valueIfTrue,valueIfFalse)
Descrição: a função IIF retorna um valor de um conjunto de valores possíveis com base em uma condição especificada.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
condition | Obrigatório | Variável ou expressão | Qualquer valor ou expressão que possa ser avaliada como verdadeira ou falsa. |
valueIfTrue | Obrigatório | Variável ou cadeia de caracteres | se a condição for avaliada como true, o valor será retornado. |
valueIfFalse | Obrigatório | Variável ou cadeia de caracteres | se a condição for avaliada como false, o valor será retornado. |
Os seguintes operadores de comparação podem ser usados na condição:
- Igual a (=) e não igual a (<>)
- Maior que (>) e maior que e igual a (>=)
- Menor que (<) e menor que e igual a (<=)
Exemplo: definir o valor do atributo de destino como o atributo do país de origem se country="USA", caso contrário, definir o valor do atributo de destino como o atributo do departamento de origem.
IIF([country]="USA",[country],[department])
Limitações conhecidas
Esta seção inclui limitações e soluções alternativas para a função IIF. Para obter informações sobre como solucionar problemas de criação de usuários, confira Falha na criação devido a valores nulos/vazios.
- A função IIF atualmente não dá suporte a operadores lógicos AND e OR.
- Para implementar a lógica AND, use a instrução IIF aninhada encadeada ao longo do caminho trueValue.
Exemplo: se country="USA" e state="CA", o valor "True" é retornado, caso contrário, "False".
IIF([country]="USA",IIF([state]="CA","True","False"),"False")
- Para implementar a lógica OR, use a instrução IIF aninhada encadeada ao longo do caminho falseValue.
Exemplo: se country="USA" ou state="CA", o valor "True" é retornado, caso contrário, "False".
IIF([country]="USA","True",IIF([state]="CA","True","False"))
- Se o atributo de origem usado na função IIF estiver vazio ou for nulo, a verificação de condição falhará.
- Exemplos de expressão IIF sem suporte:
IIF([country]="","Other",[country])
IIF(IsNullOrEmpty([country]),"Other",[country])
IIF(IsPresent([country]),[country],"Other")
- Solução alternativa recomendada: use a função Switch para verificar se há valores vazios/nulos. Exemplo: se o atributo country estiver vazio, defina o valor "Outros". Se ele estiver presente, transmita o valor do atributo country para o atributo de destino.
Switch([country],[country],"","Other")
- Exemplos de expressão IIF sem suporte:
InStr
Função: InStr(value1, value2, start, compareType)
Descrição: a função InStr localiza a primeira ocorrência de uma substring em uma cadeia de caracteres.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
value1 | Obrigatório | String | Cadeia de caracteres a ser pesquisada |
value2 | Obrigatório | String | Cadeia de caracteres a ser encontrada |
start | Opcional | Inteiro | Posição inicial para encontrar a substring |
compareType | Opcional | Enumeração | Pode ser vbTextCompare ou vbBinaryCompare |
Exemplo:InStr("The quick brown fox","quick")
é avaliado como 5
InStr("repEated","e",3,vbBinaryCompare)
é avaliado como 7
IsNull
Função: IsNull(Expression)
Descrição: se a expressão for avaliada como Null, a função IsNull retornará true. para um atributo, um valor Null é expresso pela ausência do atributo.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
Expression | Obrigatório | Expression | Expressão a ser avaliada |
Exemplo:IsNull([displayName])
Retornará True se o atributo não estiver presente.
IsNullorEmpty
Função: IsNullOrEmpty(Expression)
Descrição: se a expressão for null ou uma cadeia de caracteres vazia, a função IsNullOrEmpty retornará true. Isso será avaliado como True se o atributo estiver ausente ou presente, mas for uma cadeia de caracteres vazia. O inverso dessa função é chamado de IsPresent.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
Expression | Obrigatório | Expression | Expressão a ser avaliada |
Exemplo:IsNullOrEmpty([displayName])
Retornará True se o atributo não estiver presente ou for uma cadeia de caracteres vazia.
IsPresent
Função: IsPresent(Expression)
Descrição: se a expressão for avaliada como uma cadeia de caracteres que não seja Null e não estiver vazia, a função IsPresent retornará true. o inverso dessa função é chamado de IsNullOrEmpty.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
Expression | Obrigatório | Expression | Expressão a ser avaliada |
Exemplo:Switch(IsPresent([directManager]),[directManager], IsPresent([skiplevelManager]),[skiplevelManager], IsPresent([director]),[director])
IsString
Função: IsString(Expression)
Descrição: se a expressão puder ser avaliada como um tipo de cadeia de caracteres, a função IsString será avaliada como True.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
Expression | Obrigatório | Expression | Expressão a ser avaliada |
Item
Função: Item(attribute, index)
Descrição: a função Item retorna um item de um atributo/cadeia de caracteres de valores múltiplos.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
attribute | Obrigatório | Atributo | Atributo de valores múltiplos a ser pesquisado |
index | Necessária | Inteiro | Índice de um item na cadeia de caracteres de valores múltiplos |
Exemplo:Item([proxyAddresses], 1)
retorna o primeiro item no atributo de valores múltiplos. O índice 0 não deverá ser usado.
Join
Função: Join(separator, source1, source2, …)
Descrição: Join() é semelhante a Append(), exceto por combinar diversos valores de cadeia de caracteres de origem em uma única cadeia de caracteres, e cada valor é separado por uma cadeia de caracteres de separador.
Se um dos valores de origem for um atributo com valores múltiplos, todos os valores nesse atributo serão agrupados juntos, sendo separados pelo valor do separador.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
separator | Obrigatório | String | Cadeia de caracteres usada para separar os valores de origem quando eles são concatenados em uma cadeia de caracteres. Pode ser "" se não for necessário nenhum separador. |
source1 … sourceN | Obrigatório, número de vezes variável | String | Valores de cadeia de caracteres a serem unidos. |
Esquerda
Função: Left(String, NumChars)
Descrição: a função Left retorna um número especificado de caracteres a partir da esquerda de uma cadeia de caracteres. Se numChars = 0, retorne a cadeia de caracteres vazia. Se numChars < 0, retorne a cadeia de caracteres de entrada. Se a cadeia de caracteres for nula, retorne a cadeia de caracteres vazia. Se a cadeia de caracteres contiver menos caracteres que o número especificado em numChars, uma cadeia de caracteres idêntica à cadeia (ou seja, que contém todos os caracteres no parâmetro 1) será retornada.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
Cadeia de caracteres | Obrigatório | Atributo | A cadeia de caracteres da qual os caracteres serão retornados |
NumChars | Necessária | Inteiro | Um número que identifica o número de caracteres para retornar do início (à esquerda) da cadeia de caracteres |
Exemplo:Left("John Doe", 3)
retorna "Joh".
Mid
Função: Mid(source, start, length)
Descrição: retorna uma substring do valor de origem. Uma subcadeia de caracteres é uma cadeia de caracteres que contém apenas alguns dos caracteres da cadeia de caracteres de source.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
source | Obrigatório | String | Geralmente o nome do atributo. |
start | Obrigatório | Inteiro | Índice na cadeia de caracteres de origem em que a subcadeia deve iniciar. O primeiro caractere da cadeia tem um índice 1, o segundo caractere tem um índice 2 e assim por diante. |
length | Obrigatório | Inteiro | Comprimento da subcadeia de caracteres. Se o comprimento terminar fora da origem da cadeia de caracteres, a função retornará a subcadeia de caracteres do índice iniciado até o final da origem da cadeia de caracteres. |
NormalizeDiacritics
Função: NormalizeDiacritics(source)
Descrição: requer um argumento de cadeia de caracteres. Retorna a cadeia de caracteres, mas com todos os caracteres diacríticos substituídos por caracteres não diacríticos equivalentes. Normalmente usado para converter os nomes e sobrenomes que contêm caracteres diacríticos (acentos) em valores legais que podem ser usados em vários identificadores de usuário, como nomes de entidade de segurança do usuário, nomes de conta SAM e endereços de email.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
source | Obrigatório | String | Geralmente um atributo de nome ou sobrenome. |
Caractere com marca diacrítica | Caractere normalizado | Caractere com marca diacrítica | Caractere normalizado |
---|---|---|---|
ä, à, â, ã, å, á, ą, ă, ā, ā́, ā̀, ā̂, ā̃, ǟ, ā̈, ǡ, a̱, å̄ | um | Ä, À, Â, Ã, Å, Á, Ą, Ă, Ā, Ā́, Ā̀, Ā̂, Ā̃, Ǟ, Ā̈, Ǡ, A̱, Å̄ | A |
æ, ǣ | ae | Æ, Ǣ | AE |
ç, č, ć, c̄, c̱ | c | Ç, Č, Ć, C̄, C̱ | C |
ď, d̄, ḏ | d | Ď, D̄, Ḏ | D |
ë, è, é, ê, ę, ě, ė, ē, ḗ, ḕ, ē̂, ē̃, ê̄, e̱, ë̄, e̊̄ | e | Ë, È, É, Ê, Ę, Ě, Ė, Ē, Ḗ, Ḕ, Ē̂, Ē̃, Ê̄, E̱, Ë̄, E̊̄ | E |
ğ, ḡ, g̱ | g | Ğ, Ḡ, G̱ | G |
ï, î, ì, í, ı, ī, ī́, ī̀, ī̂, ī̃, i̱ | i | Ï, Î, Ì, Í, İ, Ī, Ī́, Ī̀, Ī̂, Ī̃, I̱ | I |
ľ, ł, l̄, ḹ, ḻ | l | Ł, Ľ, L̄, Ḹ, Ḻ | L |
ñ, ń, ň, n̄, ṉ | n | Ñ, Ń, Ň, N̄, Ṉ | N |
ö, ò, ő, õ, ô, ó, ō, ṓ, ṑ, ō̂, ō̃, ȫ, ō̈, ǭ, ȭ, ȱ, o̱ | o | Ö, Ò, Ő, Õ, Ô, Ó, Ō, Ṓ, Ṑ, Ō̂, Ō̃, Ȫ, Ō̈, Ǭ, Ȭ, Ȱ, O̱ | O |
ø, ø̄, œ̄ | oe | Ø, Ø̄, Œ̄ | OE |
ř, r̄, ṟ, ṝ | r | Ř, R̄, Ṟ, Ṝ | R |
ß | ss | ||
š, ś, ș, ş, s̄, s̱ | s | Š, Ś, Ș, Ş, S̄, S̱ | S |
ť, ț, t̄, ṯ | t | Ť, Ț, T̄, Ṯ | T |
ü, ù, û, ú, ů, ű, ū, ū́, ū̀, ū̂, ū̃, u̇̄, ǖ, ṻ, ṳ̄, u̱ | u | Ü, Ù, Û, Ú, Ů, Ű, Ū, Ū́, Ū̀, Ū̂, Ū̃, U̇̄, Ǖ, Ṻ, Ṳ̄, U̱ | U |
ÿ, ý, ȳ, ȳ́, ȳ̀, ȳ̃, y̱ | s | Ÿ, Ý, Ȳ, Ȳ́, Ȳ̀, Ȳ̃, Y̱ | S |
ź, ž, ż, z̄, ẕ | z | Ź, Ž, Ż, Z̄, Ẕ | Z |
Remover diacríticos de uma cadeia de caracteres
Exemplo: substituir caracteres que contenham os acentos por caracteres equivalentes que não contenham acentos.
Expressão: NormalizeDiacritics([givenName])
Entrada/saída de exemplo:
- INPUT (givenName): "Zoë"
- OUTPUT: "Zoe"
Not
Função: Not(source)
Descrição: Inverte o valor booliano da origem. Se o valor de source for True, retorna False. Caso contrário, retorna True.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
source | Obrigatório | Cadeia de caracteres booliana | Valores da origem esperados são "True" ou "False". |
Agora
Função: Now()
Descrição:
A função Now retorna uma cadeia de caracteres que representa o DateTime UTC atual no formato M/d/aaaa h:mm:ss tt.
Exemplo:Now()
Valor de exemplo retornado 7/2/2021 3:33:38 PM
NumFromDate
Função: NumFromDate(value)
Descrição: A função NumFromDate converte um valor DateTime para o formato Active Directory que é necessário para definir atributos como accountExpires. Use essa função para converter valores DateTime recebidos de aplicativos de RH de nuvem, como o Workday e o SuccessFactors, para a representação do AD equivalente.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
value | Obrigatório | String | Cadeia de caracteres de data/hora no formato ISO 8601. Se a variável de data estiver em um formato diferente, use a função FormatDateTime para converter a data no formato ISO 8601. |
Exemplo:
Exemplo do Workday: supondo que você queira mapear o atributo ContractEndDate do Workday, que está no formato 2020-12-31-08:00 para o campo accountExpires no AD, veja como você pode usar essa função e alterar o deslocamento do fuso horário para que ele corresponda à sua localidade.
NumFromDate(Join("", FormatDateTime([ContractEndDate], ,"yyyy-MM-ddzzz", "yyyy-MM-dd"), " 23:59:59-08:00"))
Exemplo do SuccessFactors: supondo que você queira mapear o atributo endDate do SuccessFactors, que está no formato M/d/yyyyy hh:mm:ss tt para o campo accountExpires no AD, veja como você pode usar essa função e alterar o deslocamento do fuso horário para que ele corresponda à sua localidade.
NumFromDate(Join("",FormatDateTime([endDate], ,"M/d/yyyy hh:mm:ss tt","yyyy-MM-dd")," 23:59:59-08:00"))
PCase
Função: PCase(source, wordSeparators)
Descrição: a função PCase converte em letras maiúsculas o primeiro caractere de cada palavra em uma cadeia de caracteres, enquanto todos os outros caracteres são convertidos em letras minúsculas.
Parâmetros:
Nome | Obrigatório/Opcional | Type | Observações |
---|---|---|---|
source | Obrigatório | String | source Valor a ser convertido no formato correto de maiúsculas e minúsculas. |
wordSeparators | Opcional | String | Especifique um conjunto de caracteres usado como separador de palavras (exemplo: " ,-'") |
Comentários:
- Se o parâmetro wordSeparators não for especificado, o PCase invocará internamente a função .NET ToTitleCase para converter a cadeia de caracteres de origem no formato de maiúsculas e minúsculas apropriado. A função .NET ToTitleCase dá suporte a um conjunto abrangente de categorias de caracteres Unicode como separadores de palavras.
- Caractere de espaço
- Caractere de nova linha
- Caracteres de controle como CRLF
- Caracteres de controle de formato
- Caracteres de ConnectorPunctuation como sublinhado
- Caracteres DashPunctuation como traço e hífen (incluindo caracteres como En Dash, Em Dash, hifen duplo e assim por diante)
- Caracteres OpenPunctuation e ClosePunctuation que ocorrem em pares como parênteses, colchetes, colchetes angulares, e assim por diante.
- Caracteres InitialQuotePunctuation e FinalQuotePunctuation, como aspas simples, aspas duplas e aspas angulares.
- Caracteres OtherPunctuation como ponto de exclamação, sinal numérico, sinal de porcentagem, E comercial, asterisco, vírgula, parada completa, dois-pontos, ponto e vírgula, e assim por diante.
- Caracteres MathSymbol como sinal de adição, sinal menor que e maior que, linha vertical, til, sinal de igual, e assim por diante.
- Caracteres CurrencySymbol como sinal de dólar, sinal de centavo, sinal de libra, sinal de euro, e assim por diante.
- Caracteres ModifierSymbol como macron, acentos, setas, e assim por diante.
- Caracteres OtherSymbol como símbolo de direitos autorais, sinal de grau, símbolo de marca registrada, etc.
- Se o parâmetro wordSeparators for especificado, a função PCase só usará os caracteres especificados como separadores de palavras.
Exemplo:
Digamos que você está obtendo os atributos firstName e lastName do SAP SuccessFactors e, em RH, ambos os atributos estão em letras maiúsculas. Usando a função PCase, você pode converter o nome no formato correto de maiúsculas e minúsculas, conforme mostrado aqui.
Expression | Entrada | Saída | Observações |
---|---|---|---|
PCase([firstName]) |
firstName = "MARIA EDUARDA (SEGUNDO)" | "Maria Eduarda (Segundo)" | Como o parâmetro wordSeparators não é especificado, a função PCase usa o conjunto de caracteres separadores de palavras padrão. |
PCase([lastName]," '-") |
lastName = "SCHMIDT" | "Schmidt" | A função PCase usa caracteres no parâmetro wordSeparators para identificar palavras e transformá-las no formato correto de maiúsculas e minúsculas. |
PCase(Join(" ",[firstName],[lastName])) |
firstName = CARLOS, lastName = "LIMA" | "Carlos Lima" | Você pode aninhar a função Join em PCase. Como o parâmetro wordSeparators não é especificado, a função PCase usa o conjunto de caracteres separadores de palavras padrão. |
RandomString
Função: RandomString(Length, MinimumNumbers, MinimumSpecialCharacters, MinimumCapital, MinimumLowerCase, CharactersToAvoid)
Descrição: a função Randomstring gera uma cadeia de caracteres aleatória com base nas condições especificadas. Os caracteres permitidos podem ser identificados aqui.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
Comprimento | Obrigatório | Número | Comprimento total da cadeia de caracteres aleatória. Isso deve ser maior ou igual à soma de MinimumNumbers, MinimumSpecialCharacters e MinimumCapital. Máximo de 256 caracteres. |
MinimumNumbers | Obrigatório | Número | Números mínimos na cadeia de caracteres aleatória. |
MinimumSpecialCharacters | Obrigatório | Número | Número mínimo de caracteres especiais. |
MinimumCapital | Obrigatório | Número | Número mínimo de letras maiúsculas na cadeia de caracteres aleatória. |
MinimumLowerCase | Obrigatório | Número | Número mínimo de letras minúsculas na cadeia de caracteres aleatória. |
CharactersToAvoid | Opcional | Cadeia de caracteres | Caracteres a serem excluídos ao gerar a cadeia de caracteres aleatória. |
Exemplo 1: - gerar uma cadeia de caracteres aleatória sem restrições de caracteres especiais: RandomString(6,3,0,0,3)
Gera uma cadeia de caracteres aleatória com 6 caracteres. A cadeia de caracteres contém 3 números e 3 caracteres minúsculos (1a73qt).
Exemplo 2: - gerar uma cadeia de caracteres aleatória com restrições de caracteres especiais: RandomString(10,2,2,2,1,"?,")
Gera uma cadeia de caracteres aleatória com 10 caracteres. A cadeia de caracteres contém pelo menos 2 números, 2 caracteres especiais, 2 letras maiúsculas, 1 letra minúscula e exclui os caracteres "?" e "," (1@!2BaRg53).
Redigir
Função: Redact()
Descrição: A função redação substitui o valor do atributo pelo literal de cadeia de caracteres "[redação]" nos logs de provisionamento.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
atributo/valor | Obrigatório | String | Especifique o atributo ou constante/cadeia de caracteres a ser redação dos logs. |
Exemplo 1: Redigir um atributo: Redact([userPrincipalName])
Remove o userPrincipalName dos logs de provisionamento.
Exemplo 2: Redigir uma cadeia de caracteres: Redact("StringToBeRedacted")
Remove uma cadeia de caracteres constante dos logs de provisionamento.
Exemplo 3: Redigir uma cadeia de caracteres aleatória: Redact(RandomString(6,3,0,0,3))
Remove a cadeia de caracteres aleatória dos logs de provisionamento.
RemoveDuplicates
Função: RemoveDuplicates(attribute)
Descrição: a função RemoveDuplicates obtém uma cadeia de caracteres de valores múltiplos e verifica se cada valor é exclusivo.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
attribute | Obrigatório | Atributo com valores múltiplos | Atributo de vários valores que tem duplicatas removidas |
Exemplo:RemoveDuplicates([proxyAddresses])
retorna um atributo proxyAddress higienizado em que todos os valores duplicados são removidos.
Substitua
Função: Replace(source, oldValue, regexPattern, regexGroupName, replacementValue, replacementAttributeName, template)
Descrição: Substitui valores dentro de uma cadeia de caracteres diferenciando maiúsculas e minúsculas. A função atua de maneira diferente a depender dos parâmetros fornecidos:
Quando oldValue e replacementValue são fornecidos:
- Substitui todas as ocorrências de oldValue em source por replacementValue
Quando oldValue e template são fornecidos:
- Substitui todas as ocorrências de oldValue no modelo pelo valor de origem
Quando regexPattern e replacementValue são fornecidos:
- A função aplica o regexPattern à cadeia de caracteres source e você pode usar os nomes de grupo Regex para construir a cadeia de caracteres para replacementValue
Observação
Para saber mais sobre constructo de agrupamento de regex e subexpressões nomeadas, consulte Agrupar constructos em expressões regulares.
Quando regexPattern, regexGroupName e replacementValue são fornecidos:
- A função aplica o regexPattern à cadeia de caracteres source e substitui todos os valores correspondentes a regexGroupName com replacementValue
Quando regexPattern, regexGroupName e replacementAttributeName são fornecidos:
- Se source tiver um valor, source será retornado
- Se source não tiver nenhum valor, a função aplicará o regexPattern ao replacementAttributeName e retornará o valor correspondente ao regexGroupName
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
source | Obrigatório | String | Normalmente, o nome do atributo do objeto de source. |
oldValue | Opcional | Cadeia de caracteres | Valor a ser substituído em source ou template. |
regexPattern | Opcional | Cadeia de caracteres | Padrão Regex para o valor a ser substituído na origem. Quando replacementAttributeName é usado, o regexPattern é aplicado para extrair um valor do replacementAttributeName. |
regexGroupName | Opcional | Cadeia de caracteres | Nome do grupo dentro de regexPattern. Quando replacementAttributeName nomeado for usado, extrairemos o valor do grupo regex nomeado do replacementAttributeName e o retornaremos como o valor de substituição. |
replacementValue | Opcional | Cadeia de caracteres | Novo valor com o qual substituir um antigo. |
replacementAttributeName | Opcional | Cadeia de caracteres | Nome do atributo a ser usado para o valor de substituição |
template | Opcional | String | Quando o valor do modelo for fornecido, procuraremos oldValue dentro do modelo e o substituiremos pelo valor da origem. |
Substituir caracteres usando uma expressão regular
Exemplo 1: Usando oldValue e replacementValue para substituir toda a cadeia de caracteres de origem por outra cadeia de caracteres.
Digamos que seu sistema de RH tenha um atributo BusinessTitle
. Como parte das alterações recentes de cargo, sua empresa deseja atualizar qualquer pessoa com o título comercial "Desenvolvedor de Produtos" para "Engenheiro de Software".
Nesse caso, você pode usar a expressão a seguir no mapeamento de atributo.
Replace([BusinessTitle],"Product Developer", , , "Software Engineer", , )
- source:
[BusinessTitle]
- oldValue: "Desenvolvedor de Produto"
- replacementValue: "Engenheiro de Software"
- Expression output: Engenheiro de Software
Exemplo 2: Usando oldValue e template para inserir a cadeia de caracteres de origem em outra cadeia de caracteres templatized.
O parâmetro oldValue é um termo impróprio neste cenário. Na verdade, é o valor que é substituído.
Vamos supor que você sempre quer gerar uma ID de logon no formato <username>@contoso.com
. Há um atributo de origem chamado UserID, e você quer que esse valor seja usado para a parte de <username>
da ID de logon.
Nesse caso, você pode usar a expressão a seguir no mapeamento de atributo.
Replace([UserID],"<username>", , , , , "<username>@contoso.com")
- source:
[UserID]
= "jsmith" - oldValue: "
<username>
" - template: "
<username>@contoso.com
" - Saída da expressão: "jsmith@contoso.com"
Exemplo 3: Usando regexPattern e replacementValue para extrair uma parte da cadeia de caracteres de origem e substituí-la por uma cadeia de caracteres vazia ou um valor personalizado criado usando-se padrões regex ou nomes de grupo regex.
Digamos que você tenha um atributo de origem telephoneNumber
que tenha componentes country code
e phone number
separados por um caractere de espaço. Por exemplo, +91 9998887777
Nesse caso, você poderá usar a seguinte expressão no mapeamento de atributo para extrair o número de telefone de 10 dígitos.
Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})", , "${phoneNumber}", , )
- source:
[telephoneNumber]
= "+91 9998887777" - regexPattern: "
\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})
" - replacementValue: "
${phoneNumber}
" - Saída da expressão: 9998887777
Você também pode usar esse padrão para remover caracteres e recolher uma cadeia de caracteres. Por exemplo, a expressão a seguir remove parênteses, traços e caracteres de espaço na cadeia de caracteres de número de telefone celular e retorna apenas dígitos.
Replace([mobile], , "[()\\s-]+", , "", , )
- source:
[mobile] = "+1 (999) 888-7777"
- regexPattern: "
[()\\s-]+
" - replacementValue: "" (cadeia de caracteres vazia)
- Saída da expressão: 19998887777
Exemplo 4: Usando regexPattern, regexGroupName e replacementValue para extrair uma parte da cadeia de caracteres de origem e substituí-la por outro valor literal ou cadeia de caracteres vazia.
Digamos que seu sistema de origem tenha um atributo AddressLineData com dois componentes número da rua e nome da rua. Como parte de uma mudança recente, digamos que o número da rua do endereço alterou e você quer atualizar apenas a parte do número da rua da linha de endereço. Nesse caso, você pode usar a expressão a seguir no mapeamento de atributo para extrair o número da rua.
Replace([AddressLineData], ,"(?<streetNumber>^\\d*)","streetNumber", "888", , )
- source:
[AddressLineData]
= "545 Tremont Street" - regexPattern: "
(?<streetNumber>^\\d*)
" - regexGroupName: "streetNumber"
- replacementValue: "888"
- Saída da expressão: 888 Tremont Street
Aqui está outro exemplo em que o sufixo de domínio de um UPN é substituído por uma cadeia de caracteres vazia para gerar a ID de logon sem sufixo de domínio.
Replace([userPrincipalName], , "(?<Suffix>@(.)*)", "Suffix", "", , )
- source:
[userPrincipalName]
= "jsmith@contoso.com" - regexPattern: "
(?<Suffix>@(.)*)
" - regexGroupName: "Sufixo"
- replacementValue: "" (cadeia de caracteres vazia)
- Saída da expressão: jsmith
Exemplo 5: Usando regexPattern, regexGroupName e replacementAttributeName para lidar com cenários em que o atributo de origem está vazio ou não tem um valor.
Digamos que seu sistema de origem tenha um atributo telephoneNumber. Se telephoneNumber estiver vazio, você deseja extrair os 10 dígitos do atributo número do telefone celular. Nesse caso, você pode usar a expressão a seguir no mapeamento de atributo.
Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})", "phoneNumber" , , [mobile], )
- source:
[telephoneNumber]
= "" (cadeia de caracteres vazia) - regexPattern: "
\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})
" - regexGroupName: "phoneNumber"
- replacementAttributeName:
[mobile]
= "+91 8887779999" - Saída da expressão: 8887779999
Exemplo 6: é necessário localizar caracteres que correspondam a um valor de expressão regular e removê-los.
Replace([mailNickname], , "[a-zA-Z_]*", , "", , )
- source [mailNickname]
- oldValue: "john_doe72"
- replaceValue: ""
- Saída da expressão: 72
SelectUniqueValue
Função: SelectUniqueValue(uniqueValueRule1, uniqueValueRule2, uniqueValueRule3, …)
Descrição: requer um mínimo de dois argumentos, que são regras de geração de valor exclusivo definidas usando expressões. A função avalia cada regra e, em seguida, verifica o valor gerado para exclusividade no aplicativo/diretório de destino. O primeiro valor exclusivo encontrado será retornado o um. Se todos os valores já existirem no destino, a entrada será garantida e o motivo será registrado nos logs de auditoria. Não há nenhum limite superior para o número de argumentos que podem ser fornecidos.
Essa função deve estar no nível superior e não pode ser aninhada.
Essa função não pode ser aplicada a atributos que têm uma precedência correspondente.
Essa função destina-se somente a ser usado para criações de entrada. Ao usá-lo com um atributo, defina a Aplicar mapeamento propriedade somente durante a criação do objeto.
No momento, essa função tem suporte para uso com estes aplicativos:
- Provisionamento de Usuário do Workday para o Active Directory
- SuccessFactors para o Provisionamento de Usuário do Active Directory
- Provisionamento controlado por API para o Active Directory local
SelectUniqueValue não tem suporte para uso com outros aplicativos de provisionamento.
A pesquisa LDAP que a função SelectUniqueValue executa no Active Directory local não escapa caracteres especiais como diacríticos. Se você passar uma cadeia de caracteres, como "Jéssica Smith" que contém um caractere especial, encontrará erros de processamento. Aninhe a função NormalizeDiacritics conforme mostrado neste exemplo para normalizar os caracteres especiais.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
uniqueValueRule1 … uniqueValueRuleN | Pelo menos 2 são necessários, sem limite superior | String | Lista de regras de geração de valor exclusivo para avaliar. |
Gerar um valor exclusivo para o atributo userPrincipalName (UPN)
Exemplo: Com base no primeiro nome, segundo nome e sobrenome do usuário, você precisa gerar um valor para o atributo UPN e verificar a exclusividade desse atributo no diretório de destino AD antes de atribuir o valor ao atributo UPN.
Expressão:
SelectUniqueValue(
Join("@", NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))), "contoso.com"),
Join("@", NormalizeDiacritics(StripSpaces(Join(".", Mid([PreferredFirstName], 1, 1), [PreferredLastName]))), "contoso.com"),
Join("@", NormalizeDiacritics(StripSpaces(Join(".", Mid([PreferredFirstName], 1, 2), [PreferredLastName]))), "contoso.com")
)
Entrada/saída de exemplo:
- INPUT (PreferredFirstName): "John"
- INPUT (PreferredLastName): "Smith"
- SAÍDA: "John.Smith@contoso.com" se o valor de UPN do John.Smith@contoso.com ainda não existir no diretório
- SAÍDA: "J.Smith@contoso.com" se o valor UPN de John.Smith@contoso.com já existir no diretório
- SAÍDA: "Jo.Smith@contoso.com" se os dois valores UPN acima já existirem no diretório
SingleAppRoleAssignment
Função: SingleAppRoleAssignment([appRoleAssignments])
Descrição: retorna um único appRoleAssignment da lista de todos os appRoleAssignments atribuídos a um usuário em um determinado aplicativo. Essa função é necessária para converter o objeto appRoleAssignments em uma cadeia de caracteres de nome de função única. A melhor prática é garantir que apenas um appRoleAssignment seja atribuído a um usuário por vez. Essa função não tem suporte em cenários nos quais os usuários têm várias atribuições de função de aplicativo.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
[appRoleAssignments] | Obrigatório | String | Objeto [appRoleAssignments]. |
Divisão
Função: Split(source, delimiter)
Descrição: divide uma cadeia de caracteres em uma matriz com valores múltiplos, usando o caractere delimitador especificado.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
source | Obrigatório | String | Valor da origem para atualizar. |
delimiter | Obrigatório | String | Especifica o caractere usado para dividir a cadeia de caracteres (exemplo: ",") |
Dividir uma cadeia de caracteres em uma matriz de vários valores
Exemplo: é necessário usar uma lista de cadeias de caracteres delimitada por vírgula e dividi-las em uma matriz que possa ser conectada a um atributo com vários valores, como o atributo PermissionSets do Salesforce. Nesse exemplo, uma lista de conjuntos de permissões foi preenchida em extensionAttribute5 no Microsoft Entra ID.
Expressão: Split([extensionAttribute5], ",")
Entrada/saída de exemplo:
- INPUT (extensionAttribute5): "PermissionSetOne, PermissionSetTwo"
- OUTPUT: ["PermissionSetOne", "PermissionSetTwo"]
StripSpaces
Função: StripSpaces(source)
Descrição: remove todos os caracteres de espaço (" ") da cadeia de caracteres de origem.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
source | Obrigatório | String | Valor da origem para atualizar. |
Comutador
Função: Switch(source, defaultValue, key1, value1, key2, value2, …)
Descrição: Quando o valor de origem corresponde a uma chave, retorna o valor dessa chave. Se o valor da origem não corresponder a nenhuma chave, retorna defaultValue. Os parâmetros key e value devem sempre ocorrer em pares. A função sempre espera um número par de parâmetros. A função não deverá ser usada para atributos referenciais como gerente.
Observação
A função switch executa uma comparação de cadeia de caracteres diferenciando maiúsculas de minúsculas dos valores source e key. Se você quiser executar uma comparação que não diferencia maiúsculas de minúsculas, normalize a cadeia de caracteres de source antes da comparação usando uma função aninhada ToLower e verifique se todas as cadeias de caracteres de key usam letras minúsculas.
Exemplo: Switch(ToLower([statusFlag]), "0", "true", "1", "false", "0")
. Neste exemplo, o atributo sourcestatusFlag
pode ter valores ("True" / "true" / "TRUE"). No entanto, a função Switch sempre a converte em uma cadeia de caracteres "true" em minúsculas antes da comparação com os parâmetros key.
Cuidado
Para o parâmetro source, não use as funções aninhadas IsPresent, IsNull ou IsNullOrEmpty. Em vez disso, use uma cadeia de caracteres vazia literal como um dos valores de chave.
Exemplo: Switch([statusFlag], "Default Value", "true", "1", "", "0")
. Nesse exemplo, se o atributo source statusFlag
estiver vazio, a função Switch retornará o valor 0.
Cuidado
Problema: o serviço de provisionamento definiu incorretamente um valor de atributo como null no sistema de destino ao usar uma instrução switch.
Resolução: use uma instrução IIF em vez de uma instrução switch para evitar valores nulos inesperados ou use a função IgnoreFlowIfNullOrEmpty com a instrução switch. Por exemplo, switch([companyName], "External", "Company A", "A", "Company B", "B") should be represented as IIF([companyName] = "Company A", "A", IIF([companyName] = "Company B", "B", "External")). Nos casos em que o valor padrão é um atributo, use uma expressão como IgnoreFlowIfNullOrEmpty(switch([companyName], [companyName], "Company A", "A", "Company B", "B")).
Causa raiz: esse problema é específico para cenários em que o Microsoft Entra ID é o sistema de origem e a instrução switch contém um valor padrão.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
source | Obrigatório | String | Source a atualizar. |
defaultValue | Opcional | Cadeia de caracteres | Valor padrão a ser usado quando source não corresponde a nenhum parâmetro. Pode ser uma cadeia de caracteres vazia (""). |
chave | Obrigatório | String | Parâmetro key com o qual comparar o valor de source. |
value | Obrigatório | String | Valor de substituição para o source que corresponde ao parâmetro key. |
Substituir um valor com base em um conjunto predefinido de opções
Exemplo: definir o fuso horário do usuário com base no código de estado armazenado no Microsoft Entra ID. Se o código de estado não corresponder a nenhuma das opções predefinidas, use o valor padrão de "Australia/Sydney".
Expressão:Switch([state], "Australia/Sydney", "NSW", "Australia/Sydney","QLD", "Australia/Brisbane", "SA", "Australia/Adelaide")
Entrada/saída de exemplo:
- ENTRADA (estado): "QLD"
- SAÍDA: "Australia/Brisbane"
ToLower
Função: ToLower(source, culture)
Descrição: converte um valor de cadeia de caracteres de origem em letras minúsculas usando as regras de cultura especificadas. Se não houver nenhuma informação de cultura especificada, ela usará a cultura invariável.
Se você quiser definir os valores existentes no sistema de destino para letras minúsculas, atualize o esquema do aplicativo de destino e defina a propriedade caseExact como 'true' do atributo no qual está interessado.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
source | Obrigatório | String | Normalmente o nome do atributo do objeto de source |
cultura | Opcional | Cadeia de caracteres | O formato para o nome da cultura com base em RFC 4646 é languagecode2-country/regioncode2, em que regioncode2 é o código de idioma de duas letras e country/regioncode2 é o código de subcultura de duas letras. Exemplos incluem ja-JP para japonês (Japão) e en-US para inglês (Estados Unidos). Nos casos em que um código de idioma de duas letras não estiver disponível, será usado um código de três letras derivado da ISO 639-2. |
Converter o valor userPrincipalName (UPN) gerado em letras minúsculas
Exemplo: você gostaria de gerar o valor UPN concatenando os campos de origem PreferredFirstName e PreferredLastName e convertendo todos os caracteres em letras minúsculas.
ToLower(Join("@", NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))), "contoso.com"))
Entrada/saída de exemplo:
- INPUT (PreferredFirstName): "John"
- INPUT (PreferredLastName): "Smith"
- OUTPUT: "john.smith@contoso.com"
ToUpper
Função: ToUpper(source, culture)
Descrição: converte um valor de cadeia de caracteres de origem em letras maiúsculas usando as regras de cultura especificadas. Se não houver nenhuma informação de cultura especificada, ela usará a cultura invariável.
Se você quiser definir os valores existentes no sistema de destino como letras maiúsculas, atualize o esquema do aplicativo de destino e defina a propriedade caseExact como "true" do atributo no qual está interessado.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
source | Obrigatório | String | Normalmente o nome do atributo do objeto de source. |
cultura | Opcional | Cadeia de caracteres | O formato para o nome da cultura com base em RFC 4646 é languagecode2-country/regioncode2, em que regioncode2 é o código de idioma de duas letras e country/regioncode2 é o código de subcultura de duas letras. Exemplos incluem ja-JP para japonês (Japão) e en-US para inglês (Estados Unidos). Nos casos em que um código de idioma de duas letras não estiver disponível, será usado um código de três letras derivado da ISO 639-2. |
Word
Função: Word(String,WordNumber,Delimiters)
Descrição: a função Word retorna uma palavra contida em uma cadeia de caracteres com base nos parâmetros que descrevem os delimitadores a serem usados e o número de palavras a serem retornadas. cada cadeia de caracteres separada por um dos caracteres delimitadores na cadeia de caracteres é identificada como palavra:
Se number < 1, retorna uma cadeia de caracteres vazia. Se a cadeia de caracteres for nula, retorna a cadeia de caracteres vazia. Se a cadeia de caracteres for menor que o número de palavras ou a cadeia não contiver palavras identificadas por delimitadores, será retornada uma cadeia de caracteres vazia.
Parâmetros:
Nome | Obrigatório/repetição | Type | Observações |
---|---|---|---|
Cadeia de caracteres | Obrigatório | Atributo com valores múltiplos | Cadeia de caracteres da qual uma palavra deve ser retornada. |
WordNumber | Necessária | Inteiro | WordNumber: um número que identifica qual número de palavras deve ser retornado |
delimiters | Obrigatório | String | Uma cadeia de caracteres que representa o(s) delimitador(s) que deve(m) ser usado(s) para identificar palavras |
Exemplo:Word("The quick brown fox",3," ")
Retorna "brown".
Word("This,string!has&many separators",3,",!&#")
Retorna "has".
Exemplos
Esta seção fornece mais exemplos de uso de função de expressão.
Retirar o nome de domínio conhecido
Retirar um nome de domínio conhecido do email de um usuário para obter um nome de usuário. Por exemplo, se o domínio for "contoso.com", você pode usar a seguinte expressão:
Expressão:Replace([mail], "@contoso.com", , ,"", ,)
Entrada/saída de exemplo:
- INPUT (mail): "john.doe@contoso.com"
- SAÍDA: "davi.barros"
Gerar o alias de usuário concatenando partes do nome e do sobrenome
Gerar um alias de usuário selecionando as três primeiras letras do nome do usuário e as cinco primeiras letras do sobrenome do usuário.
Expressão:Append(Mid([givenName], 1, 3), Mid([surname], 1, 5))
Entrada/saída de exemplo:
- ENTRADA (givenName): "Davi"
- ENTRADA (sobrenome): "Barros"
- SAÍDA: "DaviBarros"
Adicione uma vírgula entre o sobrenome e o nome.
Adicione uma vírgula entre o sobrenome e o nome.
Expressão:Join(", ", "", [surname], [givenName])
Entrada/saída de exemplo:
- ENTRADA (givenName): "Davi"
- ENTRADA (sobrenome): "Barros"
- SAÍDA: "Barros, Davi"
Gere uma ID para um usuário com base na sua ID de objeto do Microsoft Entra. Remova todas as letras do ID e adicione 1000 no início.
Essa expressão permite gerar um identificador para um usuário que começa com 1000 e provavelmente será exclusivo.
Expressão: Join("", 1000, Replace(ConvertToUTF8Hex([objectId]), , "[a-zA-Z_]*", , "", , ))
Entrada/saída de exemplo:
- INPUT: "00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
- SAÍDA: "100064303565343762312333930392343435612626135652636136306362633065346234"
Artigos relacionados
- Automatizar o provisionamento/desprovisionamento de usuários para aplicativos SaaS
- Personalizando os mapeamentos de atributos para provisionamento de usuários
- Filtros de escopo para provisionamento de usuários
- Usar o SCIM para habilitar o provisionamento automático de usuários e grupos do Microsoft Entra ID para aplicativos
- Notificações de provisionamento de conta
- Lista de tutoriais sobre como integrar aplicativos SaaS