Opsæt og konfigurer Kontoafstemningsagenten (production-ready prøveversion)

Bemærkning

Community-interessegrupper er nu flyttet fra Yammer til Microsoft Viva Engage. Hvis du vil deltage i et Viva Engage community og deltage i de seneste diskussioner, skal du udfylde formularen Anmodning om adgang til Finance and Operations Viva Engage Community og vælge det community, du vil deltage i.

[Denne artikel er foreløbig dokumentation og kan ændres.]

Bemærkning

Microsoft forbedrer Account Reconciliation Agent for at give kunderne større fleksibilitet i konfigurationen og forudsigeligt kreditforbrug. Indtil disse forbedringer er udgivet, skal Microsoft-teamet aktivere denne agent. Hvis du vil anmode om aktivering og blive guidet gennem processen, skal du udfylde denne formular.

I denne artikel forklares det, hvordan systemadministratorer kan konfigurere afstemningsagenten Konto i Microsoft Dynamics 365 Finance.

Bemærkning

Kunder kan bruge Power Platform administrationscenter til at konfigurere og indstille kontoudligningsagenten. Du kan få flere oplysninger under Udrul Dynamics 365-agenter ved hjælp af guiden agentinstallation (prøveversion).

Forudsætninger

Før du bruger afstemningsagenten Konto, skal du sørge for, at systemet opfylder følgende krav:

  • Du kører Dynamics 365 Finance version 10.0.44 eller nyere. Hvis du vil bruge Dynamics 365 ERP-modelkontekstprotokolfunktioner, kører du Dynamics 365 Finance version 10.0.47 eller nyere.

  • Du aktiverer følgende funktioner i Funktionsstyring. Hvis funktionerne ikke vises i dit system, skal du vælge Søg efter opdateringer.

    • Oplevelsesrigt hjem
    • Agentstyring
    • (Produktionsklar forhåndsversion) Kontoafstemningsagent
    • (eksempelvisning) Dynamics 365 ERP-modelkontekstprotokolserver (valgfrit)
  • Du kører følgende pakker i Power Platform Administration:

    • Copilot til programmer til finans og drift, version 1.0.3048.2 eller senere
    • Copilot i Microsoft Dynamics 365 Finance, version 1.0.3049.1 eller nyere
  • Normalt udgives de Microsoft Copilot Studio-agenter automatisk, der er nødvendige for, at kontoafstemningsagenten kan køre. Men der kan være DLP-politikker (forebyggelse af datatab) i dit miljø, der forhindrer publicering af disse agenter.

  • Følg disse trin for at kontrollere, om agenterne er blevet succesfuldt publiceret:

  1. Gå til Copilot Studio, og find dit miljø.
  2. Bekræft, at følgende Microsoft Copilot Studio-agenter er publiceret i det pågældende miljø:

Få mere at vide i Oversigt over Forenklet start. 

Opret agentidentitetsbrugere, og tildel sikkerhedsroller

Brug brugeradministrationsfunktionerne for din lejer til at oprette en agentidentitetsbruger. Tildel derefter de licenser og sikkerhedsroller, der er beskrevet i følgende underafsnit, til den pågældende bruger.

Licenskrav

Kontoafstemningsagenten bruger premiumniveauconnectors, så agentens identitetsbruger skal have en licens, der tillader disse connectors. Du kan få mere at vide under Ofte stillede spørgsmål om Power Platform-licenser. Eksempler på tilstrækkelige licenser omfatter Power Apps Premium, Power Automate Premium eller Dynamics 365 Finance. Brug Microsoft 365 Administration til at tildele de nødvendige licenser.

Tip

Af hensyn til sikkerheden og vedligeholdelsen skal du bruge en dedikeret identitet for agenten.

Opret agentidentitetsbrugere, og tildel sikkerhedsroller

Opret brugerkonti til agentidentitet i både Dataverse og Finance.

Tildel følgende sikkerhedsroller til brugerkontiene:

  • Påkrævede Dataverse-brugerroller:

    • Basic-bruger af finans og drift
    • Rolle som kontoafstemningsagent
    • Miljøopretter
  • Påkrævede Finance-brugerroller:

    • Kontoafstemningsagent
    • Systembruger

Bemærkning

Sikkerhedsrollen systemagent er undtaget fra brugerlicenskrav til Dynamics 365 Finance and Operations. Du kan få mere at vide under Brug modelkontekstprotokol til finance- og driftsapps.

Udrul agenten

Bemærkning

Du kan udrulle agenten på to måder. Den første måde er at bruge den nye Agentinstallationsguide-oplevelse. Den anden måde er manuelt at oprette de nødvendige forbindelser og aktivere flowene ved hjælp af et PowerShell-script. I følgende afsnit beskrives de to måder.

Udrulning via agentens installationsguide

Guiden Agentinstallation forenkler processen med at konfigurere påkrævede forbindelser for agenten og aktiverer de nødvendige flow.

Få adgang til guiden Installation

Følg disse trin for at få adgang til guiden Installation:

  1. Åbn Copilot Hub i Power Platform Administration, og vælg Dynamics 365.
  2. Hvis du ikke kan se Copilot Hub i Power Platform Administration, skal du kontrollere, om funktionsflaget ShowDynamics365ERPInCopilotHub er aktiveret.
  3. Vælg målmiljøet.
  4. Vælg kontoafstemningsagenten.
  5. Vælg Tilføj for at starte guiden Agentinstallation.

Udrul agenten ved hjælp af guiden

Forudsætninger – Guiden kontrollerer, om destinationsmiljøet opfylder alle påkrævede krav for afstemningsagenten for konti. Den indeholder også en valgfri handling for at opdatere de virtuelle objekter for afstemningsagent for konti. Selvom dette trin er valgfrit, anbefales det, at du opdaterer de virtuelle objekter for korrekt aktivering af afstemningsagenten Konti.

Vælg agent-id'et

Hver agent kører under en dedikeret agentbrugeridentitet. I dette trin skal du vælge den tidligere oprettede bruger som en del af trinnet Konfigurer agentidentitet.

Opretter forbindelse til agenten

I dette trin beder guiden dig om at vælge forbindelsesreferencen til Microsoft Dataverse og Copilot Studio. Hvis forbindelsesreferencen ikke findes, kan du oprette den. Hvis du vil oprette forbindelsesreferencen, skal du vælge plusikonet ud for rullelisten forbindelsesreference. Opret forbindelsesreferencer ved hjælp af den agentidentitet, du tidligere har konfigureret, som nævnt i brugergrænsefladen.

Når du har valgt eller oprettet en forbindelsesreference for hver af ressourcerne eller programmerne, skal du vælge Forbind agenten for at konfigurere forbindelsesreferencerne for agenten.

Derefter skal du aktivere alle Power Automate flow, der bruges af agenten, som en del af det andet trin på denne side.

Aktivering af agenten

Det sidste trin gør agenten tilgængelig til brug. Følg disse trin for at aktivere agenten:

  1. Publicer agentbotten i Copilot Studio.
  2. Kontrollér, at agenten er aktiveret og tilgængelig i destinationsmiljøet.
  3. Når du aktiverer agenten, bliver den aktiv og klar til brug.

Du kan få flere oplysninger om guiden Agentinstallation under Deploy Dynamics 365 agenter ved hjælp af guiden agentinstallation (prøveversion).

Manuel udrulning af agenten

Opret de påkrævede forbindelser

Kontoafstemningsagenten bruger forbindelser til Dataverse og Microsoft Copilot Studio til at udføre sit arbejde. Konfigurer disse connectors, før du bruger agenten.

Følg disse trin for at konfigurere connectorerne:

  1. Log på Power Apps ved hjælp af den nyoprettede agentidentitetsbruger.

  2. Vælg Forbindelser i navigationsruden til venstre.

  3. Vælg Ny forbindelse øverst på siden.

  4. I feltet Search skal du angive Microsoft Dataverse.

  5. Find forbindelsen Microsoft Dataverse i søgeresultaterne, vælg Opret for den, og følg vejledningen på skærmen for at oprette connectoren.

  6. Når du bliver bedt om at logge på, skal du logge på som den ønskede agentidentitet.

    Du returneres til siden Forbindelser. Den nye connector vises nederst på listen og er opkaldt efter den agentidentitet, du loggede på, som da du oprettede den.

  7. Vælg Ny forbindelse øverst på siden.

  8. Søg efter forbindelsen Microsoft Copilot Studio (prøveversion) forbindelse, vælg Opret, og følg vejledningen på skærmen for at oprette connectoren. Når du bliver bedt om at logge på, skal du logge på som den ønskede agentidentitet.

    Du returneres til siden Forbindelser. Den nye connector vises nederst på listen og er opkaldt efter den agentidentitet, du loggede på, som da du oprettede den.

  9. Vælg Ny forbindelse øverst på siden.

  10. Søg efter forbindelsen Fin & Ops Apps (Dynamics 365).

  11. Vælg Opret, og følg vejledningen på skærmen for at oprette connectoren. Når du bliver bedt om at logge på, skal du logge på som den ønskede agentidentitet. Du returneres til siden Forbindelser. Den nye connector vises nederst på listen og er opkaldt efter den agentidentitet, du loggede på, som da du oprettede den.

Opdater forbindelsesreferencer, og aktivér de udløsende flows

Hvis du vil afslutte konfigurationen af agentidentitet, skal du opdatere agentens forbindelsesreferencer, så de peger på de forbindelser, du har oprettet. Du skal også aktivere de udløsende Power Automate-flows. Dette afsnit indeholder et eksempel på PowerShell script, som du kan bruge til at udføre begge opgaver.

Hvis du vil bruge PowerShell-eksempelscriptet, skal du følge disse trin:

  1. Kopiér scriptet, og gem det som en .ps1-fil.

  2. Før du kører scriptet, skal du angive følgende fire parametre øverst:

    • environmentId – Angiv id'et for dit Dataverse-miljø. Du kan finde dette id i Power Platform Administration.
    • dataverseUrl – Angiv URL-adressen for dit Dataverse-miljø. Du kan finde denne webadresse i Power Platform Administration.
    • DVConnectionName – Angiv navnet på den Dataverse-connector, der skal bruges. Connectoren er opkaldt efter den agentidentitet, du loggede på som, da du oprettede den. Du kan finde navnet på siden Connections i Power Apps.
    • MCSConnectionName – Angiv navnet på den Copilot Studio-connector, der skal bruges. Connectoren er opkaldt efter den agentidentitet, du loggede på som, da du oprettede den. Du kan finde navnet på siden Connections i Power Apps.
    • DynamicsAXConnectionName – Angiv navnet på den Fin & Ops Apps-connector, der skal bruges. Connectoren er navngivet efter den agentidentitet, du loggede på, som da du oprettede den. Du kan finde navnet på siden Connections i Power Apps.
  3. Tilpas scriptet efter behov.

  4. Kør scriptet fra enhver PowerShell-konsol. Når du bliver bedt om at logge på, skal du logge på som miljøadministrator.

Eksempelscript til opdatering af forbindelsesreferencer og aktivering af udløsende flow

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 = ""
    [Parameter(Mandatory=$false, HelpMessage="Dynamics 365 Finance and Operations connection name")]
    [string]$DynamicsAXConnectionName = ""
)
# 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)) {
    Write-Warning -Message 'Installing module Az.Accounts'
    Install-Module -Name Az.Accounts -AllowClobber -Scope CurrentUser
}

# Import required modules
Import-Module Az.Accounts
Import-Module Microsoft.PowerApps.PowerShell
function Get-AccessToken {
    try {
    # 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
    } catch {
        Write-Host "Failed to retrieve access token. Error: $($_.Exception.Message)" -ForegroundColor Red
    }
    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 "msdyn_sharedcommondataserviceforapps_f9321" `
    -accessToken $accessToken
Set-ConnectionReferenceConnection `
    -userProvidedConnectionName $MCSConnectionName `
    -providerName "/providers/Microsoft.PowerApps/apis/shared_microsoftcopilotstudio" `
    -connectionReferenceLogicalName "msdyn_sharedmicrosoftcopilotstudio_462f2" `
    -accessToken $accessToken
if ($DynamicsAXConnectionName)
{
    Set-ConnectionReferenceConnection -userProvidedConnectionName $DynamicsAXConnectionName -providerName "/providers/Microsoft.PowerApps/apis/shared_dynamicsax" -connectionReferenceLogicalName "msdyn_accountReconciliationApi.shared_dynamicsax.d2dc587e63f84ef68793f11e1a7b9ba3" -accessToken $accessToken
}

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

Enable-TriggerFlow -flowId '3d0aef2d-ca97-ef11-a72d-000d3a36041c' -accessToken $accessToken # Account reconciliation - Acknowledge receipt of reconciliation event
Enable-TriggerFlow -flowId '5cd7d9b8-37a1-ef11-a72d-000d3a5a293d' -accessToken $accessToken # Account reconciliation - Agent execution request added
Enable-TriggerFlow -flowId '0274b722-b1a4-ef11-a72d-6045bd075f60' -accessToken $accessToken # Account reconciliation - Analyze exception data for amount mismatch rules
Enable-TriggerFlow -flowId '570a7d17-ac0a-f011-bae1-6045bd0139fb' -accessToken $accessToken # Account reconciliation - Complete agent activity request
Enable-TriggerFlow -flowId '75c311f8-1880-ef11-ac21-000d3a5aa6e6' -accessToken $accessToken # Account reconciliation - Determine work to be done
Enable-TriggerFlow -flowId '2b7f9cf7-0996-ef11-a72c-000d3a327b96' -accessToken $accessToken # Account reconciliation - Evaluate current exception against amount mismatch rules
Enable-TriggerFlow -flowId '9726ee57-f604-f011-bae1-6045bd0139fb' -accessToken $accessToken # Account reconciliation - Evaluate ledger not in subledger exception record
Enable-TriggerFlow -flowId 'e645e143-f804-f011-bae1-0022480b9145' -accessToken $accessToken # Account reconciliation - Evaluate subledger not in ledger exception record
Enable-TriggerFlow -flowId '782ddc43-cd97-ef11-a72d-000d3a36041c' -accessToken $accessToken # Account reconciliation - Get Voucher Summary Record
Enable-TriggerFlow -flowId '79284164-5a9c-ef11-a72d-000d3a5a293d' -accessToken $accessToken # Account reconciliation - Identify missing accounting
Enable-TriggerFlow -flowId 'fe418c1d-5b9c-ef11-a72d-000d3a5a293d' -accessToken $accessToken # Account reconciliation - Identify pending transfers
Enable-TriggerFlow -flowId '64fd40b7-d197-ef11-a72d-000d3a36041c' -accessToken $accessToken # Account reconciliation - Log recommended action"
Enable-TriggerFlow -flowId 'f8a02f0e-d097-ef11-a72d-000d3a36041c' -accessToken $accessToken # Account reconciliation - Mark reconciliation trigger complete
Enable-TriggerFlow -flowId '96e55129-0798-ef11-a72c-000d3a36041c' -accessToken $accessToken # Account reconciliation - Trigger reconciliation for individual exceptions
Enable-TriggerFlow -flowId 'e681a39e-1298-ef11-a72c-000d3a36041c' -accessToken $accessToken # Account reconciliation - Trigger subledger/ledger processing
Enable-TriggerFlow -flowId 'c2ad4a0d-228f-ef11-96d2-002248047a14' -accessToken $accessToken # Account reconciliation - When an individual exception event is added

Write-Host
Write-Host 'Account reconciliation agents are ready for use' -ForegroundColor Green