Compartir vía


Referencia para la escritura de expresiones para asignaciones de atributos en el Id. de Microsoft Entra

Al configurar el aprovisionamiento para una aplicación SaaS, uno de los tipos de asignaciones de atributos que puede especificar es una asignación de expresiones. Para estas asignaciones, debe escribir una expresión similar a un script que permite transformar los datos de los usuarios en formatos más aceptables para la aplicación SaaS.

Información general sobre la sintaxis

La sintaxis de expresiones para asignaciones de atributos recuerda a las funciones de Visual Basic para Aplicaciones (VBA).

  • Toda la expresión se tiene que definir en términos de funciones, que constan de un nombre seguido de argumentos entre paréntesis: FunctionName(<<argument 1>>,<<argument N>>)

  • Puede anidar funciones dentro de otras. Por ejemplo: FunciónUna(FunciónDos(<<argument1>>))

  • Puede transformar tres tipos diferentes de argumentos en funciones:

    1. Atributos, que deben ir entre corchetes. Por ejemplo: [NombreAtributo]
    2. Constantes de cadena, que deben ir entre comillas. Por ejemplo: "Estados Unidos"
    3. Otras funciones. Por ejemplo: FunctionOne(<<argument1>>, FunctionTwo(<<argument2>>))
  • Para las constantes de cadena, si necesita una barra diagonal inversa (\) o comillas dobles (") en la cadena, se deben convertirse con el símbolo de barra diagonal inversa (\). Por ejemplo: "Nombre de la empresa: \"Contoso\""

  • La sintaxis distingue entre mayúsculas y minúsculas, lo que se debe tener en cuenta al escribirlas como cadenas en una función, por oposición a copiarlas y pegarlas directamente desde aquí.

Lista de funciones

AppendAppRoleAssignmentsComplexBitAndCBoolCDateCoalesceConvertToBase64ConvertToUTF8HexCountCStrDateAddDateDiffDateFromNumFormatDateTimeGuidIgnoreFlowIfNullOrEmptyIIFInStrIsNullIsNullOrEmptyIsPresentIsStringItemJoinLeftMidNormalizeDiacriticsNotNowNumFromDatePCaseRandomStringRedactRemoveDuplicatesReplaceSelectUniqueValueSingleAppRoleAssignmentSplitStripSpacesSwitchToLowerToUpperWord


Append

Función: Append(source, suffix)

Descripción: adopta un valor de la cadena de origen y anexa el sufijo al final de la misma.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
de origen Obligatorio String Normalmente el nombre del atributo del objeto de origen.
suffix Obligatorio String La cadena que se va a anexar al final del valor de origen.

Anexar sufijos constantes a nombres de usuario

Ejemplo: si está utilizando un espacio aislado de Salesforce, deberá anexar otro sufijo a todos los nombres de usuario antes de sincronizarlos.

Expresión:Append([userPrincipalName], ".test")

Entrada/salida de ejemplo:

  • ENTRADA: (userPrincipalName): "John.Doe@contoso.com"
  • OUTPUT: "John.Doe@contoso.com.test"

AppRoleAssignmentsComplex

Función: AppRoleAssignmentsComplex([appRoleAssignments])

Descripción: se usa para configurar varios roles para un usuario. Para obtener información detallada, consulte Tutorial: Personalización de las asignaciones de atributos de aprovisionamiento de usuarios para aplicaciones SaaS en el Id. de Microsoft Entra.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
[appRoleAssignments] Obligatorio String Objeto [appRoleAssignments] .

BitAnd

Función: BitAnd(value1, value2)

Descripción: : esta función convierte ambos parámetros en la representación binaria y establece un bit en los siguientes valores:

  • 0: si uno o ambos de los bits correspondientes en value1 y value2 son 0.
  • 1: si ambos de los bits correspondientes son 1.

En otras palabras, devuelve 0 en todos los casos excepto cuando los bits correspondientes de los dos parámetros son 1.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
value1 Obligatorio N.º Valor numérico que se debe agregar con AND a value2
value2 Obligatorio N.º Valor numérico que se debe agregar con AND a value1

Ejemplo:BitAnd(&HF, &HF7)

11110111 AND 00000111 = 00000111 de modo que BitAnd devuelve 7, el valor binario de 00000111.


CBool

Función:CBool(Expression)

Descripción:CBool devuelve un valor booleano basado en la expresión evaluada. Si la expresión se evalúa en un valor distinto de cero, CBool devuelve True. En caso contrario, devuelve False.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
Expression Requerido expresión Cualquier expresión válida

Ejemplo:CBool([attribute1] = [attribute2])
Devuelve True si ambos atributos tienen el mismo valor.


CDate

Función:
CDate(expression)

Descripción:
: la función CDate devuelve un valor DateTime UTC a partir de una cadena. DateTime no es un tipo de atributo nativo, pero se puede usar en funciones de fecha como FormatDateTime y DateAdd.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
Expression Requerido Expression Cualquier cadena válida que represente una fecha y hora. Para conocer los formatos admitidos, consulte Cadenas de formato de fecha y hora personalizadas de .NET.

Observaciones:
La cadena devuelta siempre está en UTC y sigue el formato M/d/yyyy h:mm:ss tt.

Ejemplo 1:
CDate([StatusHireDate])
Entrada/salida de ejemplo:

  • INPUT (StatusHireDate): "2020-03-16-07:00"
  • OUTPUT: "3/16/2020 7:00:00 AM" <-- Tenga en cuenta que se devuelve la hora UTC equivalente del valor DateTime anterior

Ejemplo 2:
CDate("2021-06-30+08:00")
Entrada/salida de ejemplo:

  • INPUT: "2021-06-30+08:00"
  • OUTPUT: "6/29/2021 4:00:00 PM" <-- Tenga en cuenta que se devuelve la hora UTC equivalente del valor DateTime anterior

Ejemplo 3:
CDate("2009-06-15T01:45:30-07:00")
Entrada/salida de ejemplo:

  • INPUT: "2009-06-15T01:45:30-07:00"
  • OUTPUT: "6/15/2009 8:45:30 AM" <-- Tenga en cuenta que se devuelve la hora UTC equivalente del valor DateTime anterior

Coalesce

Función: Coalesce(source1, source2, ..., defaultValue)

Descripción: devuelve el primer valor de origen distinto a NULL. Si todos los argumentos son NULL y defaultValue está presente, se devuelve defaultValue. Si todos los argumentos son NULL y defaultValue no está presente, Coalesce devuelve NULL.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
origen1 … origenN Obligatorio String Obligatorio, número variable de veces. Normalmente el nombre del atributo del objeto de origen.
defaultValue Opcional String Valor predeterminado que usará cuando todos los valores de origen sean NULL. Puede tratarse de una cadena vacía ("").

Proporciona el valor de correo si no es NULL; de lo contrario, proporciona userPrincipalName

Ejemplo: Desea proporcionar el atributo de correo si está presente. En caso contrario, se recomienda proporcionar el valor de userPrincipalName en su lugar.

Expresión:Coalesce([mail],[userPrincipalName])

Entrada/salida de ejemplo:

  • ENTRADA (mail): NULL
  • ENTRADA: (userPrincipalName): "John.Doe@contoso.com"
  • OUTPUT: "John.Doe@contoso.com"

ConvertToBase64

Función: ConvertToBase64(source)

Descripción: La función ConvertToBase64 convierte una cadena en una en base64 de Unicode.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
de origen Obligatorio String Cadena que se va a convertir a base 64.

Ejemplo:ConvertToBase64("Hello world!")

devuelve "SABlAGwAbABvACAAdwBvAHIAbABkACEA".


ConvertToUTF8Hex

Función: ConvertToUTF8Hex(source)

Descripción: : la función ConvertToUTF8Hex convierte una cadena en un valor codificado hexadecimal UTF8.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
de origen Obligatorio String Cadena que se va a convertir a UTF8 Hex.

Ejemplo:ConvertToUTF8Hex("Hello world!")

devuelve 48656C6C6F20776F726C6421.


Count

Función: Count(attribute)

Descripción: la función Count devuelve el número de elementos en un atributo con varios valores.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
attribute Obligatorio atributo Atributo con varios valores que tiene elementos contados

CStr

Función: CStr(value)

Descripción: La función CStr convierte un valor en un tipo de datos de cadena.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
value Obligatorio Numérico, referencia o booleano puede ser un valor numérico, un atributo de referencia o un valor booleano.

Ejemplo:CStr([dn])

Devuelve "cn=Joe,dc=contoso,dc=com".


DateAdd

Función:
DateAdd(interval, value, dateTime)

Descripción:
Devuelve una cadena de fecha y hora que representa una fecha a la que se ha agregado un intervalo de tiempo especificado. La fecha devuelta tiene el formato: M/d/yyyy h:mm:ss tt.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
interval Obligatorio String Intervalo de tiempo que desea agregar. Consulte los valores aceptados después de esta tabla.
value Obligatorio Number el número de unidades que desea agregar. Puede ser positivo (para obtener fechas futuras) o negativo (para obtener fechas del pasado).
dateTime Obligatorio DateTime DateTime que representa la fecha a la que se agrega el intervalo.

Al pasar una cadena de fecha como entrada, use la función CDate para encapsular la cadena datetime. Para obtener la hora del sistema en UTC, use la función Now.

La cadena de intervalo debe tener uno de los valores siguientes:

  • yyyy Año
  • m Mes
  • d Día
  • ww Semana
  • h Hora
  • n Minuto
  • s Segundo

Ejemplo 1: Generación de un valor de fecha basado en StatusHireDate entrante desde Workday
DateAdd("d", 7, CDate([StatusHireDate]))

Ejemplo interval value dateTime (valor de StatusHireDate variable) output
Agregar 7 días a la fecha de contratación "d" 7 2012-03-16-07:00 23/3/2012 7:00:00 a. m.
Obtener una fecha diez días antes de la fecha de contratación "d" -10 2012-03-16-07:00 6/3/2012 7:00:00 a. m.
Agregar dos semanas para la fecha de contratación "ww" 2 2012-03-16-07:00 30/3/2012 7:00:00 a. m.
Agregar diez meses para la fecha de contratación "m" 10 2012-03-16-07:00 16/1/2013 7:00:00 a. m.
Agregar dos años a la fecha de contratación "yyyy" 2 2012-03-16-07:00 16/3/2014 7:00:00 a. m.

DateDiff

Función:
DateDiff(interval, date1, date2)

Descripción:
Esta función usa el parámetro de interval para devolver un número que indique la diferencia entre las dos fechas de entrada. Devuelve

  • un número positivo si date2 > date1,
  • un número negativo si date2 < date1,
  • 0 si date2 == date1

Parámetros:

Nombre Obligatorio/opcional Tipo Notas
interval Obligatorio String Intervalo de tiempo que se usará para calcular la diferencia.
date1 Requerido DateTime Valor de DateTime que representa una fecha válida.
date2 Requerido DateTime Valor de DateTime que representa una fecha válida.

Al pasar una cadena de fecha como entrada, use la función CDate para encapsular la cadena datetime. Para obtener la hora del sistema en UTC, use la función Now.

La cadena de intervalo debe tener uno de los valores siguientes:

  • yyyy Año
  • m Mes
  • d Día
  • ww Semana
  • h Hora
  • n Minuto
  • s Segundo

Ejemplo 1: comparación de la fecha actual con la fecha de contratación de Workday con intervalos diferentes
DateDiff("d", Now(), CDate([StatusHireDate]))

Ejemplo interval date1 date2 output
Diferencia positiva en días entre dos fechas d 2021-08-18+08:00 2021-08-31+08:00 13
Diferencia negativa en días entre dos fechas d 8/25/2021 5:41:18 PM 2012-03-16-07:00 -3449
Diferencia en semanas entre dos fechas ww 8/25/2021 5:41:18 PM 2012-03-16-07:00 -493
Diferencia en meses entre dos fechas m 8/25/2021 5:41:18 PM 2012-03-16-07:00 -113
Diferencia en años entre dos fechas aaaa 8/25/2021 5:41:18 PM 2012-03-16-07:00 -9
Diferencia cuando ambas fechas son iguales d 2021-08-31+08:00 2021-08-31+08:00 0
Diferencia en horas entre dos fechas h 2021-08-24 2021-08-25 24
Diferencia en minutos entre dos fechas n 2021-08-24 2021-08-25 1440
Diferencia en segundos entre dos fechas s 2021-08-24 2021-08-25 86400

Ejemplo 2: Combinación de DateDiff con la función IIF para establecer el valor del atributo
Si una cuenta está activa en Workday, establezca el atributo accountEnabled del usuario en True solo si la fecha de contratación está dentro de los próximos 5 días.

Switch([Active], , 
  "1", IIF(DateDiff("d", Now(), CDate([StatusHireDate])) > 5, "False", "True"), 
  "0", "False")

DateFromNum

Función: DateFromNum(value)

Descripción: la función DateFromNum convierte un valor con formato de fecha de AD en un tipo DateTime.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
value Obligatorio Date Fecha de AD que se va a convertir al tipo DateTime.

Ejemplo:DateFromNum([lastLogonTimestamp])

DateFromNum(129699324000000000)

Devuelve un valor DateTime que representa el 1 de enero de 2012 a las 23 h.


FormatDateTime

Función: FormatDateTime(source, dateTimeStyles, inputFormat, outputFormat)

Descripción: adopta una cadena de fecha en un formato y la convierte a un formato distinto.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
de origen Obligatorio String Normalmente el nombre del atributo del objeto de origen.
dateTimeStyles Opcional String Utilice este parámetro para especificar las opciones de formato que personalizan el análisis de cadenas en algunos métodos de análisis de fecha y hora. Para conocer los valores admitidos, consulte la documentación de DateTimeStyles. Si se deja vacío, se utiliza el valor predeterminado: DateTimeStyles.RoundtripKind, DateTimeStyles.AllowLeadingWhite, DateTimeStyles.AllowTrailingWhite.
inputFormat Obligatorio String Formato esperado del valor de origen. Para conocer los formatos admitidos, consulte Cadenas de formato de fecha y hora personalizadas de .NET.
outputFormat Obligatorio String Formato de la fecha de salida.

Fecha de resultado como una cadena en un formato determinado

Ejemplo: desea enviar fechas a una aplicación SaaS como ServiceNow en un formato determinado. Puede usar la siguiente expresión.

Expresión:

FormatDateTime([extensionAttribute1], , "yyyyMMddHHmmss.fZ", "yyyy-MM-dd")

Entrada/salida de ejemplo:

  • INPUT (extensionAttribute1): "20150123105347.1Z"
  • SALIDA: "2015-01-23"

Guid

Función: Guid()

Descripción: La función GUID genera un nuevo GUID aleatorio.

Ejemplo:
Guid()
Salida de ejemplo: "00aa00aa-bb11-cc22-dd33-44ee44ee44ee"


IgnoreFlowIfNullOrEmpty

Function: IgnoreFlowIfNullOrEmpty(expression)

Descripción: la función IgnoreFlowIfNullOrEmpty indica al servicio de aprovisionamiento que omita el atributo y lo descarte del flujo si la función o el atributo incluidos son NULL o están vacíos.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
Expression Requerido Expression Expresión que se va a evaluar.

Ejemplo 1: No pase un atributo si es NULL
IgnoreFlowIfNullOrEmpty([department])
La expresión anterior quita el atributo department del flujo de aprovisionamiento si es NULL o está vacío.

Ejemplo 2: No pase un atributo si la asignación de expresiones se evalúa como cadena vacía o NULL
Supongamos que el atributo SuccessFactors prefix se asigna al atributo de Active Directory local personalTitle mediante la siguiente asignación de expresiones:
IgnoreFlowIfNullOrEmpty(Switch([prefix], "", "3443", "Dr.", "3444", "Prof.", "3445", "Prof. Dr."))
La expresión anterior evalúa primero la función Switch. Si el atributo prefix no tiene ninguno de los valores enumerados dentro de la función Switch, entonces ** devuelve una cadena vacía y el atributo personalTitle no se incluye en el flujo de aprovisionamiento de Active Directory local.


IIF

Función: IIF(condition,valueIfTrue,valueIfFalse)

Descripción: : la función IIF devuelve uno de un conjunto de valores posibles según una condición especificada.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
condition Obligatorio Variable o expresión Cualquier valor o expresión que pueda evaluarse como true o false.
valueIfTrue Obligatorio Variable o cadena si la condición se evalúa como true, el valor devuelto.
valueIfFalse Obligatorio Variable o cadena si la condición se evalúa como false, el valor devuelto.

En la condición se pueden usar los siguientes operadores de comparación:

  • Igual a (=) y no igual a (<>)
  • Mayor que (>) y mayor que igual que (>=)
  • Menor que (<) y menor que igual que (<=)

Ejemplo: Establezca el valor del atributo de destino en el atributo de país de origen si country="USA"; de lo contrario, establezca el valor del atributo de destino en el atributo de departamento de origen. IIF([country]="USA",[country],[department])

Limitaciones conocidas

En esta sección, se incluyen las limitaciones y soluciones alternativas para la función IIF. Para obtener información sobre cómo solucionar problemas de creación de usuarios, consulte Error de creación debido a valores null o vacíos.

  • La función IIF no admite actualmente los operadores lógicos AND y OR.
  • Para implementar la lógica AND, use la instrucción IIF anidada encadenada a lo largo de la ruta de acceso trueValue. Ejemplo: Si country="USA" y state="CA", devuelve el valor "True"; de lo contrario, devuelve "False". IIF([country]="USA",IIF([state]="CA","True","False"),"False")
  • Para implementar la lógica OR, use la instrucción IIF anidada encadenada a lo largo de la ruta de acceso falseValue. Ejemplo: Si country="USA" o state="CA", devuelve el valor "True"; de lo contrario, devuelve "False". IIF([country]="USA","True",IIF([state]="CA","True","False"))
  • Si el atributo de origen usado dentro de la función IIF está vacío o es NULL, se produce un error en la comprobación de condición.
    • Ejemplos de expresiones IIF no admitidas:
      • IIF([country]="","Other",[country])
      • IIF(IsNullOrEmpty([country]),"Other",[country])
      • IIF(IsPresent([country]),[country],"Other")
    • Solución alternativa recomendada: Use la función Switch para comprobar si hay valores vacíos o null. Ejemplo: Si el atributo country está vacío, establezca el valor "Other". Si está presente, pase el valor del atributo country al atributo de destino.
      • Switch([country],[country],"","Other")

InStr

Función: InStr(value1, value2, start, compareType)

Descripción: la función InStr busca la primera repetición de una subcadena en una cadena.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
value1 Obligatorio String Cadena que se va a buscar.
value2 Obligatorio String Cadena que se va a encontrar.
start Opcional Entero Posición inicial para buscar la subcadena.
compareType Opcional Enum Puede ser vbTextCompare o vbBinaryCompare.

Ejemplo:InStr("The quick brown fox","quick")

Se evalúa en 5

InStr("repEated","e",3,vbBinaryCompare)

Se evalúa en 7.


IsNull

Función: IsNull(Expression)

Descripción: si la expresión se evalúa como Null, la función IsNull devuelve True. para un atributo, un valor Null se expresa mediante la ausencia del atributo.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
Expression Requerido Expression Expresión que se va a evaluar.

Ejemplo:IsNull([displayName])

Devuelve True si el atributo no está presente.


IsNullOrEmpty

Función: IsNullOrEmpty(Expression)

Descripción: si la expresión es Null o una cadena vacía, la función IsNullOrEmpty devuelve True. Esto se evalúa como True si el atributo está ausente o está presente, pero es una cadena vacía. La función contraria a esta es IsPresent.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
Expression Requerido Expression Expresión que se va a evaluar.

Ejemplo:IsNullOrEmpty([displayName])

Devuelve True si el atributo no está presente o si es una cadena vacía.


IsPresent

Función: IsPresent(Expression)

Descripción: si la expresión se evalúa como una cadena que no es Null y no está vacía, la función IsPresent devuelve True. la función contraria a esta es IsNullOrEmpty.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
Expression Requerido Expression Expresión que se va a evaluar.

Ejemplo:Switch(IsPresent([directManager]),[directManager], IsPresent([skiplevelManager]),[skiplevelManager], IsPresent([director]),[director])


IsString

Función: IsString(Expression)

Descripción: si la expresión se puede evaluar en un tipo de cadena, la función IsString se evalúa en True.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
Expression Requerido Expression Expresión que se va a evaluar.

Elemento

Función: Item(attribute, index)

Descripción: la función Item devuelve un elemento de un atributo o una cadena de varios valores.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
attribute Obligatorio Atributo Atributo multivalor en el que se va a buscar.
índice Obligatorio Entero Índice de un elemento en la cadena multivalor.

Ejemplo:Item([proxyAddresses], 1) devuelve el primer elemento en el atributo multivalor. No se debe usar el índice 0.


Join

Función: Join(separator, source1, source2, …)

Descripción: Join() es similar a Append(), excepto en que puede combinar varios valores de cadena de source en una sola cadena, y cada valor está separado por una cadena de separator.

Si uno de los valores de origen es un atributo de varios valores, cada valor de ese atributo se une, separado por el valor del separador.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
separator Obligatorio Cadena Cadena utilizada para separar los valores de origen cuando se concatenan en una sola cadena. Puede ser "" si no es necesario ningún separador.
origen1 … origenN Obligatorio, número variable de veces String Valores de cadena que se van a agrupar.

Left

Función: Left(String, NumChars)

Descripción: la función Left devuelve un número especificado de caracteres desde la izquierda de una cadena. Con numChars = 0, se devuelve una cadena vacía. Si numChars < 0, se devuelve la cadena de entrada. Si la cadena es null, se devuelve una cadena vacía. Si la cadena contiene menos caracteres que el número especificado en numChars, se devuelve una cadena idéntica a la cadena (es decir, que contiene todos los caracteres en el parámetro 1).

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
String Obligatorio Atributo Cadena de la que se van a devolver caracteres.
NumChars Obligatorio Entero Número que identifica el número de caracteres que se va a devolver desde el principio (la izquierda) de la cadena.

Ejemplo:Left("John Doe", 3)

devuelve “Joh”.


Mid

Función: Mid(source, start, length)

Descripción: devuelve una subcadena del valor de origen. Una subcadena es una cadena que contiene sólo algunos de los caracteres de la cadena de origen.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
de origen Obligatorio String Normalmente el nombre del atributo.
start Obligatorio Entero Índice de la cadena de source donde debe empezar la subcadena. El primer carácter de la cadena tiene el índice 1, el segundo carácter tiene el índice 2, y así sucesivamente.
length Obligatorio Entero Longitud de la subcadena. Si el valor de length acaba fuera de la cadena de origen, la función devolverá una substring desde el índice start hasta el final de la cadena de origen.

NormalizeDiacritics

Función: NormalizeDiacritics(source)

Descripción: Requiere un argumento de cadena. Devuelve la cadena, pero se reemplazan todos los caracteres diacríticos por sus equivalentes no diacríticos. Normalmente se usa para convertir nombres y apellidos que contienen caracteres diacríticos (acentos) en valores legales que se pueden emplear en diversos identificadores de usuario como, nombres principales de usuario, nombres de cuenta de SAM y direcciones de correo electrónico.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
de origen Obligatorio String Normalmente un atributo de nombre o de apellido.
Carácter con marca diacrítica Carácter normalizado Carácter con marca diacrítica Carácter normalizado
ä, à, â, ã, å, á, ą, ă, ā, ā́, ā̀, ā̂, ā̃, ǟ, ā̈, ǡ, a̱, å̄ a Ä, À, Â, Ã, Å, Á, Ą, Ă, Ā, Ā́, Ā̀, Ā̂, Ā̃, Ǟ, Ā̈, Ǡ, 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̄, Ṉ No
ö, ò, ő, õ, ô, ó, ō, ṓ, ṑ, ō̂, ō̃, ȫ, ō̈, ǭ, ȭ, ȱ, 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̱ y Ÿ, Ý, Ȳ, Ȳ́, Ȳ̀, Ȳ̃, Y̱ Y
ź, ž, ż, z̄, ẕ z Ź, Ž, Ż, Z̄, Ẕ Z

Quitar los signos diacríticos de una cadena

Ejemplo: reemplazar caracteres que contienen acentos por otros equivalentes que no los contienen.

Expresión: NormalizeDiacritics([givenName])

Entrada/salida de ejemplo:

  • INPUT (givenName): "Zoë"
  • SALIDA: "Zoe"

Not

Función: Not(source)

Descripción: Invierte el valor booleano de source. Si el valor de source es True, devuelve False. De lo contrario, devuelve True.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
de origen Obligatorio Cadena booleana Los valores de source esperados son "True" o "False".

Ahora

Función: Now()

Descripción:
La función Now devuelve una cadena que representa el valor UTC DateTime actual en el formato M/d/yyyy h:mm:ss tt.

Ejemplo:Now()
Valor de ejemplo devuelto 7/2/2021 3:33:38 PM


NumFromDate

Función: NumFromDate(value)

Descripción: La función NumFromDate convierte un valor DateTime a un formato de Active Directory necesario para establecer atributos como accountExpires. Use esta función para convertir valores DateTime recibidos de aplicaciones de recursos humanos en la nube, como WorkDay y SuccessFactors, a su representación de AD equivalente.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
value Obligatorio String Cadena de fecha y hora en formato ISO 8601. Si la variable de fecha tiene un formato diferente, use la función FormatDateTime para convertir la fecha al formato ISO 8601.

Ejemplo:

  • Ejemplo de Workday: supongamos que desea asignar el atributo ContractEndDate desde Workday, que tiene el formato 2020-12-31-08:00 al campo accountExpires en AD. Aquí se muestra cómo puede usar esta función y cambiar el desplazamiento de zona horaria para que coincida con la configuración regional. NumFromDate(Join("", FormatDateTime([ContractEndDate], ,"yyyy-MM-ddzzz", "yyyy-MM-dd"), " 23:59:59-08:00"))

  • Ejemplo de SuccessFactors: supongamos que desea asignar el atributo endDate de SuccessFactors, que tiene el formato M/d/yyyy hh:mm:ss tt al campo accountExpires en AD. Aquí se muestra cómo puede usar esta función y cambiar el desplazamiento de zona horaria para que coincida con la configuración regional. NumFromDate(Join("",FormatDateTime([endDate], ,"M/d/yyyy hh:mm:ss tt","yyyy-MM-dd")," 23:59:59-08:00"))


PCase

Función: PCase(source, wordSeparators)

Descripción: la función PCase convierte el primer carácter de cada palabra de una cadena a mayúsculas, y todos los demás caracteres se convierten a minúsculas.

Parámetros:

Nombre Obligatorio/opcional Tipo Notas
de origen Obligatorio String Un valor source que se va a convertir en mayúsculas o minúsculas.
wordSeparators Opcional String Especifique un conjunto de caracteres que se usarán como separadores de palabras (por ejemplo: " ,-'").

Observaciones:

  • Si no se especifica el parámetro wordSeparators,, PCase invoca internamente la función de .NET ToTitleCase para convertir la cadena de origen en mayúsculas y minúsculas correctas. La función de .NET ToTitleCase admite un conjunto completo de categorías de caracteres Unicode como separadores de palabras.
    • Carácter de espacio
    • Carácter de nueva línea
    • Caracteres de control, como CRLF
    • Caracteres de control Format
    • Caracteres ConnectorPunctuation, como el guion bajo
    • DashPunctuation caracteres como guiones y guiones (incluidos caracteres como En Dash, Em Dash, guion doble, etc.)
    • OpenPunctuation y ClosePunctuation caracteres que se producen en pares como paréntesis, corchete de llave, corchete angular, etc.
    • Caracteres InitialQuotePunctuation y FinalQuotePunctuation, como comillas simples, comillas dobles y comillas angulares.
    • OtherPunctuation caracteres como signo de exclamación, signo de número, signo de porcentaje, ampersand, asterisco, coma, parada completa, dos puntos, punto y coma, etc.
    • MathSymbol caracteres como signo más, signo menor y mayor que, línea vertical, tilde, signo igual, etc.
    • CurrencySymbol caracteres como signo de dólar, signo de centavo, signo de libra, signo de euro, etc.
    • ModifierSymbol caracteres como la longitud, los acentos, las puntas de flecha, etc.
    • OtherSymbol caracteres como el signo de copyright, el signo de grado, el signo registrado, etc.
  • Si se especifica el parámetro wordSeparators, PCase solo usa los caracteres especificados como separadores de palabras.

Ejemplo:

Supongamos que va a obtener los atributos firstName y lastName de SAP SuccessFactors y en RR. HH. ambos atributos están en mayúsculas. Con la función PCase, puede convertir el nombre a mayúsculas y minúsculas como se muestra aquí.

Expresión Entrada Resultados Notas
PCase([firstName]) firstName = "PABLO GONSALVES (SECOND)" "Pablo Gonsalves (Second)" Como no se especifica el parámetro wordSeparators, la función PCase usa el juego de caracteres separadores de palabras predeterminado.
PCase([lastName]," '-") lastName = "PINTO-DE'SILVA" "Pinto-De'Silva" La función PCase usa caracteres en el parámetro wordSeparators para identificar palabras y transformarlas en mayúsculas y minúsculas correctas.
PCase(Join(" ",[firstName],[lastName])) firstName = GREGORY, lastName = "JAMES" "Gregory James" Puede anidar la función Join en PCase. Como no se especifica el parámetro wordSeparators, la función PCase usa el juego de caracteres separadores de palabras predeterminado.

RandomString

Función: RandomString(Length, MinimumNumbers, MinimumSpecialCharacters, MinimumCapital, MinimumLowerCase, CharactersToAvoid)

Descripción: La función RandomString genera una cadena aleatoria en función de las condiciones especificadas. Los caracteres permitidos pueden identificarse aquí.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
Duración Obligatorio Number Longitud total de la cadena aleatoria. Debe ser mayor o igual que la suma de MinimumNumbers, MinimumSpecialCharacters y MinimumCapital. 256 caracteres como máximo.
MinimumNumbers Obligatorio Number Números mínimos en la cadena aleatoria.
MinimumSpecialCharacters Obligatorio Number Número mínimo de caracteres especiales.
MinimumCapital Obligatorio Number Número mínimo de letras mayúsculas en la cadena aleatoria.
MinimumLowerCase Obligatorio Number Número mínimo de letras minúsculas en la cadena aleatoria.
CharactersToAvoid Opcional String Caracteres que se excluirán al generar la cadena aleatoria.

Ejemplo 1: Generación de una cadena aleatoria sin restricciones de caracteres especiales: RandomString(6,3,0,0,3) Genera una cadena aleatoria con 6 caracteres. La cadena contiene 3 números y 3 caracteres en minúsculas (1a73qt).

Ejemplo 2: Generación de una cadena aleatoria con restricciones de caracteres especiales: RandomString(10,2,2,2,1,"?,") Genera una cadena aleatoria con 10 caracteres. La cadena contiene al menos 2 números, 2 caracteres especiales, 2 letras mayúsculas, 1 letra minúscula y excluye los caracteres "?" y "," (1@!2BaRg53).


Redact

Función: Redact ()

Descripción: la función Redact reemplaza el valor del atributo por el literal de cadena "[Redact]" en los registros de aprovisionamiento.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
attribute/value Requerido String Especifique el atributo o la constante o cadena que se censuran de los registros.

Ejemplo 1: Censurar un atributo: Redact([userPrincipalName]) Quita userPrincipalName de los registros de aprovisionamiento.

Ejemplo 2: Censurar una cadena: Redact("StringToBeRedacted") Quita una cadena constante de los registros de aprovisionamiento.

Ejemplo 3: Censurar una cadena aleatoria: Redact(RandomString(6,3,0,0,3)) Quita la cadena aleatoria de los registros de aprovisionamiento.


RemoveDuplicates

Función: RemoveDuplicates(attribute)

Descripción: la función RemoveDuplicates toma una cadena multivalor y garantiza que cada valor es único.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
attribute Obligatorio Atributo multivalor Atributo multivalor en el que se han quitado los duplicados

Ejemplo:RemoveDuplicates([proxyAddresses]) devuelve un atributo proxyAddress saneado donde se han quitado todos los valores duplicados.


Replace

Función: Replace(source, oldValue, regexPattern, regexGroupName, replacementValue, replacementAttributeName, template)

Descripción: Reemplaza los valores de una cadena de manera que distinga entre mayúsculas y minúsculas. La función se comporta de forma diferente según los parámetros proporcionados:

  • Cuando se proporcionan oldValue y replacementValue:

    • Reemplaza todas las apariciones de oldValue en el origen por replacementValue
  • Cuando se proporcionan oldValue y template:

    • Reemplaza todas las ocurrencias de oldValue en template por el valor de source
  • Cuando se proporcionan regexPattern y replacementValue:

    • La función aplica regexPattern a la cadena de source, y usted puede usar los nombres de grupo regex para construir la cadena para replacementValue

Nota

Para obtener más información sobre las construcciones de agrupación de regex y las subexpresión con nombre, vea Construcciones de agrupamiento en expresiones regulares.

  • Cuando se proporcionan regexPattern, regexGroupName y replacementValue:

    • La función aplica regexPattern a la cadena de source y reemplaza todos los valores que coinciden con regexGroupName por replacementValue
  • Cuando se proporcionan regexPattern, regexGroupName y replacementAttributeName:

    • Si source tiene algún valor, se devuelve source
    • Si source no tiene ningún valor, la función aplica regexPattern a replacementAttributeName y devuelve el valor que coincide con regexGroupName

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
de origen Obligatorio String Normalmente el nombre del atributo del objeto source.
oldValue Opcional String Valor que se va a reemplazar en source o template.
regexPattern Opcional String Patrón Regex del valor que se va a reemplazar en source. Cuando se usa replacementAttributeName, regexPattern se aplica para extraer un valor de replacementAttributeName.
regexGroupName Opcional String Nombre del grupo dentro de regexPattern. Cuando se usa replacementAttributeName con nombre, se extrae el valor del grupo regex con nombre de replacementAttributeName y se devuelve como valor de reemplazo.
replacementValue Opcional String Nuevo valor para reemplazar uno anterior.
replacementAttributeName Opcional String Nombre del atributo que se usará para el valor de reemplazo
template Opcional String Cuando se proporciona el valor de template, buscamos oldValue dentro de la plantilla y lo reemplazamos por el valor de source.

Reemplazar los caracteres con una expresión regular

Ejemplo 1: Usar oldValue y replacementValue para reemplazar toda la cadena de origen por otra cadena.

Supongamos que el sistema de recursos humanos tiene un atributo BusinessTitle. Como parte de los cambios de puesto recientes, su empresa quiere actualizar a cualquier persona que ostente el título empresarial "Product Developer" a "Software Engineer". A continuación, en este caso, puede usar la siguiente expresión en la asignación de atributos.

Replace([BusinessTitle],"Product Developer", , , "Software Engineer", , )

  • source: [BusinessTitle]
  • oldValue: "Product Developer"
  • replacementValue: "Software Engineer"
  • Salida de la expresión: Software Engineer

Ejemplo 2: Usar oldValue y la plantilla para insertar la cadena de origen en otra cadena con plantillas.

El parámetro oldValue es un nombre poco apropiado en este escenario. En realidad, es el valor que se reemplaza.
Supongamos que desea generar siempre el id. de inicio de sesión con el formato <username>@contoso.com. Hay un atributo de origen denominado UserID y desea usar este valor para la parte <username> del id. de inicio de sesión. A continuación, en este caso, puede usar la siguiente expresión en la asignación de atributos.

Replace([UserID],"<username>", , , , , "<username>@contoso.com")

  • origen: [UserID] = "jsmith"
  • oldValue: "<username>"
  • template: "<username>@contoso.com"
  • Salida de la expresión: "jsmith@contoso.com"

Ejemplo 3: Usar regexPattern y replacementValue para extraer una parte de la cadena de origen y reemplazarla por una cadena vacía o un valor personalizado creado mediante patrones regex o nombres de grupo regex.

Supongamos que tiene un atributo de origen telephoneNumber que tiene componentes country code y phone number separados por un carácter de espacio. Por ejemplo,+91 9998887777. En este caso, puede usar la siguiente expresión en la asignación de atributos para extraer el número de teléfono de diez dígitos.

Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})", , "${phoneNumber}", , )

  • origen: [telephoneNumber] = "+91 9998887777"
  • regexPattern: "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})"
  • replacementValue: "${phoneNumber}"
  • Salida de la expresión: 9998887777

También puede usar este patrón para quitar caracteres y contraer una cadena. Por ejemplo, la expresión siguiente quita paréntesis, guiones y caracteres de espacio en la cadena de número móvil y devuelve solo dígitos.

Replace([mobile], , "[()\\s-]+", , "", , )

  • source: [mobile] = "+1 (999) 888-7777"
  • regexPattern: "[()\\s-]+"
  • replacementValue: "" (cadena vacía)
  • Salida de la expresión: 19998887777

Ejemplo 4: Usar regexPattern, regexGroupName y replacementValue para extraer una parte de la cadena de origen y reemplazarla por otro valor literal o una cadena vacía.

Supongamos que el sistema de origen tiene un atributo AddressLineData con dos componentes: número de calle y nombre de calle. Como parte de un traslado reciente, supongamos que el número de calle de la dirección ha cambiado y desea actualizar solo la parte del número de calle de la línea de dirección. En este caso, puede usar la siguiente expresión en la asignación de atributos para extraer el número de calle.

Replace([AddressLineData], ,"(?<streetNumber>^\\d*)","streetNumber", "888", , )

  • origen:[AddressLineData] = "545 Tremont Street"
  • regexPattern: "(?<streetNumber>^\\d*)"
  • regexGroupName: "streetNumber"
  • replacementValue: "888"
  • Salida de la expresión: 888 Tremont Street

Este es otro ejemplo en el que el sufijo de dominio de un UPN se reemplaza por una cadena vacía para generar el id. de inicio de sesión sin sufijo de dominio.

Replace([userPrincipalName], , "(?<Suffix>@(.)*)", "Suffix", "", , )

  • origen: [userPrincipalName] = "jsmith@contoso.com"
  • regexPattern: "(?<Suffix>@(.)*)"
  • regexGroupName: "Suffix"
  • replacementValue: "" (cadena vacía)
  • Salida de la expresión: jsmith

Ejemplo 5: Usar regexPattern, regexGroupName y replacementAttributeName para controlar escenarios en los que el atributo de origen está vacío o no tiene un valor.

Supongamos que el sistema de origen tiene un atributo telephoneNumber. Si telephoneNumber está vacío, desea extraer los 10 dígitos del atributo de número móvil. A continuación, en este caso, puede usar la siguiente expresión en la asignación de atributos.

Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})", "phoneNumber" , , [mobile], )

  • origen:[telephoneNumber] = "" (cadena vacía)
  • regexPattern: "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})"
  • regexGroupName: "phoneNumber"
  • replacementAttributeName: [mobile] = "+91 8887779999"
  • Salida de la expresión: 8887779999

Ejemplo 6: Necesita buscar los caracteres que coincidan con un valor de expresión regular y quitarlos.

Replace([mailNickname], , "[a-zA-Z_]*", , "", , )

  • source [mailNickname]
  • oldValue: "john_doe72"
  • replaceValue: ""
  • Salida de la expresión: 72

SelectUniqueValue

Función: SelectUniqueValue(uniqueValueRule1, uniqueValueRule2, uniqueValueRule3, …)

Descripción: Requiere dos argumentos como mínimo, que son las reglas de generación de valor único definidas con expresiones. La función evalúa cada regla y, a continuación, comprueba la unicidad del valor generado en el directorio o la aplicación de destino. Se devuelve el primer valor único encontrado. Si todos los valores ya existen en el destino, la entrada se deposita y el motivo se anota en los registros de auditoría. No hay ningún límite superior para el número de argumentos que se pueden proporcionar.

  • Esta función debe estar en el nivel superior y no se puede anidar.

  • Esta función no se puede aplicar a los atributos que tienen una precedencia de coincidencia.

  • Esta función solo está destinada a usarse para creaciones de entradas. Al usarla con un atributo, establezca la propiedad Apply Mapping (Aplicar asignación) en Solo durante la creación del objeto.

  • Esta función se admite actualmente para su uso con estas aplicaciones:

    • Aprovisionamiento de usuarios de Workday a Active Directory
    • Aprovisionamiento de usuarios de SuccessFactors a Active Directory
    • Aprovisionamiento controlado por API en Active Directory local

    SelectUniqueValue no se admite para su uso con otras aplicaciones de aprovisionamiento.

  • La búsqueda LDAP que realiza la función SelectUniqueValue en Active Directory local no aplica el escape a caracteres especiales como signos diacríticos. Si pasa una cadena como "Jéssica Smith" que contiene un carácter especial, se producirán errores de procesamiento. Anide la función NormalizeDiacritics como se muestra en este ejemplo para normalizar los caracteres especiales.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
uniqueValueRule1 … uniqueValueRuleN Al menos se requieren dos, sin límite superior String Lista de reglas de generación de valor único para realizar la evaluación.

Generación de un valor único para el atributo userPrincipalName (UPN)

Ejemplo: según el nombre del usuario, el segundo nombre y los apellidos, deberá generar un valor para el atributo UPN y comprobar si es único en el directorio de AD de destino antes de asignarlo al atributo UPN.

Expresión:

    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/salida de ejemplo:

  • INPUT (PreferredFirstName): "John"
  • INPUT (PreferredLastName): "Smith"
  • OUTPUT: "John.Smith@contoso.com" si el valor de UPN John.Smith@contoso.com no existe aún en el directorio
  • OUTPUT: "J.Smith@contoso.com" si el valor de UPN John.Smith@contoso.com ya existe en el directorio
  • OUTPUT: "Jo.Smith@contoso.com" si los dos valores de UPN anteriores ya existen en el directorio

SingleAppRoleAssignment

Función: SingleAppRoleAssignment([appRoleAssignments])

Descripción: Devuelve una única función appRoleAssignment de la lista de todas las funciones appRoleAssignments asignadas a un usuario para una aplicación determinada. Esta función es necesaria para convertir el objeto appRoleAssignments en una cadena de nombre de rol único. El procedimiento recomendado es asegurarse de que solo se asigna un elemento appRoleAssignment a un usuario cada vez. Esta función no se admite en escenarios donde los usuarios tienen varias asignaciones de roles de aplicación.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
[appRoleAssignments] Obligatorio String Objeto [appRoleAssignments] .

Dividir

Función: Split(source, delimiter)

Descripción: divide una cadena en una matriz de varios valores, usando el carácter delimitador especificado.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
de origen Obligatorio String de origen que se actualiza.
delimitador Obligatorio Cadena Especifica el carácter que se usa para dividir la cadena (ejemplo: ",").

Dividir una cadena en una matriz con varios valores

Ejemplo: debe tomar una lista de cadenas delimitadas con comas y dividir esas cadenas en una matriz que se pueda incluir en un atributo de varios valores, como el atributo PermissionSets de Salesforce. En este ejemplo, se rellena una lista de conjuntos de permisos en extensionAttribute5 en Microsoft Entra ID.

Expresión: Split([extensionAttribute5], ",")

Entrada/salida de ejemplo:

  • INPUT (extensionAttribute5):
  • OUTPUT: ["PermissionSetOne", "PermissionSetTwo"]

StripSpaces

Función: StripSpaces(source)

Descripción: quita todos los caracteres de espacio (" ") de la cadena de origen.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
de origen Obligatorio String de origen que se actualiza.

Switch

Función: Switch(source, defaultValue, key1, value1, key2, value2, …)

Descripción: Cuando el valor de source coincide con una key, devuelve el value de dicha key. Si el valor de source no coincide con ninguna clave, devuelve defaultValue. Los parámetros key y value siempre deben estar emparejados. La función espera siempre un número par de parámetros. La función no se debe usar para atributos referenciales, como administrador.

Nota

La función Switch realiza una comparación de cadenas que distinguen mayúsculas de minúsculas de los valores source y key. Si desea realizar una comparación sin diferenciar mayúsculas de minúsculas, normalice la cadena source antes de la comparación mediante una función ToLower anidada y asegúrese de que todas las cadenas key usan minúsculas. Ejemplo: Switch(ToLower([statusFlag]), "0", "true", "1", "false", "0"). En este ejemplo, el atributo sourcestatusFlag puede tener valores ("True", "true" o "TRUE"). Sin embargo, la función Switch siempre lo convierte en una cadena en minúsculas "true" antes de la comparación con los parámetros key.

Precaución

Para el parámetro source, no use las funciones anidadas IsPresent, IsNull ni IsNullOrEmpty. En su lugar, emplee una cadena vacía literal como uno de los valores de clave.
Ejemplo: Switch([statusFlag], "Default Value", "true", "1", "", "0"). En este ejemplo, si el atributo source statusFlag está vacío, la función Switch devuelve el valor 0.

Precaución

Incidencia: el servicio de aprovisionamiento establece incorrectamente un valor de atributo en “null” en el sistema de destino cuando se usa una instrucción “switch”.
Resolución: usa una instrucción IIF en lugar de una instrucción “switch” para evitar valores “null” inesperados o usa la función IgnoreFlowIfNullOrEmpty con la instrucción “switch”. Por ejemplo, switch([companyName], "External", "Company A", "A", "Company B", "B") debería representarse como IIF([companyName] = "Company A", "A", IIF([companyName] = "Company B", "B", "External")). En los casos en los que el valor predeterminado es un atributo, usa una expresión como IgnoreFlowIfNullOrEmpty(switch([companyName], [companyName], "Company A", "A", "Company B", "B")).
Causa principal: esta incidencia es específica de escenarios en los que Microsoft Entra ID es el sistema de origen y la instrucción “switch” contiene un valor predeterminado.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
de origen Obligatorio String Source que se actualiza.
defaultValue Opcional String Valor predeterminado que se usará si el origen no coincide con ninguna clave. Puede tratarse de una cadena vacía ("").
key Obligatorio String Key con que se compara el valor de source.
value Obligatorio String Valor de reemplazo para el source que coincide con la clave.

Reemplazar un valor basado en un conjunto predefinido de opciones

Ejemplo: definir la zona horaria del usuario según el código de estado almacenado en el Id. de Microsoft Entra. Si el código de estado no coincide con ninguna de las opciones predefinidas, use el valor predeterminado de "Australia/Sídney".

Expresión:Switch([state], "Australia/Sydney", "NSW", "Australia/Sydney","QLD", "Australia/Brisbane", "SA", "Australia/Adelaide")

Entrada/salida de ejemplo:

  • INPUT (state): "QLD"
  • OUTPUT: "Australia/Brisbane"

ToLower

Función: ToLower (origen, referencia cultural)

Descripción: Toma un valor de cadena de origen y se convierte a minúsculas mediante las reglas de referencia cultural que se hayan especificado. Si no se especifica información de referencia cultural, se usa la referencia cultural invariable.

Si desea establecer los valores existentes en el sistema de destino en minúsculas, actualice el esquema de la aplicación de destino y establezca la propiedad caseExact en "true" para el atributo que sea de su interés.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
de origen Obligatorio String Normalmente el nombre del atributo del objeto de origen
referencia cultural Opcional String El formato para el nombre de la referencia cultural según RFC 4646 es languagecode2-country/regioncode2, donde languagecode2 es el código de idioma de dos letras y country/regioncode2 es el código de referencia de subcultura de dos letras. Algunos ejemplos son a ja-JP para japonés (Japón) y en-US para inglés (Estados Unidos). En casos donde un código de idioma de dos letras no está disponible, se usa un código de tres letras derivado de ISO 639-2.

Conversión del valor generado de userPrincipalName (UPN) a minúsculas

Ejemplo: desea generar el valor de UPN concatenando los campos de origen PreferredFirstName y PreferredLastName, y convirtiendo todos los caracteres a minúsculas.

ToLower(Join("@", NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))), "contoso.com"))

Entrada/salida de ejemplo:

  • INPUT (PreferredFirstName): "John"
  • INPUT (PreferredLastName): "Smith"
  • OUTPUT: "john.smith@contoso.com"

ToUpper

Función: ToUpper (origen, referencia cultural)

Descripción: Toma un valor de cadena de origen y se convierte a mayúsculas mediante las reglas de referencia cultural que se hayan especificado. Si no se especifica información de referencia cultural, se usa la referencia cultural invariable.

Si desea establecer los valores existentes en el sistema de destino en mayúsculas, actualice el esquema de la aplicación de destino y establezca la propiedad caseExact en "true" para el atributo que sea de su interés.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
de origen Obligatorio String Normalmente el nombre del atributo del objeto de origen.
referencia cultural Opcional String El formato para el nombre de la referencia cultural según RFC 4646 es languagecode2-country/regioncode2, donde languagecode2 es el código de idioma de dos letras y country/regioncode2 es el código de referencia de subcultura de dos letras. Algunos ejemplos son a ja-JP para japonés (Japón) y en-US para inglés (Estados Unidos). En casos donde un código de idioma de dos letras no está disponible, se usa un código de tres letras derivado de ISO 639-2.

Word

Función: Word(String,WordNumber,Delimiters)

Descripción: : la función Word devuelve una palabra incluida en una cadena, según los parámetros que describen los delimitadores que se usarán y el número de palabras que se devolverán. : cada cadena de caracteres en la cadena separada por uno de los caracteres en los delimitadores se identifica como palabras:

Si el número es < 1, se devuelve una cadena vacía. Si la cadena es Null, se devuelve una cadena vacía. Si la cadena contiene menos palabras o si la cadena no contiene palabras identificadas por los delimitadores, se devuelve una cadena vacía.

Parámetros:

Nombre Obligatorio/Repetición Tipo Notas
String Obligatorio Atributo multivalor Cadena de la que se va a devolver una palabra.
WordNumber Obligatorio Entero Número que identifica qué número de palabras debe devolver.
delimiters Obligatorio String Cadena que representa los delimitadores que deben usarse para identificar palabras.

Ejemplo:Word("The quick brown fox",3," ")

Devuelve "brown".

Word("This,string!has&many separators",3,",!&#")

Devuelve "has".


Ejemplos

En esta sección se proporcionan más ejemplos de uso de las funciones de expresión.

Seccionar un nombre de dominio conocido

Seccione un nombre de dominio conocido del correo electrónico de un usuario para obtener el nombre de usuario. Por ejemplo, si el dominio es "contoso.com", puede usar la expresión siguiente:

Expresión:Replace([mail], "@contoso.com", , ,"", ,)

Ejemplo de entrada y salida:

  • ENTRADA (mail): "john.doe@contoso.com"
  • SALIDA: "john.doe"

Generar el alias de usuario concatenando partes de nombre y apellidos

Genere un alias de usuario con las tres primeras letras del nombre del usuario y las cinco primeras letras del apellido del usuario.

Expresión:Append(Mid([givenName], 1, 3), Mid([surname], 1, 5))

Entrada/salida de ejemplo:

  • INPUT (givenName): "John"
  • INPUT (surname): "Doe"
  • SALIDA: "JohDoe"

Agregue una coma entre el apellido y el nombre.

Agregue una coma entre el apellido y el nombre.

Expresión:Join(", ", "", [surname], [givenName])

Entrada/salida de ejemplo:

  • INPUT (givenName): "John"
  • INPUT (surname): "Doe"
  • OUTPUT: "Doe, John"

Genere un id. para un usuario en función de su id. de objeto de Microsoft Entra. Elimine las letras del id. y añada 1000 al principio.

Esta expresión permite generar un identificador para un usuario que comienza con 1000 y es probable que sea único.

Expresión: Join("", 1000, Replace(ConvertToUTF8Hex([objectId]), , "[a-zA-Z_]*", , "", , ))

Entrada/salida de ejemplo:

  • ENTRADA: "00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
  • SALIDA: "100064303565343762312333930392343435612626135652636136306362633065346234"