> ## 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.

# Directory Sync

> Mantén tu directorio actualizado conectando un HRIS o una solución de directorio para la sincronización automática, o importa usuarios desde un archivo.

Mantén tu
[directorio](/es/identity/directory/directory-overview) completo y actualizado
desde el sistema que es la fuente de verdad sobre quién forma parte de tu organización. Hay
dos formas de hacerlo:

<CardGroup cols={2}>
  <Card title="Conectar un sistema de origen" icon="plug">
    Vincula una **fuente en vivo** (un **HRIS** como **Workday** o **BambooHR**, u
    otra **solución de directorio**) e Iru obtiene los usuarios de ella y sincroniza de forma
    programada, creando, actualizando y eliminando usuarios por sí solo. Hay más proveedores
    en camino.
  </Card>

  <Card title="Importar un archivo (manual)" icon="file-csv" href="/es/identity/directory/importing-users">
    ¿No hay un conector directo para tu sistema? Exporta tus usuarios a un **CSV** (desde un
    sistema de RR. HH. heredado, un **sistema de información estudiantil (SIS)** o cualquier sistema desde el que puedas
    generar un archivo) y súbelo. Vuelve a subir una exportación actualizada siempre que tu
    lista cambie para mantener a los usuarios actualizados.
  </Card>
</CardGroup>

Cuando conectas una fuente en vivo, las actualizaciones llegan a Iru por sí solas, de modo que cuando
alguien se incorpora, cambia de rol o se va, tu directorio lo refleja sin trabajo
manual. El resto de esta guía explica cómo conectar un sistema de origen; para la vía
manual, consulta [Importación CSV](/es/identity/directory/importing-users).

Hoy puedes conectar los sistemas de RR. HH. **Workday** y **BambooHR**, y hay más
proveedores (incluidas otras soluciones de directorio) en camino. La configuración sigue el mismo
flujo guiado para cada uno; solo un par de pasos varían según el proveedor.

<Note>
  Conectar un sistema de origen requiere acceso de administrador a tu tenant de Iru y una
  cuenta de administrador de ese sistema. Según el proveedor, introduces
  las credenciales de integración en Iru o autorizas a Iru en la propia ventana de
  consentimiento del proveedor. La conexión solo **lee** usuarios de la fuente; nunca
  escribe en ella.
</Note>

<Frame caption="Las fuentes conectadas aparecen en Directory, en la pestaña Sync.">
  <img src="https://mintcdn.com/iru/Pd7a0-sHKi0jGjE6/assets/media/images/directory-sync-list.webp?fit=max&auto=format&n=Pd7a0-sHKi0jGjE6&q=85&s=bdfcf859acb179f4473455ec5f090787" alt="La página Directory de Iru en la pestaña Sync, con la lista de fuentes conectadas y su estado." width="2000" height="1098" data-path="assets/media/images/directory-sync-list.webp" />
</Frame>

## Cómo funciona de un vistazo

1. **Elige** tu proveedor.
2. **Conecta:** introduce las credenciales en Iru (Workday) o autoriza a Iru en tu proveedor
   (BambooHR) para que pueda leer los datos de tus usuarios.
3. **Configura** (solo algunos proveedores): indica a Iru dónde están tus datos.
4. **Asigna** los campos de la fuente a los campos de Iru.
5. **Activa:** habilita la sincronización y elige con qué frecuencia se ejecuta.

```mermaid theme={null}
flowchart LR
  connect["Conectar<br/>+ autorizar"] --> discover["Iru lee los<br/>campos disponibles"]
  discover --> map["Asignar campos<br/>origen → Iru"]
  map --> enable["Activar"]
  enable --> sync["Sincronización programada<br/>o bajo demanda"]
  sync -->|"crear / actualizar / eliminar"| dir["Directorio"]
  sync -->|"problemas"| errors["Errores de sincronización para revisar"]
```

Una vez activada una conexión, Iru sincroniza según el **intervalo** que establezcas, desde cada
**30 minutos** hasta una vez por **semana**, o **solo manual** si prefieres ejecutar
las sincronizaciones tú mismo con **Sincronizar ahora**.

## Ideas que se aplican a todas las conexiones

* **Tu sistema de origen manda.** Una vez conectado, es la autoridad sobre los datos de los usuarios;
  Iru refleja lo que envía.
* **Cada usuario necesita un ID estable.** Eliges un campo que identifique de forma única y
  permanente a cada usuario, para que Iru siempre actualice el registro correcto.
* **Tú decides cómo se corresponden los campos.** Iru no adivina. Asignas cada campo de origen
  al campo de Iru correspondiente y puedes transformar valores con **IQL** cuando no
  se corresponden uno a uno.

## Configuración

<Steps>
  <Step title="Elige tu proveedor">
    En **Directory → Sync**, selecciona **Connect Source** y elige tu proveedor:
    **Workday** o **BambooHR**.

    <Frame caption="Connect Source muestra los sistemas de origen que puedes conectar.">
      <img src="https://mintcdn.com/iru/Pd7a0-sHKi0jGjE6/assets/media/images/connect-source.png?fit=max&auto=format&n=Pd7a0-sHKi0jGjE6&q=85&s=66f7f44acd51140036fbe7ae9707faa3" alt="El selector Select user source abierto desde Connect Source, que ofrece Workday, Bamboo y una opción Other Sources marcada como Coming Soon." width="1188" height="764" data-path="assets/media/images/connect-source.png" />
    </Frame>
  </Step>

  <Step title="Conéctate a tu proveedor">
    Asigna a la conexión un **nombre visible** (y una **descripción** opcional) y, después, concede a
    Iru acceso de lectura a tu proveedor. Cómo hacerlo depende del proveedor:

    * **Workday:** introduce en Iru el host de la instancia, el tenant de Workday, el Integration System User
      y la contraseña.
    * **BambooHR:** introduce el **dominio de tu empresa** en Iru y, después, autoriza en una
      **ventana de BambooHR**. Inicia sesión en BambooHR y selecciona **Permitir acceso** en la
      pantalla **Share access with Iru Identity**. Tus credenciales de BambooHR van a
      BambooHR, no a Iru, y no hay que introducir ninguna clave de API. Completa la autorización
      en un plazo de **15 minutos** o vuelve a Iru e inicia la conexión de nuevo.

    Consulta las [guías de proveedores](#choose-your-provider) para ver los campos y pantallas exactos.

    <Frame caption="Conexión de Workday: credenciales del Integration System User introducidas en Iru.">
      <img src="https://mintcdn.com/iru/60YZAZS1iNMrBv2w/assets/media/images/iru-identity-connect-workday.png?fit=max&auto=format&n=60YZAZS1iNMrBv2w&q=85&s=637b56461035f9b7762f63e0d01daabb" alt="El paso Connect with Workday, que solicita Integration user y Password." width="1266" height="267" data-path="assets/media/images/iru-identity-connect-workday.png" />
    </Frame>

    <Tip>
      Usa una cuenta de administración o integración dedicada siempre que puedas, para que la conexión
      siga funcionando independientemente del estado de cualquier usuario concreto.
    </Tip>
  </Step>

  <Step title="Configura dónde están tus datos (algunos proveedores)">
    Algunos proveedores requieren que indiques a Iru la fuente de datos correcta. **Workday** solicita
    el **nombre del informe** que expone los campos de trabajadores que quieres; el Integration
    System User del paso anterior es quien ejecuta ese informe. **BambooHR** lee
    su directorio de empleados estándar, por lo que omite este paso. Consulta las
    [guías de proveedores](#choose-your-provider) más abajo.
  </Step>

  <Step title="Asigna tus datos a Iru">
    Iru lee los campos que tu proveedor pone a disposición y los presenta para que los
    hagas coincidir. Consulta [Asignar tus datos](#map-your-data) más abajo.
  </Step>

  <Step title="Finaliza y activa">
    Guarda tus asignaciones para finalizar la configuración. Una conexión nueva empieza **desactivada**, por lo que
    no se sincroniza nada hasta que la hayas revisado; después, actívala con **Activar** para ejecutar la primera
    importación. Establece el **intervalo de sincronización** en la pestaña Configuration de la conexión, o déjalo
    en **Manual only** y usa **Sincronizar ahora** cuando quieras una actualización.
  </Step>
</Steps>

## Asignar tus datos

La asignación es donde se realiza la mayor parte de la configuración: conectar los campos de tu fuente con los campos
correspondientes de Iru.

<Frame caption="La pestaña Mapping: una expresión de identificador único más una fila por atributo, cada una rellenada por un campo de origen o una expresión IQL.">
  <img src="https://mintcdn.com/iru/yv46VZ-WbN1GdStp/assets/media/images/sync-connection-mapping.webp?fit=max&auto=format&n=yv46VZ-WbN1GdStp&q=85&s=aad2660a55fb85c678742bdbc11b9596" alt="La pestaña Mapping de una conexión, que muestra el campo Unique user identifier y una lista Attributes que asigna campos de Bamboo (firstName, lastName, workEmail) a atributos de Iru (name.firstName, name.lastName, primaryEmail.email), con algunos valores creados a partir de expresiones IQL." width="1888" height="1036" data-path="assets/media/images/sync-connection-mapping.webp" />
</Frame>

### Establecer un identificador único

Elige el campo que identifica de forma única a cada usuario, a menudo un **ID de empleado** o
un identificador estable similar. Iru se basa en un valor estable por usuario para actualizar el
registro *correcto* en cada sincronización, incluso cuando cambian los nombres o los correos electrónicos.

<Warning>
  Elige algo que nunca cambie para un usuario. **Una vez que guardes la conexión,
  el identificador único no se puede cambiar.** Cambiarlo impediría que Iru
  reconociera a los usuarios que ya ha importado.
</Warning>

### Hacer coincidir los campos con Iru

Para cada atributo de Iru, elige el campo de origen que debe rellenarlo. Cuatro atributos
son **obligatorios** y siempre se asignan:

* **Correo electrónico**
* **Nombre**
* **Apellido**
* **Nombre de usuario**

Cualquier atributo que hayas marcado como obligatorio en tu
[esquema](/es/identity/directory/schema) también es obligatorio aquí. Todo lo
demás es opcional, pero asignarlo aporta la imagen completa de cada usuario:
cargo, departamento, responsable, ubicación y más.

### Transformar valores con IQL

La mayoría de los campos solo hay que elegirlos. Cuando el valor que quieres debe *construirse*
a partir de un campo en lugar de copiarse tal cual, escribe una breve expresión **IQL**. Mientras
escribes, Iru sugiere los campos disponibles y comprueba tu expresión, de modo que detectas
un error tipográfico o un campo inexistente *antes* de guardar, no durante una sincronización. Consulta
[Asignación de atributos](/es/identity/directory/attribute-mapping#writing-expressions) y
[Expresiones IQL](/es/identity/getting-started/iql-expressions) para ver la sintaxis completa.

#### Cómo se lee un nombre de campo

IQL lee un nombre de campo como código. Un nombre sin más funciona cuando es un identificador
IQL válido: empieza con una letra ASCII o un guion bajo, y cada carácter
posterior es una letra ASCII, un número o un guion bajo. `first_name` cumple los requisitos, así que
lo escribes tal cual. Un punto une nombres válidos para acceder a un valor anidado, como en
`name.givenName`. Un campo cuyo propio nombre contiene un punto es una sola clave, por lo que lo buscas
como `__source["name.givenName"]`.

Algunos sistemas de origen envían nombres que no cumplen esa regla:

* Nombres con espacios, guiones, dos puntos u otros símbolos, como `Email - Work` o
  `urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department`
* Nombres que también son palabras clave de IQL, como `in`, `null`, `true` o `if`

Escrito sin más, `Email - Work` se lee como `Email` menos `Work`, e `in` se lee como el
operador de pertenencia. Para leer el campo, búscalo por su nombre exacto en `__source`, un
mapa con todos los campos de la fuente:

```
__source["Email - Work"]
```

Cuando eliges o escribes uno de estos campos en el editor de asignaciones, Iru lo reescribe
como `__source["…"]`. Puedes usar esa forma para cualquier campo, y funciona dentro de una
expresión más larga como cualquier otro valor:

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

Si un nombre de campo contiene comillas dobles (`"`) o una barra invertida (`\`), coloca una
barra invertida delante de cada una dentro de los corchetes. Un campo llamado `Title "Legal"`
se escribe `__source["Title \"Legal\""]`. El editor añade esas barras invertidas cuando
reescribe el campo.

Ejemplos habituales (usa los nombres de campo de tu proveedor):

* **Crear un nombre de usuario a partir de un correo electrónico** (todo lo que va antes de `@`):
  `email.split("@")[0]`
* **Combinar dos campos** en un solo valor:
  `firstName + " " + lastName`
* **Preferir un campo y recurrir a otro** cuando el primero está vacío:
  `optional.ofNonZeroValue(workEmail).orValue(homeEmail)`

<Tip>
  Cuando transformes un campo de texto que pueda estar vacío, protege el valor para que la expresión siga ejecutándose. Envuélvelo con `optional.ofNonZeroValue(...).orValue("")` antes de transformarlo. Por ejemplo, obtén un nombre de usuario solo cuando exista un correo electrónico:
  `optional.ofNonZeroValue(email).orValue("").split("@")[0]`

  Un valor asignado vacío o nulo para un atributo personalizado de tipo **Boolean**, **Date**, **Integer** o **Decimal** no hace fallar la sincronización. Borra el valor existente. Consulta [Valores asignados vacíos](/es/identity/directory/attribute-mapping#blank-mapped-values).
</Tip>

## Elegir tu proveedor

El flujo es el mismo para cada uno; estas guías cubren los pasos que difieren.

<CardGroup cols={2}>
  <Card title="Conectar Workday" icon="briefcase" href="/es/identity/directory/hris-workday">
    Lee trabajadores desde un informe de Workday. Incluye el paso del informe y del usuario
    de integración.
  </Card>

  <Card title="Conectar BambooHR" icon="seedling" href="/es/identity/directory/hris-bamboohr">
    Lee desde el directorio de empleados estándar de BambooHR. No hay que configurar ningún informe.
  </Card>
</CardGroup>

| Paso | Workday | BambooHR |
| - | - | - |
| Conectar | Credenciales introducidas en Iru | Iniciar sesión y **Permitir acceso** en BambooHR |
| Configurar un informe | Sí | No (campos estándar) |
| Asignar campos (ID único, campos obligatorios, IQL) | Sí | Sí |
| Activar y sincronizar de forma programada | Sí | Sí |

## Qué ocurre en cada sincronización

Una vez activada, Iru sincroniza según el intervalo que elijas y concilia tu directorio
con el sistema de origen:

| Cambio en el origen | Qué hace Iru |
| - | - |
| Aparece un usuario nuevo | Crea un usuario correspondiente en tu directorio |
| Cambian los datos de un usuario | Actualiza los atributos de perfil del usuario |
| Un usuario ya no está presente | Elimina al usuario de tu directorio |

A medida que llegan y cambian los perfiles, los [Auto Groups](/es/identity/directory/auto-groups)
actualizan su pertenencia automáticamente, de modo que el acceso sigue a los usuarios sin trabajo
manual.

<Frame caption="Effective Users de una conexión: los usuarios sincronizados actualmente desde la fuente.">
  <img src="https://mintcdn.com/iru/yv46VZ-WbN1GdStp/assets/media/images/sync-connection-effective-users.webp?fit=max&auto=format&n=yv46VZ-WbN1GdStp&q=85&s=811705e35cdd3db62a8016e32e0635fe" alt="La pestaña Effective Users de una conexión, con la lista de usuarios sincronizados, como Ashley Adams y Charlotte Abbott, con su fecha de creación e ID." width="1888" height="1036" data-path="assets/media/images/sync-connection-effective-users.webp" />
</Frame>

## Programación de la sincronización y sincronización bajo demanda

En la pestaña **Configuración** de una conexión, establece **Sync frequency** con el
control **Interval**. Elige con qué frecuencia Iru obtiene el directorio más reciente, o configúralo en
**Manual only** y sincroniza bajo demanda.

Intervalos disponibles:

* Solo manual (sin sincronización automática)
* Cada 30 minutos
* Cada hora
* Cada 2 horas
* Cada 4 horas
* Cada 8 horas
* Cada 12 horas
* Cada día
* Cada 2 días
* Cada semana

<Frame caption="Elegir con qué frecuencia Iru sincroniza la conexión.">
  <img src="https://mintcdn.com/iru/60YZAZS1iNMrBv2w/assets/media/images/iru-identity-sync-frequency.png?fit=max&auto=format&n=60YZAZS1iNMrBv2w&q=85&s=8f34a961b593788e00bde0adff90a0a8" alt="La sección Sync schedule con el menú Interval abierto, que muestra Manual only y opciones desde Every 30 minutes hasta Every week." width="1012" height="716" data-path="assets/media/images/iru-identity-sync-frequency.png" />
</Frame>

En la pestaña **Sincronizar**, usa **Sincronizar ahora** para iniciar una ejecución inmediatamente y **Refresh** para
recargar la lista de ejecuciones de sincronización. Cada ejecución lee a todas las personas de tu fuente de directorio y
las añade o actualiza en Iru. Selecciona una ejecución para ver lo que hizo y lo que no pudo
sincronizar. Una ejecución fallida se reintenta en la siguiente sincronización programada.

## Gestionar la conexión a lo largo del tiempo

Desde la página de detalles de una conexión puedes:

* **Volver a autenticar:** envía credenciales nuevas o vuelve a aprobar el acceso en tu
  proveedor cuando la conexión caduque o sea rechazada, sin tocar tus
  asignaciones.
* **Editar tu configuración o asignaciones:** ajusta lo que se importa a medida que evolucionan tus
  necesidades.
* **Establecer el intervalo de sincronización** o ejecutar **Sincronizar ahora**.
* **Forzar la sincronización de atributos** (Workday): vuelve a leer los últimos campos disponibles de
  tu informe sin esperar.
* **Revisar la actividad, los usuarios efectivos y los errores de sincronización:** ve lo que está llegando
  y detecta cualquier cosa que requiera atención.
* **Activar o desactivar** la conexión, o eliminarla.

<Frame caption="La página de detalles de una conexión: estado, salud de la conexión y Volver a autenticar.">
  <img src="https://mintcdn.com/iru/60YZAZS1iNMrBv2w/assets/media/images/iru-identity-start-reauthentication-bamboo.png?fit=max&auto=format&n=60YZAZS1iNMrBv2w&q=85&s=a3415b8304ce762d249f68120a108691" alt="La pestaña Configuration de una conexión de Bamboo que muestra Status Enabled, detalles de conexión con Needs re-authentication y una acción Volver a autenticar en el menú de la fila." width="2048" height="527" data-path="assets/media/images/iru-identity-start-reauthentication-bamboo.png" />
</Frame>

<AccordionGroup>
  <Accordion title="Estado de la conexión y reautenticación" icon="plug-circle-check">
    En la lista **Directory → Sync**, cada conexión muestra si está
    **Enabled** o **Disabled**, además de un valor de salud de la conexión:

    | Salud | Qué significa |
    | - | - |
    | **Conectado** | Iru está autorizado para leer de la fuente. |
    | **Needs re-authentication** | Las credenciales o la autorización del proveedor faltan, han caducado, se han revocado o se han rechazado. Vuelve a autenticar para que la sincronización pueda realizarse correctamente. |
    | **Not connected** | La conexión no está lista para autenticarse (por ejemplo, la configuración quedó incompleta). |

    En la pestaña **Configuración** de la conexión, **Connection details** muestra la misma
    salud para ese proveedor. Usa **Volver a autenticar** para introducir credenciales actuales o
    volver a aprobar el acceso en el proveedor. Tu asignación de atributos no se ve afectada.

    * **BambooHR:** vuelve a iniciar sesión en BambooHR en la ventana que abre Iru y, después, selecciona
      **Permitir acceso**.
    * **Workday:** vuelve a introducir el Integration user y la contraseña.

    <Frame caption="Volver a autenticar Workday con las credenciales actuales del Integration System User.">
      <img src="https://mintcdn.com/iru/60YZAZS1iNMrBv2w/assets/media/images/iru-identity-reauthenticate-workday.png?fit=max&auto=format&n=60YZAZS1iNMrBv2w&q=85&s=c79cab0ae17064cc945d1b9c482edb1b" alt="El cuadro de diálogo Volver a autenticar Workday con los campos Integration user y Password, que indica que la asignación de atributos no se ve afectada." width="893" height="289" data-path="assets/media/images/iru-identity-reauthenticate-workday.png" />
    </Frame>
  </Accordion>

  <Accordion title="Errores de sincronización" icon="triangle-exclamation">
    Los problemas de sincronización aparecen en dos etapas. Saber qué etapa falló te indica dónde
    mirar primero.

    * Los **errores de la etapa de obtención** se producen cuando Iru no puede leer de la fuente: credenciales incorrectas o
      caducadas, una autorización del proveedor caducada o revocada, una
      instancia inaccesible, un informe inexistente o una llamada a la API rechazada. Corrige la
      conexión (a menudo con **Volver a autenticar** o corrigiendo la configuración del informe o del
      dominio) y vuelve a ejecutar la sincronización.
    * Los **errores de la etapa de aplicación (sincronización)** se producen después de que Iru tenga los registros pero no pueda
      crear o actualizar un usuario concreto en tu directorio. Iru registra un **error de
      sincronización** que puedes revisar: cuándo se produjo, el usuario afectado, la acción que Iru
      intentó, un código de error y un mensaje. Si muchos registros fallan con el mismo
      error, la causa suele ser una asignación: un atributo obligatorio sin asignar o un
      identificador único que en realidad no es único. Corrige la asignación y deja que se ejecute la
      siguiente sincronización.

    <Frame caption="Una sincronización fallida en la pestaña Activity, con el detalle completo del error. Aquí se rechazó un registro porque faltaba un atributo obligatorio.">
      <img src="https://mintcdn.com/iru/yv46VZ-WbN1GdStp/assets/media/images/sync-connection-activity.webp?fit=max&auto=format&n=yv46VZ-WbN1GdStp&q=85&s=5ff12dfeabf47729bd45c799dc9cadf9" alt="La pestaña Activity de una conexión que muestra una entrada FAILED y un detalle de error ampliado que explica que no se pudo aprovisionar un usuario porque faltaba un atributo obligatorio." width="1888" height="1036" data-path="assets/media/images/sync-connection-activity.webp" />
    </Frame>
  </Accordion>
</AccordionGroup>

## Relacionado

<CardGroup cols={2}>
  <Card title="Conectar Workday" icon="briefcase" href="/es/identity/directory/hris-workday">
    La configuración específica de Workday, incluido el paso del informe.
  </Card>

  <Card title="Conectar BambooHR" icon="seedling" href="/es/identity/directory/hris-bamboohr">
    La configuración específica de BambooHR.
  </Card>

  <Card title="Asignación de atributos" icon="code" href="/es/identity/directory/attribute-mapping">
    El IQL que usas para dar forma a los valores entrantes.
  </Card>

  <Card title="Esquema" icon="table-list" href="/es/identity/directory/schema">
    Los atributos a los que se asignan tus campos de origen.
  </Card>
</CardGroup>
