Skip to content

Complete Incident Opening Workflow - Current Stateยค

Date: October 10, 2025 Status: Reference documentation BEFORE P4/P5 modification

๐Ÿ“‹ Overviewยค

The incident opening workflow in FireFighter follows a multi-step process that varies according to the incident priority (P1 to P5).

๐Ÿ” Priority Determination Logicยค

Priority is automatically calculated from selected impacts:

  • P1-P3 โ†’ response_type = "critical" โ†’ Critical incident with dedicated Slack channel
  • P4-P5 โ†’ response_type = "normal" โ†’ Normal incident with only a Jira ticket

Calculation: priority_value < 4 ? "critical" : "normal"


๐Ÿ“Š Complete Workflow by Priorityยค

PART 1: CRITICAL Incidents Workflow (P1/P2/P3)ยค

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ STEP 0: Intro                                               โ”‚
โ”‚ - Welcome message                                           โ”‚
โ”‚ - Warning if recent incidents in the last hour              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ STEP 1: Set Impacts (SelectImpactForm)                     โ”‚
โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€   โ”‚
โ”‚ Dynamic fields for each ImpactType:                        โ”‚
โ”‚  โ€ข Business Impact (HIGH/MEDIUM/LOW/LOWEST/NO)              โ”‚
โ”‚  โ€ข Operational Impact (HIGH/MEDIUM/LOW/LOWEST/NO)           โ”‚
โ”‚  โ€ข Technical Impact (HIGH/MEDIUM/LOW/LOWEST/NO)             โ”‚
โ”‚                                                             โ”‚
โ”‚ โ†’ Auto-calculates priority_value and response_type         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ STEP 2: Priority/SLA Display (Response Type Block)         โ”‚
โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€   โ”‚
โ”‚ Displays (non-editable):                                    โ”‚
โ”‚  โ€ข ๐Ÿ”ด Selected priority: P1/P2/P3 - Description             โ”‚
โ”‚  โ€ข โฑ๏ธ SLA: 15 min / 30 min / 1 hour                        โ”‚
โ”‚  โ€ข :gear: Process: :slack: Slack :jira_new: Jira ticket    โ”‚
โ”‚  โ€ข :pushpin: Selected impacts: [detailed list]             โ”‚
โ”‚  โ€ข :warning: Critical incidents are for emergency only      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ STEP 3: Select Incident Type                               โ”‚
โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€   โ”‚
โ”‚ ๐Ÿ“ "Then, select the type of issue / affected users"       โ”‚
โ”‚                                                             โ”‚
โ”‚ Dropdown with ONLY 1 option:                                โ”‚
โ”‚  โ€ข "Critical" โ†’ OpeningCriticalModal                        โ”‚
โ”‚                                                             โ”‚
โ”‚ โš ๏ธ This step is HIDDEN because len(INCIDENT_TYPES) == 1    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ STEP 4: Set Details (CreateIncidentFormSlack)              โ”‚
โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€   โ”‚
โ”‚ OpeningCriticalModal form:                                  โ”‚
โ”‚  โ€ข title (CharField, 10-128 chars)                          โ”‚
โ”‚  โ€ข description (TextField, 10-1200 chars)                   โ”‚
โ”‚  โ€ข incident_category (GroupedModelChoiceField)              โ”‚
โ”‚  โ€ข environment (ModelChoiceField)                           โ”‚
โ”‚  โ€ข priority (HiddenInput - already determined)              โ”‚
โ”‚                                                             โ”‚
โ”‚ โœ… NO "suggested_team_routing" field                        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ STEP 5: Review & Submit                                    โ”‚
โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€   โ”‚
โ”‚ Displays:                                                   โ”‚
โ”‚  โ€ข :slack: Dedicated Slack channel will be created          โ”‚
โ”‚  โ€ข ~X responders will be invited                            โ”‚
โ”‚  โ€ข :jira_new: Associated Jira ticket will be created        โ”‚
โ”‚  โ€ข :pagerduty: (if outside office hours)                    โ”‚
โ”‚                                                             โ”‚
โ”‚ Button: "Create the incident"                               โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
                    [INCIDENT CREATED]
                            โ†“
              [Slack Channel + Jira Ticket + PagerDuty]

PART 2: NORMAL Incidents Workflow (P4/P5) - RAID MODULEยค

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ STEP 0: Intro                                               โ”‚
โ”‚ - Welcome message                                           โ”‚
โ”‚ - Warning if recent incidents in the last hour              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ STEP 1: Set Impacts (SelectImpactForm)                     โ”‚
โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€   โ”‚
โ”‚ Dynamic fields for each ImpactType:                        โ”‚
โ”‚  โ€ข Business Impact (HIGH/MEDIUM/LOW/LOWEST/NO)              โ”‚
โ”‚  โ€ข Operational Impact (HIGH/MEDIUM/LOW/LOWEST/NO)           โ”‚
โ”‚  โ€ข Technical Impact (HIGH/MEDIUM/LOW/LOWEST/NO)             โ”‚
โ”‚                                                             โ”‚
โ”‚ โ†’ Auto-calculates priority_value=4 or 5 and response_type="normal" โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ STEP 2: Priority/SLA Display (Response Type Block)         โ”‚
โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€   โ”‚
โ”‚ Displays (non-editable):                                    โ”‚
โ”‚  โ€ข ๐ŸŸก/๐ŸŸข Selected priority: P4/P5 - Description             โ”‚
โ”‚  โ€ข โฑ๏ธ SLA: 2 days / 5 days                                 โ”‚
โ”‚  โ€ข :gear: Process: :jira_new: Jira ticket                  โ”‚
โ”‚  โ€ข :pushpin: Selected impacts: [detailed list]             โ”‚
โ”‚  โ€ข (NO "critical incidents" warning)                        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ STEP 3: Select Incident Type โš ๏ธ IMPORTANT STEP             โ”‚
โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€   โ”‚
โ”‚ ๐Ÿ“ "Then, select the type of issue / affected users"       โ”‚
โ”‚                                                             โ”‚
โ”‚ Dropdown with 5 OPTIONS (defined in raid/apps.py):         โ”‚
โ”‚  โ€ข "Customer"              โ†’ OpeningRaidCustomerModal       โ”‚
โ”‚  โ€ข "Seller"                โ†’ OpeningRaidSellerModal         โ”‚
โ”‚  โ€ข "Internal"              โ†’ OpeningRaidInternalModal       โ”‚
โ”‚  โ€ข "Documentation request" โ†’ OpeningRaidDocumentationModal  โ”‚
โ”‚  โ€ข "Feature request"       โ†’ OpeningRaidFeatureRequestModal โ”‚
โ”‚                                                             โ”‚
โ”‚ โœ… This step is VISIBLE because len(INCIDENT_TYPES) > 1    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
           โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
           โ†“                                  โ†“
    [CUSTOMER/SELLER/INTERNAL]     [DOCUMENTATION/FEATURE REQUEST]
           โ†“                                  โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ STEP 4a: Set Details        โ”‚   โ”‚ STEP 4b: Set Details        โ”‚
โ”‚ (CreateNormal...FormSlack)  โ”‚   โ”‚ (CreateRaid...FormSlack)    โ”‚
โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚   โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚
โ”‚ COMMON Fields:              โ”‚   โ”‚ COMMON Fields:              โ”‚
โ”‚ โ€ข incident_category         โ”‚   โ”‚ โ€ข incident_category         โ”‚
โ”‚ โ€ข platform (FR/DE/IT/ES/UK) โ”‚   โ”‚ โ€ข platform (FR/DE/IT/ES/UK) โ”‚
โ”‚ โ€ข title (10-128 chars)      โ”‚   โ”‚ โ€ข title (10-128 chars)      โ”‚
โ”‚ โ€ข description (10-1200)     โ”‚   โ”‚ โ€ข description (10-1200)     โ”‚
โ”‚ โ€ข suggested_team_routing โœ… โ”‚   โ”‚ โ€ข suggested_team_routing โœ… โ”‚
โ”‚ โ€ข priority (HiddenInput)    โ”‚   โ”‚ โ€ข priority (HiddenInput)    โ”‚
โ”‚                             โ”‚   โ”‚                             โ”‚
โ”‚ SPECIFIC Fields:            โ”‚   โ”‚ (No specific fields)        โ”‚
โ”‚ [If CUSTOMER]               โ”‚   โ”‚                             โ”‚
โ”‚ โ€ข zendesk_ticket_id         โ”‚   โ”‚                             โ”‚
โ”‚                             โ”‚   โ”‚                             โ”‚
โ”‚ [If SELLER]                 โ”‚   โ”‚                             โ”‚
โ”‚ โ€ข seller_contract_id        โ”‚   โ”‚                             โ”‚
โ”‚ โ€ข is_key_account (bool)     โ”‚   โ”‚                             โ”‚
โ”‚ โ€ข is_seller_in_golden_list  โ”‚   โ”‚                             โ”‚
โ”‚ โ€ข zoho_desk_ticket_id       โ”‚   โ”‚                             โ”‚
โ”‚                             โ”‚   โ”‚                             โ”‚
โ”‚ [If INTERNAL]               โ”‚   โ”‚                             โ”‚
โ”‚ (no additional fields)      โ”‚   โ”‚                             โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ†“                                  โ†“
           โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ STEP 5: Review & Submit                                    โ”‚
โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€   โ”‚
โ”‚ Displays:                                                   โ”‚
โ”‚  โ€ข :jira_new: A Jira ticket will be created                 โ”‚
โ”‚  โ€ข (NO mention of Slack channel)                            โ”‚
โ”‚  โ€ข (NO mention of PagerDuty)                                โ”‚
โ”‚                                                             โ”‚
โ”‚ Button: "Create the incident"                               โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
                    [JIRA TICKET CREATED]
                            โ†“
                  [Ticket in the feature team board]

๐ŸŽฏ Summary of Key Differencesยค

Aspect P1/P2/P3 (Critical) P4/P5 (Normal/RAID)
Process Slack + Jira + PagerDuty Jira only
STEP 3: Select Type HIDDEN (only 1 option) VISIBLE (5 options)
Feature Team โŒ NOT present โœ… PRESENT in all forms
Details Form CreateIncidentFormSlack CreateNormal...FormSlack (5 variants)
Specific Fields None zendesk_ticket_id, seller_contract_id, etc.
Jira Destination Critical incident ticket Feature team board ticket

๐Ÿ“Œ suggested_team_routing Fieldยค

Definitionยค

# File: src/firefighter/raid/forms.py, line 82-86
suggested_team_routing = forms.ModelChoiceField(
    queryset=FeatureTeam.objects.only("name").order_by("name"),
    label="Feature Team or Train",
    required=True,
)

Field Presenceยค

Incident Type Present in form?
P1/P2/P3 (Critical) โŒ NO
P4/P5 - Customer โœ… YES
P4/P5 - Seller โœ… YES
P4/P5 - Internal โœ… YES
P4/P5 - Documentation โœ… YES
P4/P5 - Feature Request โœ… YES

Usageยค

The suggested_team_routing field is used to: 1. Route the Jira ticket to the correct team board 2. Automatically assign the ticket to the responsible team 3. Notify the concerned team members


๐Ÿ”ง Source Code Referencesยค

1. Response Type Determinationยค

File: src/firefighter/slack/views/modals/open.py:437-439

# Default fallback: P1/P2/P3 = critical, P4/P5 = normal
response_type = cast("ResponseType", "critical" if priority_value < 4 else "normal")
open_incident_context["response_type"] = response_type

2. Incident Types Configurationยค

File: src/firefighter/slack/views/modals/open.py:52-65

INCIDENT_TYPES: dict[ResponseType, dict[str, dict[str, Any]]] = {
    "critical": {
        "critical": {
            "label": "Critical",
            "slack_form": OpeningCriticalModal,
        },
    },
    "normal": {
        "normal": {
            "label": "Normal",
            "slack_form": OpeningCriticalModal,  # Overridden by RAID
        },
    },
}

File: src/firefighter/raid/apps.py:32-53 (OVERRIDE at startup)

INCIDENT_TYPES["normal"] = {
    "CUSTOMER": {
        "label": "Customer",
        "slack_form": OpeningRaidCustomerModal,
    },
    "SELLER": {
        "label": "Seller",
        "slack_form": OpeningRaidSellerModal,
    },
    "INTERNAL": {
        "label": "Internal",
        "slack_form": OpeningRaidInternalModal,
    },
    "DOCUMENTATION_REQUEST": {
        "label": "Documentation request",
        "slack_form": OpeningRaidDocumentationRequestModal,
    },
    "FEATURE_REQUEST": {
        "label": "Feature request",
        "slack_form": OpeningRaidFeatureRequestModal,
    },
}

3. STEP 3 Display Logicยค

File: src/firefighter/slack/views/modals/open.py:258-290

@staticmethod
def get_select_incident_type_blocks(
    open_incident_context: OpeningData,
    incident_type_value: str | None,
) -> list[Block]:
    response_type = open_incident_context.get("response_type")
    if (
        response_type is None
        or response_type not in INCIDENT_TYPES
        or len(INCIDENT_TYPES[response_type]) == 1  # โ† HIDE if only 1 option
    ):
        return []
    # ... displays dropdown with options


๐ŸŽฏ Conclusionยค

The current workflow works as follows:

  1. For P1/P2/P3: Simplified workflow with 4 steps (intro, impacts, priority display, details)

    • No type selection (automatically hidden)
    • No feature team field
    • Creates Slack channel + Jira ticket
  2. For P4/P5: Complete workflow with 5 steps (intro, impacts, priority display, type selection, details)

    • Mandatory incident type selection (Customer/Seller/Internal/Doc/Feature)
    • Feature team field present in ALL forms
    • Creates only a Jira ticket in the team board

Current blocker: STEP 3 "Select type" is NECESSARY for P4/P5 because it determines which form to display (Customer vs Seller vs Internal, etc.), each having different specific fields.