Capita spesso di dover sviluppare un Flow (Power Automate) in un ambiente di DEV, che punta ad uno specifico sito di SharePoint Online e, al termine dello sviluppo, doverlo spostare e/o far puntare ad un sito di Produzione.

Nativamente Power Automate non mette a disposizione nessuna funzionalità per eseguire questa attività con le connessioni a SharePoint Online.

L'unico modo che ho trovato per superare l'ostacolo è quello di:
  • esportare il Power Automate
  • fare l'unzip
  • sostituire tutte le url di SharePoint Online con quelle del nuovo sito (replace)
  • sostituire tutti i GUID di tutte le liste con i GUID del nuovo sito (replace)
  • ricreare lo zip con il comando PowerShell Compress-Archive
  • importare il package nel nuovo ambiente

Export

Per esportare un Flow basta selezionarlo, usare i tre puntini, e scegliere Export / Package
Export FlowExport Flow

Unzip

Per decomprimere il file zip esportato, si può usare le funzioni di windows oppure il seguente comando PowerShell
PowerShell
Expand-Archive -Path .\TestMoveFlowComunications_20211127223311.zip -DestinationPath .\TestMoveFlowComunications_Edit
questo crea una cartella TestMoveFlowComunications_Edit con dentro altri file e cartelle.

Replace

Usando un editor come Visual Studio Code cercare tutte le occorrenze, in tutti i file, della url del sito SharePoint Online e sostituirle con la nuova url di produzione.

La stessa sostituzione deve essere fatta per ogni GUID delle liste usate nel Flow. Questo perché le liste non vengono salvate con il nome ma con il loro GUID.

Per ricavare il GUID di una lista basta andare nei settings delle lista e guardare la query string
Prendere il GUID senza le parentesi graffe.
Ad esempio:
JSON
},"parameters":{"dataset":"https://sgart.sharepoint.com/sites/modern-team","table":"d0bb4da5-d6d1-4a94-bea3-5a57c46c7f13","item/Title":"@utcNow()",
dove con dataset ci si riferisce alla url del sito SharePoint Online e con table al GUID della lista.

Zip

Al termine delle modifiche va ricreato lo zip con il comando windows tar
PowerShell
tar -a -c -f "TestMoveFlowModern_New.zip" -C "\TestMoveFlowComunications_Edit" *

# Compress-Archive -Path .\TestMoveFlowComunications_Edit\*.* -DestinationPath TestMoveFlowModern_New.zip
Attenzione non usare il comando windows invia a / cartella compressa per creare lo zip, da errore in fase di import: Something went wrong. Please try again later.

Attenzione il comando Compress-Archive non sembra funzionare sempre, usare tar.
Import errorImport error

Rename Flow

Volendo è possibile cercare il nome del Flow e cambiarlo, ad esempio:
JSON: manifest.json
"details":{"displayName":"TestMoveFlowModern"},"configurableBy":
Il nome può comparire in più punti.
Questa operazione può essere utile in caso di import nello stesso ambiente.
Attenzione se si esporta una solution con più Flow e alcuni Flow ne richiamano altri l'operazione di rename potrebbe non funzionare.

Import

A questo punto è possibile importare il nuovo package nello stesso ambiente (enviroment) cambiandogli nome, oppure in un nuovo ambiente:
ImportImport
ImportImport
Per cambiare nome al package che si sta importando cliccare su Create as new.

Turn on

Attenzione, la prima volta che si importa un Flow è disabilitato, premere Turn on per abilitarlo
Potrebbe interessarti anche: