cisco.dnac.reports_workflow_manager module – Resource module for managing Reports in Cisco Catalyst Center.
Note
This module is part of the cisco.dnac collection (version 6.42.0).
You might already have this collection installed if you are using the ansible package.
It is not included in ansible-core.
To check whether it is installed, run ansible-galaxy collection list.
To install it, use: ansible-galaxy collection install cisco.dnac.
You need further requirements to be able to use this module,
see Requirements for details.
To use it in a playbook, specify: cisco.dnac.reports_workflow_manager.
New in cisco.dnac 6.41.0
Synopsis
This module manages Report configurations in Cisco Catalyst Center.
It allows you to create and schedule customized reports across wired and wireless network entities.
Supports configuration of report name, scheduling, entity selection, filters, field groups, and output format options.
Enables scheduling with immediate, later, or recurring execution patterns.
Provides delivery methods including local download, email notification, and webhook integration.
Reports help monitor network and client health, device behavior, compliance status, and utilization trends.
Applicable from Cisco Catalyst Center version 2.3.7.9 and later.
Requirements
The below requirements are needed on the host that executes this module.
dnacentersdk >= 2.8.6
python >= 3.9
Parameters
Parameter |
Comments |
|---|---|
A list of configuration settings for generating reports in Cisco Catalyst Center. Each configuration defines report metadata, scheduling, delivery options, view selections, format, and applicable filters. Supports creating, scheduling, and downloading customized network reports across various data categories. |
|
List of report configurations to be created or scheduled. Each entry represents a single report with its complete configuration. Reports are processed sequentially, not in parallel, which ensures data consistency. |
|
Specifies how the generated report should be delivered. Must be a list containing exactly one delivery configuration. Supports three delivery methods DOWNLOAD, NOTIFICATION (email), and WEBHOOK. |
|
Delivery type for the report.
Choices:
|
|
Local file system path where the report should be downloaded. Required only when delivery_type is Must be a valid directory path where the user has write permissions. |
|
Required when delivery_type is Must be a list containing exactly one email endpoint configuration. Specifies email recipients and notification preferences. |
|
List of email recipients for the notification. Required when delivery_type is Each email address must be in valid email format. |
|
Whether the report should be attached in the notification email. Choices:
|
|
List of report execution statuses that will trigger a notification. If not specified, notifications are sent for all statuses.
Choices:
|
|
The name of the webhook to be triggered for the report. Required when delivery_type is Must reference an existing webhook configured in Catalyst Center. The webhook will be called when the report is generated. |
|
The name of the report to be generated. Must be unique within the Catalyst Center instance. If not provided, it will be automatically generated using the format “<data_category> - <view_name> - <timestamp>”. Example auto-generated name “Network - DeviceView - Jul 20 2025 08:26 PM”. |
|
Specifies whether to create a new report when a report with the same name already exists. If set to Choices:
|
|
Defines when the report should be executed (immediately, later, or on a recurring basis). Controls the timing and frequency of report generation. |
|
Scheduled time for report execution. Required if schedule_type is Must be in ‘YYYY-MM-DD HH:MM AM/PM’ format. Example “2025-09-02 07:30 PM”. Only future dates are allowed. |
|
Recurrence settings for scheduled reports. Required only when schedule_type is Defines the pattern and frequency of recurring executions. |
|
Specific day of the month to run the report. Only applicable for Must be an integer between 1 and 31. |
|
List of days for weekly recurrence. Required for Can specify individual days or use Must include all 7 days for daily execution or DAILY. [“MONDAY”, “TUESDAY”, “WEDNESDAY”, “THURSDAY”, “FRIDAY”, “SATURDAY”, “SUNDAY”] or [“DAILY”]. |
|
Whether to run on the last day of the month. Only applicable for When true, ignores day_of_month setting. Choices:
|
|
Type of recurrence pattern.
Choices:
|
|
The scheduling type for the report execution.
Choices:
|
|
Epoch start date in milliseconds for recurring schedules. Automatically generated from date_time during processing. Used internally by the API to determine recurrence start point. |
|
Epoch time in milliseconds for scheduled execution. Automatically generated from date_time during processing. Used internally by the API for recurring schedules. |
|
Time zone identifier for the schedule. Uses standard time zone identifiers like |
|
Optional list of tags to filter reports. Tags help categorize and organize reports for easier management. |
|
Contains view details such as view selection, field groups, filters, and output format for the report. Defines what data to include and how to present it in the final report. |
|
Groups of fields to include in the report, as defined in the selected view. Can be empty list to include all available fields for the view. Field group availability depends on the selected view_name. |
|
The display name shown in the UI for the field group. Optional but recommended for readability. |
|
The internal name of the field group as defined in the view metadata. Must match exactly with the available field_groups for the selected view. |
|
List of specific fields to include within the field group. Can be empty list to include all fields in the group. Field availability depends on the selected field group. |
|
Optional UI-friendly display label for the field. Used only for readability; API uses `name`. |
|
Field identifier as defined in the view metadata. Must match exactly with available fields in the group. |
|
Filters to be applied to narrow down the report data. Optional parameter to refine report content based on specific criteria. Filter availability depends on the selected view_name. |
|
Human-readable name of the filter shown in the UI. |
|
Type of the filter determining how values are selected.
Choices:
|
|
Name of the filter as defined in the view metadata. Common filters include Location, Time Range, Device Type, etc. |
|
Value(s) to apply in the filter based on filter_type. For For other types, this is a list of dicts with Location filters are automatically resolved to site hierarchy IDs. |
|
Human-readable value (e.g., “Switches” or “Global/India”) |
|
API-compatible internal value (e.g., DeviceFamily = SWITCHES) |
|
Specifies the output format of the report. Determines how the report data will be structured and presented. |
|
Type of format to be used for the report output.
Choices:
|
|
The view name from which Must match exactly with available views in the specified view group. Determines the specific data subset and available fields for the report. Choices:
|
|
The name of the view group as defined in Catalyst Center. For example, Used to identify the viewGroupId via API calls. Determines the category of data included in the report. Choices:
|
|
The version of the view group to be used for the report. Defaults to |
|
Set to This will ensure that the system validates the configuration state after the change is applied. Choices:
|
|
Defines the timeout in seconds for API calls to retrieve task details. If the task details are not received within this period, the process will end, and a timeout notification will be logged. Default: |
|
Indicates whether debugging is enabled in the Cisco Catalyst Center SDK. Choices:
|
|
The hostname of the Cisco Catalyst Center. |
|
Flag to enable/disable playbook execution logging. When true and dnac_log_file_path is provided, - Create the log file at the execution location with the specified name. When true and dnac_log_file_path is not provided, - Create the log file at the execution location with the name ‘dnac.log’. When false, - Logging is disabled. If the log file doesn’t exist, - It is created in append or write mode based on the “dnac_log_append” flag. If the log file exists, - It is overwritten or appended based on the “dnac_log_append” flag. Choices:
|
|
Determines the mode of the file. Set to True for ‘append’ mode. Set to False for ‘write’ mode. Choices:
|
|
Governs logging. Logs are recorded if dnac_log is True. If path is not specified, - When ‘dnac_log_append’ is True, ‘dnac.log’ is generated in the current Ansible directory; logs are appended. - When ‘dnac_log_append’ is False, ‘dnac.log’ is generated; logs are overwritten. If path is specified, - When ‘dnac_log_append’ is True, the file opens in append mode. - When ‘dnac_log_append’ is False, the file opens in write (w) mode. - In shared file scenarios, without append mode, content is overwritten after each module execution. - For a shared log file, set append to False for the 1st module (to overwrite); for subsequent modules, set append to True. Default: |
|
Sets the threshold for log level. Messages with a level equal to or higher than this will be logged. Levels are listed in order of severity [CRITICAL, ERROR, WARNING, INFO, DEBUG]. CRITICAL indicates serious errors halting the program. Displays only CRITICAL messages. ERROR indicates problems preventing a function. Displays ERROR and CRITICAL messages. WARNING indicates potential future issues. Displays WARNING, ERROR, CRITICAL messages. INFO tracks normal operation. Displays INFO, WARNING, ERROR, CRITICAL messages. DEBUG provides detailed diagnostic info. Displays all log messages. Default: |
|
The password for authentication at the Cisco Catalyst Center. |
|
Specifies the port number associated with the Cisco Catalyst Center. Default: |
|
Specifies the interval in seconds between successive calls to the API to retrieve task details. Default: |
|
The username for authentication at the Cisco Catalyst Center. Default: |
|
Flag to enable or disable SSL certificate verification. Choices:
|
|
Specifies the version of the Cisco Catalyst Center that the SDK should use. Default: |
|
Specifies the desired state for the configuration. If If Choices:
|
|
Flag for Cisco Catalyst Center SDK to enable the validation of request bodies against a JSON schema. Choices:
|
Notes
Note
SDK Methods used are reports.Reports.get_all_view_groups reports.Reports.get_views_for_a_given_view_group reports.Reports.get_view_details_for_a_given_view_group_and_view reports.Reports.create_or_schedule_a_report reports.Reports.delete_a_scheduled_report reports.Reports.download_report_content reports.Reports.get_execution_id_by_report_id
Paths used are GET /dna/intent/api/v1/data/view-groups GET /dna/intent/api/v1/data/view-groups/{viewGroupId} GET /dna/intent/api/v1/data/view-groups/{viewGroupId}/views/{viewId} POST /dna/intent/api/v1/data/reports DELETE /dna/intent/api/v1/data/reports/{reportId} GET /dna/intent/api/v1/data/reports/{reportId}/executions/{executionId}
Does not support
check_modeThe plugin runs on the control node and does not use any ansible connection plugins instead embedded connection manager from Cisco Catalyst Center SDK
The parameters starting with dnac_ are used by the Cisco Catalyst Center Python SDK to establish the connection
Examples
- name: Create/Schedule a Sample Inventory Report and Download It
cisco.dnac.reports_workflow_manager:
dnac_host: "{{ dnac_host }}"
dnac_port: "{{ dnac_port }}"
dnac_username: "{{ dnac_username }}"
dnac_password: "{{ dnac_password }}"
dnac_verify: "{{ dnac_verify }}"
dnac_version: "{{ dnac_version }}"
dnac_debug: "{{ dnac_debug }}"
dnac_log_level: DEBUG
dnac_log: true
state: merged
config_verify: true
config:
- generate_report:
- name: "Sample Inventory report"
data_category: "Inventory"
view_group_version: "2.0.0"
view:
view_name: "All Data"
format:
format_type: "CSV"
field_groups:
- field_group_name: "inventoryAllData"
field_group_display_name: "All Data"
fields:
- name: "type"
display_name: "Device Type"
- name: "hostname"
display_name: "Device Name"
- name: "ipAddress"
display_name: "IP Address"
filters:
- name: "Location"
filter_type: "MULTI_SELECT_TREE"
value: []
- name: "DeviceFamily"
filter_type: "MULTI_SELECT"
value: []
- name: "DeviceType"
filter_type: "MULTI_SELECT"
value: []
- name: "SoftwareVersion"
filter_type: "MULTI_SELECT"
value: []
schedule:
schedule_type: "SCHEDULE_NOW"
time_zone: "Asia/Calcutta"
deliveries:
- delivery_type: "DOWNLOAD"
file_path: "/Users/xyz/Desktop"
- name: Create/Schedule a compliance report with immediate execution
cisco.dnac.reports_workflow_manager:
dnac_host: "{{ dnac_host }}"
dnac_port: "{{ dnac_port }}"
dnac_username: "{{ dnac_username }}"
dnac_password: "{{ dnac_password }}"
dnac_verify: "{{ dnac_verify }}"
dnac_version: "{{ dnac_version }}"
dnac_debug: "{{ dnac_debug }}"
dnac_log_level: DEBUG
dnac_log: true
state: merged
config_verify: true
config:
- generate_report:
- name: "compliance_report"
view_group_name: "Compliance"
deliveries:
- delivery_type: "DOWNLOAD"
file_path: "/Users/xyz/Desktop"
schedule:
schedule_type: "SCHEDULE_NOW"
time_zone: "Asia/Calcutta"
view:
view_name: "Network Device Compliance"
field_groups:
- field_group_name: "Compliance"
field_group_display_name: "Compliance"
fields:
- name: "deviceName"
display_name: "Device Name"
format:
format_type: "CSV"
filters: []
tags: ["network", "compliance"]
- name: Create/Schedule an access point report with location filter
cisco.dnac.reports_workflow_manager:
dnac_host: "{{ dnac_host }}"
dnac_port: "{{ dnac_port }}"
dnac_username: "{{ dnac_username }}"
dnac_password: "{{ dnac_password }}"
dnac_verify: "{{ dnac_verify }}"
dnac_version: "{{ dnac_version }}"
dnac_debug: "{{ dnac_debug }}"
dnac_log_level: DEBUG
dnac_log: true
state: merged
config_verify: true
config:
- generate_report:
- name: "Access_point_report1"
view_group_name: "Access Point"
deliveries:
- delivery_type: "DOWNLOAD"
file_path: "/Users/xyz/Desktop"
schedule:
schedule_type: "SCHEDULE_NOW"
time_zone: "Asia/Calcutta"
view:
view_name: "AP"
field_groups: []
format:
format_type: "JSON"
filters:
- name: "Location"
display_name: "Location"
filter_type: "MULTI_SELECT_TREE"
value:
- value: "Global/India"
display_value: "Routers"
- name: Schedule a report for later execution
cisco.dnac.reports_workflow_manager:
dnac_host: "{{ dnac_host }}"
dnac_port: "{{ dnac_port }}"
dnac_username: "{{ dnac_username }}"
dnac_password: "{{ dnac_password }}"
dnac_verify: "{{ dnac_verify }}"
dnac_version: "{{ dnac_version }}"
dnac_debug: "{{ dnac_debug }}"
dnac_log: true
state: merged
config_verify: true
config:
- generate_report:
- name: "scheduled_inventory_report"
view_group_name: "Inventory"
tags: ["inventory", "scheduled"]
deliveries:
- delivery_type: "NOTIFICATION"
notification_endpoints:
- email_addresses:
- "admin@company.com"
- "reports@company.com"
email_attach: true
notify: ["COMPLETED"]
schedule:
schedule_type: "SCHEDULE_LATER"
date_time: "2025-12-25 09:00 AM"
time_zone: "America/New_York"
view:
view_name: "All Data"
field_groups: []
format:
format_type: "PDF"
filters: []
- name: Create recurring weekly report with webhook delivery
cisco.dnac.reports_workflow_manager:
dnac_host: "{{ dnac_host }}"
dnac_port: "{{ dnac_port }}"
dnac_username: "{{ dnac_username }}"
dnac_password: "{{ dnac_password }}"
dnac_verify: "{{ dnac_verify }}"
dnac_version: "{{ dnac_version }}"
dnac_debug: "{{ dnac_debug }}"
dnac_log: true
state: merged
config_verify: true
config:
- generate_report:
- name: "weekly_device_report"
view_group_name: "Network Devices"
tags: ["weekly", "devices"]
deliveries:
- delivery_type: "WEBHOOK"
webhook_name: "report_webhook"
schedule:
schedule_type: "SCHEDULE_RECURRENCE"
date_time: "2025-09-15 08:00 AM"
time_zone: "UTC"
recurrence:
recurrence_type: "WEEKLY"
days: ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY",
"FRIDAY", "SATURDAY", "SUNDAY"]
view:
view_name: "Network Device Availability"
field_groups:
- field_group_name: "deviceInfo"
field_group_display_name: "Device Information"
fields:
- name: "hostname"
display_name: "host name"
format:
format_type: "CSV"
filters:
- name: "Location"
filter_type: "MULTI_SELECT_TREE"
value:
- value: "Global/US/California"
- name: Create monthly report with time range filter
cisco.dnac.reports_workflow_manager:
dnac_host: "{{ dnac_host }}"
dnac_port: "{{ dnac_port }}"
dnac_username: "{{ dnac_username }}"
dnac_password: "{{ dnac_password }}"
dnac_verify: "{{ dnac_verify }}"
dnac_version: "{{ dnac_version }}"
dnac_debug: "{{ dnac_debug }}"
dnac_log: true
state: merged
config_verify: true
config:
- generate_report:
- name: "monthly_client_report"
view_group_name: "Client"
tags: ["monthly", "clients"]
deliveries:
- delivery_type: "DOWNLOAD"
file_path: "/home/reports/monthly"
schedule:
schedule_type: "SCHEDULE_RECURRENCE"
date_time: "2025-09-01 06:00 AM"
time_zone: "Asia/Calcutta"
recurrence:
recurrence_type: "MONTHLY"
last_day_of_month: true
view:
view_name: "Client Detail"
field_groups: []
format:
format_type: "JSON"
filters:
- name: "Time Range"
filter_type: "TIME_RANGE"
value:
time_range_option: "LAST_30_DAYS"
- name: Create monthly report with time range CUSTOM filter
cisco.dnac.reports_workflow_manager:
dnac_host: "{{ dnac_host }}"
dnac_port: "{{ dnac_port }}"
dnac_username: "{{ dnac_username }}"
dnac_password: "{{ dnac_password }}"
dnac_verify: "{{ dnac_verify }}"
dnac_version: "{{ dnac_version }}"
dnac_debug: "{{ dnac_debug }}"
dnac_log: true
state: merged
config_verify: true
config:
- generate_report:
- name: "monthly_client_report"
new_report: false
view_group_name: "Client"
tags: ["monthly", "clients"]
deliveries:
- delivery_type: "DOWNLOAD"
file_path: "/home/reports/monthly"
schedule:
schedule_type: "SCHEDULE_RECURRENCE"
date_time: "2025-09-01 06:00 AM"
time_zone: "Asia/Calcutta"
recurrence:
recurrence_type: "MONTHLY"
last_day_of_month: true
view:
view_name: "Client Detail"
field_groups: []
format:
format_type: "JSON"
filters:
- name: "Time Range"
filter_type: "TIME_RANGE"
value:
time_range_option: "CUSTOM"
start_date_time: "2025-10-09 07:30 PM"
end_date_time: "2025-10-31 11:59 PM"
time_zone: "Asia/Calcutta"
- name: Delete a report from Catalyst Center
cisco.dnac.reports_workflow_manager:
dnac_host: "{{ dnac_host }}"
dnac_port: "{{ dnac_port }}"
dnac_username: "{{ dnac_username }}"
dnac_password: "{{ dnac_password }}"
dnac_verify: "{{ dnac_verify }}"
dnac_version: "{{ dnac_version }}"
dnac_debug: "{{ dnac_debug }}"
dnac_log: true
state: deleted
config_verify: true
config:
- generate_report:
- name: "compliance_report" # The name of the report to be deleted is required
view_group_name: "Compliance" # Required for identification
view:
view_name: "Network Device Compliance" # Required for identification
Return Values
Common return values are documented here, the following are the fields unique to this module:
Key |
Description |
|---|---|
Response returned after successfully creating or scheduling a report in Cisco Catalyst Center. Returned: when state is merged and report creation succeeds Sample: |
|
Response returned after successfully deleting a scheduled report from Cisco Catalyst Center. Returned: when state is deleted and report deletion succeeds Sample: |
|
Response returned after successfully downloading report content to the specified local file path. Returned: when delivery_type is DOWNLOAD and download succeeds Sample: |
|
Response returned when an error occurs during report operations. Returned: when an error occurs during execution Sample: |
|
Response returned when a report with the same name already exists in Cisco Catalyst Center. Returned: when state is merged and report already exists Sample: |
|
Response returned when processing multiple reports in a single playbook execution. Returned: when config contains multiple report configurations Sample: |
|
Response returned when attempting to delete a report that does not exist in Cisco Catalyst Center. Returned: when state is deleted and report does not exist Sample: |
|
Response returned after successful verification of report operations when config_verify is enabled. Returned: when config_verify is true and verification succeeds Sample: |