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

config

list / elements=dictionary / required

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.

generate_report

dictionary / required

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.

deliveries

dictionary / required

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

string / required

Delivery type for the report.

DOWNLOAD saves report to local file system.

NOTIFICATION sends report via email notification.

WEBHOOK triggers a configured webhook endpoint.

Choices:

  • "DOWNLOAD"

  • "NOTIFICATION"

  • "WEBHOOK"

file_path

string

Local file system path where the report should be downloaded.

Required only when delivery_type is DOWNLOAD.

Must be a valid directory path where the user has write permissions.

notification_endpoints

list / elements=dictionary

Required when delivery_type is NOTIFICATION.

Must be a list containing exactly one email endpoint configuration.

Specifies email recipients and notification preferences.

email_addresses

list / elements=string

List of email recipients for the notification.

Required when delivery_type is NOTIFICATION.

Each email address must be in valid email format.

email_attach

boolean

Whether the report should be attached in the notification email.

Choices:

  • false ← (default)

  • true

notify

list / elements=string

List of report execution statuses that will trigger a notification.

If not specified, notifications are sent for all statuses.

IN_QUEUE notifies when report is queued for execution.

IN_PROGRESS notifies when report execution starts.

COMPLETED notifies when report execution finishes.

Choices:

  • "C(IN_QUEUE)"

  • "C(IN_PROGRESS)"

  • "C(COMPLETED)"

webhook_name

string

The name of the webhook to be triggered for the report.

Required when delivery_type is WEBHOOK.

Must reference an existing webhook configured in Catalyst Center.

The webhook will be called when the report is generated.

name

string

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”.

new_report

boolean

Specifies whether to create a new report when a report with the same name already exists.

If set to True and a report with the same name is found, a new report is created with a unique timestamp suffix appended to its name.

Choices:

  • false

  • true ← (default)

schedule

dictionary / required

Defines when the report should be executed (immediately, later, or on a recurring basis).

Controls the timing and frequency of report generation.

date_time

string

Scheduled time for report execution.

Required if schedule_type is SCHEDULE_LATER or SCHEDULE_RECURRENCE.

Must be in ‘YYYY-MM-DD HH:MM AM/PM’ format.

Example “2025-09-02 07:30 PM”.

Only future dates are allowed.

recurrence

dictionary

Recurrence settings for scheduled reports.

Required only when schedule_type is SCHEDULE_RECURRENCE.

Defines the pattern and frequency of recurring executions.

day_of_month

integer

Specific day of the month to run the report.

Only applicable for MONTHLY recurrence_type when last_day_of_month is false.

Must be an integer between 1 and 31.

days

list / elements=string

List of days for weekly recurrence.

Required for WEEKLY recurrence_type.

Can specify individual days or use DAILY for all seven days.

Must include all 7 days for daily execution or DAILY. [“MONDAY”, “TUESDAY”, “WEDNESDAY”, “THURSDAY”, “FRIDAY”, “SATURDAY”, “SUNDAY”] or [“DAILY”].

last_day_of_month

boolean

Whether to run on the last day of the month.

Only applicable for MONTHLY recurrence_type.

When true, ignores day_of_month setting.

Choices:

  • false

  • true

recurrence_type

string / required

Type of recurrence pattern.

WEEKLY for daily execution via weekly pattern with all 7 days.

MONTHLY for monthly execution on specific day or last day.

Choices:

  • "WEEKLY"

  • "MONTHLY"

schedule_type

string / required

The scheduling type for the report execution.

SCHEDULE_NOW executes immediately, SCHEDULE_LATER executes at a specific time, SCHEDULE_RECURRENCE executes repeatedly.

Choices:

  • "SCHEDULE_NOW"

  • "SCHEDULE_LATER"

  • "SCHEDULE_RECURRENCE"

start_date

integer

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.

time

integer

Epoch time in milliseconds for scheduled execution.

Automatically generated from date_time during processing.

Used internally by the API for recurring schedules.

time_zone

string / required

Time zone identifier for the schedule.

Uses standard time zone identifiers like Asia/Calcutta, America/New_York, etc. For a complete list of supported time zones, please refer to the time_zone field in the Inventory Workflow Manager documentation https://galaxy.ansible.com/ui/repo/published/cisco/dnac/content/module/inventory_workflow_manager.

tags

list / elements=string

Optional list of tags to filter reports.

Tags help categorize and organize reports for easier management.

view

dictionary / required

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.

field_groups

list / elements=dictionary / required

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.

field_group_display_name

string

The display name shown in the UI for the field group.

Optional but recommended for readability.

field_group_name

string / required

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.

fields

list / elements=dictionary / required

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.

display_name

string

Optional UI-friendly display label for the field.

Used only for readability; API uses `name`.

name

string / required

Field identifier as defined in the view metadata.

Must match exactly with available fields in the group.

filters

list / elements=dictionary

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.

display_name

string

Human-readable name of the filter shown in the UI.

filter_type

string / required

Type of the filter determining how values are selected.

MULTI_SELECT allows multiple discrete values.

MULTI_SELECT_TREE allows hierarchical multi-selection.

SINGLE_SELECT_ARRAY allows single value from array.

TIME_RANGE allows date/time range specification.

Choices:

  • "MULTI_SELECT"

  • "MULTI_SELECT_TREE"

  • "SINGLE_SELECT_ARRAY"

  • "TIME_RANGE"

name

string / required

Name of the filter as defined in the view metadata.

Common filters include Location, Time Range, Device Type, etc.

value

list / elements=dictionary / required

Value(s) to apply in the filter based on filter_type.

For TIME_RANGE, this is a dict with time_range_option, start_date_time, end_date_time, and time_zone.

For other types, this is a list of dicts with value and display_value keys.

Location filters are automatically resolved to site hierarchy IDs.

display_value

string / required

Human-readable value (e.g., “Switches” or “Global/India”)

value

string / required

API-compatible internal value (e.g., DeviceFamily = SWITCHES)

format

dictionary / required

Specifies the output format of the report.

Determines how the report data will be structured and presented.

format_type

string / required

Type of format to be used for the report output.

CSV for comma-separated values

PDF for document format

JSON for structured data

TDE for Tableau data extract.

Choices:

  • "CSV"

  • "PDF"

  • "JSON"

  • "TDE"

view_name

string / required

The view name from which viewId is derived via API calls.

Must match exactly with available views in the specified view group.

Determines the specific data subset and available fields for the report.

Choices:

  • "Network Device Compliance"

  • "Network Device Availability"

  • "Channel Change Count"

  • "Transmit Power Change Count"

  • "VLAN"

  • "Port Capacity"

  • "Energy Management"

  • "PoE"

  • "Device CPU and Memory Utilization"

  • "Network Interface Utilization"

  • "Executive Summary"

  • "All Data"

  • "Port Reclaim View"

  • "All Data Version 2.0"

  • "All Data"

  • "All Data Version 2.0"

  • "AP"

  • "AP Radio"

  • "AP - Usage and Client Breakdown"

  • "Worst Interferers"

  • "AP RRM Events"

  • "AP Performance Report"

  • "Long Term AP Detail"

  • "Long Term AP Radio"

  • "Long Term AP Usage and Client Breakdown"

  • "Long Term Client Detail"

  • "Long Term Client Session"

  • "Long Term Network Device Availability"

  • "Security Group to Security Group"

  • "Security Group to ISE Endpoint Profile Group"

  • "Security Group to Host Group"

  • "ISE Endpoint Profile Group to Security Group"

  • "ISE Endpoint Profile Group to ISE Endpoint Profile Group"

  • "ISE Endpoint Profile Group to Host Group"

  • "Host Group to Security Group"

  • "Host Group to ISE Endpoint Profile Group"

  • "Host Group to Host Group"

  • "Device Lifecycle Information"

  • "Security Group to Security Groups"

  • "Security Group to ISE Endpoint Profile Groups"

  • "Security Group to Host Groups"

  • "ISE Endpoint Profile Group to Security Groups"

  • "ISE Endpoint Profile Group to ISE Endpoint Profile Groups"

  • "ISE Endpoint Profile Group to Host Groups"

  • "Host Group to Security Groups"

  • "Host Group to ISE Endpoint Profile Group"

  • "Host Group to Host Group"

  • "EoX Data"

  • "Threat Detail"

  • "New Threat"

  • "Rogue Additional Detail"

  • "Non Compliant Devices"

  • "Non Compliance Summary"

  • "AireOS Controllers Licenses"

  • "License Usage Upload Details"

  • "License Historical Usage"

  • "Endpoint Profiling"

  • "Audit Log"

  • "Configuration Archive"

  • "Client"

  • "Client Summary"

  • "Top N Summary"

  • "Client Detail"

  • "Client Trend"

  • "Client Session"

  • "Busiest Client"

  • "Unique Clients and Users Summary"

  • "Security Advisories Data"

view_group_name

string / required

The name of the view group as defined in Catalyst Center. For example, Inventory

Used to identify the viewGroupId via API calls.

Determines the category of data included in the report.

Choices:

  • "Compliance"

  • "Executive Summary"

  • "Inventory"

  • "SWIM"

  • "Access Point"

  • "Long Term"

  • "Network Devices"

  • "Group Pair Communication Analytics"

  • "Telemetry"

  • "Group Communication Summary"

  • "EoX"

  • "Rogue and aWIPS"

  • "Licensing"

  • "AI Endpoint Analytics"

  • "Audit Log"

  • "Configuration Archive"

  • "Client"

  • "Security Advisories"

view_group_version

string

The version of the view group to be used for the report.

Defaults to 2.0.0 if not specified.

config_verify

boolean

Set to True to enable configuration verification on Cisco Catalyst Center after applying the playbook config.

This will ensure that the system validates the configuration state after the change is applied.

Choices:

  • false ← (default)

  • true

dnac_api_task_timeout

integer

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: 1200

dnac_debug

boolean

Indicates whether debugging is enabled in the Cisco Catalyst Center SDK.

Choices:

  • false ← (default)

  • true

dnac_host

string / required

The hostname of the Cisco Catalyst Center.

dnac_log

boolean

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:

  • false ← (default)

  • true

dnac_log_append

boolean

Determines the mode of the file. Set to True for ‘append’ mode. Set to False for ‘write’ mode.

Choices:

  • false

  • true ← (default)

dnac_log_file_path

string

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: "dnac.log"

dnac_log_level

string

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: "WARNING"

dnac_password

string

The password for authentication at the Cisco Catalyst Center.

dnac_port

string

Specifies the port number associated with the Cisco Catalyst Center.

Default: "443"

dnac_task_poll_interval

integer

Specifies the interval in seconds between successive calls to the API to retrieve task details.

Default: 2

dnac_username

aliases: user

string

The username for authentication at the Cisco Catalyst Center.

Default: "admin"

dnac_verify

boolean

Flag to enable or disable SSL certificate verification.

Choices:

  • false

  • true ← (default)

dnac_version

string

Specifies the version of the Cisco Catalyst Center that the SDK should use.

Default: "2.2.3.3"

state

string

Specifies the desired state for the configuration.

If merged, the module will create or schedule new reports.

If deleted, the module will remove existing scheduled reports.

Choices:

  • "merged" ← (default)

  • "deleted"

validate_response_schema

boolean

Flag for Cisco Catalyst Center SDK to enable the validation of request bodies against a JSON schema.

Choices:

  • false

  • true ← (default)

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_mode

  • The 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_create_or_schedule_a_report

dictionary

Response returned after successfully creating or scheduling a report in Cisco Catalyst Center.

Returned: when state is merged and report creation succeeds

Sample: {"response": [{"create_report": {"msg": "Successfully created or scheduled report 'compliance_report'.", "response": {"reportId": "1234567890abcdef12345678", "viewGroupId": "network-device-compliance", "viewsId": "compliance-view-id"}}}]}

response_delete_a_scheduled_report

dictionary

Response returned after successfully deleting a scheduled report from Cisco Catalyst Center.

Returned: when state is deleted and report deletion succeeds

Sample: {"response": [{"delete_report": {"msg": "Report 'compliance_report' has been successfully deleted.", "response": {}}}]}

response_download_report_content

dictionary

Response returned after successfully downloading report content to the specified local file path.

Returned: when delivery_type is DOWNLOAD and download succeeds

Sample: {"response": [{"download_report": {"msg": "Successfully downloaded report 'compliance_report' to '/Users/xyz/Desktop'.", "response": {"filePath": "/Users/xyz/Desktop", "reportId": "1234567890abcdef12345678", "reportName": "compliance_report"}}}]}

response_error

dictionary

Response returned when an error occurs during report operations.

Returned: when an error occurs during execution

Sample: {"changed": false, "failed": true, "msg": "Failed to create report: Invalid view_group_name 'InvalidGroup'.", "response": []}

response_existing_report

dictionary

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: {"changed": false, "msg": "No changes required - report already exists.", "response": [{"create_report": {"msg": "Report 'compliance_report' already exists.", "response": {"report_id": "existing1234567890abcdef", "view_group_id": "network-device-compliance", "view_id": "compliance-view-id"}}}]}

response_multiple_reports

dictionary

Response returned when processing multiple reports in a single playbook execution.

Returned: when config contains multiple report configurations

Sample: {"changed": true, "msg": "Multiple report operations completed successfully.", "response": [{"create_report": {"msg": "Successfully created or scheduled report 'compliance_report'.", "response": {"reportId": "report1-id", "viewGroupId": "compliance", "viewsId": "compliance-view"}}}, {"download_report": {"msg": "Successfully downloaded report 'compliance_report' to '/Users/xyz/Desktop'.", "response": {"filePath": "/Users/xyz/Desktop", "reportId": "report1-id", "reportName": "compliance_report"}}}, {"create_report": {"msg": "Successfully created or scheduled report 'inventory_report'.", "response": {"reportId": "report2-id", "viewGroupId": "inventory", "viewsId": "inventory-view"}}}]}

response_report_not_found

dictionary

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: {"changed": false, "msg": "No changes required - report does not exist.", "response": [{"delete_report": {"msg": "Report 'nonexistent_report' does not exist.", "response": {}}}]}

response_verification_success

dictionary

Response returned after successful verification of report operations when config_verify is enabled.

Returned: when config_verify is true and verification succeeds

Sample: {"changed": true, "msg": "Report operations completed and verified successfully.", "response": [{"create_report": {"Validation": "Success", "msg": "Successfully created or scheduled report 'compliance_report'.", "response": {"reportId": "1234567890abcdef12345678", "viewGroupId": "network-device-compliance", "viewsId": "compliance-view-id"}}}]}

Authors

  • Megha Kandari (@kandarimegha)

  • Madhan Sankaranarayanan (@madhansansel)