> ## 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 System Monitor

> Téléchargez le journal des événements de System Monitor d’ABBYY FlexiCapture au format CSV via la requête POST GetEventsCSV, avec des paramètres de filtre, de colonne, de tri et de tenant.

Ce journal enregistre tous les événements et erreurs dans ABBYY FlexiCapture, tels que les connexions et déconnexions des administrateurs système, le démarrage et l’arrêt du serveur d’applications et des stations de traitement. Il n’inclut pas les événements survenus dans les tenants.

<Warning>
  Seuls les utilisateurs disposant des autorisations d’administrateur système peuvent télécharger les journaux des événements depuis System Monitor. Un administrateur système est l’administrateur d’un tenant par défaut.
</Warning>

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

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

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

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

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

| Paramètre         | Type   | Description                                                                                                                                                                                                                                                      |
| ----------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter`          | string | Conditions de filtre pour le journal. Combinez les conditions uniquement à l’aide des opérateurs `AND` et `OR`, définis dans le paramètre `GeneralOperator`. Pour plus d’informations, voir [Créer 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 journal.                                                                                                                                                                                    |
| `sortOrder`       | bool   | Ordre de tri : `true` trie par ordre décroissant, `false` trie par ordre croissant.                                                                                                                                                                              |
| `tenantId`        | int    | Tenants à inclure dans le journal : `-1` pour tous les tenants disponibles, `0` pour le tenant par défaut, ou l’ID d’un tenant spécifique (`1` ou supérieur).                                                                                                    |

<div id="build-the-filter-parameter">
  ### Créer le paramètre filter
</div>

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

```json theme={null}
{
  "GeneralOperator": "AND",
  "FilterItems": [
    {
      "PropertyKey": "Date",
      "PropertyOperator": "BETWEEN",
      "PropertyValues": [
        "2022-09-12",
        "00:00:00",
        "2023-10-12",
        "23:59:59"
      ]
    }
  ]
}
```

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

<Steps>
  <Step title="Ouvrez les outils de développement du navigateur">
    Dans le menu du navigateur, cliquez sur **Plus d'outils → Outils de développement**, puis ouvrez l'onglet **Réseau**.
  </Step>

  <Step title="Créez un filtre dans la console">
    Ouvrez Administration and Monitoring Console, accédez à **System Monitor → Event log**, 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="Appliquez les critères de filtrage">
    Définissez les critères de filtrage, puis cliquez sur **Apply**.
  </Step>

  <Step title="Lisez 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 du tenant par défaut, spécifiez le paramètre `TenantNameExt` au lieu de `TenantName` :

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

<Note>
  Conservez `TenantName` pour le tenant 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 et vos propres identifiants.
</Note>

```powershell theme={null}
#------------------------------------------------------------------------------
# parameters
$server = "https://<server address>"
$user = "<user name>"
$password = "<password>"
# chemin vers le dossier où le log sera enregistré
$folder = "C:\Temp\Logs\Stage"
$reportFileName = "Tenant_Events-{0:yyMMdd-HHmmss}.csv" -f (Get-Date)
# paramètres du log
$requestBody =  @"
filter={
    "Name": "Filter Name",
    "GeneralOperator": "AND",
    "FilterItems": [
        {
            "PropertyKey": "Date",
            "PropertyOperator": "BETWEEN",
            "PropertyValues": [
                "2022-09-12",
                "00:00:00",
                "2023-10-12",
                "23:59:59"
            ]
        }
    ]
}
&columnsOrder=Id,Date,EventType,Comment,UserFullName,Workstation,BatchId,BatchName,BatchTypeName,StageFromName,StageToName,ProjectName,RoleName,TenantName,
&sortColumnindex=0
&sortOrder=true
&tenantId=0
"@
#------------------------------------------------------------------------------
$tenant = "" # Tenant par défaut uniquement
$methodUri = "/Tenant/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', "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
```
