> ## Documentation Index
> Fetch the complete documentation index at: https://docs.iru.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Asignación de atributos

> Asigna campos de una fuente de directorio conectada a atributos de perfil de Iru Identity y transforma los valores con expresiones IQL antes de que lleguen a los perfiles de usuario.

Cuando Iru lee usuarios de una fuente conectada, necesita saber qué campo entrante
rellena cada atributo de perfil de Iru y, a veces, cómo transformar el valor
por el camino. Esto se describe con una **asignación de atributos**: para cada atributo
de perfil de Iru, escribes una **expresión** que produce su valor a partir de los
campos de la fuente.

<Note>
  **Dónde se aplica la asignación de atributos.** Escribes asignaciones de atributos cuando
  **conectas un sistema de origen** (los conectores de [Workday](/es/identity/directory/hris-workday)
  y [BambooHR](/es/identity/directory/hris-bamboohr), que exponen
  sus propios campos para que los asignes). **No** se aplica a la
  [importación CSV](/es/identity/directory/importing-users): un CSV usa un conjunto fijo de
  columnas predefinidas, por lo que no hay expresiones que escribir.
</Note>

<Info>
  Las expresiones de asignación se escriben en **IQL**, el mismo lenguaje de expresiones que Iru
  usa para la [asignación de claims y atributos de
  aplicaciones](/es/identity/getting-started/iql-expressions), las reglas de Auto Groups y
  los filtros de listas. Aquí asignarás los campos de un **sistema de origen** conectado a
  los [atributos de perfil](/es/identity/directory/schema) de tu directorio;
  consulta [Expresiones IQL](/es/identity/getting-started/iql-expressions) para ver la
  sintaxis completa.
</Info>

## Cómo funciona una asignación

Cada fila de una asignación empareja un **destino** (un atributo de perfil de Iru) con una
**expresión** que obtiene datos de los campos de **origen**.

```mermaid theme={null}
flowchart LR
  subgraph source["Campos de origen"]
    a["first_name"]
    b["email_work"]
  end
  expr["Expresión IQL"] --> target["Atributo de perfil de Iru"]
  a --> expr
  b --> expr
```

<Steps>
  <Step title="Descubre los campos de origen">
    Iru lee el conjunto de campos que tu fuente pone a disposición. Esos nombres de campo
    se convierten en los **identificadores** a los que puedes hacer referencia en las expresiones. Consulta
    [Directory Sync](/es/identity/directory/directory-sync) para ver cómo
    encaja el descubrimiento en la configuración.
  </Step>

  <Step title="Escribe una expresión por atributo">
    Para cada atributo de Iru que quieras rellenar, escribe una expresión IQL. Un nombre
    de campo válido puede usarse solo. Cualquier otro nombre se busca en `__source`.
    Las expresiones más largas combinan o transforman esos valores.
  </Step>

  <Step title="Iru la valida">
    Las expresiones se comprueban mientras escribes y de nuevo al guardar, de modo que los errores (un
    campo desconocido, un error de tipo) aparecen antes de llegar a una sincronización.
  </Step>

  <Step title="Se ejecuta en cada sincronización">
    Cuando se ejecuta la sincronización, Iru evalúa cada expresión con la fila entrante y
    escribe el resultado en el atributo.
  </Step>
</Steps>

<Tip>
  Elige un campo de origen estable y único como identificador que vincule un registro
  de origen con un usuario de Iru, de modo que cada sincronización se resuelva en exactamente un usuario.
</Tip>

## Escribir expresiones

Las expresiones hacen referencia a los campos de tu fuente y pueden transformarlos: convertir a
mayúsculas o minúsculas, dividir, concatenar, elegir un elemento de una lista, etc. La referencia
completa (objetos, funciones, operadores y ejemplos) está en la página
[Expresiones IQL](/es/identity/getting-started/iql-expressions), ya que el mismo
lenguaje impulsa tanto la asignación del directorio como la asignación de aplicaciones.

Un nombre de campo puede usarse solo cuando es un identificador IQL válido. Empieza con
una letra ASCII o un guion bajo, y el resto son letras ASCII, números y
guiones bajos. Un nombre como `prénom` queda fuera de ese conjunto, por lo que se lee desde
`__source`.

```
// Use a field as-is
work_email

// Combine fields into a display name
first_name + " " + last_name

// The local part of an email, before the @
work_email.split("@")[0]
```

Cuando el nombre tiene un espacio, un guion, dos puntos u otro símbolo, o cuando es una palabra
clave de IQL como `in`, `null`, `true` o `if`, búscalo por su nombre exacto en
`__source`. `__source` es un mapa con todos los campos de la fuente. Un punto entre
nombres válidos accede a un valor anidado, como en `name.givenName`. Un nombre de campo que
incluye un punto sigue siendo una sola clave: `__source["name.givenName"]`. Escrito sin más,
`Email - Work` es una resta, e `in` es el operador de pertenencia.

```
__source["Email - Work"]
__source["Email - Work"].lowerAscii()
```

El editor de asignaciones reescribe estos campos como `__source["…"]` cuando los eliges o
los escribes. Un nombre válido se queda tal cual. Aun así, puedes escribir `__source["…"]` para un
nombre válido. Si el nombre contiene `"` o `\`, coloca una barra invertida antes de cada uno
dentro de los corchetes, como en `__source["Title \"Legal\""]`. El editor añade ese
escape cuando reescribe el campo. Consulta
[Transformar valores con IQL](/es/identity/directory/directory-sync#transform-values-with-iql)
para ver cómo funciona esto en la pestaña Mapping.

## Valores asignados vacíos

Un valor asignado vacío o nulo borra el valor existente de ese atributo personalizado.
La sincronización continúa.

Para un atributo personalizado de tipo **Boolean**, **Date**, **Integer** o **Decimal**, un
valor asignado vacío o nulo no hace fallar la sincronización. Cuando transformes un campo de
texto que pueda estar vacío, como al dividir un correo electrónico, protege el valor en la
[pestaña Mapping](/es/identity/directory/directory-sync#transform-values-with-iql).

## Próximos pasos

<CardGroup cols={2}>
  <Card title="Expresiones IQL" icon="brackets-curly" href="/es/identity/getting-started/iql-expressions">
    La referencia completa de IQL: objetos, funciones, operadores y ejemplos.
  </Card>

  <Card title="Sincronización del directorio" icon="building-user" href="/es/identity/directory/directory-sync">
    Conecta un sistema de RR. HH. y configura las asignaciones que impulsan estas expresiones.
  </Card>

  <Card title="Atributos de perfil" icon="table-list" href="/es/identity/directory/schema">
    Los destinos en los que escriben tus expresiones.
  </Card>

  <Card title="Grupos automáticos" icon="wand-magic-sparkles" href="/es/identity/directory/auto-groups">
    Otro lugar donde los atributos impulsan la automatización en tu directorio.
  </Card>
</CardGroup>
