# Handling a change request (and scope creep)

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

- 16 steps across 2 layers
- Persona: Requester, Project manager, Change control board, The team

## Pain points

Where this process hurts, worst first:

- **Asks for something new in the middle of the project** (Handling a change request (and scope creep); painful): Small requests add up and quietly break the plan

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

## Handling a change request (and scope creep)

Lanes:
- Requester: person / role (id `req`)
- Project manager: person / role (id `pm`)
- Change control board: person / role (id `ccb`)
- The team: person / role (id `team`)

Steps, in the order they run:

1. **Asks for something new in the middle of the project** [start; Requester; id `c1`] ⚠ PAIN POINT (painful): Small requests add up and quietly break the plan
   - then Is it really new, or already in scope?
2. **Is it really new, or already in scope?** [decision; Project manager; id `c2`]
   - if "New" go to Log a change request; if "Already in scope" go to Explain it and carry on
3. **Log a change request** [task; Project manager; id `c3`]
   - then Estimate the effort and the impact on schedule, cost and risk
4. **Estimate the effort and the impact on schedule, cost and risk** [subprocess; The team; id `c4`], opens the detail layer "Impact analysis"
   - then Review the request
5. **Review the request** [task; Change control board; id `c5`]
   - then What is the decision?
6. **What is the decision?** [decision; Change control board; id `c6`]
   - if "Approve" go to Update the scope, the budget and the schedule; if "Decline" go to Decline and tell the requester why; if "Defer" go to Add it to the backlog for later
7. **Update the scope, the budget and the schedule** [task; Project manager; id `c7`]
   - then Do the work
8. **Do the work** [task; The team; id `c10`]
   - then Informed of the decision
9. **Informed of the decision** [end; Requester; id `c11`]
10. **Decline and tell the requester why** [task; Project manager; id `c8`]
   - then Informed of the decision
11. **Add it to the backlog for later** [task; Project manager; id `c9`]
   - then Informed of the decision
12. **Explain it and carry on** [end; Project manager; id `c2a`]

```mermaid
flowchart LR
  subgraph l_req["Requester"]
    n_c1(["Asks for something new in the middle of the project"])
    n_c11(["Informed of the decision"])
  end
  subgraph l_pm["Project manager"]
    n_c2{"Is it really new, or already in scope?"}
    n_c2a(["Explain it and carry on"])
    n_c3["Log a change request"]
    n_c7["Update the scope, the budget and the schedule"]
    n_c8["Decline and tell the requester why"]
    n_c9["Add it to the backlog for later"]
  end
  subgraph l_ccb["Change control board"]
    n_c5["Review the request"]
    n_c6{"What is the decision?"}
  end
  subgraph l_team["The team"]
    n_c4[["Estimate the effort and the impact on schedule, cost and risk"]]
    n_c10["Do the work"]
  end
  n_c1 --> n_c2
  n_c2 -->|"New"| n_c3
  n_c2 -->|"Already in scope"| n_c2a
  n_c3 --> n_c4
  n_c4 --> n_c5
  n_c5 --> n_c6
  n_c6 -->|"Approve"| n_c7
  n_c6 -->|"Decline"| n_c8
  n_c6 -->|"Defer"| n_c9
  n_c7 --> n_c10
  n_c8 --> n_c11
  n_c9 --> n_c11
  n_c10 --> n_c11
```

### Impact analysis (detail of step "Estimate the effort and the impact on schedule, cost and risk")

Lanes:
- The team: person / role (id `team`)
- Project manager: person / role (id `pm`)

Steps, in the order they run:

1. **List the tasks affected** [start; The team; id `i1`]
   - then Estimate the hours
2. **Estimate the hours** [task; The team; id `i2`]
   - then What gets pushed out or dropped?
3. **What gets pushed out or dropped?** [task; Project manager; id `i3`]
   - then Present the options: add time, add money or drop something
4. **Present the options: add time, add money or drop something** [end; Project manager; id `i4`]

```mermaid
flowchart LR
  subgraph l_team["The team"]
    n_i1(["List the tasks affected"])
    n_i2["Estimate the hours"]
  end
  subgraph l_pm["Project manager"]
    n_i3["What gets pushed out or dropped?"]
    n_i4(["Present the options: add time, add money or drop something"])
  end
  n_i1 --> n_i2
  n_i2 --> n_i3
  n_i3 --> n_i4
```

## Full data (JSON)

```json
{
  "title": "Handling a change request (and scope creep)",
  "maps": {
    "m_root": {
      "id": "m_root",
      "lanes": [
        {
          "id": "req",
          "name": "Requester",
          "type": "person"
        },
        {
          "id": "pm",
          "name": "Project manager",
          "type": "person"
        },
        {
          "id": "ccb",
          "name": "Change control board",
          "type": "person"
        },
        {
          "id": "team",
          "name": "The team",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "c1",
          "kind": "start",
          "lane": "req",
          "next": [
            {
              "to": "c2"
            }
          ],
          "pain": {
            "note": "Small requests add up and quietly break the plan",
            "level": 2
          },
          "uses": [],
          "label": "Asks for something new in the middle of the project"
        },
        {
          "id": "c2",
          "kind": "decision",
          "lane": "pm",
          "next": [
            {
              "to": "c3",
              "label": "New"
            },
            {
              "to": "c2a",
              "label": "Already in scope"
            }
          ],
          "uses": [],
          "label": "Is it really new, or already in scope?"
        },
        {
          "id": "c2a",
          "kind": "end",
          "lane": "pm",
          "next": [],
          "uses": [],
          "label": "Explain it and carry on"
        },
        {
          "id": "c3",
          "kind": "task",
          "lane": "pm",
          "next": [
            {
              "to": "c4"
            }
          ],
          "uses": [],
          "label": "Log a change request"
        },
        {
          "id": "c4",
          "kind": "subprocess",
          "lane": "team",
          "next": [
            {
              "to": "c5"
            }
          ],
          "uses": [],
          "child": "m_impact",
          "label": "Estimate the effort and the impact on schedule, cost and risk"
        },
        {
          "id": "c5",
          "kind": "task",
          "lane": "ccb",
          "next": [
            {
              "to": "c6"
            }
          ],
          "uses": [],
          "label": "Review the request"
        },
        {
          "id": "c6",
          "kind": "decision",
          "lane": "ccb",
          "next": [
            {
              "to": "c7",
              "label": "Approve"
            },
            {
              "to": "c8",
              "label": "Decline"
            },
            {
              "to": "c9",
              "label": "Defer"
            }
          ],
          "uses": [],
          "label": "What is the decision?"
        },
        {
          "id": "c7",
          "kind": "task",
          "lane": "pm",
          "next": [
            {
              "to": "c10"
            }
          ],
          "uses": [],
          "label": "Update the scope, the budget and the schedule"
        },
        {
          "id": "c8",
          "kind": "task",
          "lane": "pm",
          "next": [
            {
              "to": "c11"
            }
          ],
          "uses": [],
          "label": "Decline and tell the requester why"
        },
        {
          "id": "c9",
          "kind": "task",
          "lane": "pm",
          "next": [
            {
              "to": "c11"
            }
          ],
          "uses": [],
          "label": "Add it to the backlog for later"
        },
        {
          "id": "c10",
          "kind": "task",
          "lane": "team",
          "next": [
            {
              "to": "c11"
            }
          ],
          "uses": [],
          "label": "Do the work"
        },
        {
          "id": "c11",
          "kind": "end",
          "lane": "req",
          "next": [],
          "uses": [],
          "label": "Informed of the decision"
        }
      ],
      "title": "Handling a change request (and scope creep)",
      "parent": null
    },
    "m_impact": {
      "id": "m_impact",
      "lanes": [
        {
          "id": "team",
          "name": "The team",
          "type": "person"
        },
        {
          "id": "pm",
          "name": "Project manager",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "i1",
          "kind": "start",
          "lane": "team",
          "next": [
            {
              "to": "i2"
            }
          ],
          "uses": [],
          "label": "List the tasks affected"
        },
        {
          "id": "i2",
          "kind": "task",
          "lane": "team",
          "next": [
            {
              "to": "i3"
            }
          ],
          "uses": [],
          "label": "Estimate the hours"
        },
        {
          "id": "i3",
          "kind": "task",
          "lane": "pm",
          "next": [
            {
              "to": "i4"
            }
          ],
          "uses": [],
          "label": "What gets pushed out or dropped?"
        },
        {
          "id": "i4",
          "kind": "end",
          "lane": "pm",
          "next": [],
          "uses": [],
          "label": "Present the options: add time, add money or drop something"
        }
      ],
      "title": "Impact analysis",
      "parent": {
        "map": "m_root",
        "step": "c4"
      }
    }
  }
}
```
