How to convert CSV to a process map

How to convert a CSV export into a process map: find the stage column and the owner column your system already exports, copy them into Horizontal lane and Vertical lane, and let every step land where it belongs.

A worked example, stage by stage

  1. Steps and shapes only

    Rows 1 to 6 all belong to a single stage. "Customer sends a purchase order", "Enter the order lines in the ERP", the check "Do the ordered lines match the quotation?", and the two ways that check can end: an acknowledgement, or "Order cancelled before dispatch". Six steps under one value of the export's status column, which is the reason a list of statuses can never be a map.

  2. Connections as row numbers

    Line to fills in and the credit stage attaches to the front half. "Is the order within the credit limit?" sends the within-limit case to row 11 and the over-limit case to row 9, which either reaches "Release the order to the warehouse" or stops at "Order closed as a credit refusal". Those numbers are row positions, not the document numbers your export uses as keys.

  3. Branch labels and the loops

    Line text names each exit and two loops become visible. "Ship the available lines now?" carries 15,12 in Line to and "Part-ship with backorder,Wait for the full order" in Line text, so the second exit runs backwards to row 12, "Allocate stock against each order line". A Discrepancy on the packing check returns to picking the same way. Both loops are why one order can appear twice in the same export under two document numbers.

  4. The two lane columns

    The last two columns go in and the flowchart becomes a map. Horizontal lane holds Order capture, Credit check, Allocation, Pick and pack, Dispatch and transit and Invoice and close; Vertical lane holds Customer, Sales, Warehouse, Finance and Carrier. Read the finished chart across and the order changes hands four times, twice at a stage boundary with no defined trigger, which no column of status codes could ever have shown you.

How it works

  1. Open the file as text and read the header row

    Before anything else, look at the first two lines in a text editor. You need the delimiter, which is a semicolon rather than a comma in most European exports because the list separator follows the regional setting, and you need the actual column names. Write the header row out on paper; you are about to pick two of those columns and everything else follows from that choice.

  2. Pick the stage column

    The stage column is the one whose distinct values are few and ordered: Status, Order status, Document type, Milestone, Phase, Process step. Count them: sort the column and take the unique values. Five or six is a set of stages. Thirty is a status code list, and you will have to group it before it becomes an axis, because thirty lanes is not a diagram anyone can read.

  3. Pick the owner column, and prefer roles to people

    Responsible, Assigned to, Owner, Department, Cost centre, Work centre, Team, Queue, Sales rep, Buyer. Any of these can be the Vertical lane. If the column holds people rather than roles, map the names to roles first: a lane per employee is unreadable at twenty people and wrong the first time somebody changes job, whereas Warehouse and Finance stay true for years.

  4. Write one row per step, not one row per record

    This is the pass no tool can do for you. Your export has one row per order line or per ticket; the map needs one row per move: the moments the work changed hands or a decision was taken. Work them out from the document types and the status transitions, then put the step in Box text and the stage and owner you already chose beside it. Twenty to thirty steps is a whole process; more than that and you are describing two.

  5. Name the two columns exactly Horizontal lane and Vertical lane

    Import matches header names, not column positions, and columns it does not recognise are carried along and ignored. So you do not have to delete or reorder anything: leave Status and Assigned to where they are, add two more columns headed Horizontal lane and Vertical lane, and copy the grouped values across. The original columns ride along untouched and you keep a record of where each lane came from.

  6. Drop the file on the spreadsheet area and read what the lanes expose

    Drag the .csv onto the editor's spreadsheet area, or paste the text straight into it, and the map draws itself: there is no wizard and no column mapper to work through. Then read across the stages. A stage holding one step is not a stage; a stage nobody owns is a queue; and a handoff between two lanes with no decision in front of it is where the delay in your process actually lives.

Frequently asked questions

Do I need a process map, or is a flowchart enough?

If the argument is about what happens next, a flowchart is enough, and /guides/how-to-create-a-flowchart-from-csv is the shorter job. Add the stage axis when the argument is about where time goes or who is accountable, because those questions are answered by position rather than sequence. The test is whether anyone can say which stage the work is in right now. If two people give different answers, the stage column is doing real work and the map is worth building; if the process is ten linear steps in one team, the stage row across the top is decoration.

Which export column should become the Horizontal lane?

The one whose distinct values are few, ordered and describe where in the work a record has got to, not what kind of record it is and not who touched it. Document type is often the best candidate in an ERP export because each document is created at a specific point in the chain: order, delivery note, invoice, credit note. Status is the next best, once you have grouped its codes. Watch out for columns that look ordered but are not, like priority or customer segment; putting one of those across the top produces a chart that reads like a process map and answers no question at all.

My export has no stage column. Can I still build a map?

Yes, and it is common: plenty of exports carry dates and amounts and nothing describing position. Two routes work. Derive the stages from the date columns, since an export with an order date, a confirmed date, a picked date and an invoice date is describing four stages in the column headers rather than in the values. Or name the stages yourself from how the work is actually run and tag each step by hand; the map does not have to be derived from the file, and four to six honest stage names beat a column of codes nobody agrees on.

Why did my lane names come out as Procédure or Køb?

The file is not UTF-8 and is being read as if it were. Most legacy exports are Windows-1252 or Latin-1, which agrees with UTF-8 for plain English and diverges the moment an accent, an umlaut or a Danish letter appears in a department name. Re-export as UTF-8 if the system offers the choice, or open the file in a text editor and save it as UTF-8. The related symptom is a byte order mark in front of the first header: the column then reads as something other than the name you typed, so that first column matches nothing and is carried in as an unrecognised extra.

Can I keep the other columns from the export?

Yes. Import matches header names, so any column it does not recognise is carried and ignored: you can leave document numbers, quantities and dates in the file without breaking anything. If you want some of that detail visible on the chart rather than just present in it, move it into the Notes column, which holds free text against a step, or the Link column, which points a step at the record it came from. Everything else stays as provenance, which is useful the next time somebody asks where a stage name came from.

Build a process map from your export

The template behind this guide

CSV process map template (order to delivery) — Turn an ERP order export into an end-to-end process map: six stage columns, five lanes, a credit hold, a part-shipment split, a pick discrepancy loop, a delivery claim and an invoice chased until it is paid.

More in Process mapping guides