Report Configuration

Last modified 16 Apr 2024 10:30 +02:00

MidPoint reports can be configured based on the following midPoint concepts:

Current implementation supports exporting reports to the formats mentioned in the following article.

How to Configure Reports

Every report object consists of configuration of three basic parts:

  • behavior - represents the direction of the report. There are two possible types of behavior: export and import.

    Export behavior represents basic reporting mechanism, where the file with reported objects is generated. This behavior is default and was common also in versions before 4.4.

    Import behavior can be used in situations, when the objects need to be imported to the midPoint from external file. Supported format is the CSV. Import behavior is experimental.

  • engine - defines the report generation base. There are two supported options, reports based on object collections and reports based on dashboard. Only one can be defined at the same time.

  • fileFormat - represents format of the generated report file. Supported formats for now are CSV and HTML. Default format for the dashboard-based reports is HTML and for object collection based reports is CSV.

All configuration attributes of report:

Name Type Description



Define report output file format.



Configuration for dashboard-based reports. When defined, dashboard engine is used to generate reports.



Configuration for object collection-based reports. When defined, object collection engine is used to generate report.



Default configuration for the scripts executed inside the report.



Command-line script that will be executed after the report is complete and the output file is completely produced. Output filename will be passed to the script as the "file" argument.

Export Behaviour

With a report you can specify what kind of export file format should be used. If nothing is specified then there are defaults which are used based on the source of data used in the export.

The default for dashboard based reports is HTML. For object collection based reports it is CSV.

Show Configuration attributes:
Name Type Description



Report data type. Possible values: csv and html.



Configuration attribute for CSV export.



Configuration attribute for html export.


Configuration for HTML file format doesn’t contain any other format specific attributes.


Configuration for CSV file format contains the following attributes specific for the used format:

Name Type Description Default



Multi-value delimiter.




Field delimiter.




The escape character of the format.




Character for the quote.




Quote Mode for records. Possible values is all, allNonNull, minimal, nonNumeric and none.




Separator of line of record.




Define, whether to add a trailing delimiter.




Define, whether to trim leading and trailing blanks.




Create header in CSV output file.




Encoding of CSV file. Most common encodings (UTF-8, windows-125x, ISO-8859-x) are supported.

See IANA list of charsets for proper values - generally, both IANA and MIME names are supported as well as many aliases. Details of supported character sets depend on the concrete JDK used to run midPoint, but it is unlikely that your charset is not supported.



  • all - Quotes all fields.

  • allNonNull - Quotes all non-null fields.

  • minimal - Quotes fields which contain special characters such as the field delimiter, quotes character or any of the characters in the line separator string.

  • nonNumeric - Quotes all non-numeric fields.

  • none - Never quotes fields. When the delimiter occurs in data, the printer prefixes it with the escape character. If the escape character is not set, format validation throws an exception.

Report Engine

Report engine defines the source of data which is used in the report definition, either you use objectCollection or dashboard elements in report.

In the case you use Object Collections, have a look at this article dedicated to the related configuration.

In case of Dashboards checkout out this article dedicated to the related configuration.

Report Creation

You have multiple possibilities how to do this. One is using the classical flow for creating a new object. In this case look for the Report menu item on left side of screen in the main vertical menu, and select new Report. Here you have two types of reports to choose from, the "Dashboard" reports and "Collection" reports.

There another simplified way how to create a report. You can click on the 'Create report' button under, most of the tables on object list pages (e.g. All users page). In this case, midPoint will automatically use the list as an implicit collection in the report.


After clicking the 'Create report' button, you will be redirected to the "new Report' page with predefined filters, based on the search panels from the object table. Also, the columns from the previous table will be used as columns for the new report. You can either use the generated values or you can customise the report definition further.

Another possibility is the usage of one of the report definitions present in each midPoint distribution out of the box. These are pre-configured reports based on often used use-cases. Naturally you can use them as a basis for your custom reports.

You can create and configure reports also with the use of the REST API.

How to Generate The Report

The actual report (i.e. report file) has to be generated. This is done usually by clicking the "run" ("Save and run" or "Run original report") button from the report definition. This will execute a special task object which generated the actual report. After the "run" button is clicked you can access the task either directly through the "notification" prompt which will appear at the header of the page ("show task" button). Or you can access the report through the left vertical menu "Server tasks" > "Report tasks" button. Here your task will be present.

The actual report file can be downloaded when the task successfully finished, for this the task GUI contains the "Download report" button.

There are multiple ways how tasks are build when executed from a report definition, for more information on this and also information how you can distribute the workload of the task to multiple nodes see this page

Import Behaviour 'Import From Report'

As mentioned above, the report functionality is also capable of using exported reports or custom csv files to create or update objects. We call this "Import" or "Reverse" reports, for more information regarding them please see the following page:

Multithreading and Bucketing

Multithreading is fully supported for all possible kinds of reported objects such as containers, objects and audit records. Bucketing is supported for objects and audit records, because currently bucketing of task don’t support containers.

Configuration options in regard to workload distribution for tasks can be found here The support of specific distribution options depends on the task "activity" used. To see which activities are supported in regard to workload distribution please have a look at this page

Security Of Report Expressions

Reports quite often use midPoint expressions, which in some cases might cause security concerns if not used with caution. Please have a look at this page for a more detailed description.

Was this page helpful?
Thanks for your feedback