> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Journal des événements de Processing Monitor

> Téléchargez au format CSV le journal des événements de traitement des documents d’ABBYY FlexiCapture Processing Monitor via la requête POST GetEventsCSV, avec un exemple de script.

Ce journal enregistre les événements et les erreurs du traitement des documents.

<Warning>
  Seuls les utilisateurs disposant des permissions d’administrateur du tenant (ou de System Administrator dans le cas du tenant par défaut) et de Monitoring Operator peuvent télécharger les journaux d’événements à partir de Processing Monitor.
</Warning>

Pour télécharger ce journal, utilisez une requête POST :

```http theme={null}
POST https://<server address>/FlexiCapture12/Monitoring/Project/GetEventsCSV
```

<div id="request-parameters">
  ## Paramètres de la requête
</div>

Tous les paramètres sont obligatoires. Assurez-vous qu’ils sont renseignés correctement.

<Info>
  La recherche dans Oracle Database est sensible à la casse. Tenez-en compte si vous utilisez Oracle Database.
</Info>

| Parameter         | Type   | Description                                                                                                                                                                                                                                                      |
| ----------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter`          | string | Conditions de filtre pour le log. Combinez les conditions uniquement avec les opérateurs `AND` et `OR`, définis dans le paramètre `GeneralOperator`. Pour plus d’informations, consultez [Définir le paramètre de filtre](#build-the-filter-parameter).          |
| `columnsOrder`    | string | Liste des colonnes à inclure dans le rapport, séparées par des virgules : `ID`, `Date`, `EventType`, `Comment`, `UserFullName`, `Workstation`, `BatchId`, `BatchName`, `BatchTypeName`, `StageFromName`, `StageToName`, `ProjectName`, `RoleName`, `TenantName`. |
| `sortColumnindex` | int    | Indice de la colonne utilisée pour trier les enregistrements dans le log.                                                                                                                                                                                        |
| `sortOrder`       | bool   | Ordre de tri : `true` trie par ordre décroissant, `false` par ordre croissant.                                                                                                                                                                                   |
| `projectId`       | int    | Projets à inclure dans le log : `-1` pour tous les projets disponibles, ou un ID de projet spécifique (`1` ou supérieur). Pour obtenir tous les ID de projet disponibles, utilisez la méthode [GetProjects](/fr/flexi-capture/api/methods/get-projects).         |

<div id="build-the-filter-parameter">
  ### Définir le paramètre de filtre
</div>

Le paramètre `filter` accepte un objet JSON. Par exemple :

```json theme={null}
{
  "GeneralOperator": "AND",
  "FilterItems": [
    {
      "PropertyKey": "Date",
      "PropertyOperator": "BETWEEN",
      "PropertyValues": [
        "2021-08-28",
        "00:00:00",
        "2023-09-28",
        "23:59:59"
      ]
    },
    {
      "PropertyKey": "Id",
      "PropertyOperator": ">=",
      "PropertyValues": ["127602430"]
    },
    {
      "PropertyKey": "BatchName",
      "PropertyOperator": "CONTAINS",
      "PropertyValues": ["default"]
    }
  ]
}
```

Pour trouver les valeurs des paramètres `PropertyKey` et `PropertyOperator`, créez un filtre dans l’Administration and Monitoring Console :

<Steps>
  <Step title="Ouvrir les Developer Tools du navigateur">
    Dans le menu du navigateur, cliquez sur **More tools → Developer tools**, puis accédez à l’onglet **Network**.
  </Step>

  <Step title="Créer un filtre dans la console">
    Ouvrez l’Administration and Monitoring Console, accédez à **Processing Monitor → journal des événements**, puis cliquez sur le bouton <img src="https://mintcdn.com/abbyy/39LtOHLEp1q7pm1x/images/flexi-capture/Add_filter.png?fit=max&auto=format&n=39LtOHLEp1q7pm1x&q=85&s=7fca1d511f8470021946ae439989fb68" alt="Bouton Ajouter un filtre" style={{display:"inline-block",verticalAlign:"middle",margin:0}} width="22" height="22" data-path="images/flexi-capture/Add_filter.png" />.
  </Step>

  <Step title="Appliquer les critères de filtrage">
    Spécifiez les critères de filtrage, puis cliquez sur **Apply**.
  </Step>

  <Step title="Lire les paramètres du filtre">
    Cliquez sur la requête `GetFilteredEvents`. Les paramètres de filtrage sont indiqués dans l’onglet **Payload**.
  </Step>
</Steps>

Pour filtrer les événements des lots par défaut, spécifiez le paramètre `BatchTypeNameExt` au lieu de `BatchTypeName` :

```json theme={null}
"FilterItems": [
  {
    "PropertyKey": "BatchTypeNameExt",
    "PropertyOperator": "CONTAINS",
    "PropertyValues": ["Default"]
  }
]
```

<Note>
  Conservez `BatchTypeName` pour le batch par défaut dans le paramètre `columnsOrder`.
</Note>

<div id="example-script">
  ## Exemple de script
</div>

Le script PowerShell suivant montre comment utiliser cette API pour télécharger le journal des événements.

<Note>
  Remplacez les paramètres de ce script par l’adresse de votre serveur, le nom de votre tenant et vos identifiants.
</Note>

```powershell theme={null}
# paramètres
$server = "https://<server address>"
$tenant = "<tenant name>"
$user = "<user name>"
$password = "<password>"
#chemin vers le dossier où le log sera enregistré
$folder = "C:\Temp\Logs\Stage"
$reportFileName = "Project_Events-{0:yyMMdd-HHmmss}.csv" -f (Get-Date)
# paramètres du log
$requestBody =  @"
filter={
    "Name": "Complex filter",
    "GeneralOperator": "AND",
    "FilterItems": [
        {
            "PropertyKey": "Date",
            "PropertyOperator": "BETWEEN",
            "PropertyValues": ["2018-09-12","00:00:00","2023-10-12","23:59:59"]
        },
        {
            "PropertyKey": "Id",
            "PropertyOperator": ">=",
            "PropertyValues": ["127602430"]
        }
    ]
}
&columnsOrder=Id,Date,EventType,Comment,UserFullName,Workstation,BatchId,BatchName,BatchTypeName,StageFromName,StageToName,ProjectName,RoleName,TenantName
&sortColumnindex=0
&sortOrder=true
&projectId=-1
"@
#------------------------------------------------------------------------------
$methodUri = "/Project/GetEventsCSV"
$authServer = $server
$ServerSitePath = "/FlexiCapture12/Monitoring"

function Write-Line($str, $color = "White")
{
    Write-Host $str -ForegroundColor $color
}

function Join-Uri
{
    param([Parameter(Mandatory, ValueFromPipeline)] [string]$parent, [string]$child)
    if ($parent -eq "") {return $child;}
    if ($child -eq ""){return $parent}
    if ($parent.endswith("/") -or $parent.endswith("\\")) {$parent = $parent.substring(0,$parent.Length-1)}
    if ($child.startswith("/") -or $child.startswith("\\")) {$child = $child.substring(1,$child.Length-1)}
    return "$parent/$child"
}

function Get-AuthTicket($server, $user, $password, $tenant)
{
    $tenantSuffix=""
    if ($tenant -ne ''){ $tenantSuffix = "?tenant=$tenant"}
    $URL = Join-Uri $authServer "/FlexiCapture12/Server/FCAuth/API/Soap$tenantSuffix"
    $SOAPRequest = '<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><FindUser xmlns="urn:http://www.abbyy.com/FlexiCapture"><userLogin>user</userLogin></FindUser></soap:Body></soap:Envelope>'
    $Headers = @{
        'SOAPAction' = '"#FindUser"'
        'Content-Type' = 'text/xml; charset=utf-8'
        'Authorization' = "Basic $([System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes("$($user):$($password)")))"
    }
    try
    {
        $response1 = Invoke-WebRequest -Uri $URL -Headers $Headers -Body $SOAPRequest -Method 'POST'
        return $response1.Headers['AuthTicket']
    }
    catch{
        Write-Line -str "Couldn't get 'AuthTicket': $_" -color "Red"
        return ""
    }
}

function Download-CSVReport($server, $tenant, $authTicket, $methodUri, $requestBody, $folder, $reportFileName)
{
    $reportFullFilePath = Join-Path $folder $reportFileName
    #créer le dossier silencieusement (s'il n'existe pas)
    New-Item -ItemType Directory -Force -Path $folder | Out-Null
    if ($authTicket -eq "" -or $authTicket -eq $null)
    {
        Write-Line -str "Couldn't get 'CSV-Report'" -color "Red"
    }
    else
    {
        $header = @{ "Accept" = "*/*"}
        $session = [Microsoft.PowerShell.Commands.WebRequestSession]::new()
        $session.Cookies.Add($server, [System.NET.Cookie]::new("FlexiCaptureTmpPrn$tenant", "Ticket=$authTicket"))
        $tenantInUrl=""
        if ($tenant -ne '') { $tenantInUrl = "/$tenant"}
        $uri = Join-Uri $server $ServerSitePath | Join-Uri -child $tenantInUrl | Join-Uri -child $methodUri
        try{
            $response = Invoke-WebRequest -Uri $uri -Method 'POST' -Headers $header -WebSession $session -Body $requestBody -OutFile $reportFullFilePath -MaximumRedirection 0 -ErrorAction Ignore -PassThru
            if ($response.StatusCode -lt 300)
            {
                Write-Line "CSV-Report done: $reportFullFilePath" "Green"
            }
            else
            {
                Write-Line -str "HttpStatus $($response.StatusCode) in getting CSV-Report." -color "Red"
            }
        }
        catch{
            Write-Line -str "Couldn't get CSV-Report: $_" -color "Red"
            return ""
        }
    }
}

$authTicket = Get-AuthTicket -server $server -user $user -password $password -tenant $tenant
Download-CSVReport -server $server -tenant $tenant -authTicket $authTicket -methodUri $methodUri -requestBody $requestBody -folder $folder -reportFileName $reportFileName
```
