> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.adid.dev/llms.txt.
> For full documentation content, see https://docs.adid.dev/llms-full.txt.

# VC Bulk Issuance Pipeline

**Used in:** §4.3.2 Bulk Issuance from CSV
**Audience:** Issuer
**IA ID:** D24

```mermaid
flowchart TD
  A["CSV upload (BulkIssuance.tsx)"] --> B["Parse rows + header validation"]
  B --> C{"Header matches schema fields?"}
  C -- No --> CErr["Reject upload + show column diff"]
  C -- Yes --> D["Per-row JSON-Schema validation"]
  D --> E{"Row valid?"}
  E -- No --> EErr["Mark row failed, keep going"]
  E -- Yes --> F["Queue issuance job"]
  F --> G["Worker: sign VC + INSERT row"]
  G --> H{"Anchor on-chain?"}
  H -- Yes --> I["Batch tx → SchemaRegistry / RevocationRegistry"]
  H -- No --> J["Skip anchoring"]
  I --> K["Update job progress (SSE / polling)"]
  J --> K
  K --> L{"More rows?"}
  L -- Yes --> D
  L -- No --> M["Final report (success / failed counts, downloadable CSV)"]
```

**Reading guide:** Failed rows do not abort the pipeline — they are reported in the final downloadable CSV. The on-chain anchor is batched per N rows to amortise gas.

***