# Handle a support ticket

> A process map exported from forks.world (https://forks.world). Author: Brian. Source: https://forks.world/p/cmv0iea2c003ljw062jmkj015
> 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

- 22 steps across 2 layers
- Persona: Customer, Support agent, Tier 2 engineer
- Technology / systems: Helpdesk system, Knowledge base

## Pain points

Where this process hurts, worst first:

- **Gather logs, steps and screenshots** (Handle a support ticket; critical): Agents re-ask for logs and screenshots the customer already sent
- **Reopen, and update the customer every few hours** (Handle a support ticket; painful): Customers are told "still working on it" with no real update

## 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`.

## Handle a support ticket

Lanes:
- Customer: person / role (id `cust`)
- Support agent: person / role (id `agent`)
- Tier 2 engineer: person / role (id `eng`)
- Helpdesk system: technology / system (id `desk`)
- Knowledge base: technology / system (id `kb`)

Steps, in the order they run:

1. **Reports a problem** [start; Customer; id `t1`]
   - then Ticket created and categorized
2. **Ticket created and categorized** [task; Helpdesk system; id `t2`]
   - then Is the customer completely down?
3. **Is the customer completely down?** [decision; Support agent; id `t3`]
   - if "Yes — urgent" go to Drop everything and work it now; if "No" go to Queue it with a response-time clock
4. **Drop everything and work it now** [task; Support agent; id `t4`]
   - then Search the knowledge base for a known fix
5. **Search the knowledge base for a known fix** [task; Support agent; id `t6`], using Knowledge base
   - then Found a fix?
6. **Found a fix?** [decision; Support agent; id `t7`]
   - if "Yes" go to Walk the customer through it; if "No" go to Gather logs, steps and screenshots
7. **Walk the customer through it** [task; Support agent; id `t8`]
   - then Is it resolved?
8. **Is it resolved?** [decision; Customer; id `t10`]
   - if "Yes" go to Close the ticket and send a satisfaction survey; if "No" go to Reopen, and update the customer every few hours
9. **Close the ticket and send a satisfaction survey** [task; Helpdesk system; id `t11`]
   - then Add or improve the knowledge base article
10. **Add or improve the knowledge base article** [end; Support agent; id `t13`]
11. **Reopen, and update the customer every few hours** [task; Support agent; id `t12`] ⚠ PAIN POINT (painful): Customers are told "still working on it" with no real update
   - then Search the knowledge base for a known fix
12. **Gather logs, steps and screenshots** [task; Support agent; id `t9`] ⚠ PAIN POINT (critical): Agents re-ask for logs and screenshots the customer already sent
   - then Escalate to tier 2
13. **Escalate to tier 2** [subprocess; Tier 2 engineer; id `t9b`], opens the detail layer "Tier 2 investigation"
   - then Is it resolved?
14. **Queue it with a response-time clock** [task; Support agent; id `t5`]
   - then Search the knowledge base for a known fix

```mermaid
flowchart LR
  subgraph l_cust["Customer"]
    n_t1(["Reports a problem"])
    n_t10{"Is it resolved?"}
  end
  subgraph l_agent["Support agent"]
    n_t3{"Is the customer completely down?"}
    n_t4["Drop everything and work it now"]
    n_t5["Queue it with a response-time clock"]
    n_t6["Search the knowledge base for a known fix"]
    n_t7{"Found a fix?"}
    n_t8["Walk the customer through it"]
    n_t9["Gather logs, steps and screenshots"]
    n_t12["Reopen, and update the customer every few hours"]
    n_t13(["Add or improve the knowledge base article"])
  end
  subgraph l_eng["Tier 2 engineer"]
    n_t9b[["Escalate to tier 2"]]
  end
  subgraph l_desk["Helpdesk system"]
    n_t2["Ticket created and categorized"]
    n_t11["Close the ticket and send a satisfaction survey"]
  end
  n_t1 --> n_t2
  n_t2 --> n_t3
  n_t3 -->|"Yes — urgent"| n_t4
  n_t3 -->|"No"| n_t5
  n_t4 --> n_t6
  n_t5 --> n_t6
  n_t6 --> n_t7
  n_t7 -->|"Yes"| n_t8
  n_t7 -->|"No"| n_t9
  n_t8 --> n_t10
  n_t9 --> n_t9b
  n_t9b --> n_t10
  n_t10 -->|"Yes"| n_t11
  n_t10 -->|"No"| n_t12
  n_t12 --> n_t6
  n_t11 --> n_t13
```

### Tier 2 investigation (detail of step "Escalate to tier 2")

Lanes:
- Tier 2 engineer: person / role (id `eng`)
- Support agent: person / role (id `agent`)

Steps, in the order they run:

1. **Reproduce the problem** [start; Tier 2 engineer; id `e1`]
   - then Can it be reproduced?
2. **Can it be reproduced?** [decision; Tier 2 engineer; id `e2`]
   - if "Yes" go to Find the root cause; if "No" go to Ask the customer for more detail
3. **Find the root cause** [task; Tier 2 engineer; id `e3`]
   - then Is it a bug in the product?
4. **Is it a bug in the product?** [decision; Tier 2 engineer; id `e4`]
   - if "Yes" go to File a bug and give a workaround; if "No" go to Fix the configuration or advise the customer
5. **File a bug and give a workaround** [task; Tier 2 engineer; id `e5`]
   - then Update the customer
6. **Update the customer** [end; Support agent; id `e7`]
7. **Fix the configuration or advise the customer** [task; Tier 2 engineer; id `e6`]
   - then Update the customer
8. **Ask the customer for more detail** [task; Support agent; id `e2a`]
   - then Reproduce the problem

```mermaid
flowchart LR
  subgraph l_eng["Tier 2 engineer"]
    n_e1(["Reproduce the problem"])
    n_e2{"Can it be reproduced?"}
    n_e3["Find the root cause"]
    n_e4{"Is it a bug in the product?"}
    n_e5["File a bug and give a workaround"]
    n_e6["Fix the configuration or advise the customer"]
  end
  subgraph l_agent["Support agent"]
    n_e2a["Ask the customer for more detail"]
    n_e7(["Update the customer"])
  end
  n_e1 --> n_e2
  n_e2 -->|"Yes"| n_e3
  n_e2 -->|"No"| n_e2a
  n_e2a --> n_e1
  n_e3 --> n_e4
  n_e4 -->|"Yes"| n_e5
  n_e4 -->|"No"| n_e6
  n_e5 --> n_e7
  n_e6 --> n_e7
```

## Full data (JSON)

```json
{
  "title": "Handle a support ticket",
  "maps": {
    "m_root": {
      "id": "m_root",
      "lanes": [
        {
          "id": "cust",
          "name": "Customer",
          "type": "person"
        },
        {
          "id": "agent",
          "name": "Support agent",
          "type": "person"
        },
        {
          "id": "eng",
          "name": "Tier 2 engineer",
          "type": "person"
        },
        {
          "id": "desk",
          "name": "Helpdesk system",
          "type": "system"
        },
        {
          "id": "kb",
          "name": "Knowledge base",
          "type": "system"
        }
      ],
      "steps": [
        {
          "id": "t1",
          "kind": "start",
          "lane": "cust",
          "next": [
            {
              "to": "t2"
            }
          ],
          "uses": [],
          "label": "Reports a problem"
        },
        {
          "id": "t2",
          "kind": "task",
          "lane": "desk",
          "next": [
            {
              "to": "t3"
            }
          ],
          "uses": [],
          "label": "Ticket created and categorized"
        },
        {
          "id": "t3",
          "kind": "decision",
          "lane": "agent",
          "next": [
            {
              "to": "t4",
              "label": "Yes — urgent"
            },
            {
              "to": "t5",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Is the customer completely down?"
        },
        {
          "id": "t4",
          "kind": "task",
          "lane": "agent",
          "next": [
            {
              "to": "t6"
            }
          ],
          "uses": [],
          "label": "Drop everything and work it now"
        },
        {
          "id": "t5",
          "kind": "task",
          "lane": "agent",
          "next": [
            {
              "to": "t6"
            }
          ],
          "uses": [],
          "label": "Queue it with a response-time clock"
        },
        {
          "id": "t6",
          "kind": "task",
          "lane": "agent",
          "next": [
            {
              "to": "t7"
            }
          ],
          "uses": [
            "kb"
          ],
          "label": "Search the knowledge base for a known fix"
        },
        {
          "id": "t7",
          "kind": "decision",
          "lane": "agent",
          "next": [
            {
              "to": "t8",
              "label": "Yes"
            },
            {
              "to": "t9",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Found a fix?"
        },
        {
          "id": "t8",
          "kind": "task",
          "lane": "agent",
          "next": [
            {
              "to": "t10"
            }
          ],
          "uses": [],
          "label": "Walk the customer through it"
        },
        {
          "id": "t9",
          "kind": "task",
          "lane": "agent",
          "next": [
            {
              "to": "t9b"
            }
          ],
          "pain": {
            "note": "Agents re-ask for logs and screenshots the customer already sent",
            "level": 3
          },
          "uses": [],
          "label": "Gather logs, steps and screenshots"
        },
        {
          "id": "t9b",
          "kind": "subprocess",
          "lane": "eng",
          "next": [
            {
              "to": "t10"
            }
          ],
          "uses": [],
          "child": "m_escalate",
          "label": "Escalate to tier 2"
        },
        {
          "id": "t10",
          "kind": "decision",
          "lane": "cust",
          "next": [
            {
              "to": "t11",
              "label": "Yes"
            },
            {
              "to": "t12",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Is it resolved?"
        },
        {
          "id": "t12",
          "kind": "task",
          "lane": "agent",
          "next": [
            {
              "to": "t6"
            }
          ],
          "pain": {
            "note": "Customers are told \"still working on it\" with no real update",
            "level": 2
          },
          "uses": [],
          "label": "Reopen, and update the customer every few hours"
        },
        {
          "id": "t11",
          "kind": "task",
          "lane": "desk",
          "next": [
            {
              "to": "t13"
            }
          ],
          "uses": [],
          "label": "Close the ticket and send a satisfaction survey"
        },
        {
          "id": "t13",
          "kind": "end",
          "lane": "agent",
          "next": [],
          "uses": [],
          "label": "Add or improve the knowledge base article"
        }
      ],
      "title": "Handle a support ticket",
      "parent": null
    },
    "m_escalate": {
      "id": "m_escalate",
      "lanes": [
        {
          "id": "eng",
          "name": "Tier 2 engineer",
          "type": "person"
        },
        {
          "id": "agent",
          "name": "Support agent",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "e1",
          "kind": "start",
          "lane": "eng",
          "next": [
            {
              "to": "e2"
            }
          ],
          "uses": [],
          "label": "Reproduce the problem"
        },
        {
          "id": "e2",
          "kind": "decision",
          "lane": "eng",
          "next": [
            {
              "to": "e3",
              "label": "Yes"
            },
            {
              "to": "e2a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Can it be reproduced?"
        },
        {
          "id": "e2a",
          "kind": "task",
          "lane": "agent",
          "next": [
            {
              "to": "e1"
            }
          ],
          "uses": [],
          "label": "Ask the customer for more detail"
        },
        {
          "id": "e3",
          "kind": "task",
          "lane": "eng",
          "next": [
            {
              "to": "e4"
            }
          ],
          "uses": [],
          "label": "Find the root cause"
        },
        {
          "id": "e4",
          "kind": "decision",
          "lane": "eng",
          "next": [
            {
              "to": "e5",
              "label": "Yes"
            },
            {
              "to": "e6",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Is it a bug in the product?"
        },
        {
          "id": "e5",
          "kind": "task",
          "lane": "eng",
          "next": [
            {
              "to": "e7"
            }
          ],
          "uses": [],
          "label": "File a bug and give a workaround"
        },
        {
          "id": "e6",
          "kind": "task",
          "lane": "eng",
          "next": [
            {
              "to": "e7"
            }
          ],
          "uses": [],
          "label": "Fix the configuration or advise the customer"
        },
        {
          "id": "e7",
          "kind": "end",
          "lane": "agent",
          "next": [],
          "uses": [],
          "label": "Update the customer"
        }
      ],
      "title": "Tier 2 investigation",
      "parent": {
        "map": "m_root",
        "step": "t9b"
      }
    }
  }
}
```
