Most engineers think…
Most engineers think SD-WAN provisioning is "open vManage, fill in the boxes once, hit attach, done." So they build one giant template, type the IP for every site by hand, and SSH a quick fix whenever something's off.
Wrong — and it falls apart at scale. The whole point is small reusable feature templates assembled into one device template, with the per-site bits pulled from a variables CSV so 500 routers ride one design. And the moment you SSH a manual change onto a template-attached device, vManage marks it Out-of-sync and your next push either overwrites the hack or fails validation. Templates only help if you treat them — not the CLI — as the source of truth.
① Why templates — you can't CLI 500 routers by hand
Picture Sneha at Infosys handed a rollout: 500 branch WAN Edge routers, all basically the same design — same routing, same NTP, same security — differing only in hostname, system-IP and site-ID. Configuring them by SSH is a week of copy-paste and guaranteed typos. The SD-WAN answer is templates: build the design once, scale it by data, not by hand.
The model has three layers and it's worth memorising the order. A feature template is one small block — "the System config", "VPN 0", "the NTP config". Several feature templates assemble into one device template, which holds the complete operational config for one device type (a C8000v, an ISR 1100). That device template attaches to many devices, and the bits that differ per site come from variables filled from a CSV — one row per router.
The dabbawala analogy lands this for Indian students. Mumbai's dabbawalas don't memorise 200,000 individual home addresses — they use one coding scheme (the colour-and-letter tag on each tiffin) that every dabbawala reads the same way. The scheme is the template; the specific tag on your tiffin is the variable. Build the scheme once and 5,000 dabbawalas scale it. SD-WAN templates are exactly that: the design is shared, the address is per-tiffin.
You'll live on two screens. Feature templates are at Configuration > Templates > Feature Templates (click Add Template, pick the device model, pick the feature). Device templates are one tab over at Configuration > Templates > Device Templates. In Catalyst SD-WAN Manager the menu is the same; only the product name on the banner changed.
Four words you'll use every day
Tap each card — these anchor the whole lesson.
One small reusable block of config — System, VPN, OMP, NTP. The Lego brick. You attach features to a device template, never straight to a device.
The complete config for ONE device type, built by assembling feature templates. This is what you attach to actual routers.
A per-device value (hostname, system-IP) the template leaves blank as {name} and fills from the CSV. Same design, different address.
One column per variable, one row per device. Fill it, upload it, and 500 routers get 500 different configs from one template. So: scale by row.
Rahul at TCS attaches a freshly-built 'System' feature template directly to a router and it won't apply. What did he get wrong about the model?
Pause & Predict
Predict: if 500 routers share ONE device template but each has a different hostname and system-IP, where do those 500 different values actually come from? Type your guess.
② Feature templates — System, VPN, OMP, BGP, NTP, AAA & variables
Feature templates come in families, and a handful cover most of a branch. The System template owns the device identity — site-id, system-ip, hostname, timezone, organization-name. The VPN template defines a routing segment: VPN 0 is the transport (underlay) side, VPN 512 is the out-of-band management VPN, and VPN 1+ are your service/LAN VPNs. VPN-Interface templates sit inside a VPN and configure an actual interface (IP, tunnel, TLOC colour).
The control-plane and edge-services families round it out. OMP tunes the overlay routing protocol (timers, path limits, redistribution). BGP configures the LAN-side or DC routing peering. Banner, NTP and AAA are the housekeeping you set once and reuse everywhere — login banner text, time servers, and the TACACS/RADIUS login model. The exam loves asking which family owns which knob, so anchor them now.
Scope: the dropdown that makes one template fit many sites
Every field on a feature template has a small scope dropdown to its left, and this is the single most important control in the whole lesson. Global means the same value on every attached device (organization-name, NTP server). Device-Specific turns the field into a variable — vManage asks you to name it (e.g. host_name, system_ip) and the CSV fills it per router. Default leaves the factory value so you type nothing (and make no typo).
This is exactly why one feature template fits many sites. Set organization-name to Global (every device shares it), set system-ip and host-name to Device-Specific (each device's own value), leave console-baud-rate at Default. Now the same System template rides Mumbai, Pune and Chennai — only the CSV row changes. Get greedy and make everything Device-Specific and your CSV balloons to 40 columns; get lazy and make a unique field Global and every router ends up with the same system-IP (a fast way to break OMP).
Symptom: you attach the template and OMP routes flap or controllers drop a device. Cause: system-ip was left as Global (or hard-typed) instead of Device-Specific, so two routers booted with the same system-IP. Fix: set system-ip, site-id and hostname to Device-Specific variables so each router gets its own value from its CSV row — never a shared one.
Branch-Edge1# show sdwan running-config system Branch-Edge1# show sdwan system status
system host-name Mumbai-Edge1 system-ip 10.0.1.1 site-id 101 organization-name "Techclick-Infosec" ! Version: 17.12.3a vManage mode: enabled Reboot reason: power-on
Priya at ICICI wants the NTP server identical on all 200 branches but each branch to keep its own hostname. Which scopes does she pick?
Pause & Predict
Predict: you set hostname to Device-Specific but forgot to put a host_name column in your CSV. What happens at attach time? Type your guess.
③ Device templates — assemble, fill the CSV, preview & push
Now you assemble. At Configuration > Templates > Device Templates you click Create Template > From Feature Template, pick the device model, name it, and then slot your feature templates into the sections vManage lays out — Basic Information (System, Logging, AAA, BFD, OMP, Security), Transport & Management VPN (VPN 0, VPN 512 and their interfaces), Service VPN (VPN 1+), and Additional Templates (Banner, NTP, SNMP). Each device template is specific to one device type — you can't share a C8000v template with an ISR 1100.
With the template built, you attach devices. vManage now needs the per-device values for every Device-Specific variable you created. You fill them two ways: type them into the per-device form, or — the way you do 500 at once — download the variables CSV, fill it offline, and upload it. The CSV has one column per variable and one row per device; the header row carries the exact variable names you chose.
▶ Follow one device template from build to live
Watch a branch router go from 'attach' to a verified push, step by step. Press Play for the healthy path, then Break it to see the failure.
Never skip the preview. Before the push, Config Preview (and the Config Diff view) shows the full intended config and exactly what will change versus what's on the box. This is your last safety gate — read it the way you'd read a git diff before committing. If the diff shows a line you didn't expect (a VPN being removed, an interface shut), stop and fix the template, don't push and hope.
Out-of-sync and CLI mode — how a manual change breaks the contract
A template-attached device is in Manager (vManage) mode — vManage owns the config and the box rejects local edits. Detach the template and the device drops to CLI mode, where you configure it by hand. The trap: SSH a 'quick fix' onto a device that's still in Manager mode and vManage flags the device template Out-of-sync — running config no longer matches intended config.
Aditya at HCL faces this
Aditya, an L2 engineer, gets paged: a branch router shows 'Out-of-sync' in vManage after a late-night change. Someone had SSH'd in to add a static route during an outage and it 'worked', but now every template push is blocked.
The device was in Manager mode (template attached), so the manual CLI static route created a mismatch between the device's running config and vManage's intended config. vManage refuses to push until intent and reality are reconciled — it won't silently overwrite an unknown change.
He checks Configuration > Devices, sees the device template status is Out-of-sync, and opens Config Diff to see exactly which lines drifted (the rogue static route).
vManage > Configuration > Devices > (device) > … > Template Status / Config DiffAdd the static route into the correct feature template (or a CLI add-on template) so intent now includes it, preview the diff, and push. The push reconciles the device — the manual route is now template-managed, not a hidden drift.
After the push, Configuration > Devices shows the device template In-sync, Config Diff is empty, and 'show sdwan running-config' on the box matches the template — future pushes succeed.
Karthik at Airtel finds a device stuck Out-of-sync because of a manual CLI tweak made during an outage. What's the clean way to make that change permanent?
Pause & Predict
Predict: a device is in Manager mode and you SSH in to 'config t' a quick change. What does the device do, and what does vManage show? Type your guess.
④ CLI add-on templates, Configuration Groups, preview & rollback
Feature templates can't expose every IOS-XE knob. When the GUI lacks a setting, you use a CLI add-on feature template. You write the literal IOS-XE commands, add the CLI add-on to the device template alongside your normal feature templates, and vManage appends those lines to the generated config. You can even use {variables} inside the CLI add-on so per-device values still come from the CSV. It's the escape hatch — powerful, but the more you lean on it, the less the GUI represents the truth.
ip ssh version 2 login block-for 120 attempts 4 within 60 ntp server 10.5.5.10 source GigabitEthernet0/0/0 banner login ^C Authorised Techclick users only ^C
! appended to the device config on push, after the GUI-built features Branch-Edge1# show sdwan running-config | include block-for login block-for 120 attempts 4 within 60 ! In-sync after push — the add-on lines are now template-managed
The newer model Cisco wants you on is Configuration Groups with feature profiles. Instead of dozens of separate feature templates, a configuration group bundles them into profiles (System, Transport, Service) and adds a guided workflow plus per-device parcels. You'll find it at Configuration > Configuration Groups (in Cisco vManage Release 20.11.1 and earlier it lived under Configuration > Templates > Configuration Groups). From 17.12/20.12 Cisco recommends migrating, and a Configuration Conversion Tool turns existing templates and policies into config groups and policy groups.
This matters for the exam and the field in 2025–2026. From Cisco IOS XE Catalyst SD-WAN 17.15.1a / Control Components 20.15.1, some features are configurable only by API, and those releases are the last to support a few legacy template paths — another nudge toward Configuration Groups. From 17.15.1a you can also share a feature profile across multiple configuration groups, so you stop rebuilding the same System profile per group. The 300-415 blueprint explicitly asks you to configure and verify CLI and vManage feature configuration templates and to describe configuration groups and feature profiles — so know both worlds.
For any provisioning task ask two questions: (1) is this value the same on all devices or unique per site? same → Global, unique → Device-Specific variable, factory-fine → Default; (2) can the GUI express it? yes → feature template, no → CLI add-on, and if you're starting fresh in 2025+ → Configuration Groups. Almost every template decision maps onto that grid.
Symptom: a push removes a VPN or shuts an interface that branch users needed, and the site goes dark. Cause: you attached a template and hit Configure Devices without opening Config Preview / Diff. Fix: always read the diff first (it's a git-diff for your router); if you see an unexpected removal, fix the template before pushing. If a push does break a site, roll back to the last good config from the device's task view.
Take a real ask — "stand up 50 new branches, identical design, each with its own hostname and system-IP" — and name it cold: build feature templates (System/VPN/OMP/NTP/AAA), set hostname & system-ip to Device-Specific variables, assemble one device template for the model, fill a 50-row variables CSV, preview the Config Diff, push, and verify In-sync with show sdwan running-config. If you can say that without notes, you're ready for the cert and the NOC floor.
Meera at Wipro needs an IOS-XE setting that her feature templates don't expose, but she still wants vManage to own the config. Best move?
🤖 Ask the AI Tutor
Tap any question — instant, scoped to this lesson. No login, no waiting.
Pre-curated from Cisco SD-WAN docs + community Q&A, scoped to this lesson. For a live prod issue, paste your export into chat.techclick.in.
📝 Wrap-up assessment — six more
You've answered 4 inline. Six left. 70% (7 of 10) marks the lesson complete on your profile. Tap Submit all answers at the end.
🧠 In your own words
Type one line: In one line, why does a manual SSH change on a template-attached device cause Out-of-sync? Then compare to the expert version.
🗣 Teach a friend
Best way to lock it in — explain it in one line to a teammate. Tap to generate a paste-ready summary.
📖 Glossary
- Feature template
- One reusable block of config (System, VPN, OMP, NTP, AAA). The building block you assemble into a device template — never attach it straight to a device.
- Device template
- The complete operational config for one device type, built by assembling feature templates. This is what you attach to real routers.
- Variable
- A per-device placeholder like {host_name} or {system_ip} created when a field's scope is Device-Specific; filled per router from the CSV.
- Variables CSV
- vManage-generated spreadsheet: one column per variable, one row per device. Fill offline and upload to push to many devices at once.
- Scope (Global / Device-Specific / Default)
- The dropdown on each feature-template field: Global = same on all, Device-Specific = a variable, Default = factory value.
- System IP
- Each device's unique controller-plane ID (a /32). Set Device-Specific; duplicating it breaks OMP and controller connections.
- CLI add-on feature template
- A feature template holding raw IOS-XE lines, appended on top of GUI-built config, for settings the feature templates don't expose. Supports {variables}.
- Manager (vManage) mode
- A device template is attached; vManage owns the config and rejects local CLI edits.
- CLI mode
- No template attached; you configure the device box-by-box over SSH/console. Detaching a template puts a device into CLI mode.
- Out-of-sync
- The device's running config no longer matches the intended template config (usually a manual CLI change). Shown in Configuration > Devices.
- Config Preview / Config Diff
- vManage view of the full intended config and exactly what will change vs the device's current config — your last safety gate before push.
- Configuration Groups / feature profiles
- The newer model (recommended 17.12/20.12+): feature profiles (System/Transport/Service) bundled into a configuration group; a Conversion Tool migrates classic templates.
📚 Sources
- Cisco Catalyst SD-WAN Systems and Interfaces Configuration Guide, IOS XE 17.x — "Configure Devices" (feature → device template assembly, Global/Device-Specific/Default scope, attach, variables CSV, Manager vs CLI mode, out-of-sync, Config Preview/Diff). cisco.com/c/en/us/td/docs/routers/sdwan/configuration/system-interface/ios-xe-17/systems-interfaces-book-xe-sdwan/configure-devices.html
- Cisco Catalyst SD-WAN Systems and Interfaces Configuration Guide, IOS XE 17.x — "CLI Add-On Feature Templates" (raw IOS-XE lines appended on top of feature templates; supports variables). cisco.com/c/en/us/td/docs/routers/sdwan/configuration/system-interface/ios-xe-17/systems-interfaces-book-xe-sdwan/cli-add-on-feature-template.html
- Cisco Catalyst SD-WAN Configuration Groups Reference Guide — "Introduction" & "Using Configuration Groups" (feature profiles System/Transport/Service; Configuration > Configuration Groups path, 20.11.1 and earlier path; Conversion Tool; shared profiles from 17.15.1a). cisco.com/c/en/us/td/docs/routers/sdwan/configuration/config-groups/configuration-group-guide/introduction.html
- Cisco Community — "Viptela Template out of sync" (real customer thread: device template Out-of-sync after a manual change, detach-to-CLI / update-template-and-push resolution). community.cisco.com/t5/sd-wan-and-cloud-networking/viptela-template-out-of-sync/td-p/4453460
- Cisco Community — "Failed to attach template … Device failed to process request" (push/validation failures from bad variable values; check Config page before push; verbose log /var/log/nms/vmanage-server-deviceconfig-template.log). community.cisco.com/t5/sd-wan-and-cloud-networking/failed-to-attach-template-to-c1111-8pltewea/td-p/4113797
- Release Notes for Cisco Catalyst SD-WAN Control Components Release 20.15.x — features API-only from 17.15.1a/20.15.1; last release for some legacy paths; migration to Configuration Groups encouraged (recent ≤12-mo item). cisco.com/c/en/us/td/docs/routers/sdwan/release/notes/20-15/rel-notes-controllers-20-15.html
- Cisco 300-415 ENSDWI v1.2 exam topics — "Configure and verify CLI and vManage feature configuration templates" and "Describe configuration groups and feature profiles for configuration management". learningnetwork.cisco.com/s/ensdwi-exam-topics
What's next?
Templates get the boxes configured identically — but identical isn't enough. Next you'll bend the overlay to your will: hub-and-spoke vs mesh topologies, control policy on vSmart, and steering traffic where the business needs it.