====== Provisioning ====== {{tag> identity role provisioning}} Just like synchronization, provisioning can be done for the following entities: 1. Identities (IdmIdentityDto) 2. Roles (IdmRoleDto) 3. Role catalogue items (IdmRoleCatalogueDto) 4. Tree nodes (structures) (IdmTreeNodeDto) ===== Provisioning of roles ===== Roles provisioning works differently than provisioning of identities. The main difference is the absence of a separate account management mechanism. Unlike identities where only those with a system provisioning role are passed, roles are propagated if and when they exist. ===== Provisioning of catalog ===== {{tag> role catalogue provisioning}} Role catalog provisioning also behaves differently than provisioning of identities. The main difference is the absence of a separate account management mechanism. Unlike identities where only those with a system provisioning role are passed, role catalogs are propagated if and when they exist. In the case of role catalogue, account management is directly linked to the creation / modification / deletion event of the catalogue node. ===== Provisioning of tree nodes ===== {{tag> tree }} Tree provisioning behaves differently than provisioning of identities. The main difference is the absence of a separate account management mechanism. Unlike identities where only those with a system provisioning role are passed, tree nodes are propagated if and when they exist. In this case, account management is directly linked to the creation / modification / deletion event of a tree node. ==== Retry mechanism ==== Provisioning operations ending with an error remain in the queue and new running time is scheduled to them = another attempt will be executed by long running task periodically – a long running task [[..:..:application_configuration:dev:scheduled_tasks:task-scheduler#retryprovisioningtaskexecutor|RetryProvisioningTaskExecutor]] configuration is needed. Only failed operations are processed from this queue by retry mechanism. ==== Asynchronous provisioning ==== The target system can be switched to use asynchronous provisioning - flag on the system detail. From then on, requests for active provisioning operations (create, update, delete) remain in the queue as ``CREATED`` and their processing is delayed. Operations in a queue are processed by a long running task [[..:..:application_configuration:dev:scheduled_tasks:task-scheduler#provisioningqueuetaskexecutor|ProvisioningQueueTaskExecutor]], which operates above the queue periodically and starts ``CREATED`` provisioning operation processing. Make sure you have the [[..:..:application_configuration:dev:scheduled_tasks:task-scheduler#provisioningqueuetaskexecutor|ProvisioningQueueTaskExecutor]] configured, if you want to switch any of the target systems to use asynchronous provisioning. Change password operation is still synchronous – it is needed to change passwords immediately. ==== Provisioning of attachment ==== {{tag>attachment}} Since version **9.4.0** provisioning for **EAV attributes** with **attachment** is supported. === Example of use === * We have a system with an attribute **image-attribute**. That attribute has in the schema type array of bytes (**[B**). * This attribute is mapped on EAV attribute **image**. That means that there is also an **EAV attribute definition** for this attribute. The EAV attribute must have the **Attachment** type set. * If you run a provisioning session for an identity involving attachment for EAV attribute **image**, then the data (in byte array format) is propagated to the system (**image-attribute**). **No** additional transformation is **required**. Load of attachment and transformation to the byte array is done automatically (**if transformation to the system is blank**).