# Book the order

> A process map exported from forks.world (https://forks.world). Author: Brian. Source: https://forks.world/p/cmv0ie85m0031jw06skkzz6vc
> It describes who does what, in what order, and with which technology. Read the plain-language sections first; the JSON at the end is the exact, complete data.

## Summary

- 13 steps across 1 layer
- Persona: Sales rep, Sales operations, Warehouse, Customer
- Technology / systems: ERP system

## Pain points

Where this process hurts, worst first:

- **Clarify with the customer and fix the order** (Book the order; painful): Order details are re-typed from the quote, so mistakes creep in
- **Ask for prepayment or a deposit** (Book the order; annoying): A prepayment request surprises the customer

## How to read this file

- A process is made of **layers**. The main layer is the top level; any step of kind `subprocess` opens a detail layer with its own lanes and steps.
- **Lanes** are either persona (people/roles) or technology (systems). Each step belongs to one lane; `using` lists tools a person uses for that step.
- Step kinds: `start`, `task`, `decision` (its arrows carry the answer as a label), `subprocess`, `end`.

## Book the order

Lanes:
- Sales rep: person / role (id `rep`)
- Sales operations: person / role (id `ops`)
- ERP system: technology / system (id `erp`)
- Warehouse: person / role (id `wh`)
- Customer: person / role (id `cust`)

Steps, in the order they run:

1. **Closed-won deal handed to operations** [start; Sales rep; id `o1`]
   - then Create the sales order from the signed quote
2. **Create the sales order from the signed quote** [task; Sales operations; id `o2`], using ERP system
   - then Check customer, pricing, tax and ship-to
3. **Check customer, pricing, tax and ship-to** [task; Sales operations; id `o3`]
   - then Does everything match the contract?
4. **Does everything match the contract?** [decision; Sales operations; id `o4`]
   - if "Yes" go to Run the credit check; if "No" go to Clarify with the customer and fix the order
5. **Run the credit check** [task; ERP system; id `o5`]
   - then Credit approved?
6. **Credit approved?** [decision; ERP system; id `o6`]
   - if "Yes" go to Is the inventory available?; if "No" go to Ask for prepayment or a deposit
7. **Is the inventory available?** [decision; Warehouse; id `o7`]
   - if "Yes" go to Pick, pack and schedule shipping; if "No" go to Backorder and give the customer a firm date
8. **Pick, pack and schedule shipping** [task; Warehouse; id `o8`]
   - then Order confirmation sent
9. **Order confirmation sent** [end; Customer; id `o9`]
10. **Backorder and give the customer a firm date** [task; Sales operations; id `o7a`]
   - then Pick, pack and schedule shipping
11. **Ask for prepayment or a deposit** [task; Sales operations; id `o6a`] ⚠ PAIN POINT (annoying): A prepayment request surprises the customer
   - then Pays
12. **Pays** [task; Customer; id `o6b`]
   - then Is the inventory available?
13. **Clarify with the customer and fix the order** [task; Sales rep; id `o3a`] ⚠ PAIN POINT (painful): Order details are re-typed from the quote, so mistakes creep in
   - then Check customer, pricing, tax and ship-to

```mermaid
flowchart LR
  subgraph l_rep["Sales rep"]
    n_o1(["Closed-won deal handed to operations"])
    n_o3a["Clarify with the customer and fix the order"]
  end
  subgraph l_ops["Sales operations"]
    n_o2["Create the sales order from the signed quote"]
    n_o3["Check customer, pricing, tax and ship-to"]
    n_o4{"Does everything match the contract?"}
    n_o6a["Ask for prepayment or a deposit"]
    n_o7a["Backorder and give the customer a firm date"]
  end
  subgraph l_erp["ERP system"]
    n_o5["Run the credit check"]
    n_o6{"Credit approved?"}
  end
  subgraph l_wh["Warehouse"]
    n_o7{"Is the inventory available?"}
    n_o8["Pick, pack and schedule shipping"]
  end
  subgraph l_cust["Customer"]
    n_o6b["Pays"]
    n_o9(["Order confirmation sent"])
  end
  n_o1 --> n_o2
  n_o2 --> n_o3
  n_o3 --> n_o4
  n_o4 -->|"Yes"| n_o5
  n_o4 -->|"No"| n_o3a
  n_o3a --> n_o3
  n_o5 --> n_o6
  n_o6 -->|"Yes"| n_o7
  n_o6 -->|"No"| n_o6a
  n_o6a --> n_o6b
  n_o6b --> n_o7
  n_o7 -->|"Yes"| n_o8
  n_o7 -->|"No"| n_o7a
  n_o7a --> n_o8
  n_o8 --> n_o9
```

## Full data (JSON)

```json
{
  "title": "Book the order",
  "maps": {
    "m_root": {
      "id": "m_root",
      "lanes": [
        {
          "id": "rep",
          "name": "Sales rep",
          "type": "person"
        },
        {
          "id": "ops",
          "name": "Sales operations",
          "type": "person"
        },
        {
          "id": "erp",
          "name": "ERP system",
          "type": "system"
        },
        {
          "id": "wh",
          "name": "Warehouse",
          "type": "person"
        },
        {
          "id": "cust",
          "name": "Customer",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "o1",
          "kind": "start",
          "lane": "rep",
          "next": [
            {
              "to": "o2"
            }
          ],
          "uses": [],
          "label": "Closed-won deal handed to operations"
        },
        {
          "id": "o2",
          "kind": "task",
          "lane": "ops",
          "next": [
            {
              "to": "o3"
            }
          ],
          "uses": [
            "erp"
          ],
          "label": "Create the sales order from the signed quote"
        },
        {
          "id": "o3",
          "kind": "task",
          "lane": "ops",
          "next": [
            {
              "to": "o4"
            }
          ],
          "uses": [],
          "label": "Check customer, pricing, tax and ship-to"
        },
        {
          "id": "o4",
          "kind": "decision",
          "lane": "ops",
          "next": [
            {
              "to": "o5",
              "label": "Yes"
            },
            {
              "to": "o3a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Does everything match the contract?"
        },
        {
          "id": "o3a",
          "kind": "task",
          "lane": "rep",
          "next": [
            {
              "to": "o3"
            }
          ],
          "pain": {
            "note": "Order details are re-typed from the quote, so mistakes creep in",
            "level": 2
          },
          "uses": [],
          "label": "Clarify with the customer and fix the order"
        },
        {
          "id": "o5",
          "kind": "task",
          "lane": "erp",
          "next": [
            {
              "to": "o6"
            }
          ],
          "uses": [],
          "label": "Run the credit check"
        },
        {
          "id": "o6",
          "kind": "decision",
          "lane": "erp",
          "next": [
            {
              "to": "o7",
              "label": "Yes"
            },
            {
              "to": "o6a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Credit approved?"
        },
        {
          "id": "o6a",
          "kind": "task",
          "lane": "ops",
          "next": [
            {
              "to": "o6b"
            }
          ],
          "pain": {
            "note": "A prepayment request surprises the customer",
            "level": 1
          },
          "uses": [],
          "label": "Ask for prepayment or a deposit"
        },
        {
          "id": "o6b",
          "kind": "task",
          "lane": "cust",
          "next": [
            {
              "to": "o7"
            }
          ],
          "uses": [],
          "label": "Pays"
        },
        {
          "id": "o7",
          "kind": "decision",
          "lane": "wh",
          "next": [
            {
              "to": "o8",
              "label": "Yes"
            },
            {
              "to": "o7a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Is the inventory available?"
        },
        {
          "id": "o7a",
          "kind": "task",
          "lane": "ops",
          "next": [
            {
              "to": "o8"
            }
          ],
          "uses": [],
          "label": "Backorder and give the customer a firm date"
        },
        {
          "id": "o8",
          "kind": "task",
          "lane": "wh",
          "next": [
            {
              "to": "o9"
            }
          ],
          "uses": [],
          "label": "Pick, pack and schedule shipping"
        },
        {
          "id": "o9",
          "kind": "end",
          "lane": "cust",
          "next": [],
          "uses": [],
          "label": "Order confirmation sent"
        }
      ],
      "title": "Book the order",
      "parent": null
    }
  }
}
```
