> ## Content Index
> Fetch the complete content index at: https://www.pinglabz.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Uploading the WAN edge serial list manually: the C8000v caveat
- URL: https://www.pinglabz.com/sd-wan-serial-list-upload/
- Published: 2026-11-05T20:34:35.000Z
- Updated: 2026-11-05T20:34:35.000Z
- Description: The C8000v CSV upload failed. Local PAYG identity generation and a manual list push worked. This SD-WAN 20.18 casebook explains the bootstrap token, certificate serial, and final-push check.
- Author: Jaime
- Tags: SD-WAN, Cisco

You signed a certificate, yet the edge still gets rejected. The control components also need its authorized chassis and serial record. This is the manual path we used on Cisco Catalyst SD-WAN 20.18.2.1 with C8000v on IOS XE 17.18.02, built in my home lab.

This is part of the [Cisco SD-WAN series](https://www.pinglabz.com/cisco-sd-wan/). Previous: [Enterprise root CA for Cisco SD-WAN without a Smart Account](https://www.pinglabz.com/sd-wan-enterprise-root-ca/). Next: [Onboard a Catalyst 8000v 17.18 in controller mode](https://www.pinglabz.com/onboard-c8000v-controller-mode/).

For SD-WAN Manager (formerly vManage) and the other old names, see the [name map](https://www.pinglabz.com/vmanage-vsmart-vbond-names/).

## A trusted certificate still needs an allowed identity

The certificate is the badge. The WAN edge list is the guest list. A valid signature says who issued the badge, while the list says whether this particular device belongs in the fabric.

A software chassis identity is different from a certificate serial number. The chassis identifies the virtual router. During bootstrap, the Manager also holds an activation token, which is a secret used to get the device started. After certificate installation, the record needs the certificate's actual serial number.

Do not publish a WAN edge export without checking it. Before installation, a field named `serialNumber` can contain the activation token.

## What “manual upload” means here

Cisco's documented conventional workflow accepts an authorized serial file obtained through Plug and Play (PnP), then sends the validated device records to the controllers. PnP Connect can synchronize that inventory with the Manager.

We did not use PnP Connect, create a cloud account, or obtain a file from that portal. We created C8000v software identities locally using the Manager's PAYG function, then pushed the resulting authorized list manually.

That distinction matters to the procedure: there was no successful C8000v CSV file upload in this lab. The manual generation and push path below is what worked.

## The CSV attempt that failed

Our notes record a CSV with this header:

```
Chassis Number,Serial No,Subject Serial No,Hostname,Site Id,System IP
```

The Manager parsed it but rejected the virtual-platform rows:

```
Virtual Platform is not allowed in CSV Upload.
```

Treat that as the result for this C8000v workflow and release. It does not establish that every authorized-file format or hardware import is unsupported. I would not keep editing that CSV to solve a virtual identity problem.

## Create the two software identities locally

In an authenticated Manager API session, the successful build sent this JSON request:

```
POST /dataservice/system/device/generate-payg
Content-Type: application/json

{"numPaygDevices":2,"validity":"valid","organization":"pinglabz-lab"}
```

The recorded response was:

```
Number of PAYG devices added successfully: 2
```

This is a write operation. Run it once for the number of identities you need, then inspect the result before repeating it. Multipart and form requests returned 415 in our notes.

`GET /dataservice/system/device/vedges` then showed generated `C8K-PAYG-...` chassis identities in state `tokengenerated`. At that stage, its `serialNumber` field held the token. Keep both the chassis and token private and use placeholders in logs shared outside the lab.

PAYG stands for Pay As You Go. The command's existence does not make this a licensing bypass. This post documents an onboarding result on our software lab, not a grant of entitlement.

## Send the initial list before activation

The build explicitly pushed the generated records:

```
POST /dataservice/certificate/vedge/list?action=push

{}
```

The request returned a task ID. We polled `GET /dataservice/device/action/status/<TASK_ID>` and waited for completion before activating an edge.

The equivalent control in Cisco's documented certificate workflow is Send to Controllers on Configuration > Certificates > WAN Edge List. That button distributes the validated records. Our tested path used the API request above.

This initial push is intentional even though the identities are still awaiting certificates. The Validator needs the bootstrap identity before the edge can present its token.

## Finish each certificate before the final push

The next post activates the edge and signs its certificate signing request (CSR). The order matters:

1. Activate one edge with its own chassis and token.
2. Wait for its CSR in the Manager.
3. Sign the request and install the signed certificate through the Manager.
4. Wait for `certinstalled`.
5. Compare the Manager's `serialNumber` against the certificate's serial.
6. Repeat for the second edge, then push the list again.

The serial check uses the signed public certificate, not the old token:

```
openssl x509 -in edge1.crt -noout -serial
```

Our script stopped if that value differed from the Manager record. Do not send the final list as a way to repair a stale certificate record.

[![Generate local identities, push the initial list, activate and sign, verify certinstalled and serial match, then push the final list](https://storage.ghost.io/c/ff/28/ff28db4a-11e1-4835-b928-158974cf96c1/content/images/2026/11/sd-wan-serial-list-upload.png)](https://storage.ghost.io/c/ff/28/ff28db4a-11e1-4835-b928-158974cf96c1/content/images/2026/11/sd-wan-serial-list-upload.png?ref=pinglabz.com)

## Why the second push needs a check

An earlier install task stuck while the Manager was unstable. Installing a certificate directly on the edge got connections up temporarily, but the Manager retained a failed install state and the token in its serial field.

The next list push then revoked that edge. The successful run avoided the mismatch by keeping the Manager stable, installing one edge at a time, and checking the actual serial before the final push.

This is a reason to distinguish the initial bootstrap push from the final certificate-backed push. “Never push while a token exists” would be wrong for the first step. “Push again after any certificate attempt” was unsafe in our failed run.

## Verify at both ends

On the Validator, inspect `show orchestrator valid-vedges` to confirm the authorized records. Do not copy its full output into a public post. Check the corresponding certificate state in the Manager.

Then use `show sdwan control connections` on the edge. After onboarding, our edges reached the Controller and formed OMP peers. A fresh Controller capture shows `10.0.0.1` and `10.0.0.2` both up.

PnP would supply or synchronize inventory in a conventional deployment. Our manual path supplied those records locally and explicitly distributed them. Neither operation replaces root trust or the device certificate installation.