TL;DR
- Build a dual-sourcing strategy around a named disruption and mapped dependencies, since NIST MEP recommends tracing supplier activities, subtiers, alternative sites, and recovery time.
- Compare qualification cash and recurring burden with time-phased unmet demand under single-plus-buffer, active-dual, and standby models.
- Never assume two supplier names remove shared material, processing, tooling, logistics, ownership, site, country, or approval dependencies.
- Set allocation from demand, minimum runs, price tiers, release cadence, capacity evidence, and the proof needed to keep each source usable.
Build the business case before splitting volume
Dual sourcing is justified only when the buyer can name the exposure it addresses and the cost of maintaining usable alternative capacity. Begin with one controlled item, one revision, and one decision owner.
Compare three operating models
| Operating model | Cost basis | Protection claim |
|---|---|---|
| Single plus buffer | Incumbent purchases, setup, logistics, and buyer-approved inventory carrying cost | Inventory and usable pipeline cover demand while the incumbent recovers |
| Active dual | Purchases at each price tier, setup by release, logistics, inventory, oversight, and keep-warm work | Both sources provide accepted output under a planned allocation |
| Qualified standby | Qualification cash plus recurring evidence, asset, commercial, and activation-readiness cost | The second source starts accepted output after its actual restart and release lags |
Operating model
Single plus buffer
- Cost basis
- Incumbent purchases, setup, logistics, and buyer-approved inventory carrying cost
- Protection claim
- Inventory and usable pipeline cover demand while the incumbent recovers
Operating model
Active dual
- Cost basis
- Purchases at each price tier, setup by release, logistics, inventory, oversight, and keep-warm work
- Protection claim
- Both sources provide accepted output under a planned allocation
Operating model
Qualified standby
- Cost basis
- Qualification cash plus recurring evidence, asset, commercial, and activation-readiness cost
- Protection claim
- The second source starts accepted output after its actual restart and release lags
Keep the cash views separate
| Cash view | Include | Decision use |
|---|---|---|
| Qualification cash | Buyer time, audit, samples, validation, duplicate assets, test equipment, data preparation, and approvals | Shows the one-time funding needed before the source can support the strategy |
| Optional amortized view | One-time qualification cash divided by a buyer-approved planning horizon | Supports planning while keeping the full cash requirement visible |
| Recurring operating cash | Price tiers, MOQ and setup effects, logistics, inventory, administration, quality work, and keep-warm evidence | Shows the annual burden of the chosen operating model |
| Scenario exposure | Time-phased unmet demand multiplied by a buyer-approved consequence per unit | Compares operating models without inventing a probability |
Cash view
Qualification cash
- Include
- Buyer time, audit, samples, validation, duplicate assets, test equipment, data preparation, and approvals
- Decision use
- Shows the one-time funding needed before the source can support the strategy
Cash view
Optional amortized view
- Include
- One-time qualification cash divided by a buyer-approved planning horizon
- Decision use
- Supports planning while keeping the full cash requirement visible
Cash view
Recurring operating cash
- Include
- Price tiers, MOQ and setup effects, logistics, inventory, administration, quality work, and keep-warm evidence
- Decision use
- Shows the annual burden of the chosen operating model
Cash view
Scenario exposure
- Include
- Time-phased unmet demand multiplied by a buyer-approved consequence per unit
- Decision use
- Compares operating models without inventing a probability
The Ready.gov Business Impact Analysis worksheet separates interruption timing and duration from operational and financial effects. Apply that discipline to each scenario. Do not multiply an unsupported probability by a dramatic loss and call the result a forecast.
Peer-reviewed disruption research also compares inventory, reliable sourcing, and contingent rerouting under explicit assumptions. Tomlin's 2006 Management Science study shows why mitigation choice depends on disruption behavior, capacity, and source flexibility. It does not provide a probability or policy for this buyer.
Test whether the two sources are independent
A second source earns disruption credit only for dependencies that are independent and evidenced. Mark every relevant node Independent, Shared, or Unknown. Any blank or other status is invalid. Independent and Shared both require named dependencies for each source, a current evidence reference, and an evidence date. Treat Unknown as unresolved.
The NIST MEP supply-chain mapping method includes critical parts, geographic concentration, Tier 2 and Tier 3 relationships, routings, and transport modes. Use that logic in the dependency tab.
Academic models reach the same structural warning through a narrower lens. Ang, Iancu, and Swinney model how shared Tier 2 suppliers change the value of direct multisourcing. Their results are model-specific, but the practical question is durable: do the two Tier 1 routes converge upstream?
| Dependency | Question | Evidence to retain |
|---|---|---|
| Parent and ownership | Are apparently separate suppliers controlled or financed through the same group? | Legal entities, ownership evidence, and buyer financial review |
| Site and country | Do the sites share a campus, utility, equipment pool, labor market, or country-level exposure? | Exact sites, critical resources, backup arrangements, and scenario map |
| Material and subtier | Do both routes depend on the same producer, grade, mill, component, or special processor? | Named providers, approval status, capacity basis, and alternatives |
| Tools, gauges, and software | Can each source use serviceable controlled assets without waiting for transfer or access? | Identity, location, ownership, condition, maintenance, spares, versions, and rights |
| Logistics | Do both lanes converge at the same port, corridor, carrier, consolidator, border, or warehouse? | Route map, alternates, booking terms, transit basis, and capacity evidence |
| Technical rights and approval | Can the buyer provide and approve the data, process, tooling, software, test method, and change package for both? | Rights record, controlled package, approval path, and transfer conditions |
Dependency
Parent and ownership
- Question
- Are apparently separate suppliers controlled or financed through the same group?
- Evidence to retain
- Legal entities, ownership evidence, and buyer financial review
Dependency
Site and country
- Question
- Do the sites share a campus, utility, equipment pool, labor market, or country-level exposure?
- Evidence to retain
- Exact sites, critical resources, backup arrangements, and scenario map
Dependency
Material and subtier
- Question
- Do both routes depend on the same producer, grade, mill, component, or special processor?
- Evidence to retain
- Named providers, approval status, capacity basis, and alternatives
Dependency
Tools, gauges, and software
- Question
- Can each source use serviceable controlled assets without waiting for transfer or access?
- Evidence to retain
- Identity, location, ownership, condition, maintenance, spares, versions, and rights
Dependency
Logistics
- Question
- Do both lanes converge at the same port, corridor, carrier, consolidator, border, or warehouse?
- Evidence to retain
- Route map, alternates, booking terms, transit basis, and capacity evidence
Dependency
Technical rights and approval
- Question
- Can the buyer provide and approve the data, process, tooling, software, test method, and change package for both?
- Evidence to retain
- Rights record, controlled package, approval path, and transfer conditions
GAO found that limited visibility into materials and parts suppliers constrained dependency analysis in a large public acquisition system. The GAO-25-107283 finding is a useful visibility warning, not a private purchasing rule.
Set allocation from the operating requirement
Do not begin with an inherited percentage. Begin with the work each source must perform to preserve its role, then test whether demand, price tiers, minimum runs, setup, and approved capacity support it.
- Enter annual good-unit demand for the named business scenario.
- Enter each source's approved minimum economic run and price tier.
- Choose the release count needed for operating and evidence goals.
- Calculate units per release and reject infeasible cadences.
- Check planned units against approved capacity, not nameplate capacity.
- Add setup, logistics, inventory, administration, and keep-warm cash.
Allocation research can support the input list without creating a universal answer. Burke, Carrillo, and Vakharia analyze price, cost, capacity, reliability, inventory, and minimum order quantities in a stylized model. This workbook uses buyer-entered evidence instead of importing their assumptions or outputs.
The 2025 OECD Supply Chain Resilience Review distinguishes supply, regulatory, infrastructure, and catastrophic risks. An allocation can reduce one exposure while leaving another unchanged, so test scenarios separately.
Keep the second source usable with evidence
Qualified does not mean instantly surge-ready. Warmth is the current evidence needed to support the source's assigned role.
| Readiness claim | Evidence | Refresh trigger |
|---|---|---|
| Can build the current revision | Released production or buyer-approved verification tied to the current site, route, material, tooling, and instructions | Drawing, BOM, process, site, tool, gauge, software, or approval change |
| Can meet the release cadence | Recent run size, setup, yield, lead-time, and delivery records | Demand, minimum run, equipment, staffing, or capacity change |
| Can release conforming product | Current inspection, test, traceability, packaging, and nonconformance records | Quality-plan, measurement, test, packaging, or customer change |
| Can obtain critical inputs | Named material and special-process sources with current lead-time and approval status | Source, grade, provider, approval, capacity, or lead-time change |
| Can use required assets | Tool and gauge location, condition, maintenance, spares, software, and access evidence | Damage, transfer, version change, maintenance lapse, or ownership dispute |
| Can activate commercially | Current quote, terms, capacity evidence, contacts, payee controls, and release authority | Price expiry, ownership, bank, term, capacity, or contracting-entity change |
Readiness claim
Can build the current revision
- Evidence
- Released production or buyer-approved verification tied to the current site, route, material, tooling, and instructions
- Refresh trigger
- Drawing, BOM, process, site, tool, gauge, software, or approval change
Readiness claim
Can meet the release cadence
- Evidence
- Recent run size, setup, yield, lead-time, and delivery records
- Refresh trigger
- Demand, minimum run, equipment, staffing, or capacity change
Readiness claim
Can release conforming product
- Evidence
- Current inspection, test, traceability, packaging, and nonconformance records
- Refresh trigger
- Quality-plan, measurement, test, packaging, or customer change
Readiness claim
Can obtain critical inputs
- Evidence
- Named material and special-process sources with current lead-time and approval status
- Refresh trigger
- Source, grade, provider, approval, capacity, or lead-time change
Readiness claim
Can use required assets
- Evidence
- Tool and gauge location, condition, maintenance, spares, software, and access evidence
- Refresh trigger
- Damage, transfer, version change, maintenance lapse, or ownership dispute
Readiness claim
Can activate commercially
- Evidence
- Current quote, terms, capacity evidence, contacts, payee controls, and release authority
- Refresh trigger
- Price expiry, ownership, bank, term, capacity, or contracting-entity change
Put each required activity in Keep_Warm. If a production run is already included in the allocation, mark its units that way. Mark fixed event cash separately because an allocated run can include the units without including calibration, witness, testing, or review cash. The model excludes only the cost element explicitly marked as counted.
Model recovery in phases
A standby source may produce nothing while material, tooling, gauges, software, approvals, and transport are still pending. Enter zero when no output is planned. When output is planned, the Disruption sheet requires yield, every readiness day, transport time, an evidence reference, and confidence before it credits accepted units. Phase dates must begin at the declared scenario origin and remain contiguous. Closing inventory or backlog rolls into the next phase. Only the terminal row at the declared horizon may be marked as the horizon end.
Time-to-recover and time-to-survive research formalizes this gap between disruption duration and the period a network can keep serving demand. Simchi-Levi and coauthors' automotive case is a primary implementation example. This guide uses a simpler buyer-entered phase model and does not reproduce its equations or data.
Copy this seven-tab dual-sourcing scenario model
Create tabs with these exact names and paste the matching block into cell A1: Decision, Qualification_Cost, Dependency_Map, Allocation, Keep_Warm, Disruption, and Summary. Cross-sheet formulas depend on those names.
Paste all seven tabs before entering data. Fill blank inputs, enter percentages and yields as decimals, and do not overwrite cells beginning with =. Use one pre-normalized model currency. Retain source, date, status, owner, confidence, and limits for every decision input. Enter numeric zero where zero is the controlled fact; a blank remains unavailable and keeps the decision on hold. In Decision, enter the scenario origin and horizon, identify both legal entities and sites, and mark the controlled item, revision, currency, source identities, and evidence cutoff as current only after review.
Dual-sourcing scenario formulas
qualification cash = SUM(quantity x unit rate + external cash)
source units = annual demand x source share
units per release = source units / planned releases
cadence passes only when units per release meet the source-specific minimum economic run
keep-warm incremental units = 0 only when production units are marked as already counted in the allocation
keep-warm incremental fixed event cash = 0 only when that fixed cash is separately marked as already counted in the allocation
annual recurring total = unit purchases + setup + logistics + inventory + administration + incremental keep-warm cash
accepted source units in a phase = attempted units x yield only when every required readiness, transport, evidence, and confidence input is present and the arrival day is within the phase
first phase start = declared scenario origin; each later phase start = prior phase end
closing backlog = MAX(0, opening backlog + phase demand - opening inventory - pipeline arrivals - accepted Source A units - accepted Source B units)
closing inventory = MAX(0, opening inventory + pipeline arrivals + accepted source units - opening backlog - phase demand)
horizon exposure = closing backlog on the single terminal row at the declared horizon x buyer-approved impact per uncovered unit1. Decision (tab name: Decision)
Decision worksheet
Copies 8 columns and 18 starter rows as tab-separated cells for Excel and Google Sheets.
Columns
- 1
field - 2
controlled_value - 3
unit_or_convention - 4
source_or_document - 5
source_date - 6
evidence_status - 7
owner - 8
notes
Starter-row preview (18 rows; copy includes every cell)
item_idunit_or_convention: text · source_or_document: controlled item master · evidence_status: Open
drawing_specification_revisionunit_or_convention: text · source_or_document: controlled technical package · evidence_status: Open
model_currencyunit_or_convention: ISO currency code · source_or_document: buyer finance policy · evidence_status: Open
annual_good_unit_demandunit_or_convention: units per year · source_or_document: approved demand scenario · evidence_status: Open
source_a_unit_priceunit_or_convention: model currency per good unit · source_or_document: current quote or contract · evidence_status: Open
source_b_unit_priceunit_or_convention: model currency per good unit · source_or_document: current quote or contract · evidence_status: Open
impact_per_uncovered_unitunit_or_convention: model currency per uncovered unit · source_or_document: buyer business-impact analysis · evidence_status: Open
analysis_horizonunit_or_convention: years · source_or_document: buyer decision basis · evidence_status: Open
decision_ownerunit_or_convention: name or role · source_or_document: buyer approval matrix · evidence_status: Open
chosen_operating_modelunit_or_convention: must match Allocation operating_model · source_or_document: buyer decision · evidence_status: Open
chosen_disruption_scenariounit_or_convention: must match Disruption scenario_id · source_or_document: buyer decision · evidence_status: Open
second_source_qualification_statusunit_or_convention: Approved Conditional or Hold · source_or_document: buyer qualification record · evidence_status: Open
source_a_identity_and_siteunit_or_convention: legal entity and site · source_or_document: approved supplier master · evidence_status: Open
source_b_identity_and_siteunit_or_convention: legal entity and site · source_or_document: approved supplier master · evidence_status: Open
evidence_cutoff_dateunit_or_convention: YYYY-MM-DD · source_or_document: buyer review record · evidence_status: Open
scenario_origin_dayunit_or_convention: day number, normally 0 · source_or_document: buyer scenario definition · evidence_status: Open
scenario_horizon_end_dayunit_or_convention: day number · source_or_document: buyer scenario definition · evidence_status: Open
evidence_cutoff_statusunit_or_convention: Current or Hold · source_or_document: buyer review record · evidence_status: Open
2. Qualification cost (tab name: Qualification_Cost)
Qualification cost worksheet
Copies 12 columns and 8 starter rows as tab-separated cells for Excel and Google Sheets.
Columns
- 1
cost_id - 2
category - 3
description - 4
quantity - 5
unit - 6
unit_rate_model_currency - 7
external_cash_model_currency - 8
total_cost_model_currency - 9
source_or_document - 10
source_date - 11
evidence_status - 12
owner
Starter-row preview (8 rows; copy includes every cell)
QC-001category: buyer labor · description: engineering review and data preparation · total_cost_model_currency: =IF(OR(D2="",F2="",G2=""),"",D2*F2+G2)
QC-002category: buyer labor · description: quality planning and validation review · total_cost_model_currency: =IF(OR(D3="",F3="",G3=""),"",D3*F3+G3)
QC-003category: buyer labor · description: procurement and commercial setup · total_cost_model_currency: =IF(OR(D4="",F4="",G4=""),"",D4*F4+G4)
QC-004category: supplier evidence · description: audit visit or remote evidence review · total_cost_model_currency: =IF(OR(D5="",F5="",G5=""),"",D5*F5+G5)
QC-005category: product evidence · description: samples trial run and independent testing · total_cost_model_currency: =IF(OR(D6="",F6="",G6=""),"",D6*F6+G6)
QC-006category: assets · description: duplicate tooling fixtures gauges or test equipment · total_cost_model_currency: =IF(OR(D7="",F7="",G7=""),"",D7*F7+G7)
QC-007category: other · description: buyer-defined qualification cash · total_cost_model_currency: =IF(OR(D8="",F8="",G8=""),"",D8*F8+G8)
TOTALdescription: one-time qualification cash · total_cost_model_currency: =IF(COUNT(H2:H8)=7,SUM(H2:H8),"") · source_or_document: calculated
3. Dependency map (tab name: Dependency_Map)
Dependency map worksheet
Copies 14 columns and 8 starter rows as tab-separated cells for Excel and Google Sheets.
Columns
- 1
dependency_id - 2
dependency_type - 3
source_a_dependency - 4
source_b_dependency - 5
independence_status - 6
evidence_reference - 7
evidence_date - 8
scenarios_affected - 9
closure_action - 10
owner - 11
target_date - 12
notes - 13
evidence_status - 14
row_validation_status
Starter-row preview (8 rows; copy includes every cell)
DEP-001dependency_type: parent or ownership · independence_status: Unknown · evidence_status: Open
DEP-002dependency_type: manufacturing site · independence_status: Unknown · evidence_status: Open
DEP-003dependency_type: raw material producer grade or component · independence_status: Unknown · evidence_status: Open
DEP-004dependency_type: subtier or special process provider · independence_status: Unknown · evidence_status: Open
DEP-005dependency_type: tool fixture gauge software or test system · independence_status: Unknown · evidence_status: Open
DEP-006dependency_type: utility or critical equipment · independence_status: Unknown · evidence_status: Open
DEP-007dependency_type: port corridor carrier country or border · independence_status: Unknown · evidence_status: Open
DEP-008dependency_type: technical data IP or approval path · independence_status: Unknown · evidence_status: Open
4. Allocation and capacity (tab name: Allocation)
Allocation and capacity worksheet
Copies 29 columns and 3 starter rows as tab-separated cells for Excel and Google Sheets.
Columns
- 1
operating_model - 2
annual_demand_good_units - 3
source_a_share - 4
source_b_share - 5
source_a_units - 6
source_b_units - 7
source_a_min_economic_run - 8
source_b_min_economic_run - 9
planned_releases_a - 10
planned_releases_b - 11
units_per_release_a - 12
units_per_release_b - 13
cadence_check - 14
capacity_check - 15
source_a_approved_annual_capacity - 16
source_b_approved_annual_capacity - 17
source_a_unit_price_tier - 18
source_b_unit_price_tier - 19
source_a_setup_cash_per_release - 20
source_b_setup_cash_per_release - 21
incremental_logistics_cash - 22
incremental_inventory_carrying_cash - 23
incremental_admin_quality_cash - 24
keep_warm_incremental_cash - 25
purchase_and_setup_cash - 26
annual_recurring_total - 27
source_or_document - 28
evidence_status - 29
row_validation_status
Starter-row preview (3 rows; copy includes every cell)
SINGLE_PLUS_BUFFERannual_demand_good_units: =IF(Decision!B5="","",Decision!B5) · source_a_share: 1 · source_b_share: =IF(C2="","",1-C2)
ACTIVE_DUALannual_demand_good_units: =IF(Decision!B5="","",Decision!B5) · source_b_share: =IF(C3="","",1-C3) · source_a_units: =IF(OR(B3="",C3=""),"",B3*C3)
QUALIFIED_STANDBYannual_demand_good_units: =IF(Decision!B5="","",Decision!B5) · source_a_share: 1 · source_b_share: =IF(C4="","",1-C4)
5. Keep warm (tab name: Keep_Warm)
Keep-warm worksheet
Copies 22 columns and 4 starter rows as tab-separated cells for Excel and Google Sheets.
Columns
- 1
activity_id - 2
operating_model - 3
source - 4
required_evidence - 5
events_per_year - 6
units_per_event - 7
minimum_economic_run - 8
production_units_already_in_allocation - 9
incremental_units - 10
unit_price_model_currency - 11
fixed_cash_per_event - 12
fixed_event_cash_already_in_allocation - 13
incremental_fixed_event_cash - 14
other_annual_incremental_cash - 15
annual_incremental_cash - 16
cadence_check - 17
last_completed_date - 18
evidence_reference - 19
status - 20
next_due_date - 21
owner - 22
row_validation_status
Starter-row preview (4 rows; copy includes every cell)
KW-001operating_model: ACTIVE_DUAL · incremental_units: =IF(OR(H2="",E2="",F2=""),"",IF(H2="Yes",0,E2*F2)) · incremental_fixed_event_cash: =IF(L2="","",IF(L2="Yes",0,IF(OR(E2="",K2=""),"",E2*K2)))
KW-002operating_model: ACTIVE_DUAL · incremental_units: =IF(OR(H3="",E3="",F3=""),"",IF(H3="Yes",0,E3*F3)) · incremental_fixed_event_cash: =IF(L3="","",IF(L3="Yes",0,IF(OR(E3="",K3=""),"",E3*K3)))
KW-003operating_model: QUALIFIED_STANDBY · incremental_units: =IF(OR(H4="",E4="",F4=""),"",IF(H4="Yes",0,E4*F4)) · incremental_fixed_event_cash: =IF(L4="","",IF(L4="Yes",0,IF(OR(E4="",K4=""),"",E4*K4)))
KW-004operating_model: QUALIFIED_STANDBY · incremental_units: =IF(OR(H5="",E5="",F5=""),"",IF(H5="Yes",0,E5*F5)) · incremental_fixed_event_cash: =IF(L5="","",IF(L5="Yes",0,IF(OR(E5="",K5=""),"",E5*K5)))
6. Disruption and recovery (tab name: Disruption)
Disruption and recovery worksheet
Copies 40 columns and 9 starter rows as tab-separated cells for Excel and Google Sheets.
Columns
- 1
scenario_id - 2
operating_model - 3
phase_id - 4
phase_start_day - 5
phase_end_day - 6
horizon_end_yes_no - 7
phase_sequence_check - 8
good_unit_demand_in_phase - 9
opening_usable_inventory - 10
usable_pipeline_arriving_in_phase - 11
source_a_attempted_units_in_phase - 12
source_a_yield - 13
source_a_material_ready_day - 14
source_a_tool_gage_ready_day - 15
source_a_approval_ready_day - 16
source_a_transport_days - 17
source_a_evidence_reference - 18
source_a_evidence_confidence - 19
source_a_availability_status - 20
source_a_accepted_units_in_phase - 21
source_b_attempted_units_in_phase - 22
source_b_yield - 23
source_b_material_ready_day - 24
source_b_tool_gage_ready_day - 25
source_b_approval_ready_day - 26
source_b_transport_days - 27
source_b_evidence_reference - 28
source_b_evidence_confidence - 29
source_b_availability_status - 30
source_b_accepted_units_in_phase - 31
opening_backlog - 32
total_demand_including_backlog - 33
total_usable_supply - 34
served_units_in_phase - 35
closing_backlog - 36
closing_usable_inventory - 37
impact_per_uncovered_unit - 38
horizon_unmet_exposure - 39
assumptions_and_limits - 40
row_validation_status
Starter-row preview (9 rows; copy includes every cell)
SCENARIO_1operating_model: SINGLE_PLUS_BUFFER · phase_id: PHASE_1 · phase_sequence_check: =IF(OR(A2="",B2="",C2="",D2="",E2="",F2=""),"HOLD: missing phase identity dates or horizon flag",IF(OR(Decision!B17="",Decision!B18="",NOT(ISNUMBER(Decision!B17)),NOT(ISNUMBER(Decision!B18)),Decision!B18<=Decision!B17),"HOLD: missing or invalid scenario origin horizon",IF(NOT(OR(B2="SINGLE_PLUS_BUFFER",B2="ACTIVE_DUAL",B2="QUALIFIED_STANDBY")),"HOLD: invalid operating model",IF(OR(NOT(ISNUMBER(D2)),NOT(ISNUMBER(E2)),D2<Decision!B17,E2<=D2,E2>Decision!B18,AND(F2<>"Yes",F2<>"No")),"HOLD: invalid phase range or horizon flag",IF(COUNTIFS(A:A,A2,B:B,B2,C:C,C2)>1,"HOLD: duplicate phase ID",IF(OR(AND(F2="No",E2=Decision!B18),AND(F2="Yes",OR(E2<>Decision!B18,COUNTIFS(A:A,A2,B:B,B2,E:E,">"&E2)>0))),"HOLD: horizon row must be terminal",IF(D2<>Decision!B17,"HOLD: first phase must start at scenario origin","Pass")))))))
SCENARIO_1operating_model: SINGLE_PLUS_BUFFER · phase_id: PHASE_2 · phase_sequence_check: =IF(OR(A3="",B3="",C3="",D3="",E3="",F3=""),"HOLD: missing phase identity dates or horizon flag",IF(OR(Decision!B17="",Decision!B18="",NOT(ISNUMBER(Decision!B17)),NOT(ISNUMBER(Decision!B18)),Decision!B18<=Decision!B17),"HOLD: missing or invalid scenario origin horizon",IF(NOT(OR(B3="SINGLE_PLUS_BUFFER",B3="ACTIVE_DUAL",B3="QUALIFIED_STANDBY")),"HOLD: invalid operating model",IF(OR(NOT(ISNUMBER(D3)),NOT(ISNUMBER(E3)),D3<Decision!B17,E3<=D3,E3>Decision!B18,AND(F3<>"Yes",F3<>"No")),"HOLD: invalid phase range or horizon flag",IF(COUNTIFS(A:A,A3,B:B,B3,C:C,C3)>1,"HOLD: duplicate phase ID",IF(OR(AND(F3="No",E3=Decision!B18),AND(F3="Yes",OR(E3<>Decision!B18,COUNTIFS(A:A,A3,B:B,B3,E:E,">"&E3)>0))),"HOLD: horizon row must be terminal",IF(OR(A3<>A2,B3<>B2,D3<>E2),"HOLD: phase gap overlap or sequence","Pass")))))))
SCENARIO_1operating_model: SINGLE_PLUS_BUFFER · phase_id: PHASE_3 · phase_sequence_check: =IF(OR(A4="",B4="",C4="",D4="",E4="",F4=""),"HOLD: missing phase identity dates or horizon flag",IF(OR(Decision!B17="",Decision!B18="",NOT(ISNUMBER(Decision!B17)),NOT(ISNUMBER(Decision!B18)),Decision!B18<=Decision!B17),"HOLD: missing or invalid scenario origin horizon",IF(NOT(OR(B4="SINGLE_PLUS_BUFFER",B4="ACTIVE_DUAL",B4="QUALIFIED_STANDBY")),"HOLD: invalid operating model",IF(OR(NOT(ISNUMBER(D4)),NOT(ISNUMBER(E4)),D4<Decision!B17,E4<=D4,E4>Decision!B18,AND(F4<>"Yes",F4<>"No")),"HOLD: invalid phase range or horizon flag",IF(COUNTIFS(A:A,A4,B:B,B4,C:C,C4)>1,"HOLD: duplicate phase ID",IF(OR(AND(F4="No",E4=Decision!B18),AND(F4="Yes",OR(E4<>Decision!B18,COUNTIFS(A:A,A4,B:B,B4,E:E,">"&E4)>0))),"HOLD: horizon row must be terminal",IF(OR(A4<>A3,B4<>B3,D4<>E3),"HOLD: phase gap overlap or sequence","Pass")))))))
SCENARIO_1operating_model: ACTIVE_DUAL · phase_id: PHASE_1 · phase_sequence_check: =IF(OR(A5="",B5="",C5="",D5="",E5="",F5=""),"HOLD: missing phase identity dates or horizon flag",IF(OR(Decision!B17="",Decision!B18="",NOT(ISNUMBER(Decision!B17)),NOT(ISNUMBER(Decision!B18)),Decision!B18<=Decision!B17),"HOLD: missing or invalid scenario origin horizon",IF(NOT(OR(B5="SINGLE_PLUS_BUFFER",B5="ACTIVE_DUAL",B5="QUALIFIED_STANDBY")),"HOLD: invalid operating model",IF(OR(NOT(ISNUMBER(D5)),NOT(ISNUMBER(E5)),D5<Decision!B17,E5<=D5,E5>Decision!B18,AND(F5<>"Yes",F5<>"No")),"HOLD: invalid phase range or horizon flag",IF(COUNTIFS(A:A,A5,B:B,B5,C:C,C5)>1,"HOLD: duplicate phase ID",IF(OR(AND(F5="No",E5=Decision!B18),AND(F5="Yes",OR(E5<>Decision!B18,COUNTIFS(A:A,A5,B:B,B5,E:E,">"&E5)>0))),"HOLD: horizon row must be terminal",IF(D5<>Decision!B17,"HOLD: first phase must start at scenario origin","Pass")))))))
SCENARIO_1operating_model: ACTIVE_DUAL · phase_id: PHASE_2 · phase_sequence_check: =IF(OR(A6="",B6="",C6="",D6="",E6="",F6=""),"HOLD: missing phase identity dates or horizon flag",IF(OR(Decision!B17="",Decision!B18="",NOT(ISNUMBER(Decision!B17)),NOT(ISNUMBER(Decision!B18)),Decision!B18<=Decision!B17),"HOLD: missing or invalid scenario origin horizon",IF(NOT(OR(B6="SINGLE_PLUS_BUFFER",B6="ACTIVE_DUAL",B6="QUALIFIED_STANDBY")),"HOLD: invalid operating model",IF(OR(NOT(ISNUMBER(D6)),NOT(ISNUMBER(E6)),D6<Decision!B17,E6<=D6,E6>Decision!B18,AND(F6<>"Yes",F6<>"No")),"HOLD: invalid phase range or horizon flag",IF(COUNTIFS(A:A,A6,B:B,B6,C:C,C6)>1,"HOLD: duplicate phase ID",IF(OR(AND(F6="No",E6=Decision!B18),AND(F6="Yes",OR(E6<>Decision!B18,COUNTIFS(A:A,A6,B:B,B6,E:E,">"&E6)>0))),"HOLD: horizon row must be terminal",IF(OR(A6<>A5,B6<>B5,D6<>E5),"HOLD: phase gap overlap or sequence","Pass")))))))
SCENARIO_1operating_model: ACTIVE_DUAL · phase_id: PHASE_3 · phase_sequence_check: =IF(OR(A7="",B7="",C7="",D7="",E7="",F7=""),"HOLD: missing phase identity dates or horizon flag",IF(OR(Decision!B17="",Decision!B18="",NOT(ISNUMBER(Decision!B17)),NOT(ISNUMBER(Decision!B18)),Decision!B18<=Decision!B17),"HOLD: missing or invalid scenario origin horizon",IF(NOT(OR(B7="SINGLE_PLUS_BUFFER",B7="ACTIVE_DUAL",B7="QUALIFIED_STANDBY")),"HOLD: invalid operating model",IF(OR(NOT(ISNUMBER(D7)),NOT(ISNUMBER(E7)),D7<Decision!B17,E7<=D7,E7>Decision!B18,AND(F7<>"Yes",F7<>"No")),"HOLD: invalid phase range or horizon flag",IF(COUNTIFS(A:A,A7,B:B,B7,C:C,C7)>1,"HOLD: duplicate phase ID",IF(OR(AND(F7="No",E7=Decision!B18),AND(F7="Yes",OR(E7<>Decision!B18,COUNTIFS(A:A,A7,B:B,B7,E:E,">"&E7)>0))),"HOLD: horizon row must be terminal",IF(OR(A7<>A6,B7<>B6,D7<>E6),"HOLD: phase gap overlap or sequence","Pass")))))))
SCENARIO_1operating_model: QUALIFIED_STANDBY · phase_id: PHASE_1 · phase_sequence_check: =IF(OR(A8="",B8="",C8="",D8="",E8="",F8=""),"HOLD: missing phase identity dates or horizon flag",IF(OR(Decision!B17="",Decision!B18="",NOT(ISNUMBER(Decision!B17)),NOT(ISNUMBER(Decision!B18)),Decision!B18<=Decision!B17),"HOLD: missing or invalid scenario origin horizon",IF(NOT(OR(B8="SINGLE_PLUS_BUFFER",B8="ACTIVE_DUAL",B8="QUALIFIED_STANDBY")),"HOLD: invalid operating model",IF(OR(NOT(ISNUMBER(D8)),NOT(ISNUMBER(E8)),D8<Decision!B17,E8<=D8,E8>Decision!B18,AND(F8<>"Yes",F8<>"No")),"HOLD: invalid phase range or horizon flag",IF(COUNTIFS(A:A,A8,B:B,B8,C:C,C8)>1,"HOLD: duplicate phase ID",IF(OR(AND(F8="No",E8=Decision!B18),AND(F8="Yes",OR(E8<>Decision!B18,COUNTIFS(A:A,A8,B:B,B8,E:E,">"&E8)>0))),"HOLD: horizon row must be terminal",IF(D8<>Decision!B17,"HOLD: first phase must start at scenario origin","Pass")))))))
SCENARIO_1operating_model: QUALIFIED_STANDBY · phase_id: PHASE_2 · phase_sequence_check: =IF(OR(A9="",B9="",C9="",D9="",E9="",F9=""),"HOLD: missing phase identity dates or horizon flag",IF(OR(Decision!B17="",Decision!B18="",NOT(ISNUMBER(Decision!B17)),NOT(ISNUMBER(Decision!B18)),Decision!B18<=Decision!B17),"HOLD: missing or invalid scenario origin horizon",IF(NOT(OR(B9="SINGLE_PLUS_BUFFER",B9="ACTIVE_DUAL",B9="QUALIFIED_STANDBY")),"HOLD: invalid operating model",IF(OR(NOT(ISNUMBER(D9)),NOT(ISNUMBER(E9)),D9<Decision!B17,E9<=D9,E9>Decision!B18,AND(F9<>"Yes",F9<>"No")),"HOLD: invalid phase range or horizon flag",IF(COUNTIFS(A:A,A9,B:B,B9,C:C,C9)>1,"HOLD: duplicate phase ID",IF(OR(AND(F9="No",E9=Decision!B18),AND(F9="Yes",OR(E9<>Decision!B18,COUNTIFS(A:A,A9,B:B,B9,E:E,">"&E9)>0))),"HOLD: horizon row must be terminal",IF(OR(A9<>A8,B9<>B8,D9<>E8),"HOLD: phase gap overlap or sequence","Pass")))))))
SCENARIO_1operating_model: QUALIFIED_STANDBY · phase_id: PHASE_3 · phase_sequence_check: =IF(OR(A10="",B10="",C10="",D10="",E10="",F10=""),"HOLD: missing phase identity dates or horizon flag",IF(OR(Decision!B17="",Decision!B18="",NOT(ISNUMBER(Decision!B17)),NOT(ISNUMBER(Decision!B18)),Decision!B18<=Decision!B17),"HOLD: missing or invalid scenario origin horizon",IF(NOT(OR(B10="SINGLE_PLUS_BUFFER",B10="ACTIVE_DUAL",B10="QUALIFIED_STANDBY")),"HOLD: invalid operating model",IF(OR(NOT(ISNUMBER(D10)),NOT(ISNUMBER(E10)),D10<Decision!B17,E10<=D10,E10>Decision!B18,AND(F10<>"Yes",F10<>"No")),"HOLD: invalid phase range or horizon flag",IF(COUNTIFS(A:A,A10,B:B,B10,C:C,C10)>1,"HOLD: duplicate phase ID",IF(OR(AND(F10="No",E10=Decision!B18),AND(F10="Yes",OR(E10<>Decision!B18,COUNTIFS(A:A,A10,B:B,B10,E:E,">"&E10)>0))),"HOLD: horizon row must be terminal",IF(OR(A10<>A9,B10<>B9,D10<>E9),"HOLD: phase gap overlap or sequence","Pass")))))))
7. Decision and trigger summary (tab name: Summary)
Decision and trigger summary
Copies 6 columns and 23 starter rows as tab-separated cells for Excel and Google Sheets.
Columns
- 1
metric - 2
value - 3
unit_or_status - 4
source_or_formula - 5
decision_interpretation - 6
owner_or_action
Starter-row preview (23 rows; copy includes every cell)
one_time_qualification_cashvalue: =IF(Qualification_Cost!H9="","",Qualification_Cost!H9) · unit_or_status: model currency · source_or_formula: Qualification_Cost total
optional_annualized_qualification_viewvalue: =IF(OR(B2="",Decision!B9="",NOT(ISNUMBER(Decision!B9)),Decision!B9<=0),"",B2/Decision!B9) · unit_or_status: model currency per planning year · source_or_formula: one-time cash divided by buyer-entered horizon
single_plus_buffer_annual_recurringvalue: =IF(AND(COUNTIF(Allocation!A:A,"SINGLE_PLUS_BUFFER")=1,COUNTIFS(Allocation!A:A,"SINGLE_PLUS_BUFFER",Allocation!AC:AC,"Pass")=1),INDEX(Allocation!Z:Z,MATCH("SINGLE_PLUS_BUFFER",Allocation!A:A,0)),"") · unit_or_status: model currency per year · source_or_formula: validated Allocation row
chosen_operating_model_annual_recurringvalue: =IF(AND(COUNTIF(Allocation!A:A,Decision!B11)=1,COUNTIFS(Allocation!A:A,Decision!B11,Allocation!AC:AC,"Pass")=1),INDEX(Allocation!Z:Z,MATCH(Decision!B11,Allocation!A:A,0)),"") · unit_or_status: model currency per year · source_or_formula: validated chosen Allocation row
annual_recurring_deltavalue: =IF(OR(B4="",B5=""),"",B5-B4) · unit_or_status: model currency per year · source_or_formula: chosen model less single plus buffer
first_year_cash_deltavalue: =IF(OR(B2="",B6=""),"",B2+B6) · unit_or_status: model currency · source_or_formula: qualification cash plus annual recurring delta
single_plus_buffer_exposurevalue: =IF(AND(COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"SINGLE_PLUS_BUFFER")>0,COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"SINGLE_PLUS_BUFFER",Disruption!AN:AN,"Pass")=COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"SINGLE_PLUS_BUFFER"),COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"SINGLE_PLUS_BUFFER",Disruption!F:F,"Yes")=1),SUMIFS(Disruption!AL:AL,Disruption!A:A,Decision!B12,Disruption!B:B,"SINGLE_PLUS_BUFFER"),"") · unit_or_status: model currency per named scenario · source_or_formula: validated horizon row in Disruption
active_dual_exposurevalue: =IF(AND(COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"ACTIVE_DUAL")>0,COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"ACTIVE_DUAL",Disruption!AN:AN,"Pass")=COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"ACTIVE_DUAL"),COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"ACTIVE_DUAL",Disruption!F:F,"Yes")=1),SUMIFS(Disruption!AL:AL,Disruption!A:A,Decision!B12,Disruption!B:B,"ACTIVE_DUAL"),"") · unit_or_status: model currency per named scenario · source_or_formula: validated horizon row in Disruption
qualified_standby_exposurevalue: =IF(AND(COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"QUALIFIED_STANDBY")>0,COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"QUALIFIED_STANDBY",Disruption!AN:AN,"Pass")=COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"QUALIFIED_STANDBY"),COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"QUALIFIED_STANDBY",Disruption!F:F,"Yes")=1),SUMIFS(Disruption!AL:AL,Disruption!A:A,Decision!B12,Disruption!B:B,"QUALIFIED_STANDBY"),"") · unit_or_status: model currency per named scenario · source_or_formula: validated horizon row in Disruption
chosen_operating_model_exposurevalue: =IF(Decision!B11="SINGLE_PLUS_BUFFER",B8,IF(Decision!B11="ACTIVE_DUAL",B9,IF(Decision!B11="QUALIFIED_STANDBY",B10,""))) · unit_or_status: model currency per named scenario · source_or_formula: chosen validated model
chosen_scenario_exposure_reductionvalue: =IF(OR(B8="",B11=""),"",B8-B11) · unit_or_status: model currency per named scenario · source_or_formula: single plus buffer less chosen model
shared_dependency_countvalue: =COUNTIF(Dependency_Map!E:E,"Shared") · unit_or_status: count · source_or_formula: Dependency_Map
unknown_dependency_countvalue: =COUNTIF(Dependency_Map!E:E,"Unknown") · unit_or_status: count · source_or_formula: Dependency_Map
selected_allocation_row_countvalue: =COUNTIF(Allocation!A:A,Decision!B11) · unit_or_status: count · source_or_formula: Allocation
selected_allocation_validationvalue: =IF(B15<>1,"HOLD: selected model missing or duplicated",INDEX(Allocation!AC:AC,MATCH(Decision!B11,Allocation!A:A,0))) · unit_or_status: status · source_or_formula: Allocation row validation
selected_scenario_phase_countvalue: =COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,Decision!B11) · unit_or_status: count · source_or_formula: Disruption
selected_horizon_end_countvalue: =COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,Decision!B11,Disruption!F:F,"Yes") · unit_or_status: count · source_or_formula: Disruption
selected_disruption_hold_rowsvalue: =B17-COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,Decision!B11,Disruption!AN:AN,"Pass") · unit_or_status: count · source_or_formula: Disruption row validation
selected_keep_warm_row_countvalue: =COUNTIF(Keep_Warm!B:B,Decision!B11) · unit_or_status: count · source_or_formula: Keep_Warm
selected_keep_warm_hold_rowsvalue: =B20-COUNTIFS(Keep_Warm!B:B,Decision!B11,Keep_Warm!V:V,"Pass") · unit_or_status: count · source_or_formula: Keep_Warm row validation
noncurrent_keep_warm_rowsvalue: =COUNTIFS(Keep_Warm!B:B,Decision!B11,Keep_Warm!S:S,"<>Current") · unit_or_status: count · source_or_formula: Keep_Warm
invalid_dependency_rowsvalue: =MAX(0,COUNTIFS(Dependency_Map!A:A,"<>",Dependency_Map!N:N,"<>Pass")-1) · unit_or_status: count · source_or_formula: Dependency_Map row validation
decision_gatevalue: =IF(OR(Decision!B2="",Decision!B3="",Decision!B4="",LEN(TRIM(Decision!B4))<>3,Decision!B14="",Decision!B15="",Decision!B16="",Decision!F2<>"Current",Decision!F3<>"Current",Decision!F4<>"Current",Decision!F14<>"Current",Decision!F15<>"Current",Decision!F16<>"Current",Decision!B19<>"Current"),"HOLD: essential identity or evidence controls incomplete",IF(OR(Decision!B17="",Decision!B18="",NOT(ISNUMBER(Decision!B17)),NOT(ISNUMBER(Decision!B18)),Decision!B18<=Decision!B17),"HOLD: scenario origin or horizon invalid",IF(OR(Decision!B10="",NOT(OR(Decision!B11="SINGLE_PLUS_BUFFER",Decision!B11="ACTIVE_DUAL",Decision!B11="QUALIFIED_STANDBY")),Decision!B12=""),"HOLD: select owner model and scenario",IF(Decision!B13<>"Approved","HOLD: qualification not approved",IF(B2="","HOLD: qualification cost incomplete",IF(OR(B14>0,B23>0),"HOLD: dependency map invalid or unresolved",IF(OR(B15<>1,B16<>"Pass"),"HOLD: selected allocation invalid",IF(OR(B17=0,B18<>1,B19<>0),"HOLD: disruption phases or evidence invalid",IF(AND(Decision!B11<>"SINGLE_PLUS_BUFFER",OR(B20=0,B21<>0,B22<>0)),"HOLD: keep-warm plan or evidence invalid",IF(OR(B4="",B5="",B8="",B11=""),"HOLD: validated cost or exposure unavailable","BUYER REVIEW: weigh scenario protection against cash and evidence confidence")))))))))) · unit_or_status: status · source_or_formula: buyer inputs and workbook checks
The summary compares the three operating models under one named scenario only after the selected allocation, cadence, capacity, evidence, phase sequence, readiness, horizon, and keep-warm checks pass. It does not calculate a probability-weighted expected loss, certify capacity, approve a source, or prove that a shared dependency is available.
Worked example: test one site-outage scenario
A US industrial buyer purchases 12,000 machined housings per year from Source A. Source B has completed the buyer's qualification workflow. The team tests an active-dual allocation of 9,000 units at A and 3,000 at B because three 1,000-unit B releases meet this fictional source's minimum run and evidence plan. The percentage is an output, not a rule.
| Input or output | Value | Basis |
|---|---|---|
| Annual demand | 12,000 good units | Fictional buyer scenario |
| Active-dual allocation | 9,000 to A; 3,000 to B | Chosen only for this example |
| Source B cadence | Three releases of 1,000 | Meets the fictional 1,000-unit minimum run |
| Qualification cash | 48,000 | Fictional buyer labor, validation, fixture, and test inputs |
| Recurring price effect | 15,000 per year | 3,000 units x (47 minus 42) |
| Other recurring burden | 12,000 per year | Fictional administration, logistics, inventory, quality, and keep-warm cash |
| First-year cash delta | 75,000 | 48,000 + 15,000 + 12,000 |
Input or output
Annual demand
- Value
- 12,000 good units
- Basis
- Fictional buyer scenario
Input or output
Active-dual allocation
- Value
- 9,000 to A; 3,000 to B
- Basis
- Chosen only for this example
Input or output
Source B cadence
- Value
- Three releases of 1,000
- Basis
- Meets the fictional 1,000-unit minimum run
Input or output
Qualification cash
- Value
- 48,000
- Basis
- Fictional buyer labor, validation, fixture, and test inputs
Input or output
Recurring price effect
- Value
- 15,000 per year
- Basis
- 3,000 units x (47 minus 42)
Input or output
Other recurring burden
- Value
- 12,000 per year
- Basis
- Fictional administration, logistics, inventory, quality, and keep-warm cash
Input or output
First-year cash delta
- Value
- 75,000
- Basis
- 48,000 + 15,000 + 12,000
Calculate the named interruption
The buyer tests a 90-day Source A site outage at 40 good units per day. The example uses one phase from day 0 through day 90 and marks it as the horizon end. Usable opening inventory is 600 units and pipeline is zero. Source A attempted output is entered as zero. After its stated material, tool, approval, and transport lags, Source B contributes 1,800 accepted units with an evidence reference and confidence. The example assumes those units already reflect the fictional yield input.
scenario demand = 90 x 40 = 3,600 units
single-plus-buffer shortfall = 3,600 - 600 = 3,000 units
active-dual shortfall = 3,600 - 600 - 1,800 = 1,200 units
single-plus-buffer exposure = 3,000 x 120 = 360,000
active-dual exposure = 1,200 x 120 = 144,000
modeled exposure reduction = 216,000 for this scenario
The fictional first-year cash delta is 75,000. The named scenario reduction is 216,000. That comparison informs the buyer, but it is not automatic approval and not expected value. The team still judges the evidence, confidence, other mitigations, and operating burden.
Show how a shared node erases protection
Both manufacturers use the same approved anodizing provider. In a processor-outage scenario, neither route contributes accepted units until that node recovers or an alternate is approved. The apparent diversification disappears for that event, even though the Tier 1 supplier names and sites differ.
Common pitfalls and what they break
The amounts and day counts below are fictional illustrations, not market rates, supplier benchmarks, or forecasts.
Starting with a default split
A fictional 600-unit annual award divided into two releases creates 300-unit runs against a 1,000-unit minimum, so the cadence stays on hold after 48,000 of qualification cash.
Counting two names as independent
If both fictional sources use the same anodizer, its outage removes the 1,800-unit backup output and restores the 90-day shortfall from 1,200 to 3,000 units, or 360,000 of modeled exposure.
Hiding qualification cash in unit price
Spreading fictional qualification cash of 48,000 over four years shows 12,000 per year but understates first-year funding by 36,000.
Double-counting keep-warm cash
Three fictional releases with 1,500 of fixed witness and setup cash each add a false 4,500 annual premium when the same fixed events are counted in Allocation and Keep_Warm.
Using annual capacity in a short scenario
A fictional supplier with 18,000 units of annual capacity still delivers zero in a 30-day phase when material plus transport takes 45 days, leaving the full phase demand uncovered.
Treating qualified as surge-ready
A fictional 30-day gauge release followed by 20 days of transport puts the first accepted units on day 50, so a 30-day recovery promise misses by 20 days.
Blending unrelated disruptions
The fictional site-outage case shows a 216,000 reduction, but combining it with a shared-processor outage hides that the processor case retains the full 360,000 exposure.
Inventing a disruption probability
Applying an unsupported 5 percent probability to fictional exposure of 360,000 creates an 18,000 expected-loss figure; changing the guess to 1 percent cuts it to 3,600 and can reverse the funding decision.
Letting the standby source go cold
A fictional 21-day gauge calibration plus 14-day approval takes 35 days, so the source misses a 30-day activation window by 5 days.
Moving volume before qualification release
Releasing a fictional 1,000-unit order at 47 per unit commits 47,000 to a supplier that the decision gate still marks Hold.
Ignoring the incumbent response
If the fictional incumbent price rises from 42 to 45 after volume moves, the remaining 9,000 units add 27,000 per year and erase the original recurring-cost comparison.
Treating exposure reduction as approval
Spending the fictional 75,000 first-year cash delta addresses the named site outage but leaves 360,000 of exposure in the shared-anodizer scenario, so the workbook must stop at Buyer Review.
Glossary
- Dual sourcing
- An operating model in which two approved sources can supply the same controlled requirement under buyer-defined roles.
- Second source
- A named legal entity, site, and route approved for a defined item and buying lane.
- Single plus buffer
- An operating model that uses one production source plus buyer-approved inventory or pipeline protection.
- Active dual
- An operating model that gives both approved sources planned production work.
- Qualified standby
- An approved source maintained for activation with limited or no routine production allocation.
- Qualification cash
- One-time buyer and external cost needed to evaluate and approve the alternative source.
- Recurring operating burden
- Annual cash added by price tiers, releases, logistics, inventory, oversight, and readiness evidence.
- Minimum economic run
- The smallest buyer-approved production quantity that a source can run on the stated commercial and process basis.
- Allocation
- The planned demand, releases, or roles assigned to each source for a defined period.
- Keep-warm evidence
- Current records showing that a source can still perform the readiness role assigned by the buyer.
- Shared dependency
- A required node used by both sources that may allow one event to affect both routes.
- Recovery assumption
- A sourced scenario input for when and how a source can resume accepted output.
- Usable pipeline
- In-transit or committed units the buyer can release and receive inside the modeled phase.
- Unmet demand
- Phase demand remaining after usable inventory, pipeline, and accepted source output.
- Time to recover
- The modeled time a disrupted node needs to restore the stated capability or output.
- Time to survive
- The modeled period demand can be served before the disruption creates unmet demand.
FAQ
Practical answers for industrial buyers deciding whether and how to operate a qualified second source.