# Synchronisation Microsoft Entra ID

{% hint style="warning" %}
Azure Active Directory (Azure AD) a été renommé **Microsoft Entra ID (ME-ID)**. Bien que la documentation WorkflowGen ait été mise à jour pour refléter ce changement de nom, les paramètres de l'application WorkflowGen font toujours référence à Azure AD (par exemple, connecteur d'annuaire `Azure AD SCIM v2`).

De même, certains éléments de configuration ME-ID dans le portail Azure ont été renommés et / ou déplacés. La documentation WorkflowGen a été mise à jour en conséquence, mais il se peut qu'elle ne soit toujours pas tout à fait exacte à cet égard. Consultez la documentation [Microsoft Entra ID](https://learn.microsoft.com/fr-fr/entra/identity/) pour plus d'informations.
{% endhint %}

## Aperçu

Cette section contient les instructions sur la configuration du connecteur de synchronisation Azure AD de WorkflowGen, qui s'appuie sur les fonctionnalités d'approvisionnement des utilisateurs de Microsoft Entra ID (ME-ID). Les utilisateurs et les groupes seront automatiquement mis à jour (envoyés vers WorkflowGen) par ME-ID (toutes les 20 à 40 minutes) en utilisant le protocole SCIM v2.&#x20;

Comme mentionné, c'est ME-ID qui pousse les données vers WorkflowGen. La nature du protocole ne permet pas à WorkflowGen de mettre à jour le répertoire dans ME-ID. En d'autres termes, c'est Azure qui interroge WorkflowGen pour obtenir des informations, et non l'inverse. Cela signifie que ME-ID est la seule source de vérité pour les utilisateurs et les groupes du système.

Dans les instructions, remplacez `<url workflowgen>` par le domaine et le chemin de votre instance de WorkflowGen; par exemple, `localhost/wfgen` ou `www.macompagnie.com/wfgen`.

{% hint style="info" %}

* Les mots de passe utilisateur ME-ID ne sont pas approvisionnés.
* Un seul répertoire WorkflowGen peut être approvisionné par ME-ID.
* Si vous utilisez l'approvisionnement des utilisateurs ME-ID SCIM, vous devez **désactiver** le service de synchronisation de répertoires de WorkflowGen si le service a déjà été installé et démarré.
  {% endhint %}

## Prérequis

* Assurez-vous d'avoir une instance de WorkflowGen en fonctionnement dans un réseau accessible par ME-ID avec les ports **HTTPS** ou **HTTP** ouverts.
* Assurez-vous de connaître l'adresse de l'instance.
* Assurez-vous que l'instance de WorkflowGen est opérationnelle.
* Assurez-vous que l'application SCIM est correctement installée et configurée. Voir [Activation de SCIM](https://docs.advantys.com/workflowgen-guide-technique/configuration/installation-manuelle#activation-de-scim) dans la section [Applications Web basées sur Node.js](https://docs.advantys.com/workflowgen-guide-technique/configuration/installation-manuelle#applications-web-basees-sur-node-js) du Guide technique WorkflowGen pour savoir comment procéder.
* Une licence P2 doit être activée dans le locataire ME-ID.

{% hint style="info" %}
ME-ID exige que le lien vers le site Web de WorkflowGen soit accessible au public.
{% endhint %}

## Configuration de WorkflowGen

Cette section contient les instructions sur la définition d'un nouvel annuaire qui sera utilisé par ME-ID pour la synchronisation des utilisateurs et des groupes. Si vous avez satisfait les prérequis ci-dessus, vous pouvez procéder à la configuration de WorkflowGen pour recevoir les informations de ME-ID.

{% hint style="info" %}
Avant d'aller plus loin dans la configuration, assurez-vous que la clé **`EngineServiceImpersonificationUsername`** dans le fichier `web.config` de WorkflowGen est définie sur un nom d'utilisateur administrateur existant. Sinon, le connecteur de synchronisation ne disposera pas des autorisations suffisantes pour effectuer toutes les demandes nécessaires pour provisionner les utilisateurs et les groupes.
{% endhint %}

### Créez et configurez un annuaire Azure AD SCIM v2

1. Dans le module d'administration de WorkflowGen (`https://<url workflowgen>/admin`), cliquez sur **Annuaires**, puis cliquez sur **Nouvel annuaire** dans l'écran **Annuaires**.<br>
2. Entrez un nom et une description pour l'annuaire.<br>
3. Choisissez **Azure AD SCIM v2** dans la liste déroulante **Connecteur d'annuaire**.<br>

   ✏️ **Note :** Vous ne pouvez avoir qu'un seul annuaire SCIM par instance de WorkflowGen.<br>
4. Cliquez sur **Enregistrer** pour créer l'annuaire.<br>
5. Copiez la valeur du **jeton SCIM** généré, car vous en aurez besoin pour la prochaine étape de la **configuration de Microsoft Entra ID**.

## Configuration de Microsoft Entra ID

Cette section contient les étapes pour la configuration d'une application d'entreprise typique avec ME-ID pour approvisionner votre instance de WorkflowGen avec des utilisateurs et des groupes.

{% hint style="info" %}
**Note sur les instances de WorkflowGen existantes**

Si vous avez déjà synchronisé une instance de WorkflowGen avec une application d'entreprise dans ME-ID (ou Azure AD), **ne réutilisez pas cette application d'entreprise avec une autre instance de WorkflowGen**. Au lieu, créez une nouvelle application d'entreprise pour chaque instance vous voulez synchroniser.
{% endhint %}

### Étape 1 : Créez une nouvelle application d'entreprise

Pour approvisionner WorkflowGen, vous devez l'inscrire dans le portail Azure en ajoutant une nouvelle application d'entreprise. Pour ce faire :

1. Dans votre portail Azure, cliquez sur **Applications d'entreprise**, puis cliquez sur **Nouvelle application**.<br>
2. Dans la page **Parcourir la galerie Microsoft Entra**, cliquez sur **Créer votre propre application**, puis sélectionnez `Intégrer une autre application que vous ne trouvez pas dans la galerie (non-galerie)`.<br>
3. Entrez le nom de l'application. Généralement, il vous faudra un nom comme `WorkflowGen SCIM v2` afin de l'identifier facilement.<br>
4. Cliquez sur **Créer**.

Vous pouvez maintenant passer à la configuration de l'application pour approvisionner WorkflowGen.

### Étape 2 : Configurez l'application Microsoft Entra ID

#### **Établissez une connexion entre WorkflowGen et Microsoft Entra ID**

Cliquez sur **Provisionnement** sur la page de l'application, puis cliquez sur **Démarrer**. Toute la configuration restante sera faite ici.

Pour configurer la connexion entre WorkflowGen et ME-ID :

1. Choisissez le mode d'approvisionnement **Automatique**.<br>
2. Cliquez sur **Informations d'identification de l'administrateur**. Pour l'**URL de locataire**, ajoutez votre adresse WorkflowGen (p.ex. : `https://<url workflowgen>/wfgen/scim`).<br>

   ✏️ **Note :** Si votre domaine de base pointe déjà vers l'instance de WorkflowGen, n'incluez pas `wfgen` dans l'adresse.<br>
3. Dans le champ **Jeton secret**, collez le **jeton SCIM** que vous avez généré antérieurement lorsque vous avez créé le nouvel annuaire SCIM.<br>
4. Cliquez sur **Test de la connexion** et attendez les résultats. Si tout est bien, vous recevrez une notification ainsi que des options supplémentaires.<br>
5. Cliquez sur **Enregistrer** en haut de la page.

#### **Configurez l'approvisionnement**

Deux nouvelles sections devraient maintenant être disponibles : **Mappages** et **Paramètres**. Vous devrez modifier certains mappages afin de faire correspondre correctement les données correspondantes dans WorkflowGen et de réduire les risques d'erreurs.

***Groupes***

Cliquez sur l'option qui contient **Groupes** pour changer le mappage des groupes. Ensuite, dans la nouvelle page, accédez à la section **Mappages d'attributs** et conservez seulement les mappages `externalId`, `displayName` et `member` réglées sur `customappsso`. Vous devez aussi changer le mappage de `externalId` en `objectID` de ME-ID. Ceci empêchera deux groupes différents d'être approvisionnés avec le même mappage `externalId`. Cet attribut doit être unique.

Vous avez également la possibilité de personnaliser les opérations à exécuter dans le répertoire WorkflowGen. Si vous partez de zéro, vous devez laisser les opérations **Créer**, **Mettre à jour** et **Supprimer** activées pour vous assurer qu'Azure peut effectuer toutes les opérations dont il a besoin pour garder WorkflowGen synchronisé avec ME-ID.

Les mappages finaux doivent ressembler au tableau suivant. Si vous avez des mappages supplémentaires qui ne sont pas listées ici, vous devez les **supprimer**, car elles ne seront pas mappés dans WorkflowGen.

| **Attribut ME-ID** | **Attribut customappsso** | Groupe WorkflowGen |
| ------------------ | ------------------------- | ------------------ |
| `objectId`         | `externalId`              | `systemIdentifier` |
| `mailNickname`     | `displayName`             | `name`             |
| `members`          | `members`                 | `users`            |

{% hint style="info" %}

* La colonne **Attribut ME-ID** correspond aux attributs du groupe définis dans ME-ID.
* La colonne **Attribut customappsso** correspond aux attributs du groupe définis dans la spécification SCIM (p.ex. : `urn:ietf:params:scim:schemas:core:2.0:Group`).
* La colonne **Groupe WorkflowGen** correspond aux champs et propriétés du groupe qui seront mis à jour dans WorkflowGen.
  {% endhint %}

Une fois que vous avez défini tous les mappages des groupes, cliquez à nouveau sur **Enregistrer**.

***Utilisateurs***

Vous devez aussi modifier les correspondances des utilisateurs. Pour ce faire, retournez aux options d'approvisionnement pour l'application de l'entreprise, puis cliquez sur le bouton pour les correspondances des utilisateurs dans la section **Mappages**.&#x20;

Dans la section **Mappages d'attributs** dans la nouvelle page, vous devez changer seulement la correspondance de `externalId` en `objectId` de ME-ID.

Vous avez également la possibilité de personnaliser les opérations à exécuter dans le répertoire WorkflowGen. Si vous partez de zéro, vous devez laisser les opérations **Créer**, **Mettre à jour** et **Supprimer** activées pour vous assurer que ME-ID peut effectuer toutes les opérations dont il a besoin pour garder WorkflowGen synchronisé avec ME-ID.

Les mappages finaux doivent ressembler au tableau suivant. Si vous avez des mappages supplémentaires qui ne sont pas listés ici, vous devez les **supprimer**, car elles ne seront pas mappés dans WorkflowGen.

| **Attribut ME-ID**                                            | **Attribut customappsso**                                            | **Utilisateur WorkflowGen** |
| ------------------------------------------------------------- | -------------------------------------------------------------------- | --------------------------- |
| `Switch([IsSoftDeleted], , "False", "True", "True", "False")` | `active`                                                             | `isActive`                  |
| `displayName`                                                 | `displayName`                                                        | `commonName`                |
| `FacsimileTelephoneNumber`                                    | `phoneNumbers[type eq "fax"].value`                                  | `fax`                       |
| `givenName`                                                   | `name.givenName`                                                     | `firstName`                 |
| `jobTitle`                                                    | `title`                                                              | `jobTitle`                  |
| `mail`                                                        | `emails[type eq "work"].value`                                       | `email`                     |
| `objectId`                                                    | `externalId`                                                         | `systemIdentifier`          |
| `manager`                                                     | `urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:manager` | `manager`                   |
| `mobile`                                                      | `phoneNumbers[type eq "mobile"].value`                               | `mobile`                    |
| `postalCode`                                                  | `addresses[type eq "work"].postalCode`                               | `postalCode`                |
| `physicalDeliveryOfficeName`                                  | `addresses[type eq "other"].Formatted`                               | `office`                    |
| `streetAddress`                                               | `addresses[type eq "work"].streetAddress`                            | `postalAddress`             |
| `surname`                                                     | `name.familyName`                                                    | `lastName`                  |
| `telephoneNumber`                                             | `phoneNumbers[type eq "work"].value`                                 | `phone`                     |
| `userPrincipalName`                                           | `userName`                                                           | `userName`                  |

{% hint style="info" %}

* La colonne **Attribut ME-ID** correspond aux attributs de l'utilisateur définis dans ME-ID.
* La colonne **Attribut customappsso** correspond aux attributs de l'utilisateur définis dans la spécification SCIM (p.ex. : `urn:ietf:params:scim:schemas:extension:enterprise:2.0:User`).
* La colonne **Utilisateur WorkflowGen** correspond aux champs de l'utilisateur qui seront mis à jour dans WorkflowGen.
  {% endhint %}

Lorsque toutes les mappages des utilisateurs sont réglés, cliquez sur **Enregistrer**.

### Étape 3 : Lancez la synchronisation

Vous êtes maintenant prêt à lancer la synchronisation des utilisateurs et des groupes avec votre instance de WorkflowGen. Pour ce faire, naviguez à la section **Paramètres** dans la page **Provisionnement** de votre application d'entreprise.

Si vous voulez synchroniser seulement un sous-ensemble de vos utilisateurs et vos groupes ME-ID, sélectionnez l'option pour synchroniser les utilisateurs et les groupes **affectés**, ensuite affectez-les manuellement à cette application dans l'annuaire. Pour ce faire, naviguez à la section **Utilisateurs et groupes** de l'application et ajoutez-y manuellement vos utilisateurs.

Vous pouvez aussi configurer l'application pour synchroniser tous les utilisateurs et les groupes de votre répertoire. Dans ce cas, sélectionnez l'option pour synchroniser tous les utilisateurs et groupes.

Lorsque vous êtes prêt, réglez le status de l'approvisionnement sur **Activé**, puis cliquez sur **Enregistrer**.

{% hint style="success" %}
Vous avez maintenant complété la configuration de l'approvisionnement des utilisateurs et des groups de ME-ID à WorkflowGen en utilisant le protocole SCIM v2. Vous pouvez vérifier l'approvisionnement dans les logs de synchronisation dans le module d'administration de WorkflowGen, ou bien dans les fichiers de log créés par l'API SCIM de WorkflowGen, qui sont situés dans le répertoire `APP_DATA` de WorkflowGen.
{% endhint %}

## Migration d'Active Directory classique vers Microsoft Entra ID

Si vous avez déjà une synchronisation avec un Active Directory classique, cette section contient les instructions sur comment migrer vos utilisateurs WorkflowGen vers votre nouvel Microsoft Entra ID sans devoir les supprimer et récréer.

### À propos de l'approvisionnement Microsoft Entra ID

Tout d'abord, il est important de comprendre comment ME-ID synchronise votre annuaire via le connecteur SCIM avant de procéder à une migration. Dans ce guide, nous avons changé les correspondances par défaut entre les propriétés d'objet ME-ID et les propriétés SCIM. Une de ces propriétés est `externalId`, qui représente un identifiant unique depuis un système externe, donc elle doit être opaque pour WorkflowGen. Vous avez changé cette correspondance de `displayName` dans ME-ID en `objectId`. Dans WorkflowGen, `externalId` correspond à la propriété `systemIdentifier` d'un utilisateur, donc la valeur `objectId` de ME-ID est approvisionnée dans la valeur `systemIdentifier` dans WorkflowGen.

Deuxièmement, ME-ID commence la synchronisation en interrogeant le connecteur SCIM pour trouver les utilisateurs existants. D'abord, il envoie des requêtes GET avec ses valeurs `objectId`. Puisque WorkflowGen n'a pas de `Id` qui correspond à `objectId` de ME-ID, il retournera toujours une erreur `404 NOT FOUND`. Ensuite, il envoie des requêtes GET mais avec un filtre sur `externalId`; cette fois, il trouve les utilisateurs dans WorkflowGen si leurs `systemIdentifier` correspondent à un `objectId` d'un utilisateur dans ME-ID.

### Comment migrer les utilisateurs et les groupes à Microsoft Entra ID

1. Désactivez le connecteur d'Active Directory classique.<br>
2. Créez un nouveau connecteur d'annuaire Azure SCIM v2.<br>
3. Déplacez les utilisateurs et les groupes déjà dans Active Directory depuis d'autres annuaires WorkflowGen existants à l'annuaire SCIM.<br>
4. Créez un script qui mettra à jour les utilisateurs et les groupes dans l'annuaire SCIM avec leurs propriétés `systemIdentifier` configurées pour égaler leurs propriétés `objectId` ME-ID correspondantes.

L'exemple ci-dessous inclut un algorithme qui associe les utilisateurs et les groupes à ME-ID :

```
groups = fetch_groups_from_azure()

for group in groups:
    for user in group.users:
        wfgUser = fetch_wfg_user_with_key(user.something)
        wfgUser.systemIdentifier = user.objectId
        update(wfgUser)

    wfgGroup = fetch_wfg_group_with_key(group.something)
    wfgGroup.systemIdentifier = group.objectId
    update(wfgGroup)
```

L'exemple ci-dessous inclut un algorithme qui associe seulement les utilisateurs à ME-ID :

```
users = fetch_users_from_azure() 

for user in users:
    wfgUser = fetch_wfg_user_with_key(user.something)
    wfgUser.systemIdentifier = user.objectId
    update(wfgUser)
```

## Résolution des problèmes

### Les utilisateurs et les groupes sont marqués comme ignorés dans les journaux de synchronisation de ME-ID

Si vous rencontrez ce problème, cela peut être dû au fait que les utilisateurs et les groupes sont hors de portée de la synchronisation. La raison peut être que vous n'avez pas affecté d'utilisateurs à l'application d'entreprise et que vous avez sélectionné une portée d'utilisateurs affectés uniquement. Pour résoudre ce problème, affectez des utilisateurs à l'application d'entreprise en accédant à sa section **Utilisateurs et groupes**. Vous pouvez également modifier la portée de la synchronisation pour tous les utilisateurs et groupes de l'annuaire en modifiant les paramètres de synchronisation de l'application d'entreprise.

Une autre cause possible peut être liée à d'autres configurations dans votre ME-ID. Pour des instructions sur comment résoudre ce problème, consultez l'article Microsoft [Aucun utilisateur n’est en cours d’approvisionnement](https://docs.microsoft.com/fr-fr/azure/active-directory/app-provisioning/application-provisioning-config-problem-no-users-provisioned?WT.mc_id=UI_AAD_Enterprise_Apps_Support_L2_Overview#provisioning-logs-say-users-are-skipped-and-not-provisioned-even-though-they-are-assigned).
