De base, dans Power Apps, la clef primaire d’un enregistrement est toujours le GUID, souvent sotkcer dans un champ nommé [NomEntité]ID. Cette clef garantit que tout enregistrement est unique. Il est strictement impossible detrouver deux enregistrements avec le même GUID dans un environnement.
En revanche, deux GUID différent ne garantissent pas que ces 2 records ne contiendront pas les mêmes informations. Dans tous les projets Power Apps ou Dynamics 365 sur lesquels j’ai travaillé, il y a toujours des doublons d’enregistrements.
Exemple : Deux enregistrements avec le même champ Nom.
Des solutions standards et techniques existent pour détecter ou bloquer ou gérer ces créations de doublons :

  • La détection de doublon permet de limiter ces créations de doublons lorsque la création se fait par un utilisateur depuis l’application web mais un utilisateur pourra toujours forcer la création de son enregistrement.
  • Lors de l’intégration de données externes, c’est aux développeurs et concpeteurs des intégrations de faire en sorte d’établir les règles de création/MIse à jour etc… Si il y a un oubli, le système empilera les doublons.

La solution de blocage standard pour éviter les doublons : Les clefs alternatives

Les clefs alternativres peuvent être activées sur presque toutes les entités du système, leur but ? Créer un nouvel identifiant unique comme un GUID mais vous contrôlez le contenu de cette clef.
Un GUID est constitué de 26 caractères (Lettres ou chiffres), une clef alternative peut contenir un prénom, une adresse email, ou encore une combinaison de champs de l’entité.
Les types de champs compatibles sont les suivants :

  • Nombre décimal
  • Nombre entier
  • Ligne de texte
  • Date
  • Recherche (lookup)
  • Liste d’options

Attention : Certains caractères comme /,<,>,*,%,&,:,\\,? ne sont pas compatibles avec cette fonctionnalité

Dans le cadre d’un projet, les contacts étaient uniquement créés par Import d’un logiciel tier à travers Power Automate.
Il m’a été trés simple de mettre en place cette clef alternative.
La valeur rentrante est une valeur pouvant se stocker dans un champ de type Texte donc j’ai tout simplement :

  1. Créer un champ de type texte sur l’entité Contact
  2. Se rendre dans Clé qui est un onglet dans la configuration des entités
  3. Cliquer sur Ajouter une clé
  4. Donner un Nom à votre clef plus un nom technique (Je rajoute en général un suffixe « key » dans le nom technique)
  5. Cocher ensuite le ou les champs de votre entité qui vont constiture votre clef alternative
    De mon expérience, ne prenez que trois champs maximum pour éviter les problèmes au nombre de caractère ou de symboles non compatibles.
  6. Cliauer ensuite sur OK
Menu de création de votre clef alternative.

Votre clef alternative est créée et va s’indexer dans votre système. Après quelques minutes, elle devrait être prête.
Si vous avez un enregistrement avec une valeur dans ce champ, et que vous tentez ensuite de créer un enregistrement avec cette même valeur, voici le message qui va apparaître sur votre écran :

Exemple : Tentative de création d’un enregistrement avec une même clef alternative.

Via Power Automate ou tout autre système d’intégration, le résultat sera le même, toute création sera impossible si les valeurs sont identiques.

Pour afficher le champ sur un formulaire, n’oublier pas de :

  • Ne pas l’afficher si la valeur n’est pas une valeur exploitable pour vos utilisateurs
  • Si le champ doit être présent sur le formulaire = Verouiller le champ
  • Ne jamais créer une clef dont la valeur est éditable sur le formulaire

En conclusion, je vous conseille vivement d’utiliser, avec prudence, les clefs alternatives pour constituer votre base de donnée. Je ne les ai utilisé que dans le cadre d’intégration mais je pense que des scénarios purement métiers pourraient avoir besoin d’ajouter cette fonctionnalité.