# meraki/automation-scripts architecture

> Architecture diagram of the GitHub repository meraki/automation-scripts, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/meraki/automation-scripts
- Repository: https://github.com/meraki/automation-scripts

## Overview

automation-scripts is a collection of independently run Python 3 utilities for operating and migrating Meraki Dashboard organizations; it is not a single service or shared application pipeline. Users select a script, provide credentials and task-specific inputs, and receive configuration changes, reports, or exported files. The graph groups the README’s major capabilities by operational domain. Most scripts were not sampled, so only documented user-to-script and script-to-Dashboard relationships are shown; the ASA converter’s parser dependency is visible in the source index.

Main entry points: [`asa_cryptomap_converter/cryptomap_converter.py`](https://github.com/meraki/automation-scripts/blob/master/asa_cryptomap_converter/cryptomap_converter.py) (VPN map converter), [`migrate_devices/migrate_devices.py`](https://github.com/meraki/automation-scripts/blob/master/migrate_devices/migrate_devices.py) (Device migration), [`migrate_networks/migrate_networks.py`](https://github.com/meraki/automation-scripts/blob/master/migrate_networks/migrate_networks.py) (Network migration), [`cloneprovision/cloneprovision.py`](https://github.com/meraki/automation-scripts/blob/master/cloneprovision/cloneprovision.py) (MX provisioning)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_migration["Migration and conversion"]
  node_asa_parser["ASA config parser"]
  node_asa_converter["VPN map converter"]
  node_migrate_devices["Device migration<br/>[migrate_devices.py]"]
  node_migrate_networks["Network migration"]
  node_clone_provision["MX provisioning<br/>[cloneprovision.py]"]
  node_copy_config["Config transfer<br/>[copymxvlans.py]"]
end

subgraph group_operations["Network operations"]
  node_static_routes["Static routes<br/>[addroutes.py]"]
  node_firewall["Firewall control"]
  node_firmware["Firmware scheduling"]
  node_port_tools["Switch port tools<br/>[tag_all_ports.py]"]
  node_config_backup["Config backup<br/>[backup_configs.py]"]
end

subgraph group_visibility["Inventory and reporting"]
  node_inventory["Organization inventory<br/>[inventorycsv.py]"]
  node_client_reports["Client reports<br/>[orgclientscsv.py]"]
  node_client_search["Client search"]
end

subgraph group_security["Security and access"]
  node_patch_audit["Android patch audit"]
  node_psk_rotation["PSK rotation<br/>[psk_rotator.py]"]
  node_remote_logs["Remote access analysis"]
end

subgraph group_support["Automation utilities"]
  node_webhook_template["Webhook template"]
  node_postman["Postman collection generator"]
end

node_user(("Network operator"))
node_dashboard{{"Meraki Dashboard"}}

node_user -->|"runs conversion"| node_asa_converter
node_asa_converter -->|"parses config"| node_asa_parser
node_asa_converter -->|"creates VPN tunnels"| node_dashboard
node_user -->|"runs migration"| node_migrate_devices
node_migrate_devices -->|"moves devices"| node_dashboard
node_user -->|"runs migration"| node_migrate_networks
node_migrate_networks -->|"copies networks"| node_dashboard
node_user -->|"runs provisioning"| node_clone_provision
node_clone_provision -->|"provisions appliances"| node_dashboard
node_user -->|"runs transfer"| node_copy_config
node_copy_config -->|"transfers VLAN config"| node_dashboard
node_user -->|"provides CSV"| node_static_routes
node_static_routes -->|"adds routes"| node_dashboard
node_user -->|"runs controls"| node_firewall
node_firewall -->|"manages rulesets"| node_dashboard
node_user -->|"schedules upgrades"| node_firmware
node_firmware -->|"submits action batches"| node_dashboard
node_user -->|"runs port tasks"| node_port_tools
node_port_tools -->|"manages switch ports"| node_dashboard
node_user -->|"runs backup"| node_config_backup
node_config_backup -->|"backs up configuration"| node_dashboard
node_user -->|"requests inventory"| node_inventory
node_inventory -->|"reads organization data"| node_dashboard
node_user -->|"requests client CSV"| node_client_reports
node_client_reports -->|"fetches client data"| node_dashboard
node_user -->|"searches IP range"| node_client_search
node_client_search -->|"searches clients"| node_dashboard
node_user -->|"runs audit"| node_patch_audit
node_patch_audit -->|"audits managed devices"| node_dashboard
node_user -->|"runs rotation"| node_psk_rotation
node_psk_rotation -->|"rotates PSKs"| node_dashboard
node_user -->|"analyzes logs"| node_remote_logs
node_remote_logs -->|"analyzes access logs"| node_dashboard
node_user -->|"creates template"| node_webhook_template
node_webhook_template -->|"uploads template"| node_dashboard
node_user -->|"generates collection"| node_postman

click node_asa_parser "https://github.com/meraki/automation-scripts/blob/master/asa_cryptomap_converter/asa_config_parser_module.py"
click node_asa_converter "https://github.com/meraki/automation-scripts/blob/master/asa_cryptomap_converter/cryptomap_converter.py"
click node_migrate_devices "https://github.com/meraki/automation-scripts/blob/master/migrate_devices/migrate_devices.py"
click node_migrate_networks "https://github.com/meraki/automation-scripts/blob/master/migrate_networks/migrate_networks.py"
click node_clone_provision "https://github.com/meraki/automation-scripts/blob/master/cloneprovision/cloneprovision.py"
click node_copy_config "https://github.com/meraki/automation-scripts/blob/master/copymxvlans.py"
click node_static_routes "https://github.com/meraki/automation-scripts/blob/master/addroutes/addroutes.py"
click node_firewall "https://github.com/meraki/automation-scripts/blob/master/mx_firewall_control/mxfirewallcontrol.py"
click node_firmware "https://github.com/meraki/automation-scripts/blob/master/manage_firmware/firmware_upgrade_manager.py"
click node_port_tools "https://github.com/meraki/automation-scripts/blob/master/tag_all_ports.py"
click node_config_backup "https://github.com/meraki/automation-scripts/blob/master/backup_configs/backup_configs.py"
click node_inventory "https://github.com/meraki/automation-scripts/blob/master/inventorycsv.py"
click node_client_reports "https://github.com/meraki/automation-scripts/blob/master/orgclientscsv.py"
click node_client_search "https://github.com/meraki/automation-scripts/blob/master/clients_in_ip_range.py"
click node_patch_audit "https://github.com/meraki/automation-scripts/blob/master/android_patch_audit/android_patch_audit.py"
click node_psk_rotation "https://github.com/meraki/automation-scripts/blob/master/rotate_psks/psk_rotator.py"
click node_remote_logs "https://github.com/meraki/automation-scripts/blob/master/secure_connect/Remote_Access_Logs_Analyzer/remoteAccessLogsAnalyzer.py"
click node_webhook_template "https://github.com/meraki/automation-scripts/blob/master/CiscoLive/UploadCustomWebhookTemplate.py"
click node_postman "https://github.com/meraki/automation-scripts/blob/master/postman_collection_generator.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_asa_parser,node_asa_converter,node_migrate_devices,node_migrate_networks,node_clone_provision,node_copy_config toneBlue
class node_static_routes,node_firewall,node_firmware,node_port_tools,node_config_backup toneAmber
class node_inventory,node_client_reports,node_client_search toneMint
class node_patch_audit,node_psk_rotation,node_remote_logs toneRose
class node_webhook_template,node_postman,node_user,node_dashboard toneIndigo
```

## Components

### Migration and conversion

- [ASA config parser](https://github.com/meraki/automation-scripts/blob/master/asa_cryptomap_converter/asa_config_parser_module.py): `asa_cryptomap_converter/asa_config_parser_module.py`
- [VPN map converter](https://github.com/meraki/automation-scripts/blob/master/asa_cryptomap_converter/cryptomap_converter.py): `asa_cryptomap_converter/cryptomap_converter.py`
- [Device migration](https://github.com/meraki/automation-scripts/blob/master/migrate_devices/migrate_devices.py): `migrate_devices/migrate_devices.py`
- [Network migration](https://github.com/meraki/automation-scripts/blob/master/migrate_networks/migrate_networks.py): `migrate_networks/migrate_networks.py`
- [MX provisioning](https://github.com/meraki/automation-scripts/blob/master/cloneprovision/cloneprovision.py): `cloneprovision/cloneprovision.py`
- [Config transfer](https://github.com/meraki/automation-scripts/blob/master/copymxvlans.py): `copymxvlans.py`

### Network operations

- [Static routes](https://github.com/meraki/automation-scripts/blob/master/addroutes/addroutes.py): `addroutes/addroutes.py`
- [Firewall control](https://github.com/meraki/automation-scripts/blob/master/mx_firewall_control/mxfirewallcontrol.py): `mx_firewall_control/mxfirewallcontrol.py`
- [Firmware scheduling](https://github.com/meraki/automation-scripts/blob/master/manage_firmware/firmware_upgrade_manager.py): `manage_firmware/firmware_upgrade_manager.py`
- [Switch port tools](https://github.com/meraki/automation-scripts/blob/master/tag_all_ports.py): `tag_all_ports.py`
- [Config backup](https://github.com/meraki/automation-scripts/blob/master/backup_configs/backup_configs.py): `backup_configs/backup_configs.py`

### Inventory and reporting

- [Organization inventory](https://github.com/meraki/automation-scripts/blob/master/inventorycsv.py): `inventorycsv.py`
- [Client reports](https://github.com/meraki/automation-scripts/blob/master/orgclientscsv.py): `orgclientscsv.py`
- [Client search](https://github.com/meraki/automation-scripts/blob/master/clients_in_ip_range.py): `clients_in_ip_range.py`

### Security and access

- [Android patch audit](https://github.com/meraki/automation-scripts/blob/master/android_patch_audit/android_patch_audit.py): `android_patch_audit/android_patch_audit.py`
- [PSK rotation](https://github.com/meraki/automation-scripts/blob/master/rotate_psks/psk_rotator.py): `rotate_psks/psk_rotator.py`
- [Remote access analysis](https://github.com/meraki/automation-scripts/blob/master/secure_connect/Remote_Access_Logs_Analyzer/remoteAccessLogsAnalyzer.py): `secure_connect/Remote_Access_Logs_Analyzer/remoteAccessLogsAnalyzer.py`

### Automation utilities

- [Webhook template](https://github.com/meraki/automation-scripts/blob/master/CiscoLive/UploadCustomWebhookTemplate.py): `CiscoLive/UploadCustomWebhookTemplate.py`
- [Postman collection generator](https://github.com/meraki/automation-scripts/blob/master/postman_collection_generator.py): `postman_collection_generator.py`

### Other components

- **Network operator**
- **Meraki Dashboard**

## Connections

- Network operator → VPN map converter: runs conversion
- VPN map converter → ASA config parser: parses config (evidence: `asa_cryptomap_converter/cryptomap_converter.py`)
- VPN map converter → Meraki Dashboard: creates VPN tunnels
- Network operator → Device migration: runs migration
- Device migration → Meraki Dashboard: moves devices
- Network operator → Network migration: runs migration
- Network migration → Meraki Dashboard: copies networks
- Network operator → MX provisioning: runs provisioning
- MX provisioning → Meraki Dashboard: provisions appliances
- Network operator → Config transfer: runs transfer
- Config transfer → Meraki Dashboard: transfers VLAN config
- Network operator → Static routes: provides CSV
- Static routes → Meraki Dashboard: adds routes (evidence: `addroutes/addroutes.py`)
- Network operator → Firewall control: runs controls
- Firewall control → Meraki Dashboard: manages rulesets
- Network operator → Firmware scheduling: schedules upgrades (evidence: `manage_firmware/firmware_upgrade_manager.py`)
- Firmware scheduling → Meraki Dashboard: submits action batches (evidence: `manage_firmware/firmware_upgrade_manager.py`)
- Network operator → Switch port tools: runs port tasks
- Switch port tools → Meraki Dashboard: manages switch ports
- Network operator → Config backup: runs backup
- Config backup → Meraki Dashboard: backs up configuration
- Network operator → Organization inventory: requests inventory
- Organization inventory → Meraki Dashboard: reads organization data
- Network operator → Client reports: requests client CSV (evidence: `orgclientscsv.py`)
- Client reports → Meraki Dashboard: fetches client data (evidence: `orgclientscsv.py`)
- Network operator → Client search: searches IP range
- Client search → Meraki Dashboard: searches clients
- Network operator → Android patch audit: runs audit
- Android patch audit → Meraki Dashboard: audits managed devices
- Network operator → PSK rotation: runs rotation
- PSK rotation → Meraki Dashboard: rotates PSKs
- Network operator → Remote access analysis: analyzes logs
- Remote access analysis → Meraki Dashboard: analyzes access logs
- Network operator → Webhook template: creates template (evidence: `CiscoLive/UploadCustomWebhookTemplate.py`)
- Webhook template → Meraki Dashboard: uploads template (evidence: `CiscoLive/UploadCustomWebhookTemplate.py`)
- Network operator → Postman collection generator: generates collection
