Updated for version: 0.2504.1

Report storage

Reports generated in Convier can be stored in a database (“internal”), or in an existing system, like Microsoft Dynamics (“external”). Storage and retriveal of externally stored reports are configured using data sources, analytics and actions.

Azure Storage Account

Reports may be stored in Azure Storage Account containers. You may store reports in different containers for different reports actions, for example a mutable container store for latest working copy of a report, and a immutable (“write-only-read-many”) container for archived/completed reports. It requires that either Managed Identity is available, or that Convier is running with an App Registration from Entra ID.

  • Create storage account and containers. You may want to create one with access tier “Hot” to store reports in progress, and one with access tier “Cold” to archive reports.
  • Create
  • If Managed Identity is available, assign it role “Storage Blob Data Contributor” on the storage account
  • If Managed Identity is not available, assign the App Registration the role “Storage Blob Data Contributor” on the storage account
  • In the Convier project, add data source “Azure Storage Account”, fill inn storage account
  • (If you assigned the role one the created containers directly, you will have to provide container names in the source configuration)
  • In the report storage configuration, apply relevant actions.
  • Retention and blob mutability are enforced at storage level by the container

Environment variables:

  • AZURE_STORAGE_ACCOUNT_SUBSCRIPTION_ID
  • AZURE_STORAGE_ACCOUNT_RESOURCE_GROUP
  • AZURE_STORAGE_ACCOUNT_NAME

Google Storage Bucket (>= 0.2511.1)

Environment variables:

  • GOOGLE_PROJECT_ID
  • GOOGLE_STORAGE_BUCKET_NAMES

Internal report storage

Internal storage is enabled by setting the following environment variables:

  • REPORT_STORAGE_JDBC_CONNECTION_STRING
  • REPORT_STORAGE_JDBC_USERNAME (Optional)
  • REPORT_STORAGE_JDBC_PASSWORD (Optional)

To verify that internal report storage is enabled, check the service log for the following message INFO - Internal report storage: enabled.

If enabled, the required table and columns needed are automatically created. A row is added to the table each time a user clicks “Save” on the report, so there can be multiple versions of the same task/case/report. Each row consists of the following data:

column type example
project_id ID of proejct aml
inserted Epoch ms 1735813124631
user_id ID of user saving the report user@acme.com
object_id ID of task/case/report EDD-1234-001
content Report JSON [{"sectionId": "Intro", "content": {...}}, ...]
loaded_data Report data JSON (if enabled) {"timestamp": ..., "object": {...}, "connected": {...}}
loaded_data_simplified Properties and data model {"object_types": ..., "field_types": {...}, "data": {...}}
section_texts Report section texts {"Intro": "Lorem ipsum...", ...}
action Save/Close/Approve/etc. Save

In-browser report storage

While a user is editing a report, a copy of the contents is stored within the user’s browser (using IndexedDB). This is to prevent loss of data in case of system, network or power outage, or in the case of events like accidental page refresh.