Contrat d'écriture RDE : créer un scénario, saisir l'overlay, persister, promouvoir vers la négo. Power BI reste le seed lecteur. Ceci est un brief, pas une app construite. 23.09.2026.
Une phrase. Power BI est le seed lecteur (Simu_Scenario + Simu_Overlay, mesures COALESCE). L'humain crée le scénario, saisit la strate, valide. Dataverse mémorise header + overlay. Après refresh, les pages Simu suivent l'overlay persisté. Le ledger cr568_negotiation_current ne bouge que si le scénario est promu.
Aucune canvas Simu n'existe. Le PBIP a six pages lecteurs et une card « Console Simu — à brancher ». Ce document spécifie S17–S23 (Non fait) de Simu_CDC_Couverture_FR.html. Ne pas le confondre avec une livraison.
Chaîne à implémenter, dans cet ordre :
| Saisie des accords | Prio Réfs (brief séparé) | Simu Négo (à construire) | |
|---|---|---|---|
| App canvas | e890ef64-b48f-43ad-9a7e-e2454e283e82 | Nouvelle app Prio | Nouvelle app. Interdit d'embarquer Saisie ou Prio dans le slot Simu. |
| Visuel PBI | PowerApps_PBI_CV_C29F1DCC_81F5_4973_94AD_0517D44CC06A | Même type, autre appId | Même type, troisième appId. Remplace acedc191357f4eac992b. |
| Table Dataverse | cr568_negotiation_current | cr568_prio_decision + cr568_prio_objectif | Deux tables neuves (header + overlay). CDC ne les nomme pas cr568_simu_* : voir §2. |
| Grain d'écriture | EAN × enseigne × PeriodKey | Décision : EAN × circuit × année | Header : enseigne × PeriodKey × nom. Overlay : scenario_id × EAN × conditionnement. |
| Après Patch | Flux PPC / RefreshPBI_PowerRange | Writeback Prio → refresh | Writeback Simu → refresh. Promote ≠ Flux PPC (ingest Excel). |
| Sécurité CDC | Équipe négo | Restreint Perfect Store + DXI | Espace RDE. CDC Simu ne dit pas « restreint PS+DXI ». S24 : pas d'écriture ledger avant promote. |
Le rapport ne persiste rien. Il affiche un what-if sur deux seeds figés (CARREFOUR HM). L'app est le seul endroit où un humain crée, clone, saisit et promeut.
CDC (écriture, pas encore dans le PBIX) : persister header + overlay, pas dans cr568_negotiation_current tant que non promu. Clone, saisie strate/dates/tx, promote validé → ledger négo + refresh. Le canvas CDC et S20 parlent de « tables scénario + overlay Dataverse / Excel » — aucun nom logique cr568_simu_* n'existe dans le CDC. Convention PowerRange (même publisher DataLift, préfixe cr568_, solution 1.0.0.3, org orgdbdf3046.crm12.dynamics.com) : cr568_simu_scenario et cr568_simu_overlay. Les colonnes contractuelles sont celles du seed PBI, pas des noms inventés.
Table non managée, audit on. Une ligne = un scénario nommé par enseigne / catégorie (CDC S2). Alternate key obligatoire : cr568_ak_simu_scenario sur cr568_scenario_id.
| Attribut logique | Colonne seed PBI | Type | Oblig. | Règle |
|---|---|---|---|---|
| cr568_simu_scenarioid | — | GUID | PK | GUID système |
| cr568_scenario_id | scenario_id | nvarchar 40 | oui unique | Ex. SIMU-CRFHM-Q127. Clé lue par SELECTEDVALUE. |
| cr568_nom_scenario | nom_scenario | nvarchar 200 | oui | Libellé RDE (Scenario_Q1 27, Test 3…). |
| cr568_enseigne | enseigne | nvarchar 100 | oui | Libellé Dim_Enseignes, pas le circuit. Seed = CARREFOUR HM. |
| cr568_periodkey | — (writer S22) | nvarchar 8 | oui | YYYYQ1 ou YYYYQ3. Seed n'a pas cette colonne ; base_ref porte 2026Q1 sur le seed Q127. |
| cr568_annee_typo | annee_typo | int | oui | Année typo header (seed 2027). |
| cr568_nego | dérivé PeriodKey | choice Q1/Q3 | oui | Temps négo CDC. |
| cr568_statut | statut | choice | oui | EIE / LE / validé / ad hoc — seuls statuts CDC (S3). |
| cr568_statut_ordre | statut_ordre | int | oui | Seed : EIE=3, ad hoc=4. Étendre : validé=1, LE=2. |
| cr568_base_type | base_type | choice | oui | Nego (import ledger) / Scenario (clone). |
| cr568_base_ref | base_ref | nvarchar 40 | oui | PeriodKey source (2026Q1) ou scenario_id parent. |
| cr568_periode_dv_reelle | periode_dv_reelle | choice | oui | CAM / CAD / LP — slicer Nielsen du seed. |
| cr568_contour_categorie | contour_categorie | nvarchar 20 | non | SOFT sur le seed. Filtre catégorie, pas une relation. |
| cr568_owner_label | owner | nvarchar 100 | non | Audit RDE. Seed = « seed ». |
| cr568_promu_nego | promu_nego | choice oui/non | oui | Défaut non. Oui seulement après promote réussi (S18). |
| ownerid / createdon / modifiedon | — | std | oui | Audit. |
Patch header seulement si l'enseigne est HMSM, Carrefour City, Carrefour Contact ou Franprix. Refuser HD / Drive / e-com / enseigne saisie à la main. MagFlag se lit sur Dim_Enseignes (Enseigne_MAG) : ce n'est pas une colonne overlay. Si MagFlag = 0, la valo PBI skip déjà (S6) — l'app avertit, elle n'écrit pas un flag.
Création : enseigne + PeriodKey (Q1/Q3) + nom + période DV + contour. Import = copier le ledger live (is_duplicate = 0) de cet enseigne × PeriodKey vers des lignes overlay (S17). Copie Q1 → Q3 : cloner header, PeriodKey cible YYYYQ3, préremplir overlay depuis le Q1 (CDC Géographies : « Préremplir DV négo Q3 = Q1 ? Oui. » — S22).
Grain : scenario_id × ean × conditionnement. Alternate key cr568_ak_simu_overlay. Une ligne = un écart EAN du scénario (CDC S4 / S20). Le seed n'a qu'une ROW TEST3 × 3502110008343 UNITAIRE T2, dv_cible blank, tx_transfo 0,95.
| Attribut logique | Colonne seed PBI (COALESCE) | Type | Oblig. | Règle |
|---|---|---|---|---|
| cr568_simu_overlayid | — | GUID | PK | |
| cr568_scenario_id | scenario_id | nvarchar 40 | oui | Lookup header. Relation PBI 1:n. |
| cr568_ean | ean | nvarchar 20 | oui | Texte, pas Int64. Pad interdit. |
| cr568_conditionnement | conditionnement | choice | oui | Défaut UNITAIRE. DP / box : entrée supply SAP, viz reste EAN (CDC). |
| cr568_strate | strate | nvarchar 20 | non | Strate en entrée ; DV/DN lus Dim_Strates si dv_cible blank. Blank + base remplie = Delisting côté PBI. |
| cr568_dv_cible | dv_cible | decimal (2) | non | Override. Si blank, mesures : Dim_Strates (année puis prox) puis DVvaleur_LE. |
| cr568_dn_cible | dn_cible | decimal (2) | non | Même fallback. CDC : on ne saisit pas DV/DN en % — strate d'abord. |
| cr568_perma_saiso | perma_saiso | choice | non | Permanent / Saisonnier. Seed = Permanent. |
| cr568_date_entree | date_entree | nvarchar 20 | cond. | Obligatoire si restratage + INNO + saisonnier (même règle console Saisie CDC). |
| cr568_date_sortie | date_sortie | nvarchar 20 | cond. | Obligatoire si delisting / déstratage (CDC Saisie). |
| cr568_tx_transfo | tx_transfo | decimal (4) | non | Taux MAG saisi. PBI : COALESCE(overlay, Target, Taux, 1) — S21 encore trou côté modèle. |
| cr568_commentaire | commentaire | nvarchar 500 | non | Motif RDE. |
| Attendu métier | Où ça vit aujourd'hui | Conséquence app |
|---|---|---|
| Listing / Restratage / Delisting / Stable / Déstratage | Mesure Simu mouvement : SWITCH overlay vs ledger. Pas de colonne mouvement sur Simu_Overlay. | L'app écrit strate (± dates). Ne pas inventer cr568_mouvement pour le COALESCE. Au promote, écrire Mouvement sur le ledger (colonne déjà lue). |
| MagFlag | Dim_Enseignes / skip valo (NOT ISBLANK && = 0) | Lecture périmètre. Pas un champ overlay. |
| INNO | Spec / statut société ; coef valo inno = 1. CDC impose date_entree si INNO. | Pas de colonne INNO dans le seed overlay. Lire le statut, exiger la date, ne pas créer un champ COALESCE fantôme. |
| VALO Volume / CA / NR, Waterfall, Histo, Vision, Unité | 70 mesures dossier Simu Négo, Z_Simu_*, Vision_Simu | Hors app. L'app nourrit header + overlay ; elle ne recalcule pas slide 5. |
Patch idempotent. LookUp sur la clé alternative, puis Patch. Ne pas Create en doublon si l'EAN est déjà overlay pour ce scénario × conditionnement.
CDC module 1 (Prio) = restreint Perfect Store + DXI. CDC module Simu = espace de travail RDE, sans cette phrase. Ne pas recopier la restriction Prio. S24 est la seule règle de sécurité d'écriture nommée : ne pas écrire le ledger tant que non promu.
| Rôle | Header + overlay | cr568_negotiation_current |
|---|---|---|
| RDE (atelier scénario) | CRUD | lecture seule jusqu'au promote ; promote = Patch contrôlé |
| Négo (Saisie) | lecture recommandée | inchangé (app e890ef64) |
| DXI | CRUD + publier solution + flux | inchangé |
| Perfect Store | lecture (obj + prio amont) | inchangé — pas le writer Simu d'après le CDC |
| Autres (field) | aucun | inchangé |
Une app, écrans RDE (wireframe — pas le chrome PBI). StartScreen selon host_screen (section Embed). Pas de menu interne qui duplique les six onglets PBI.
OnVisible commun : Set(varRow; First(PowerBIIntegration.Data)). Si scenario_id et ean blank → « Choisissez un scénario, puis une ligne EAN ». Tous les Patch lisent varRow + galerie filtrée, jamais une galerie interne non filtrée.
| Contrôle | Source | Comportement |
|---|---|---|
| CmbEnseigne | Dim_Enseignes (périmètre S15) | HMSM + CRF City/Contact + Franprix. Refus Drive/HD. |
| CmbPeriodKey | YYYYQ1 / YYYYQ3 | Writer S22. Pas le slicer bench Z_Simu_Bench_Quarter. |
| TxtNom | saisie | Nom unique par enseigne × PeriodKey. |
| CmbPeriodeDV | CAM / CAD / LP | periode_dv_reelle |
| CmbContour | catégorie | SOFT sur le seed ; ne pas forcer. |
| CmbBase | Nego / Scenario | Nego = import ledger PeriodKey. Scenario = clone d'un header existant. |
| TglPrefillQ3 | bool | Si PeriodKey = YYYYQ3 et une base YYYYQ1 existe : copier overlay (S22). |
| BtnCreer | Patch header + ForAll overlay | statut = ad hoc, promu_nego = non, scenario_id généré. |
Import persisté (S17) : pour chaque ligne ledger is_duplicate = 0 de l'enseigne × PeriodKey, créer une overlay (ean, conditionnement, strate, perma, dates, tx si connu). Ce n'est pas Flux PPC. La base du seed aujourd'hui est le ledger déjà chargé, sans écriture PeriodKey.
Patch(
cr568_simu_scenarios;
LookUp(cr568_simu_scenarios; cr568_scenario_id = varNewId);
{
cr568_scenario_id: varNewId;
cr568_nom_scenario: TxtNom.Text;
cr568_enseigne: CmbEnseigne.Selected.Value;
cr568_periodkey: CmbPeriodKey.Selected.Value;
cr568_annee_typo: Value(Left(CmbPeriodKey.Selected.Value; 4));
cr568_nego: Right(CmbPeriodKey.Selected.Value; 2);
cr568_statut: "ad hoc";
cr568_statut_ordre: 4;
cr568_base_type: CmbBase.Selected.Value;
cr568_base_ref: varBaseRef;
cr568_periode_dv_reelle: CmbPeriodeDV.Selected.Value;
cr568_promu_nego: "non"
}
)Clic ligne PBI → varRow.ean. Galerie Filter(cr568_simu_overlays; cr568_scenario_id = varRow.scenario_id). Préremplir depuis l'overlay persistée, sinon ledger / Dim_Strates (même ordre que le COALESCE).
| Contrôle | Patch | Note CDC / seed |
|---|---|---|
| LblRef | lecture ean + reference | PowerBIIntegration |
| LblScenario | nom + enseigne + PeriodKey + statut | header |
| CmbStrate | cr568_strate | Entrée métier. DV/DN se déduisent si dv_cible blank. |
| TxtDV / TxtDN | cr568_dv_cible / cr568_dn_cible | Optionnel. Blank = lookup Dim_Strates. |
| CmbPerma | cr568_perma_saiso | Permanent / Saisonnier |
| TxtDateEntree / Sortie | cr568_date_entree / date_sortie | Règle dates Saisie : restratage+INNO+saiso / delisting+déstratage. |
| TxtTx | cr568_tx_transfo | Chemin MAG (S21). Ne pas forcer 1 dans l'app — le seed PBI le fait déjà. |
| LblMouv | calculé, pas Patch overlay | Listing si base blank + strate ; Delisting si overlay blank + base ; Restratage si strates ≠ ; sinon Stable. Déstratage mesuré côté PBI, pas émis par le SWITCH overlay actuel. |
| LblMag | lecture MagFlag | Avertir si 0 (skip valo). Pas d'écriture. |
| BtnEnregistrer | Patch overlay | host_screen = CREATION / TABLEAU |
« Brouillon » n'est pas un statut CDC. C'est le panier de travail : ad hoc, EIE, LE (S3). validé est le seul statut qui autorise le promote. Seeds actuels : ad hoc + EIE ; LE / validé absents ; promu_nego = non.
| Action | Statut header | promu_nego | Ledger |
|---|---|---|---|
| Créer / importer / cloner | ad hoc | non | interdit |
| Travailler strate | ad hoc ou EIE ou LE | non | interdit |
| Passer EIE → LE | LE | non | interdit |
| Valider (RDE) | validé | non | toujours interdit (S24) |
| Pousser vers négo (S18) | validé | oui après succès | Patch cr568_negotiation_current |
Bouton visible seulement si statut = validé et promu_nego = non. Confirmer enseigne × PeriodKey. Pour chaque overlay : upsert ledger au grain EAN × enseigne × PeriodKey (ScaKey), is_duplicate = 0. Colonnes déjà lues par le rapport (architecture) : strate_LE ou strate_EIE selon le statut source, DVvaleur_LE / DNvaleur_LE (ou EIE), Typologie (perma), Mouvement, dates, conditionnement. PeriodKey = année & date_accords (Q1/Q3). Ne pas écrire DEF (2 lignes live — autre chemin). Ne pas passer par Flux PPC.
| Cas | UI |
|---|---|
| PowerBIIntegration.Data vide | Pas de Patch. Texte d'aide. |
| Enseigne hors périmètre / MagFlag = 0 | Avertir. Patch header refusé si Drive/HD. |
| PeriodKey ≠ YYYYQ1|YYYYQ3 | Bloquer. |
| Promote alors que statut ≠ validé | Bloquer. S24. |
| Patch OK | Notify succès + déclencher le flux refresh. |
| Patch KO (clé / sécurité) | Notify Dataverse brute, ne pas avaler. |
| Re-promote déjà oui | Idempotent. Pas de second insert ledger. |
Remplacer la card « Console Simu — à brancher » (acedc191357f4eac992b) par le visuel Power Apps, même emplacement que Saisie / Prio : x ≈ 987, y ≈ 223, width ≈ 279, height ≈ 477, dans le rectangle arrondi console.
Placeholders déjà posés (prior work, hidden) : txt_console (titre « Console Simu ») et shape_console (fond arrondi, x ≈ 982, y ≈ 188, 290 × 519). Les six pages Simu les portent. Ne pas les redessiner — les laisser, y poser l'app.
| Propriété visuel | Valeur |
|---|---|
| visualType | PowerApps_PBI_CV_C29F1DCC_81F5_4973_94AD_0517D44CC06A |
| objects.general.appId | /providers/Microsoft.PowerApps/apps/<GUID-NOUVELLE-APP-SIMU> |
| query.queryState.table.projections | Rôle table (pas Values) — liste ci-dessous |
| Pages | Les 6 : e4a8, f5b9, a6c0, b7d1, c8e2, d9f3 (S23 : visuel × 6, host_screen) |
Noms sans slash ni accent : l'app les lit en identifiants. Le tableau PBI peut garder les libellés FR.
| nativeQueryRef | Champ PBI | Pages |
|---|---|---|
| scenario_id | Simu_Scenario[scenario_id] — slicer, pas une mesure | toutes |
| nom_scenario | Simu_Scenario[nom_scenario] | toutes |
| enseigne | Simu_Scenario[enseigne] | toutes |
| statut | Simu_Scenario[statut] | Création |
| promu_nego | Simu_Scenario[promu_nego] | Création |
| base_ref | Simu_Scenario[base_ref] | Création |
| periode_dv | Simu_Scenario[periode_dv_reelle] | Création, Tableau |
| ean | Dim_Produit_EAN[ean] | Création, Tableau, Compare |
| reference | Dim_Produit_EAN[reference] | Création, Tableau |
| conditionnement | Dim_Produit_EAN[conditionnement] | Création |
| strate_simu | Mesures overlay strate (COALESCE) | Création, Tableau, Compare |
| dv_simu | Mesures[Simu DV] | Création, Tableau |
| tx_simu | Mesures tx transfo overlay | Création, Tableau |
| a_overlay | Mesures[Simu a overlay] | Création, Compare |
| mouvement | Mesures[Simu mouvement] | Création, Mouvement |
| host_screen | mesure constante CREATION / TABLEAU / COMPARE / WATERFALL / HISTO / MOUVEMENT | toutes |
Mesure host_screen par page pour StartScreen = Switch(First(PowerBIIntegration.Data).host_screen; …). Évite un Param() fragile dans l'embed Desktop.
| Slicer | Pourquoi l'app l'exige |
|---|---|
| Enseigne = une enseigne du périmètre | Header grain enseigne. Tout = SELECTEDVALUE blank. |
| Nom de scénario = une ligne | Porte ScId. Sans elle l'overlay PBI est blank (les deux seeds ne se mélangent pas). |
| Période DV CAM/CAD/LP | Simu DV actuelle / date Nielsen. Recette seed : CAM. |
| Conditionnement UNITAIRE recommandé | CDC viz EAN ; DP/box = supply, pas la saisie courante. |
Set(varRow; First(PowerBIIntegration.Data));;
If(
IsBlank(varRow.scenario_id);
Notify("Sélectionnez une enseigne et un nom de scénario"; NotificationType.Warning);
Navigate(EcrStrat; ScreenTransition.None)
)Sans ce hop, le Patch est invisible dans Power BI. Aujourd'hui Simu_Scenario est un DATATABLE (2 lignes) et Simu_Overlay une ROW calculée. Dataverse n'est importé que pour cr568_negotiation_current. Dataset 612ef347-d29a-40a4-9073-11a699847590, workspace 653b685c-… — les IDs que les flux cloud rafraîchissent déjà (Saisie / ingest).
| Option | Mécanique | Quand |
|---|---|---|
| A — recommandée (proche Prio / Saisie) | Flux cloud « Power Range Simu writeback » : On Create/Update de cr568_simu_scenario et cr568_simu_overlay, import des deux tables (Import, pas DirectQuery), relation overlay[scenario_id] → header[scenario_id], refresh 612ef347-…. Les mesures COALESCE ne changent pas de formule. | Même contrat que le brief Prio. |
| B — Excel | Le flux upsert un classeur overlay/header SharePoint, Power Query remplace le DATATABLE. Aucun changement DAX si les noms de colonnes seed sont stricts. | Uniquement si l'import Dataverse est refusé. Fragile (lock fichier). |
| Promote (flux séparé) | Déclenché par le bouton app, seulement si statut = validé. Upsert cr568_negotiation_current + Patch promu_nego = oui. Puis le même RefreshDataset. Pas Flux PPC, pas RefreshPBI_PowerRange de Saisie (autre app). | S18. S24 tant que ce flux n'a pas tourné. |
| Mesure / porte PBI | Lecture actuelle | Après option A |
|---|---|---|
| ScId | SELECTEDVALUE(Simu_Scenario[scenario_id]) | Même colonne, lignes Dataverse. Si blank → overlay blank. |
| Overlay[champ] | MAX Simu_Overlay filtré ScId + TREATAS EAN | Même noms : strate, dv_cible, dn_cible, perma_saiso, date_entree, date_sortie, tx_transfo, ean, conditionnement |
| Simu DV | dv_cible → Dim_Strates → DVvaleur_LE | Inchangé. L'app peut laisser dv_cible blank. |
| Simu tx transfo | COALESCE(overlay, Target, Taux) ; valo tx COALESCE(..., 1) | Inchangé. S21 reste un trou modèle MAG, pas un trou app. |
| Simu mouvement | SWITCH overlay vs ledger | Inchangé. Plus de lignes overlay = plus de Listing/Restratage visibles. |
| promu_nego / statut | colonnes header seed | Mises à jour par l'app. Carte Création. |
| VALO / Unité / Vision / Bench | slide 5 + Z_Simu_* | Hors flux Simu. Déjà dans PBI. |
Fallback seed. Tant qu'aucune ligne Dataverse n'existe, garder le DATATABLE / ROW (deux scénarios CARREFOUR HM) pour que le lecteur continue. COALESCE(Dataverse ; seed) au go-live, comme COALESCE(décision ; spec) côté Prio.
Refresh à la demande. Bouton app « Publier vers le rapport » = flux Power Automate, pas un refresh Desktop. Ne rafraîchir que si le Patch a réussi. Pas toutes les 5 min (le PPC négo garde son cadencement). Mesure Trigger Refresh = MAX(Z_Table_Refresh_Key[Value1]) ne recharge pas les données — c'est le poke Saisie, pas le writeback Simu.
| # | Donné | Attendu |
|---|---|---|
| 1 | Slicer enseigne Tout / clic EAN / Enregistrer strate | App refuse. Message enseigne + nom de scénario. |
| 2 | CARREFOUR HM + nouveau nom + 2026Q1 + import Nego | Header ad hoc, promu_nego=non, N overlay = lignes ledger is_duplicate=0. Après refresh, ScId lit le nouveau scenario_id. |
| 3 | Même header, PeriodKey 2026Q3 + préremplir Q1 | Clone overlay Q1 (S22). Pas un second import ledger Q3 vide. |
| 4 | Test 3 seed, forcer strate T3 + tx 0,90 sur 3502110008343 | Overlay persistée. Après refresh, Simu DV via Dim_Strates (dv_cible blank) ; tx = 0,90 ; mouvement = Restratage si base ≠ T3. |
| 5 | Delisting : strate overlay blank, base remplie | PBI Simu mouvement = Delisting. date_sortie obligatoire. |
| 6 | Listing : strate remplie, base blank | Listing. date_entree si INNO / saisonnier. |
| 7 | Promote alors que statut = EIE | Refus. Ledger inchangé. promu_nego reste non. |
| 8 | Passer validé puis Pousser vers négo | Lignes cr568_negotiation_current upsert EAN×enseigne×PeriodKey. promu_nego=oui. Pages Négo voient la strate après refresh. |
| 9 | Enseigne Drive / HD | Patch header refusé. |
| 10 | Utilisateur hors RDE/DXI | App en lecture ou accès Dataverse refusé. |
| 11 | Embarquer e890ef64 (Saisie) dans le slot Simu | Hors recette — interdit. Mauvais grain, écrit le ledger trop tôt. |
| 12 | Scenario_Q1 27 (pas d'overlay seed) après import réel | Des lignes overlay apparaissent ; le fallback ledger seul disparaît pour ces EAN. |
| Livrable | Owner | Couvre |
|---|---|---|
| Tables header + overlay + choices + AK + security roles dans PowerRange | Dataverse / DXI | S20 |
| Canvas : création/import/clone Q3, saisie overlay, états, promote, Notify, bouton refresh | Power App | S16 S17 S18 S22 |
| Visuel Power Apps × 6, bindings, host_screen ; txt_console / shape_console conservés | Power BI (plus tard) | S23 |
| Import Dataverse → Simu_Scenario / Simu_Overlay (mêmes colonnes COALESCE) | Power BI (plus tard) | S4 S20 |
| Flux On Create/Update → refresh 612ef347-… | Power Automate | S23 |
| Flux promote validé → cr568_negotiation_current + promu_nego | Power Automate | S18 S24 |