Einrichten und Konfigurieren der Funktionen für die Lieferantenkommunikation (Vorschau für den Produktiveinsatz)

Hinweis

Community-Interessensgruppen sind inzwischen von Yammer auf Microsoft Viva Engage umgestiegen. Um an einer Viva Engage-Community teilzunehmen und an den neuesten Diskussionen teilzunehmen, füllen Sie das Formular "Anfordern des Zugriffs auf Finance and Operations Viva Engage Community" aus , und wählen Sie die Community aus, der Sie beitreten möchten.

[Dieser Artikel ist eine Vorabdokumentation und kann geändert werden.]

In diesem Artikel wird erläutert, wie Systemadministratoren die Lieferantenkommunikation einrichten und konfigurieren können.

Videoanleitungen

Videoanweisungen zum Einrichten der Lieferantenkommunikation finden Sie unter Supplier Communications Agent: Einrichten und Konfigurieren | Dynamics 365 Bits (Video).

Die verbleibenden Abschnitte in diesem Artikel bieten dieselben Anweisungen in einem textbasierten Format.

Voraussetzungen

Bevor Sie die Lieferantenkommunikation verwenden können, muss Ihr System die folgenden Anforderungen erfüllen:

  • Sie müssen Microsoft Dynamics 365 Supply Chain Management, Version 10.0.44 oder höher, mit allen verfügbaren Qualitätsupdates ausführen.

  • Die folgenden Features müssen in der Featureverwaltung aktiviert sein. Wählen Sie "Nach Updates suchen " aus, wenn die Features nicht auf Ihrem System angezeigt werden.

    • (Produktionsbereite Vorschau) Immersive Startseite
    • (Produktionsbereite Vorschau) Agentverwaltung
    • (Produktionsbereite Vorschau) Lieferantenkommunikations-Agent
    • Optional: Wenn der Agent E-Mails automatisch senden soll, aktivieren Sie das Feature (Vorschau) Senden von Nachverfolgungs-E-Mails an Lieferanten mit Lieferantenkommunikations-Agent – automatisches Senden von E-Mails. Wir empfehlen, dieses Feature für Sandkastenumgebungen zu deaktivieren. Der Grund dafür ist, dass Daten (z. B. Bestellungen) möglicherweise nicht auf dem neuesten Stand sind oder E-Mail-Adressen von Lieferanten fehlen.

    Tipp

    Wenn Sie das Feature Agent management nicht aktivieren können, stellen Sie sicher, dass alle prerequisites erfüllt sind, z. B. Versionsanforderungen und Copilot Studio Abrechnungsaktivierung.

  • Stellen Sie im Power Platform Admin Center sicher, dass Sie die folgenden Versionen der folgenden Dynamics 365-Apps in Ihrer Supply Chain Management-Umgebung ausführen. Es ist wichtig, dass Sie sie in der folgenden Reihenfolge installieren oder aktualisieren:

    • Installieren Sie zunächst Copilot für Finanz- und Betriebs-Apps Version 1.0.03048.2 oder höher. Wenn sie bereits installiert ist, aktualisieren Sie sie auf die neueste Version.
    • Installieren Sie dann Copilot in Microsoft Dynamics 365 Supply Chain Management Version 1.1.03071.1 oder höher. Wenn sie bereits installiert ist, aktualisieren Sie sie auf die neueste Version.
  • Normalerweise werden die Microsoft Copilot Studio Agenten, die für die Ausführung der Lieferantenkommunikation erforderlich sind, automatisch veröffentlicht. Es kann jedoch Richtlinien zur Verhinderung von Datenverlust (Data Loss Prevention, DLP) in Ihrer Umgebung geben, die die Veröffentlichung dieser Agents verhindern. Um zu überprüfen, ob die Agenten erfolgreich veröffentlicht wurden, wechseln Sie zu Copilot Studio und suchen Sie Ihre Umgebung auf. Stellen Sie sicher, dass die folgenden Microsoft Copilot Studio Agents in dieser Umgebung veröffentlicht werden:

    • Agent für eingehende Lieferantenkommunikation
    • Lieferantenkommunikations-Agent - ausgehend.

    Wenn die beiden Agents nicht veröffentlicht werden, können Sie Unterstützung unter Problemlösung bei der Durchsetzung von Datenrichtlinien für Copilot Studio finden.

Einrichten einer Agentidentität

Die Lieferantenkommunikation interagiert mit Dataverse und Microsoft Copilot Studio, um ihre Arbeit zu erledigen. Wählen Sie die Identität aus, die der Agent für diese Interaktionen verwendet, und erstellen Sie die erforderlichen Verbindungen.

Tipp

Verwenden Sie für sicherheit und einfache Wartung eine dedizierte Identität für den Agenten.

Agent-Identität-Benutzer einrichten und Sicherheitsrollen zuweisen

Verwenden Sie die Benutzerverwaltungsfeatures für Ihren Mandanten, um einen Agent-Identitätsbenutzer zu erstellen. Weisen Sie dann den benutzern die in den folgenden Unterabschnitten beschriebenen Lizenzen und Sicherheitsrollen zu.

Lizenzanforderungen

Die Lieferantenkommunikation verwendet Premium-Konnektoren, daher muss der Benutzer der Agentenidentität über eine Lizenz verfügen, die die Nutzung dieser Konnektoren erlaubt. Weitere Informationen finden Sie in den häufig gestellten Fragen zur Power Platform-Lizenzierung , oder laden Sie das Lizenzierungshandbuch herunter.

Beispiele für ausreichende Lizenzen sind Power Apps Premium, Power Automate Premium oder Dynamics 365 Supply Chain Management.

Verwenden Sie das Microsoft 365 Admin Center, um die erforderlichen Lizenzen zuzuweisen.

Erforderliche Sicherheitsrollen

Fügen Sie den Agent-Identitätsbenutzer sowohl zur Dataverse-Umgebung als auch zur Supply Chain Management hinzu. Weisen Sie dem Agentidentitätsbenutzer die Sicherheitsrollen zu, die in den folgenden Listen angezeigt werden.

  • Erforderliche Dataverse-Benutzerrollen:

    • Basisbenutzer für Finanzen und Betrieb
    • Lieferantenkommunikations-Agent
    • Umgebungsersteller
  • Erforderliche Supply Chain Management-Benutzerrollen:

    • (Vorschau) Lieferantenkommunikations-Agent
    • Systembenutzer
    • System-Agent

Hinweis

Die System-Agent-Rolle im Supply Chain Management befreit den Agent-Identitätsbenutzer von der Lizenzerzwingung. Dies bedeutet, dass Sie dem Agent keine Benutzerlizenz zuweisen müssen.

Die erforderlichen Verbindungen erstellen

Führen Sie die folgenden Schritte aus, um die erforderlichen Verbindungen zu erstellen:

  1. Öffnen Sie das Power Apps Maker-Portal und melden Sie sich als Umgebungsadministratorbenutzer an.

  2. Verwenden Sie die Dropdownliste "Umgebung" im Seitenkopf, um die Umgebung auszuwählen, die Ihren Finanz- und Betriebs-Apps zugeordnet ist.

  3. Wählen Sie im linken Navigator "Verbindungen" aus.

  4. Wählen Sie am oberen Seitenrand Neue Verbindung aus.

  5. Verwenden Sie das Suchfeld auf der rechten Seite der Seite, um die Verbindung mit einem Namen von Microsoft Dataverse zu finden (wenn zwei angezeigt werden, verwenden Sie das Feld mit dem grünen Symbol). Wählen Sie "Erstellen " für diese Zeile aus, und folgen Sie den Anweisungen auf dem Bildschirm. Melden Sie sich mit dem beabsichtigten Agent-Identitätsbenutzer an, wenn Sie dazu aufgefordert werden.

  6. Sie kehren zur Liste "Verbindungen" zurück. Der neue Konnektor wird am Ende der Liste angezeigt und ist nach der Agent-Identität benannt, mit der Sie sich beim Erstellen angemeldet haben.

  7. Wählen Sie am oberen Seitenrand Neue Verbindung aus.

  8. Suchen Sie die Verbindung mit einem Namen von Microsoft Copilot Studio. Wählen Sie "Erstellen " für diese Zeile aus, und folgen Sie den Anweisungen auf dem Bildschirm. Melden Sie sich bei Aufforderung als die gewünschte Agent-Identität an.

  9. Sie kehren zur Liste "Verbindungen" zurück. Der neue Konnektor wird am Ende der Liste angezeigt und ist nach der Agent-Identität benannt, mit der Sie sich beim Erstellen angemeldet haben.

    Beispiel für das Einrichten von Verbindungen

Die auslösenden Power Automate-Flows aktivieren

Hinweis

In diesem Abschnitt wird eine von zwei Möglichkeiten zum Aktivieren der auslösenden Power Automate-Flüsse beschrieben. Die andere Möglichkeit besteht darin, ein PowerShell-Skript zu verwenden, das im Abschnitt Das Auslösen von Power-Automate-Flows mit einem PowerShell-Skript aktivieren später in diesem Artikel beschrieben wird. Sie müssen nicht beide Methoden ausführen. Wählen Sie die bevorzugte Methode aus.

Um die Einrichtung der Agent-Identität abzuschließen, müssen Sie die auslösenden Power Automate-Flows aktivieren. Führen Sie die folgenden Schritte aus, um eine Canvas-App zu verwenden und das Setup abzuschließen.

  1. Melden Sie sich beim Power Apps Maker-Portal als Umgebungsadministratorbenutzer an.
  2. Wählen Sie Ihre Umgebung in der Dropdownliste "Umgebung " im Seitenkopf aus.
  3. Wählen Sie Lösungen im linken Bereich aus.
  4. Öffnen Sie die Registerkarte "Verwaltet" .
  5. Suchen und öffnen Sie die Lösung mit einem Anzeigenamen von Copilot in der Supply Chain Management-Lösung.
  6. Wählen Sie im Bereich "Objekte" die Option "Apps" aus.
  7. Wählen Sie die App mit dem Anzeigenamen(Produktionsvorschau) aus, um lieferantenkommunikations-Agent einzurichten.
  8. Wenn "Wiedergeben" auf der Befehlsleiste deaktiviert ist, wählen Sie "Freigeben" aus, fügen Sie Ihren Namen hinzu, und wählen Sie "Freigeben" aus.
  9. Wählen Sie erneut die Setup Supplier Communications Agent App (Produktionsbereit-Vorschau) aus, und wählen Sie dann in der Befehlsleiste Starten.
  10. Wählen Sie unter Connections die Verbindungen aus, die Sie im vorherigen Abschnitt für Microsoft Dataverse und Microsoft Copilot Studio erstellt haben.
  11. Wählen Sie unten rechts auf der Seite "Übernehmen" aus, und warten Sie, bis alle unter Status der Agent-Trigger-Flows aufgeführten Abläufe in den Status Aktiviert wechseln.

Zuweisen von Berechtigungen für Benutzer, die mit dem Agent arbeiten

Alle Dynamics 365 Supply Chain Management-Benutzer, die mit dem Agent arbeiten, müssen auch als Dataverse-Benutzer erstellt werden (sofern sie noch nicht vorhanden sind). Informationen dazu finden Sie unter " Benutzer erstellen".

Weisen Sie außerdem die in den folgenden Unterabschnitten beschriebenen Rollen zu.

Berechtigungen für Benutzer, die die Agentkonfiguration verwalten

  • Erforderliche Dataverse-Benutzerrollen:

    • Basic-Benutzender
    • Finanz- und Betriebsagent-Konfigurationsmanager
    • Finanz- und Betriebsgrundbenutzer
  • Erforderliche Supply Chain Management-Benutzerrollen:

    • Systembenutzer
    • Einkaufsleiter und/oder Einkaufsmitarbeiter

Berechtigungen für Benutzer, die Agentergebnisse überprüfen

  • Erforderliche Dataverse-Benutzerrollen:

    • Basic-Benutzender
    • Finanz- und Betriebsgrundbenutzer
  • Erforderliche Supply Chain Management-Benutzerrollen:

    • Systembenutzer
    • Einkaufsmitarbeiter

Synchronisieren von Postfächern mit Dataverse

Um die E-Mail-Analyse- und Zustellungsfunktionen der Lieferantenkommunikation zu aktivieren, müssen Sie gezielte Postfächer einrichten, damit sie auf Serverebene mit Dataverse synchronisiert werden.

Privates Postfach

Von Bedeutung

Nur der Besitzer eines privaten Postfachs kann eine Agentkonfiguration erstellen und agent-Ergebnisse im Zusammenhang damit überprüfen. Der Besitzer muss über Berechtigungen zum Verwalten der Agentkonfiguration und zum Überprüfen der Agentergebnisse verfügen.

Führen Sie die folgenden Schritte aus, um ein privates Postfach einzurichten:

  1. Melden Sie sich beim Power Platform Admin Center als Benutzer mit der Sicherheitsrolle des Systemadministrators an. (Obwohl Benutzer ohne Administratorrolle die Synchronisierung für ihre eigenen Postfächer aktivieren können, kann die Administratorgenehmigung erforderlich sein.)
  2. Wählen Sie die Umgebung aus, die Sie einrichten möchten.
  3. Wählen Sie in der Befehlsleiste Einstellungen aus.
  4. Wählen Sie auf der Seite "Einstellungen" unter "E-Mail" "Postfächer" aus.
  5. Wählen Sie im Dropdownmenü " Ansicht auswählen " oben auf der Seite " Aktive Postfächer" aus.
  6. Aktivieren Sie das Kontrollkästchen für jedes Postfach, das Sie für die Lieferantenkommunikation verwenden möchten.
  7. Wählen Sie auf der Befehlsleiste " Testen" und "Postfach aktivieren " aus, um die Synchronisierung für die ausgewählten Postfächer zu aktivieren.

Nachdem Sie ein privates Postfach eingerichtet haben, muss der Benutzer, der es besitzt, die Personalisierungseinstellungen aktualisieren, um anzugeben, dass alle E-Mails nachverfolgt werden sollen.

Führen Sie die folgenden Schritte aus, um die Nachverfolgung aller E-Mails für ein privates Postfach zu aktivieren, das Sie besitzen:

  1. Wählen Sie auf der Seite "Aktive Postfächer " die Schaltfläche " Einstellungen" (Zahnradsymbol) oben rechts und dann " Personalisierungseinstellungen" aus.
  2. Wählen Sie im Dialogfeld " Persönliche Optionen festlegen " auf der Registerkarte " E-Mail " im Feld " Nachverfolgen " die Option "Alle E-Mail-Nachrichten" aus.
  3. Wählen Sie OK aus.

Freigegebenes Postfach

Wenn Sie ein freigegebenes Postfach verwenden, führen Sie die folgenden Schritte aus:

  1. Melden Sie sich beim Power Platform Admin Center als Benutzer an, der über eine Sicherheitsrolle für Systemadministratoren verfügt.

  2. Wählen Sie die Umgebung aus, die Sie einrichten möchten.

  3. Wählen Sie in der Befehlsleiste Einstellungen aus.

  4. Wählen Sie auf der Seite "Einstellungen" unter "Benutzer + Berechtigungen" "Teams" aus.

  5. Wählen Sie auf der Befehlsleiste " Team erstellen" aus.

  6. Geben Sie im Dialogfeld "Neues Team " einen Namen (z. B. "Mein E-Mail-Team"), eine Geschäftseinheit und einen Administrator nach Bedarf an. Legen Sie das Feld "Teamtyp " auf "Besitzer" fest.

  7. Wählen Sie Weiteraus.

  8. Fügen Sie im Dialogfeld " Teammitglieder hinzufügen " alle Benutzer hinzu, die Zugriff auf das freigegebene Postfach haben sollen.

    Von Bedeutung

    Fügen Sie alle Benutzer hinzu, die eine Agentkonfiguration erstellen, und überprüfen Sie die Agentergebnisse, die mit diesem Postfach verbunden sind, als Teammitglieder.

  9. Wählen Sie Weiteraus.

  10. Wählen Sie im Dialogfeld "Sicherheitsrollen verwalten " die Option "Basisbenutzer und Finanzen und Operationen Basisbenutzer" und dann " Speichern" aus.

  11. Sie kehren zur Liste der Teams zurück. Suchen Sie das neu erstellte Team, und öffnen Sie es.

  12. Suchen Sie in der oberen rechten Ecke die dem Team zugeordnete Standardwarteschlange , und öffnen Sie sie. Die Warteschlange hat denselben Namen wie das Team, das in spitzen Klammern festgelegt ist (z. B. <„Mein E-Mail-Team“>).

  13. Ein Postfach sollte im Abschnitt " E-Mail-Einstellungen" angezeigt werden. Wählen Sie den Postfachnamen aus.

  14. Wählen Sie auf der Seite "Postfachdetails" auf der Befehlsleiste "Aktivieren" und dann im Dialogfeld "Aktivieren" aus.

  15. Geben Sie im Abschnitt "Postfachinformationen" die freigegebene E-Mail-Adresse ein, und speichern Sie sie.

  16. Wählen Sie auf der Befehlsleiste " Testen" und "Postfächer aktivieren" aus.

    Tipp

    Wenn dieser Vorgang fehlschlägt, überprüfen Sie den Abschnitt "Warnungen " für das Postfach. Wenn sie eine Fehlermeldung enthält, die besagt, dass die Genehmigung erforderlich ist, müssen Sie Ihren globalen oder Exchange-Administrator bitten, das Postfach zu genehmigen. Weitere Informationen finden Sie unter "E-Mail genehmigen".

  17. Stellen Sie sicher, dass keine anderen Postfächer mit derselben E-Mail-Adresse eingerichtet und aktiv sind.

    1. Kehren Sie zur Seite "Einstellungen" für Ihre Umgebung zurück.
    2. Wählen Sie unter "E-Mail" "Postfächer" aus.
    3. Wählen Sie im Dropdownmenü " Ansicht auswählen " oben auf der Seite " Aktive Postfächer" aus.
    4. Wenn andere Postfächer dieselbe E-Mail-Adresse wie die E-Mail-Adresse des freigegebenen Postfachs haben, deaktivieren Sie sie.

Ausführliche Anweisungen finden Sie in der Einrichtung der serverseitigen Synchronisierung von E-Mails.

Problembehandlung

Probleme beim Einrichten der Lieferantenkommunikation

Hilfe zu Problemen, die beim Einrichten der Lieferantenkommunikation auftreten können, finden Sie unter "Lösen häufiger Probleme beim Einrichten von Lieferantenkommunikationsfeatures".

Probleme mit der serverseitigen Synchronisierung

Erfahren Sie, wie Sie häufige Probleme beheben, die mit der serverseitigen Synchronisierung in der Problembehandlung und -überwachung zusammenhängen.

Aktualisieren von Daten (optional)

Nachdem Sie die Lieferantenkommunikation in einer Sandkastenumgebung aktiviert haben, empfehlen wir, dass Sie eine Datenaktualisierung durchführen. Auf diese Weise können Sie beim Testen in der Sandkastenumgebung dieselben Daten wie in der Produktionsumgebung verwenden. Erfahren Sie, wie Sie eine Datenbankaktualisierung in der Aktualisierungsdatenbank ausführen.

Festlegen Ihrer E-Mail-Adresse als Anbieterkontakt zum Testen

Wenn Sie die Änderungen von Bestellungen überprüfen und anwenden, die in Lieferanten-E-Mails empfangen wurden Funktion verwenden, liest der Agent nur E-Mails von Lieferantendomänen. Diese Einschränkung bedeutet, dass Sie, wenn Sie das System testen und Lieferanten-E-Mails von Ihrem eigenen E-Mail-Konto senden oder weiterleiten möchten, Ihre E-Mail-Adresse als Anbieterkontakt hinzufügen müssen. Gehen Sie folgendermaßen vor, um Ihre E-Mail-Adresse hinzuzufügen:

  1. Gehen Sie zu Beschaffung>Lieferanten>Alle Lieferanten.
  2. Erstellen oder Auswählen eines Anbieters.
  3. Fügen Sie auf der FastTab-Registerkarte "Kontaktinformationen " eine Zeile mit Ihrer eigenen E-Mail-Adresse hinzu (von der Sie Testnachrichten senden oder weiterleiten werden).

Die auslösenden Power Automate-Flows mithilfe eines PowerShell-Skripts aktivieren

Hinweis

In diesem Abschnitt wird eine von zwei Möglichkeiten zum Aktivieren der auslösenden Power Automate-Flüsse beschrieben. Die andere Möglichkeit besteht darin, eine Canvas-App zu verwenden, die weiter oben in diesem Artikel im Abschnitt "Aktivieren des auslösenden Power Automate-Flows" beschrieben wird. Sie müssen nicht beide Methoden verwenden. wählen Sie die bevorzugte Methode aus.

Dieses PowerShell-Beispielskript schließt die Einrichtung der Agent-Identität ab, indem die Verbindungsverweise für den Agent aktualisiert und die auslösenden Power Automate-Flüsse aktiviert werden.

Führen Sie die folgenden Schritte aus, um das PowerShell-Beispielskript zu verwenden:

  1. Kopieren Sie das Skript, und speichern Sie es als .ps1 Datei.

  2. Geben Sie vor dem Ausführen des Skripts Werte für die folgenden vier Parameter oben ein:

    • environmentId – Geben Sie die ID Ihrer Dataverse-Umgebung an. Sie finden die ID im Power Platform Admin Center.
    • dataverseUrl – Geben Sie die URL Ihrer Dataverse-Umgebung an. Sie finden die URL im Power Platform Admin Center. Fügen Sie https:// in die URL ein.
    • DVConnectionName – Geben Sie den Namen des zu verwendenden Dataverse-Konnektors an. Der Anschluss wird nach der Agentidentität benannt, als die Sie sich angemeldet haben, als Sie ihn erstellt haben. Sie finden den Namen auf der Seite Connections in Power Apps.
    • MCSConnectionName – Geben Sie den Namen des zu verwendenden Copilot Studio-Konnektors an. Der Anschluss wird nach der Agentidentität benannt, als die Sie sich angemeldet haben, als Sie ihn erstellt haben. Sie finden den Namen auf der Seite Connections in Power Apps.
  3. Passen Sie das Skript nach Bedarf an.

  4. Führen Sie das Skript über eine beliebige PowerShell-Konsole oder Visual Studio Code aus. Befolgen Sie bei Bedarf die Anweisungen, um Ihre installierte PowerShell auf Version 7 zu aktualisieren. Wenn Sie aufgefordert werden, sich anzumelden, melden Sie sich als Umgebungsadministrator an.

Hier ist das Skript:

Param(
   [Parameter(Mandatory=$true, HelpMessage="Dataverse environment id")]
   [string]$environmentId = "", 

   [Parameter(Mandatory=$true, HelpMessage="Dataverse environment URL")]
   [string]$dataverseUrl = "",

   [Parameter(Mandatory=$true, HelpMessage="Microsoft Dataverse connection name")]
   [string]$DVConnectionName = "",

   [Parameter(Mandatory=$true, HelpMessage="Microsoft Copilot Studio connection name")]
   [string]$MCSConnectionName = ""
)

# Check PS version
if ($PSVersionTable.PSVersion.Major -lt 7) {
    Write-Error 'This script requires at least PowerShell version 7' -ErrorAction Stop
}

# Install the required modules if not already installed
if (-not (Get-Module -ListAvailable -Name Microsoft.PowerApps.PowerShell)) {
    Write-Warning -Message 'Installing module Microsoft.PowerApps.PowerShell'
    Install-Module -Name Microsoft.PowerApps.PowerShell -AllowClobber -Scope CurrentUser
}

# Install the required modules if not already installed
if (-not (Get-Module -ListAvailable -Name Az.Accounts | Where-Object Version -ge 2.17)) {
    Write-Warning -Message 'Installing required version of module Az.Accounts'
    Install-Module -Name Az.Accounts -AllowClobber -Scope CurrentUser -Force -MinimumVersion 2.17
}

# Import required modules
Import-Module Az.Accounts -MinimumVersion 2.17
Import-Module Microsoft.PowerApps.PowerShell

function Get-AccessToken {
    # Retrieve the access token for the Dataverse environment
    $accessToken = Get-AzAccessToken -ResourceUrl "$dataverseUrl" -AsSecureString
    $token = $accessToken.Token
    $userId = $accessToken.UserId
    Write-Host "Access token for $userId retrieved successfully." -ForegroundColor Green

    return $token
}

function Get-ConnectionId {
    param (
        [string]$userProvidedName,
        [string]$providerName
    )

    $matchedConnectionId = $null

    $connections = Get-PowerAppConnection -EnvironmentName $environmentId -ConnectorNameFilter $providerName
    foreach ($con in $connections) {
        if (($con.ConnectionName -eq $userProvidedName) -or ($con.DisplayName -eq $userProvidedName))
        {
            $matchedConnectionId = $con.ConnectionName
            break
        }
    }

    if ($null -eq $matchedConnectionId)
    {
        Write-Error -Message "Unable to find connection $userProvidedName ($providerName)" -ErrorAction Stop
    }

    Write-Host "Found connection id $matchedConnectionId for connection $userProvidedName"

    return $matchedConnectionId
}

function Get-ConnectionReferenceId {
    param(
        [string]$connectionReferenceLogicalName,
        [securestring]$accessToken
    )

    $uri = "$dataverseUrl/api/data/v9.2/connectionreferences?`$filter=connectionreferencelogicalname eq '$connectionReferenceLogicalName'"
    $response = Invoke-RestMethod -Method Get `
        -Uri $uri `
        -Authentication Bearer -Token $accessToken `
        -ContentType 'application/json'
        
    
    if ($null -eq $response) {
        Write-Error -Message "Connection reference not found for logical name $connectionReferenceLogicalName" -ErrorAction Stop
    }

    $connectionReferenceDisplayName = $response.value[0].connectionreferencedisplayname
    $connectionReferenceId = $response.value[0].connectionreferenceid

    Write-Host "Found connection reference id $connectionReferenceId for $connectionReferenceDisplayName ($connectionReferenceLogicalName)"

    return $connectionReferenceId
}

function Set-ConnectionReferenceConnection {
    param (
        [string]$connectionReferenceLogicalName,
        [string]$userProvidedConnectionName,
        [string]$providerName,
        [securestring]$accessToken
    )

    Write-Host "Updating connection reference ${connectionReferenceLogicalName}..."

    $connectionReferenceId = Get-ConnectionReferenceId -connectionReferenceLogicalName $connectionReferenceLogicalName -accessToken $accessToken
    $connectionId = Get-ConnectionId -userProvidedName $userProvidedConnectionName -providerName $providerName

    $body = @{
        "connectionid" = "$connectionId"
    } | ConvertTo-Json -Depth 1

    $uri = "$dataverseUrl/api/data/v9.2/connectionreferences($connectionReferenceId)"
    Write-Host "Updating connection reference URI: $uri with connection id $connectionId"

    Invoke-RestMethod -Method Patch `
        -Uri $uri `
        -Authentication Bearer -Token $accessToken `
        -ContentType 'application/json' `
        -Body $body
   
    Write-Host "Connection reference updated successfully." -ForegroundColor Green
    Write-Host
}

function ValidateUserEnvironment {
    param (
        [string]$environmentId
    )

    $env = Get-PowerAppEnvironment -EnvironmentName $environmentId
    if ($null -eq $env) {
        Write-Error -Message "Environment $environmentId was not found" -ErrorAction Stop
    }

    $displayName = $env.DisplayName
    Write-Host "Connected to environment: $displayName ($environmentId)"
}

function Enable-TriggerFlow {
    param (
        [string]$flowId,
        [securestring]$accessToken
    )

    $flowUri = "$dataverseUrl/api/data/v9.2/workflows($flowId)"
    $flow = $null

    Write-Host "Enabling flow $flowId with uri $flowUri"

    try {
        $flow = Invoke-RestMethod -Method Get `
            -Uri $flowUri `
            -Authentication Bearer -Token $accessToken `
            -ContentType 'application/json'
    }
    catch {
        Write-Error -Message $_.Exception -ErrorAction Stop
    }

    $displayName = $flow.name
    Write-Host "Activating flow $displayName for id $flowId"

    $body = @{
        "statecode" = 1  # Activated
        "statuscode" = 2 # Activated
    } | ConvertTo-Json -Depth 1 -Compress
    
    try {
        Invoke-RestMethod -Method Patch `
            -Uri $flowUri `
            -Authentication Bearer -Token $accessToken `
            -ContentType 'application/json' `
            -Body $body
    }
    catch {
        Write-Error -Message $_.Exception -ErrorAction Stop
    }

    Write-Host "Activated flow $displayName" -ForegroundColor Green
    Write-Host
}

# Actual script body

Write-Host
Write-Host "Authenticating interactively..."
Write-Host

Connect-AzAccount -UseDeviceAuthentication
$accessToken = Get-AccessToken
ValidateUserEnvironment -environmentId $environmentId

Write-Host
Write-Host 'Setting up connection references...'
Write-Host

Set-ConnectionReferenceConnection `
    -userProvidedConnectionName $DVConnectionName `
    -providerName "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps" `
    -connectionReferenceLogicalName "new_sharedcommondataserviceforapps_6ae5d" `
    -accessToken $accessToken

Set-ConnectionReferenceConnection `
    -userProvidedConnectionName $MCSConnectionName `
    -providerName "/providers/Microsoft.PowerApps/apis/shared_microsoftcopilotstudio" `
    -connectionReferenceLogicalName "msdyn_sharedmicrosoftcopilotstudio_0be09" `
    -accessToken $accessToken

Write-Host
Write-Host 'Activating flows...'
Write-Host

Enable-TriggerFlow -flowId 'c1061034-ff20-f011-9989-002248095ade' -accessToken $accessToken # (Self Heal) Speed up updates in purchase orders with Supplier Communications Agent
Enable-TriggerFlow -flowId '1db577aa-83fe-ef11-bae1-000d3a34a571' -accessToken $accessToken # Speed up updates in purchase orders with Supplier Communications Agent
Enable-TriggerFlow -flowId 'acd7bb36-07a1-ef11-a72d-6045bd0390ae' -accessToken $accessToken # Send follow-up emails to vendors with Supplier Communications Agent

Write-Host
Write-Host 'Supplier communications agent is ready for use' -ForegroundColor Green