ContratDateajouteousupprime_1_0_0_0.zip
4.4 kB
Scénarios
On dispose d’une table ContratLocation et d’une table DateContrat. Chaque DateContrat est affectée à un ContratLocation. Un Contrat peut avoir 1 ou plusieurs tables.
Un Contrat a un champ CodeContrat pour identifier chaque contrat et un champ NbDateOccupationPrevu, qui contient le nombre de dates attendues pour le contrat.
Une DateContrat a une DateOccupation.
Le Contrat prévoit un champ NbDateOccupation qui compte le nombre de DateContrat pour le Contrat. En comparant les 2 nombres (NbDateOccupationPrevu et NbDateOccupation), on identifiera les contrats qui ont une différence entre les dates prévues et les dates réellement saisies.
On doit donc calculer ce NbDateOccupation dès qu’une date est ajoutée ou supprimée.
1- Préparation
Dans la table DateContrat, activer l’audit pour l’un des champs :
Dans le Centre d’administration de Power Platform, pour l’environnement choisi, démarrer l’audit :
2- Mise en place du flux
Dans Power Automate, ajouter un flux. Dans ce flux, ajouter le déclencheur Dataverse Lorsqu’une ligne est ajoutée, modifiée ou supprimée. Paramétrer le déclencheur :
Le déclencheur retournera le JSON suivant : {
"headers": {
"Expect": "100-continue",
(...)
"Content-Length": "214",
"Content-Type": "application/json"
},
"body": {
"gd_contratdateid": "34b494be-7a98-ef11-8a69-002248728afb",
"ItemInternalId": "34b494be-7a98-ef11-8a69-002248728afb",
"SdkMessage": "Delete",
"RunAsSystemUserId": "415c6075-5bff-ee11-9f89-00224872360b"
}
}
On veut récupérer la valeur de la clé SdkMessage pour identifier si l’action est une suppression ou pas.
3- Initialise la variable contratlocation_id
Cette variable contiendra l’id du ContratLocation à mettre à jour :
4- Condition
On ajoute une condition :
Dans la zone Choisir une valeur, saisir cette expression :
triggerOutputs()?['body/SdkMessage']
Voici comment saisir l’expression :
5- Requêtes HTTP si suppression
On va créer une requête vers la table d’audit de la base Dataverse qui contient l’historique des mouvements de données. Ces dans cet historique qu’on trouvera l’ID du ContratLocation de la DateContrat supprimé.
Du côté True de la condition, ajouter une action de type HTTP With Microsoft Entra ID. Votre compte Active Directory sera utilisé pour la connexion :
Pour créer la connexion, dans les zones URL de ressource de base et URI de ressource Microsoft Entra ID (URI de l’ID d’application), coller l’URL vers votre environnement, sous la forme https://XXXXXX.crmXX.dynamics.com/.
Pour trouver l’URL de l’environnement, aller dans le Centre administration de Power Platform () puis sélectionner l’environnement, et copier l’URL. Après création de la connexion, compléter l’action en sélectionnant GET comme Méthode, et indiquer comme URL de la requête :
/api/data/v9.2/audits?$filter=objecttypecode%20eq%20%27gd_contratdate%27%20and%20operation%20eq%203&$orderby=createdon%20desc&$top=1
6- Analyser le JSON de la requête HTTP
Ajouter une action de type de type Analyser JSON :
Cliquer dans Content, puis cliquer sur l’éclair et saisir : body('reqHTTP_Audit')['value'][0]['changedata']
Dans la zone Schéma, cliquer sur le lien Utiliser l’exemple de charge utile pour générer le schéma. Coller ce texte et cliquer sur Terminé : {
"body": {
"changedAttributes": [
{
"logicalName": "gd_dateoccupation",
"oldValue": "11/12/2024 23:00:00",
"newValue": null
},
{
"logicalName": "gd_contratlocation",
"oldValue": "gd_contratlocation,fe42d914-8098-ef11-8a69-002248728afb",
"newValue": null
},
{
"logicalName": "owningbusinessunit",
"oldValue": "businessunit,4f556075-5bff-ee11-9f89-00224872360b",
"newValue": null
},
{
"logicalName": "importsequencenumber",
"oldValue": null,
"newValue": null
},
{
"logicalName": "overriddencreatedon",
"oldValue": null,
"newValue": null
}
]
}
}
Pour trouver ce code, exécuter le flux, par exemple avec un test :
(1) : après exécution, cliquer sur l’étape reqHTTP Audit.
(2) : cliquer sur Afficher les sorties brutes
(3) : copier la partie entre guillemets de la propriété changedata (qui déborde de l’écran).
7- Définir les variables
Ajouter une action de type Définir une variable. Sélectionner le nom contratlocation_id et comme Valeur l’expression :
split(body('Parse_Audit')?['changedAttributes'][1]?['oldValue'], ',')[1]
Du côté False de la condition, ajouter une action de type Définir une variable. Sélectionner le nom contratlocation_id et comme Valeur la valeur ContratLocation (Valeur) de l’étape Lorsqu’une ligne est ajoutée, modifiée ou supprimée :
8-