# Batch reporting

QV2QS generates both per-project and aggregate reports after a batch run, providing detailed conversion results at every level.

## Per-project reports

Each project in the batch receives an individual Excel conversion report and an executive summary JSON file, identical to single-project mode. These files are written to the `reports/` subfolder within each project output directory.

## Aggregate reports

QV2QS writes the following aggregate files to the output root directory:

* `batch_summary.json` — Machine-readable summary with project counts, success/failure status, timing, and aggregated KPIs (total sheets, objects, automation percentage).
* `batch_summary.html` — Self-contained HTML report for quick review.
* `batch_conversion_report_<timestamp>.xlsx` — Consolidated Excel workbook with a summary sheet, per-project breakdown, and combined object detail across all projects.

## batch\_summary.json structure

The `batch_summary.json` file contains the following top-level fields for CI/CD integration and programmatic parsing.

| Field | Description |
| --- | --- |
| `schema` | Schema version (currently `1`). |
| `kind` | Always `qv2qs_batch_summary`. |
| `version` | QV2QS version string. |
| `timestamp_utc` | ISO 8601 timestamp of the batch run. |
| `batch.total_projects` | Total number of projects discovered. |
| `batch.succeeded` | Number of projects that completed successfully. |
| `batch.failed` | Number of projects that failed. |
| `batch.wall_clock_sec` | Total elapsed time in seconds. |
| `batch.cumulative_sec` | Sum of all individual project durations. |
| `aggregated_kpis` | Totals across all successful projects: `sheets`, `objects_in_scope`, `auto`, `follow_up`, `errors`, `images_unique`, `auto_pct`, `follow_up_pct`. |
| `projects` | Array of per-project entries. Each entry includes `name`, `ok` (boolean), `duration_sec`, and `output_dir`. Successful projects include a `summary` object with sheet/object counts. Failed projects include an `error` string. |
| `exec_summaries` | Array of full executive summary objects for all successful projects. |

The `executive_summary.json` file for each individual project uses the same schema (`kind: qv2qs_exec_summary`) and contains `project` metadata, `kpis` (sheets, objects, automation scores, overflow counts), `breakdowns` (per-type outcomes, overflow actions), and `object_details` (placeholders, errors, adjustments grouped by type). In single-project mode, the file also contains a `data_model` section with field and table counts, byte sizes, and application properties. Application properties include last reload time, window title, section access status, and data lineage connection types. The `data_model` section is not included in batch-mode per-project files.

The `kpis` object includes the following timing fields:

| Field | Description |
| --- | --- |
| `kpis.duration_sec` | Local conversion duration in seconds (PRJ parsing and JSON generation only). |
| `kpis.app_build_sec` | Cloud app build duration in seconds (`qlik app build`). Present only when cloud deployment was performed. |
| `kpis.app_build_included_reload` | Boolean. `true` if the app build time includes a reload, `false` otherwise. Present only when cloud deployment was performed. |
| `kpis.total_duration_sec` | End-to-end wall-clock time in seconds (conversion + cloud deployment). Present only when cloud deployment was performed. For local-only runs, use `duration_sec`. |

## Console output

After all projects complete, the console displays a summary table with the total number of projects, how many succeeded, how many failed, wall-clock time, and cumulative processing time. Failed projects are listed individually with error messages.

## Batch CLI reference

The following arguments are specific to batch mode. For general conversion arguments that also apply in batch mode, see [Argument reference](https://help.qlik.com/en-US/migration/Content/Qv2qsMigration/command-line-interface/argument-reference.htm).

| Argument | Description | Default |
| --- | --- | --- |
| `--batchDir PATH` | Root directory (or semicolon-separated paths) to scan for QVW/QVF projects. | Required |
| `--batchWorkers N` | Maximum number of projects to convert concurrently (`0` = auto: CPU cores minus 1). | `0` |
| `--batchFlatOutput` | Flatten the output directory structure instead of mirroring the source hierarchy. | Off |
| `--generatePrj` | Automatically generate PRJ folders for source files that do not have one. | Off |
| `--qsAppName TEMPLATE` | App naming template for Qlik Cloud deployment. Supports `{name}`, `{rel}`, and `{index}` placeholders. | Project name |

## Learn more

* [Output structure and app naming](https://help.qlik.com/en-US/migration/Content/Qv2qsMigration/batch-conversion/output-structure-and-app-naming.htm)
* [Conversion report](https://help.qlik.com/en-US/migration/Content/Qv2qsMigration/conversion-results/conversion-report.htm)
* [Executive summary dashboard](https://help.qlik.com/en-US/migration/Content/Qv2qsMigration/user-interface/executive-summary-dashboard.htm)