Escritura de expresiones para la asignación de atributos en Azure Active DirectoryWriting Expressions for Attribute Mappings in Azure Active Directory

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.When you configure provisioning to a SaaS application, one of the types of attribute mappings that you can specify is an expression mapping. En estos casos, 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.For these, you must write a script-like expression that allows you to transform your users’ data into formats that are more acceptable for the SaaS application.

Información general sobre la sintaxisSyntax Overview

La sintaxis de expresiones para asignaciones de atributos recuerda a las funciones de Visual Basic para Aplicaciones (VBA).The syntax for Expressions for Attribute Mappings is reminiscent of Visual Basic for Applications (VBA) functions.

  • Toda la expresión se tiene que definir en términos de funciones, que constan de un nombre seguido de argumentos entre paréntesis:The entire expression must be defined in terms of functions, which consist of a name followed by arguments in parentheses:
    FunctionName(<<argument 1>>,<<argument N>>)FunctionName(<<argument 1>>,<<argument N>>)

  • Es posible anidar funciones dentro de otras.You may nest functions within each other. Por ejemplo:For example:
    FunctionOne(FunctionTwo(<<argument1>>))FunctionOne(FunctionTwo(<<argument1>>))

  • Puede transformar tres tipos diferentes de argumentos en funciones:You can pass three different types of arguments into functions:

    1. Atributos, que deben ir entre corchetes.Attributes, which must be enclosed in square brackets. Por ejemplo: [NombreAtributo]For example: [attributeName]
    2. Constantes de cadena, que deben ir entre comillas.String constants, which must be enclosed in double quotes. Por ejemplo: "Estados Unidos"For example: "United States"
    3. Otras funciones.Other Functions. Por ejemplo: FunctionOne(<<argument1>>, FunctionTwo(<<argument2>>))For example: 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 ().For string constants, if you need a backslash ( \ ) or quotation mark ( " ) in the string, it must be escaped with the backslash ( \ ) symbol. Por ejemplo: "Nombre de la empresa: \"Contoso\""For example: "Company name: \"Contoso\""

Lista de funcionesList of Functions

Append      FormatDateTime      Join      Mid           NormalizeDiacritics Not      Replace      SelectUniqueValue     SingleAppRoleAssignment     Split    StripSpaces      Switch     ToLower     ToUpperAppend      FormatDateTime      Join      Mid           NormalizeDiacritics Not      Replace      SelectUniqueValue     SingleAppRoleAssignment     Split    StripSpaces      Switch     ToLower     ToUpper


AppendAppend

Función:Function:
Append(source, suffix)Append(source, suffix)

Descripción:Description:
adopta un valor de la cadena de origen y anexa el sufijo al final de la misma.Takes a source string value and appends the suffix to the end of it.

Parámetros:Parameters:

NOMBREName Obligatorio/RepeticiónRequired/ Repeating typeType NotasNotes
de origensource ObligatorioRequired CadenaString Normalmente el nombre del atributo del objeto de origen.Usually name of the attribute from the source object.
suffixsuffix ObligatorioRequired CadenaString La cadena que se va a anexar al final del valor de origen.The string that you want to append to the end of the source value.

FormatDateTimeFormatDateTime

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

Descripción:Description:
adopta una cadena de fecha en un formato y la convierte a un formato distinto.Takes a date string from one format and converts it into a different format.

Parámetros:Parameters:

NOMBREName Obligatorio/RepeticiónRequired/ Repeating typeType NotasNotes
de origensource ObligatorioRequired CadenaString Normalmente el nombre del atributo del objeto de origen.Usually name of the attribute from the source object.
inputFormatinputFormat ObligatorioRequired CadenaString Formato esperado del valor de origen.Expected format of the source value. Para conocer los formatos admitidos, consulte https://msdn.microsoft.com/library/8kb3ddd4%28v=vs.110%29.aspx.For supported formats, see https://msdn.microsoft.com/library/8kb3ddd4%28v=vs.110%29.aspx.
outputFormatoutputFormat ObligatorioRequired CadenaString Formato de la fecha de salida.Format of the output date.

UniónJoin

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

Descripción:Description:
Join() es similar a Append(), excepto en que puede combinar varios valores de cadena de source en una sola cadena, y cada valor estará separado por una cadena de separator.Join() is similar to Append(), except that it can combine multiple source string values into a single string, and each value will be separated by a separator string.

Si uno de los valores de origen es un atributo multivalor, cada valor de ese atributo se unirá, separado por el valor del separador.If one of the source values is a multi-value attribute, then every value in that attribute will be joined together, separated by the separator value.

Parámetros:Parameters:

NOMBREName Obligatorio/RepeticiónRequired/ Repeating typeType NotasNotes
separatorseparator ObligatorioRequired CadenaString Cadena utilizada para separar los valores de origen cuando se concatenan en una sola cadena.String used to separate source values when they are concatenated into one string. Puede ser "" si no es necesario ningún separador.Can be "" if no separator is required.
source1 … sourceNsource1 … sourceN Obligatorio, número variable de vecesRequired, variable-number of times CadenaString Valores de cadena que se van a agrupar.String values to be joined together.

MidMid

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

Descripción:Description:
devuelve una subcadena del valor de origen.Returns a substring of the source value. Una subcadena es una cadena que contiene sólo algunos de los caracteres de la cadena de origen.A substring is a string that contains only some of the characters from the source string.

Parámetros:Parameters:

NOMBREName Obligatorio/RepeticiónRequired/ Repeating typeType NotasNotes
de origensource ObligatorioRequired CadenaString Normalmente el nombre del atributo.Usually name of the attribute.
startstart ObligatorioRequired integerinteger Índice de la cadena de source donde debe empezar la subcadena.Index in the source string where substring should start. El primer carácter de la cadena tendrá el índice de 1, el segundo carácter tendrá el índice de 2, y así sucesivamente.First character in the string will have index of 1, second character will have index 2, and so on.
lengthlength ObligatorioRequired integerinteger Longitud de la subcadena.Length of the substring. Si length acaba fuera de la cadena de source, la función devolverá una subcadena desde el índice de start hasta el final de la cadena de source.If length ends outside the source string, function will return substring from start index till end of source string.

NormalizeDiacriticsNormalizeDiacritics

Función:Function:
NormalizeDiacritics(source)NormalizeDiacritics(source)

Descripción:Description:
Requiere un argumento de cadena.Requires one string argument. Devuelve la cadena, pero se reemplazan todos los caracteres diacríticos por sus equivalentes no diacríticos.Returns the string, but with any diacritical characters replaced with equivalent non-diacritical characters. 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.Typically used to convert first names and last names containing diacritical characters (accent marks) into legal values that can be used in various user identifiers such as user principal names, SAM account names, and email addresses.

Parámetros:Parameters:

NOMBREName Obligatorio/RepeticiónRequired/ Repeating typeType NotasNotes
de origensource ObligatorioRequired CadenaString Normalmente un atributo de nombre o de apellido.Usually a first name or last name attribute.

notNot

Función:Function:
Not(source)Not(source)

Descripción:Description:
Invierte el valor booleano de source.Flips the boolean value of the source. Si el valor de source es "True", devuelve "False".If source value is "True", returns "False". De lo contrario, devuelve "True".Otherwise, returns "True".

Parámetros:Parameters:

NOMBREName Obligatorio/RepeticiónRequired/ Repeating typeType NotasNotes
de origensource ObligatorioRequired Cadena booleanaBoolean String Los valores de source esperados son "True" o "False".Expected source values are "True" or "False".

ReplaceReplace

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

Descripción:Description:
Reemplaza valores dentro de una cadena.Replaces values within a string. Funciona de forma diferente dependiendo de los parámetros proporcionados:It works differently depending on the parameters provided:

  • Cuando se proporcionan oldValue y replacementValue:When oldValue and replacementValue are provided:

    • Reemplaza todas las ocurrencias de oldValue en el origen por replacementValueReplaces all occurrences of oldValue in the source with replacementValue
  • Cuando se proporcionan oldValue y template:When oldValue and template are provided:

    • Reemplaza todas las ocurrencias de oldValue en template por el valor de sourceReplaces all occurrences of the oldValue in the template with the source value
  • Cuando se proporcionan regexPattern y replacementValue:When regexPattern and replacementValue are provided:

    • La función aplica regexPattern a la cadena de source, y usted puede usar los nombres de grupo regex para construir la cadena para replacementValueThe function applies the regexPattern to the source string and you can use the regex group names to construct the string for replacementValue
  • Cuando se proporcionan regexPattern, regexGroupName y replacementValue:When regexPattern, regexGroupName, replacementValue are provided:

    • La función aplica regexPattern a la cadena de source y reemplaza todos los valores que coinciden con regexGroupName por replacementValueThe function applies the regexPattern to the source string and replaces all values matching regexGroupName with replacementValue
  • Cuando se proporcionan regexPattern, regexGroupName y replacementAttributeName:When regexPattern, regexGroupName, replacementAttributeName are provided:

    • Si source no tiene un valor, se devuelve source.If source has no value, source is returned
    • Si source tiene un valor, la función aplica regexPattern a la cadena de source y reemplaza todos los valores coincidentes de regexGroupName por el valor asociado con replacementAttributeNameIf source has a value, the function applies the regexPattern to the source string and replaces all values matching regexGroupName with the value associated with replacementAttributeName

Parámetros:Parameters:

NOMBREName Obligatorio/RepeticiónRequired/ Repeating typeType NotasNotes
de origensource ObligatorioRequired CadenaString Normalmente el nombre del atributo del objeto source.Usually name of the attribute from the source object.
oldValueoldValue OpcionalOptional CadenaString Valor que se va a reemplazar en source o template.Value to be replaced in source or template.
regexPatternregexPattern OpcionalOptional CadenaString Patrón Regex del valor que se va a reemplazar en source.Regex pattern for the value to be replaced in source. O bien, cuando se usa replacementPropertyName, patrón para extraer el valor de la propiedad replacementPropertyName.Or, when replacementPropertyName is used, pattern to extract value from replacementPropertyName.
regexGroupNameregexGroupName OpcionalOptional CadenaString Nombre del grupo dentro de regexPattern.Name of the group inside regexPattern. Solo cuando se usa replacementPropertyName, extraeremos el valor de este grupo como replacementValue de replacementPropertyName.Only when replacementPropertyName is used, we will extract value of this group as replacementValue from replacementPropertyName.
replacementValuereplacementValue OpcionalOptional CadenaString Nuevo valor para reemplazar uno anterior.New value to replace old one with.
replacementAttributeNamereplacementAttributeName OpcionalOptional CadenaString Nombre del atributo que se usará para el valor de reemplazoName of the attribute to be used for replacement value
templatetemplate OpcionalOptional CadenaString Cuando se proporcione el valor de template, buscaremos oldValue dentro de la plantilla y lo reemplazaremos por el valor de source.When template value is provided, we will look for oldValue inside the template and replace it with source value.

SelectUniqueValueSelectUniqueValue

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

Descripción:Description:
Requiere dos argumentos como mínimo, que son las reglas de generación de valor único definidas con expresiones.Requires a minimum of two arguments, which are unique value generation rules defined using expressions. 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.The function evaluates each rule and then checks the value generated for uniqueness in the target app/directory. Se devolverá el primer valor único encontrado.The first unique value found will be the one returned. Si todos los valores ya existen en el destino, la entrada se depositará y el motivo se anota en los registros de auditoría.If all of the values already exist in the target, the entry will get escrowed and the reason gets logged in the audit logs. No hay ningún límite superior para el número de argumentos que se pueden proporcionar.There is no upper bound to the number of arguments that can be provided.

Nota

  1. Esta es una función de nivel superior, no se puede anidar.This is a top-level function, it cannot be nested.
  2. Esta función no se puede aplicar a los atributos que tienen una precedencia de coincidencia.This function cannot be applied to attributes that have a matching precedence.
  3. Esta función solo está destinada a usarse para creaciones de entradas.This function is only meant to be used for entry creations. Al usarla con un atributo, establezca la propiedad Apply Mapping (Aplicar asignación) en Solo durante la creación del objeto.When using it with an attribute, set the Apply Mapping property to Only during object creation.

Parámetros:Parameters:

NOMBREName Obligatorio/RepeticiónRequired/ Repeating typeType NotasNotes
uniqueValueRule1 … uniqueValueRuleNuniqueValueRule1 … uniqueValueRuleN Al menos se requieren dos, sin límite superiorAt least 2 are required, no upper bound CadenaString Lista de reglas de generación de valor único para realizar la evaluación.List of unique value generation rules to evaluate.

SingleAppRoleAssignmentSingleAppRoleAssignment

Función:Function:
SingleAppRoleAssignment([appRoleAssignments])SingleAppRoleAssignment([appRoleAssignments])

Descripción:Description:
Devuelve una única función appRoleAssignment de la lista de todas las funciones appRoleAssignments asignadas a un usuario para una aplicación determinada.Returns a single appRoleAssignment from the list of all appRoleAssignments assigned to a user for a given application. Esta función es necesaria para convertir el objeto appRoleAssignments en una cadena de nombre de rol único.This function is required to convert the appRoleAssignments object into a single role name string. Tenga en cuenta que el procedimiento recomendado consiste en asegurarse de que solo una función appRoleAssignment esté asignada a un usuario a la vez. Si se asignan varios roles, la cadena del rol devuelta podría no ser predecible.Note that the best practice is to ensure only one appRoleAssignment is assigned to one user at a time, and if multiple roles are assigned the role string returned may not be predictable.

Parámetros:Parameters:

NOMBREName Obligatorio/RepeticiónRequired/ Repeating typeType NotasNotes
[appRoleAssignments][appRoleAssignments] ObligatorioRequired CadenaString Objeto [appRoleAssignments] .[appRoleAssignments] object.

DividirSplit

Función:Function:
Split(source, delimiter)Split(source, delimiter)

Descripción:Description:
divide una cadena en una matriz de varios valores, usando el carácter delimitador especificado.Splits a string into a mulit-valued array, using the specified delimiter character.

Parámetros:Parameters:

NOMBREName Obligatorio/RepeticiónRequired/ Repeating typeType NotasNotes
de origensource ObligatorioRequired CadenaString de origen que se actualiza.source value to update.
delimitadordelimiter ObligatorioRequired CadenaString Especifica el carácter que se usará para dividir la cadena (ejemplo: ",").Specifies the character that will be used to split the string (example: ",")

StripSpacesStripSpaces

Función:Function:
StripSpaces(source)StripSpaces(source)

Descripción:Description:
quita todos los caracteres de espacio (" ") de la cadena de origen.Removes all space (" ") characters from the source string.

Parámetros:Parameters:

NOMBREName Obligatorio/RepeticiónRequired/ Repeating typeType NotasNotes
de origensource ObligatorioRequired CadenaString de origen que se actualiza.source value to update.

SwitchSwitch

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

Descripción:Description:
Cuando el valor de source coincide con una key, devuelve el value de dicha key.When source value matches a key, returns value for that key. Si el valor de source no coincide con ninguna clave, devuelve defaultValue.If source value doesn't match any keys, returns defaultValue. Los parámetros key y value siempre deben estar emparejados.Key and value parameters must always come in pairs. La función espera siempre un número par de parámetros.The function always expects an even number of parameters.

Parámetros:Parameters:

NOMBREName Obligatorio/RepeticiónRequired/ Repeating typeType NotasNotes
de origensource ObligatorioRequired CadenaString Source que se actualiza.Source value to update.
defaultValuedefaultValue OpcionalOptional CadenaString Valor predeterminado que se usará si el origen no coincide con ninguna clave.Default value to be used when source doesn't match any keys. Puede tratarse de una cadena vacía ("").Can be empty string ("").
keykey ObligatorioRequired CadenaString Key con que se compara el valor de source.Key to compare source value with.
valuevalue ObligatorioRequired CadenaString Valor de reemplazo para el source que coincide con la clave.Replacement value for the source matching the key.

ToLowerToLower

Función:Function:
ToLower (origen, referencia cultural)ToLower(source, culture)

Descripción:Description:
Toma un valor de cadena de origen y se convierte a minúsculas mediante las reglas de referencia cultural que se hayan especificado.Takes a source string value and converts it to lower case using the culture rules that are specified. Si no hay ninguna información de referencia cultural especificada, se usará la referencia cultural invariable.If there is no culture info specified, then it will use Invariant culture.

Parámetros:Parameters:

NOMBREName Obligatorio/RepeticiónRequired/ Repeating typeType NotasNotes
de origensource ObligatorioRequired CadenaString Normalmente el nombre del atributo del objeto de origenUsually name of the attribute from the source object
referencia culturalculture OpcionalOptional CadenaString 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.The format for the culture name based on RFC 4646 is languagecode2-country/regioncode2, where languagecode2 is the two-letter language code and country/regioncode2 is the two-letter subculture code. Algunos ejemplos son a ja-JP para japonés (Japón) y en-US para inglés (Estados Unidos).Examples include ja-JP for Japanese (Japan) and en-US for English (United States). 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.In cases where a two-letter language code is not available, a three-letter code derived from ISO 639-2 is used.

ToUpperToUpper

Función:Function:
ToUpper (origen, referencia cultural)ToUpper(source, culture)

Descripción:Description:
Toma un valor de cadena de origen y se convierte a mayúsculas mediante las reglas de referencia cultural que se hayan especificado.Takes a source string value and converts it to upper case using the culture rules that are specified. Si no hay ninguna información de referencia cultural especificada, se usará la referencia cultural invariable.If there is no culture info specified, then it will use Invariant culture.

Parámetros:Parameters:

NOMBREName Obligatorio/RepeticiónRequired/ Repeating typeType NotasNotes
de origensource ObligatorioRequired CadenaString Normalmente el nombre del atributo del objeto de origen.Usually name of the attribute from the source object.
referencia culturalculture OpcionalOptional CadenaString 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.The format for the culture name based on RFC 4646 is languagecode2-country/regioncode2, where languagecode2 is the two-letter language code and country/regioncode2 is the two-letter subculture code. Algunos ejemplos son a ja-JP para japonés (Japón) y en-US para inglés (Estados Unidos).Examples include ja-JP for Japanese (Japan) and en-US for English (United States). 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.In cases where a two-letter language code is not available, a three-letter code derived from ISO 639-2 is used.

EjemplosExamples

Seccionar un nombre de dominio conocidoStrip known domain name

Debe seccionar un nombre de dominio conocido de correo electrónico de un usuario para obtener un nombre de usuario.You need to strip a known domain name from a user’s email to obtain a user name.
Por ejemplo, si el dominio es "contoso.com", puede usar la expresión siguiente:For example, if the domain is "contoso.com", then you could use the following expression:

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

Ejemplo de entrada y salida:Sample input / output:

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

Anexar sufijos constantes a nombres de usuarioAppend constant suffix to user name

Si está utilizando un espacio aislado de Salesforce, deberá anexar un sufijo adicional a los nombres de usuario antes de sincronizarlas.If you are using a Salesforce Sandbox, you might need to append an additional suffix to all your user names before synchronizing them.

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

Entrada/salida de ejemplo:Sample input/output:

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

Generar el alias de usuario concatenando partes de nombre y apellidosGenerate user alias by concatenating parts of first and last name

Debe generar un alias de usuario con las tres primeras letras del nombre del usuario y las cinco primeras letras del apellido del usuario.You need to generate a user alias by taking first 3 letters of user's first name and first 5 letters of user's last name.

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

Entrada/salida de ejemplo:Sample input/output:

  • INPUT (givenName): "John"INPUT (givenName): "John"
  • INPUT (surname): "Doe"INPUT (surname): "Doe"
  • OUTPUT: "JohnDoe"OUTPUT: "JohDoe"

Quitar los signos diacríticos de una cadenaRemove diacritics from a string

Necesita reemplazar caracteres que contienen acentos por otros equivalentes que no los contienen.You need to replace characters containing accent marks with equivalent characters that don't contain accent marks.

Expresión:Expression:
NormalizeDiacritics([givenName])NormalizeDiacritics([givenName])

Entrada/salida de ejemplo:Sample input/output:

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

Dividir una cadena en una matriz con varios valoresSplit a string into a multi-valued array

Debe tomar una lista de cadenas delimitada con comas y dividir esas cadenas en una matriz que se pueda conectar a un atributo de varios valores, como el atributo PermissionSets de Salesforce.You need to take a comma-delimited list of strings, and split them into an array that can be plugged into a multi-value attribute like Salesforce's PermissionSets attribute. En este ejemplo, una lista de conjuntos de permisos se ha rellenado en extensionAttribute5 en Azure AD.In this example, a list of permission sets has been populated in extensionAttribute5 in Azure AD.

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

Entrada/salida de ejemplo:Sample input/output:

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

Fecha de resultado como una cadena en un formato determinadoOutput date as a string in a certain format

Desea enviar las fechas a una aplicación SaaS con un formato determinado.You want to send dates to a SaaS application in a certain format.
Por ejemplo, desea dar formato a las fechas de ServiceNow.For example, you want to format dates for ServiceNow.

Expresión:Expression:

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

Entrada/salida de ejemplo:Sample input/output:

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

Reemplazar un valor basado en un conjunto predefinido de opcionesReplace a value based on predefined set of options

Debe definir la zona horaria del usuario según el código de estado almacenado en Azure AD.You need to define the time zone of the user based on the state code stored in Azure AD.
Si el código de estado no coincide con ninguna de las opciones predefinidas, use el valor predeterminado de "Australia/Sídney".If the state code doesn't match any of the predefined options, use default value of "Australia/Sydney".

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

Entrada/salida de ejemplo:Sample input/output:

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

Reemplazar los caracteres con una expresión regularReplace characters using a regular expression

Debe buscar los caracteres que coincidan con un valor de expresión regular y quitarlos.You need to find characters that match a regular expression value and remove them.

Expresión:Expression:

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

Entrada/salida de ejemplo:Sample input/output:

  • INPUT (mailNickname: "john_doe72"INPUT (mailNickname: "john_doe72"
  • OUTPUT: "72"OUTPUT: "72"

Conversión del valor generado de userPrincipalName (UPN) a minúsculasConvert generated userPrincipalName (UPN) value to lower case

En el ejemplo siguiente, el valor de UPN se genera mediante la concatenación de los campos de origen PreferredFirstName y PreferredLastName, y la función ToLower opera en la cadena generada para convertir todos los caracteres a minúsculas.In the example below, the UPN value is generated by concatenating the PreferredFirstName and PreferredLastName source fields and the ToLower function operates on the generated string to convert all characters to lower case.

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

Entrada/salida de ejemplo:Sample input/output:

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

Generación de un valor único para el atributo userPrincipalName (UPN)Generate unique value for userPrincipalName (UPN) attribute

Según el nombre del usuario, el segundo nombre y el apellido, deberá generar un valor para el atributo UPN y comprobar su unicidad en el directorio de AD de destino antes de asignar el valor al atributo UPN.Based on the user's first name, middle name and last name, you need to generate a value for the UPN attribute and check for its uniqueness in the target AD directory before assigning the value to the UPN attribute.

Expresión:Expression:

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:Sample input/output:

  • INPUT (PreferredFirstName): "John"INPUT (PreferredFirstName): "John"
  • INPUT (PreferredLastName): "Smith"INPUT (PreferredLastName): "Smith"
  • OUTPUT: "John.Smith@contoso.com" si el valor de UPN John.Smith@contoso.com no existe aún en el directorioOUTPUT: "John.Smith@contoso.com" if UPN value of John.Smith@contoso.com doesn't already exist in the directory
  • OUTPUT: "J.Smith@contoso.com" si el valor de UPN John.Smith@contoso.com ya existe en el directorioOUTPUT: "J.Smith@contoso.com" if UPN value of John.Smith@contoso.com already exists in the directory
  • OUTPUT: "Jo.Smith@contoso.com" si los dos valores de UPN anteriores ya existen en el directorioOUTPUT: "Jo.Smith@contoso.com" if the above two UPN values already exist in the directory