CSV to process map: stages and owners from your export columns
Turn a CSV export into a process map. Your stage column becomes Horizontal lane, your owner column becomes Vertical lane, and Line to draws the arrows by row number.
The CSV that produces this diagram
One row per step. The numbers in Line to are row numbers — that is what draws the connectors, and it is the column most files are missing.
| # | Shape | Box text | Line to | Line text | Horizontal lane | Vertical lane |
|---|---|---|---|---|---|---|
| 1 | Start | Customer sends a purchase order | 2 | Order capture | Customer | |
| 2 | Manual input | Enter the order lines in the ERP | 3 | Order capture | Sales | |
| 3 | Decision | Do the ordered lines match the quotation? | 6, 4 | Matches, Price or quantity differs | Order capture | Sales |
| 4 | Decision | Does the customer accept the corrected lines? | 6, 5 | Corrected lines accepted, Order withdrawn | Order capture | Customer |
| 5 | Reject | Order cancelled before dispatch | Order capture | Sales | ||
| 6 | Process | Acknowledge the order and confirm the requested date | 7 | Order capture | Sales | |
| 7 | Process | Check the account balance against the credit limit | 8 | Credit check | Finance | |
| 8 | Decision | Is the order within the credit limit? | 11, 9 | Within limit, Over limit | Credit check | Finance |
| 9 | Decision | Is prepayment received or the limit raised? | 11, 10 | Cleared, Neither | Credit check | Finance |
| 10 | Reject | Order closed as a credit refusal | Credit check | Finance | ||
| 11 | Process | Release the order to the warehouse | 12 | Credit check | Sales | |
| 12 | Process | Allocate stock against each order line | 13 | Allocation | Warehouse | |
| 13 | Decision | Is every line in stock? | 15, 14 | All lines allocated, Short on one or more lines | Allocation | Warehouse |
| 14 | Decision | Ship the available lines now? | 15, 12 | Part-ship with backorder, Wait for the full order | Allocation | Sales |
| 15 | Process | Pick and pack against the pick list | 16 | Pick and pack | Warehouse | |
| 16 | Decision | Does the packed quantity match the pick list? | 18, 17 | Matches, Discrepancy | Pick and pack | Warehouse |
| 17 | Process | Recount and correct the stock record | 15 | Pick and pack | Warehouse | |
| 18 | Process | Hand the shipment over to the carrier | 19 | Dispatch and transit | Warehouse | |
| 19 | Process | Move the shipment and record the proof of delivery | 20 | Dispatch and transit | Carrier | |
| 20 | Decision | Was the delivery accepted in full? | 23, 21 | Accepted in full, Damaged or short | Dispatch and transit | Customer |
| 21 | Compensation | Raise a claim and issue a credit note | 22 | Invoice and close | Sales | |
| 22 | End | Delivery closed with a claim raised | Invoice and close | Sales | ||
| 23 | Process | Post the invoice against the delivered lines | 24 | Invoice and close | Finance | |
| 24 | Decision | Has the invoice been paid by the due date? | 26, 25 | Paid, Overdue | Invoice and close | Finance |
| 25 | Process | Chase the overdue invoice | 24 | Invoice and close | Finance | |
| 26 | Success | Order delivered and invoice paid | Invoice and close | Finance |
#,Shape,Box text,Line to,Line text,Horizontal lane,Vertical lane
1,Start,Customer sends a purchase order,2,,Order capture,Customer
2,Manual input,Enter the order lines in the ERP,3,,Order capture,Sales
3,Decision,Do the ordered lines match the quotation?,"6, 4","Matches, Price or quantity differs",Order capture,Sales
4,Decision,Does the customer accept the corrected lines?,"6, 5","Corrected lines accepted, Order withdrawn",Order capture,Customer
5,Reject,Order cancelled before dispatch,,,Order capture,Sales
6,Process,Acknowledge the order and confirm the requested date,7,,Order capture,Sales
7,Process,Check the account balance against the credit limit,8,,Credit check,Finance
8,Decision,Is the order within the credit limit?,"11, 9","Within limit, Over limit",Credit check,Finance
9,Decision,Is prepayment received or the limit raised?,"11, 10","Cleared, Neither",Credit check,Finance
10,Reject,Order closed as a credit refusal,,,Credit check,Finance
11,Process,Release the order to the warehouse,12,,Credit check,Sales
12,Process,Allocate stock against each order line,13,,Allocation,Warehouse
13,Decision,Is every line in stock?,"15, 14","All lines allocated, Short on one or more lines",Allocation,Warehouse
14,Decision,Ship the available lines now?,"15, 12","Part-ship with backorder, Wait for the full order",Allocation,Sales
15,Process,Pick and pack against the pick list,16,,Pick and pack,Warehouse
16,Decision,Does the packed quantity match the pick list?,"18, 17","Matches, Discrepancy",Pick and pack,Warehouse
17,Process,Recount and correct the stock record,15,,Pick and pack,Warehouse
18,Process,Hand the shipment over to the carrier,19,,Dispatch and transit,Warehouse
19,Process,Move the shipment and record the proof of delivery,20,,Dispatch and transit,Carrier
20,Decision,Was the delivery accepted in full?,"23, 21","Accepted in full, Damaged or short",Dispatch and transit,Customer
21,Compensation,Raise a claim and issue a credit note,22,,Invoice and close,Sales
22,End,Delivery closed with a claim raised,,,Invoice and close,Sales
23,Process,Post the invoice against the delivered lines,24,,Invoice and close,Finance
24,Decision,Has the invoice been paid by the due date?,"26, 25","Paid, Overdue",Invoice and close,Finance
25,Process,Chase the overdue invoice,24,,Invoice and close,Finance
26,Success,Order delivered and invoice paid,,,Invoice and close,FinanceThe diagram those rows produce
Rendered from the rows above, unchanged. Edit a cell and the diagram follows; move a box and the rows follow.
The columns QueryChart reads
Header names are matched, not column positions — extra columns are carried along and ignored by the diagram.
| Column | Required? | What it does | Example |
|---|---|---|---|
# | Optional | The row's own position, counted from the first row of data; this is what Line to points at, and the file's row order decides it, so you do not have to write the column yourself. | 8 |
Shape | Required | The kind of box drawn for the step: Start, Process, Decision, End, Reject or Success, and a value that matches none of them is drawn as a Process. | Decision |
Box text | Required | The text inside the box: an action for a step, and the question that gets answered for a Decision. | Is the order within the credit limit? |
Line to | Required | The row number this step hands off to, comma-separated where the step branches, and a number naming no row is dropped without an error. | 11, 9 |
Line text | Optional | The label on each connector, in the same order as Line to, so the first label belongs to the first target. | Within limit, Over limit |
Horizontal lane | Optional | The stage of the work the step belongs to; each distinct value becomes one stage band, in the order it is first seen. | Credit check |
Vertical lane | Optional | Who performs the step; each distinct value becomes one lane, and a step whose lane differs from the step before it is a handover. | Finance |
How it works
Name your two axes before you edit anything
Open the export and find two columns. One says where in the work a record got to: Stage, Phase, Process Area, Milestone. The other says who handled it: Owner, Department, Function, Assigned To, Queue. Those two become Horizontal lane and Vertical lane. If your file only has owners you still get a swimlane chart, and if it only has stages you get the stage bands; a process map wants both, because the crossing is the thing it shows.
Write one row per step, not one row per record
An ERP or ticket export has one row per order line, ticket or transaction, and thousands of them describe the same handful of steps. The map needs one row for each distinct step. Read the distinct values of your stage and status columns to work out what those steps are, then write them once each, in the order they happen. Most processes land between ten and thirty rows no matter how large the export was. The per-record counts are useful later as volumes against a branch; they are not rows.
Number the steps and point Line to at those numbers
Line to takes the row number of the step this one hands off to, comma-separated where it branches (11, 9), and Line text takes the connector labels in matching order. Your export's order numbers, ticket IDs and primary keys are not row numbers, and a Line to value naming no row is dropped with no error at all, so the import produces boxes with nothing joining them. Number your steps 1 to n first, then write the targets against those numbers. See /guides/how-to-define-flowchart-connections-in-csv.
Put the stage in Horizontal lane and the owner in Vertical lane
This is what makes the result a process map rather than a flowchart. Each distinct Horizontal lane value becomes a stage band and each distinct Vertical lane value becomes a lane; the two cross into a grid and every step sits in one cell of it. Spell the values identically on every row, because the lanes are matched as written. /templates/csv-process-map is a worked example: six stages crossed with five lanes, from a customer order to a paid invoice.
Drop the file onto the spreadsheet area
Open a chart, switch to the spreadsheet view, and drop the .csv onto it or paste the CSV text straight in. Matching is by header name rather than column position, so Horizontal lane and Vertical lane can sit anywhere in the file. There is no import wizard and no column mapper: what you get is whatever the header names matched, which is why the headers are worth fixing before the import rather than after. /guides/how-to-import-csv-into-a-flowchart-tool walks through the same steps.
What usually goes wrong
- Using the status column as the stage column — A status is where a record stopped; a stage is a part of the work. An order export's status column reads Open, Released, Shipped, Invoiced (four resting places, not four stages) and a map built from them shows the states between the work rather than the work. Take your stage values from what people actually do (Order capture, Credit check, Allocation) and keep the statuses as evidence of how many records sat in each.
- One row per record instead of one row per step — Fifty rows of item codes are one order passing through one stage. Import the export as it stands and you get fifty boxes that all say roughly the same thing, in one long line, with no process visible anywhere. Collapse to distinct steps first. This is the step people skip, because the file looks ready and it is not.
- Stage and owner in the wrong lane columns — Nothing rejects it. You get a map that reads sideways (Finance and Warehouse as the phases of the work, Credit check as a department) and it is a hard error to name while you are looking at it. If the diagram is wrong in a way you cannot put your finger on, swap the two columns and look again.
- Document numbers in the Line to column — Line to addresses rows by position, so an order number like SO-10493 in that column matches no row and is dropped silently. This is the most common reason an import produces boxes with no arrows between them. Renumber every target to a row position before importing, and remember that inserting a step later shifts every number below it, so import the file first and add steps in the editor.
- Lane values that differ by a space or a capital — Each distinct value in Horizontal lane or Vertical lane creates one band, matched as written. Credit check, Credit Check and a value with a trailing space give you three stage bands with the steps scattered across them. Sort the column and read the distinct list before you import; an export that concatenated a code and a name is the usual source of the near-duplicates.
Frequently asked questions
What does a CSV need to look like to become a process map?
Three columns draw the diagram: Shape (Start, Process, Decision, End, Reject, Success), Box text (what the box says) and Line to (the row number this step connects to, comma-separated where it branches). Two more make it a process map rather than a flowchart: Horizontal lane for the stage of the work and Vertical lane for who performs it. Line text labels the branches, in the same order as Line to. That is the entire contract: every other column in your export is carried along and ignored.
What does a process map show that a flowchart does not?
The second axis. A flowchart answers what happens next and is finished once every path ends somewhere. A process map keeps all of that and adds the stage each step belongs to, so the diagram also shows where the work concentrates and where it changes hands. In an order-to-delivery process the delay is rarely inside a stage: it is at the crossings, an order released but not allocated, or packed but not collected. A flowchart draws those two steps next to each other. A map shows they sit in different stages and different lanes, which is another way of saying somebody has to hand over.
My export has a Stage column and an Owner column. Which one goes where?
Stage goes in Horizontal lane, owner goes in Vertical lane. A stage is a phase of the work (Order capture, Credit check, Allocation) and it advances as the process moves forward. An owner is a team or role (Sales, Warehouse, Finance, Carrier) and it changes when the work is handed sideways to someone else. Headers vary by system: Phase, Milestone and Process Area are usually stages, while Function, Department, Assigned To and Queue are usually owners. The test is which direction the value moves in.
Is the conversion deterministic, or is a model generating the diagram?
Deterministic. The importer reads the columns and draws what they say; nothing is inferred, summarised or invented, and the same file imported twice produces the same map. That matters when the map has to serve as documentation: if you cannot re-run the file and get the same picture, the picture is not evidence of anything. It also makes errors tractable: a step missing from the diagram is a step missing from the file, which you can go and fix.
How does this compare with Visio's Data Visualizer?
The column idea is the same, and older than either tool: one row per step, a column of next-step references, and columns for the lane and the phase. The differences are where the diagram ends up and what it takes to open it. Data Visualizer produces a Visio drawing inside the Microsoft stack, and Microsoft announced in November 2025 that the Data Visualizer add-in for Excel is being retired; the Data Visualizer templates in the Visio desktop app under Visio Plan 2 are a separate feature and were not part of that announcement. QueryChart reads the CSV in a browser, and the spreadsheet stays the surface you edit.
Can I import an ERP export exactly as it comes out of the system?
No, and no tool can. No ERP exports a Box text column or a Line to column, because the system does not store the process: it stores what happened to each record. The extra columns cost you nothing, since unrecognised headers are carried and ignored, so you can leave item codes, quantities and dates in the file. But the step text and the connections have to be written by you. There is no connector and no wizard that will infer them from order lines.
Do I have to fill in both lane columns?
No. Leave both out and you get a plain flowchart; fill in only Vertical lane and you get swimlanes by owner; fill in both and you get the grid that makes it a process map. A row with a blank lane cell is not placed in that lane, which is worth checking before you present the result: one blank stage among twenty rows is much easier to miss on the sheet than on the diagram.
What happens to the columns QueryChart does not recognise?
They are carried along and ignored. Matching is on header names rather than positions, so your order numbers, cost centres and dates neither break the import nor appear on the diagram. The consequence worth knowing is that an unrecognised header is the same as a missing column: put your connections under a header called Next Step and the file imports as boxes with no arrows, because nothing matched Line to.