Development Lifecycle Decision Guides
Visual decision flowcharts for the most common development lifecycle choices a CTA faces. These diagrams help systematize decisions that are otherwise made ad-hoc, and they demonstrate architectural rigor to the review board.
Branching Strategy Decision
Use this when choosing between GitFlow, trunk-based development, or a hybrid approach for a Salesforce project.
flowchart TD
Start([Choose Branching<br/>Strategy]) --> Q1{How large is the<br/>development team?}
Q1 -->|"1-5 developers"| Q2{Release cadence?}
Q1 -->|"6-15 developers"| Q3{Release cadence?}
Q1 -->|"15+ developers"| Q4{Multiple independent<br/>workstreams?}
Q2 -->|Continuous| R1[Trunk-Based with<br/>Feature Flags]
Q2 -->|"Weekly/Bi-weekly"| R2[Simple Feature<br/>Branch Model]
Q2 -->|"Monthly+"| R3[Modified GitFlow]
Q3 -->|Continuous| R4[Trunk-Based with<br/>Feature Flags + CI Gates]
Q3 -->|"Weekly/Bi-weekly"| R3
Q3 -->|"Monthly+"| R5[Full GitFlow]
Q4 -->|Yes| R6[GitFlow per Workstream<br/>with Integration Branch]
Q4 -->|No| R5
style R1 fill:#2d6a4f,stroke:#1b4332,color:#fff
style R2 fill:#2d6a4f,stroke:#1b4332,color:#fff
style R3 fill:#4ecdc4,stroke:#3ab5ad,color:#000
style R4 fill:#4ecdc4,stroke:#3ab5ad,color:#000
style R5 fill:#f4a261,stroke:#d4823e,color:#000
style R6 fill:#e76f51,stroke:#c45a3f,color:#fff
Legend: Green = Simple (less overhead) | Teal = Moderate | Orange = Complex | Red = Most Complex
Branch Strategy Quick Reference
| Strategy | Best For | Overhead | Risk |
|---|---|---|---|
| Trunk-Based | Small team, continuous delivery, mature CI/CD | Low | Medium (requires feature flags) |
| Feature Branch | Small-medium team, regular releases | Low-Medium | Low |
| Modified GitFlow | Medium team, scheduled releases | Medium | Low |
| Full GitFlow | Large team, infrequent releases, multiple environments | High | Low |
| GitFlow + Workstreams | Very large team, independent feature sets | Very High | Low |
CI/CD Tool Selection Decision
Use this when choosing a CI/CD tool for a Salesforce implementation.
flowchart TD
Start([Select CI/CD<br/>Tool]) --> Q1{Team's DevOps<br/>maturity?}
Q1 -->|"Low -- admin-centric"| Q2{Budget for<br/>tooling?}
Q2 -->|Available| R1[Copado or Gearset<br/>- SF-native, guided UX]
Q2 -->|Limited| R2[Change Sets + Manual<br/>Process - Plan to Modernize]
Q1 -->|"Medium -- some dev experience"| Q3{Existing CI/CD<br/>platform?}
Q3 -->|GitHub| R3[GitHub Actions +<br/>Salesforce CLI]
Q3 -->|Azure DevOps| R4[Azure Pipelines +<br/>Salesforce CLI]
Q3 -->|GitLab| R5[GitLab CI +<br/>Salesforce CLI]
Q3 -->|None| Q4{Preference for<br/>SF-native tool?}
Q4 -->|Yes| R1
Q4 -->|No| R3
Q1 -->|"High -- full DevOps team"| Q5{Package-based<br/>development?}
Q5 -->|Yes| R6[GitHub Actions or GitLab CI<br/>+ Unlocked Packages]
Q5 -->|No| Q6{Need compliance<br/>tracking?}
Q6 -->|Yes| R7[Copado + Compliance<br/>Module]
Q6 -->|No| R3
style R1 fill:#4ecdc4,stroke:#3ab5ad,color:#000
style R2 fill:#e76f51,stroke:#c45a3f,color:#fff
style R3 fill:#2d6a4f,stroke:#1b4332,color:#fff
style R4 fill:#2d6a4f,stroke:#1b4332,color:#fff
style R5 fill:#2d6a4f,stroke:#1b4332,color:#fff
style R6 fill:#2d6a4f,stroke:#1b4332,color:#fff
style R7 fill:#4ecdc4,stroke:#3ab5ad,color:#000
Legend: Green = General-purpose CI/CD | Teal = Salesforce-native CI/CD | Red = Legacy (plan to modernize)
Sandbox Strategy Decision
Use this when designing the environment topology for a Salesforce implementation.
flowchart TD
Start([Design Environment<br/>Strategy]) --> Q1{Team size?}
Q1 -->|"1-5"| S1{Need integration<br/>testing?}
S1 -->|Yes| R1["3 Dev Sandboxes<br/>+ 1 Partial (SIT)<br/>+ 1 Partial (UAT)"]
S1 -->|No| R2["3 Dev Sandboxes<br/>+ 1 Partial (UAT)"]
Q1 -->|"6-15"| S2{Multiple<br/>workstreams?}
S2 -->|Yes| R3["10 Dev + Scratch Orgs<br/>+ 2 Partial (SIT per stream)<br/>+ 1 Partial (UAT)<br/>+ 1 Full (Staging)"]
S2 -->|No| R4["8 Dev + Scratch Orgs<br/>+ 1 Partial (SIT)<br/>+ 1 Partial (UAT)<br/>+ 1 Full (Staging)"]
Q1 -->|"15+"| S3{Performance testing<br/>required?}
S3 -->|Yes| R5["15+ Dev + Scratch Orgs<br/>+ 2 Partial (SIT)<br/>+ 1 Partial (UAT)<br/>+ 1 Full (Staging)<br/>+ 1 Full (Perf)"]
S3 -->|No| R3
style R1 fill:#2d6a4f,stroke:#1b4332,color:#fff
style R2 fill:#2d6a4f,stroke:#1b4332,color:#fff
style R3 fill:#f4a261,stroke:#d4823e,color:#000
style R4 fill:#4ecdc4,stroke:#3ab5ad,color:#000
style R5 fill:#e76f51,stroke:#c45a3f,color:#fff
Legend: Green = Minimal | Teal = Standard | Orange = Enterprise | Red = Large Enterprise
Change Sets vs CLI Decision
Use this when evaluating whether an org should continue using change sets or migrate to CLI-based deployment.
flowchart TD
Start([Deployment Method<br/>Decision]) --> Q1{Does the org use<br/>source control?}
Q1 -->|No| Q2{Plan to adopt<br/>source control?}
Q2 -->|Yes| R1[Adopt SF CLI + Git<br/>Phase out Change Sets]
Q2 -->|No| Q3{Team composition?}
Q3 -->|Admins only| R2[Change Sets OK<br/>for now - plan modernization]
Q3 -->|Mix of admins + devs| R1
Q1 -->|Yes| Q4{Existing deployment<br/>automation?}
Q4 -->|Yes| R3[Use SF CLI in<br/>existing CI/CD]
Q4 -->|No| Q5{Team skill level?}
Q5 -->|Comfortable with CLI| R3
Q5 -->|Prefers GUI| R4[Gearset or Copado<br/>GUI-based deployment]
Q1 -->|Partial| R1
style R1 fill:#2d6a4f,stroke:#1b4332,color:#fff
style R2 fill:#e76f51,stroke:#c45a3f,color:#fff
style R3 fill:#2d6a4f,stroke:#1b4332,color:#fff
style R4 fill:#4ecdc4,stroke:#3ab5ad,color:#000
Legend: Green = CLI/Automation | Teal = GUI-based tooling | Red = Legacy (acceptable short-term only)
Testing Approach Decision
Use this when determining the testing strategy for a Salesforce implementation.
flowchart TD
Start([Define Testing<br/>Strategy]) --> Q1{What is being<br/>tested?}
Q1 -->|Apex code| A1[Apex Unit Tests<br/>- isTest, TestSetup<br/>- 85%+ coverage target]
Q1 -->|LWC components| A2[Jest Unit Tests<br/>- Component rendering<br/>- Event handling]
Q1 -->|Flows| A3{Complex or<br/>simple Flow?}
A3 -->|Complex| A4[Flow Debug +<br/>Apex Integration Test<br/>via Invocable]
A3 -->|Simple| A5[Flow Debug +<br/>Manual Test Script]
Q1 -->|Integrations| A6[Mock Callout Tests<br/>+ E2E Integration<br/>Test in SIT]
Q1 -->|User journeys| A7{Automation<br/>justified?}
A7 -->|Yes| A8[Provar or Copado RT<br/>Automated E2E]
A7 -->|No| A9[Manual UAT<br/>with Test Scripts]
Q1 -->|Performance| A10{LDV scenario?}
A10 -->|Yes| A11[Full Copy Sandbox<br/>Load + Query Testing]
A10 -->|No| A12[Partial Copy<br/>Spot-Check Performance]
style A1 fill:#2d6a4f,stroke:#1b4332,color:#fff
style A2 fill:#2d6a4f,stroke:#1b4332,color:#fff
style A4 fill:#f4a261,stroke:#d4823e,color:#000
style A5 fill:#4ecdc4,stroke:#3ab5ad,color:#000
style A6 fill:#f4a261,stroke:#d4823e,color:#000
style A8 fill:#e76f51,stroke:#c45a3f,color:#fff
style A9 fill:#4ecdc4,stroke:#3ab5ad,color:#000
style A11 fill:#e76f51,stroke:#c45a3f,color:#fff
style A12 fill:#4ecdc4,stroke:#3ab5ad,color:#000
Legend: Green = Fully automated | Teal = Semi-automated | Orange = Hybrid | Red = Resource-intensive
Governance Structure Decision
Use this when determining the right governance model for a Salesforce implementation.
flowchart TD
Start([Define Governance<br/>Structure]) --> Q1{Organization size?}
Q1 -->|"Small (< 100 SF users)"| R1[Lightweight Governance<br/>- Single admin/architect<br/>- Informal review process<br/>- Quarterly standards review]
Q1 -->|"Medium (100-1000 SF users)"| Q2{Multiple business<br/>units using SF?}
Q2 -->|No| R2[Centralized CoE<br/>- ARB monthly<br/>- CAB per release<br/>- RACI for key activities]
Q2 -->|Yes| R3[Hybrid CoE<br/>- Central standards team<br/>- BU delivery teams<br/>- ARB bi-weekly<br/>- CAB per deployment]
Q1 -->|"Large (1000+ SF users)"| Q3{Multi-org or<br/>single org?}
Q3 -->|Single org| R3
Q3 -->|Multi-org| R4[Federated CoE<br/>- Central architecture team<br/>- Org-specific delivery teams<br/>- Cross-org ARB monthly<br/>- Org-level CAB per deployment]
style R1 fill:#2d6a4f,stroke:#1b4332,color:#fff
style R2 fill:#4ecdc4,stroke:#3ab5ad,color:#000
style R3 fill:#f4a261,stroke:#d4823e,color:#000
style R4 fill:#e76f51,stroke:#c45a3f,color:#fff
Deployment Rollback Decision
One of the most commonly-struggled topics in CTA scenarios. The review board often asks: “What is your rollback plan?” This decision tree helps determine the right rollback approach.
flowchart TD
Start([Production Issue<br/>Detected Post-Deploy]) --> Q1{Severity?}
Q1 -->|Critical<br/>System down| R1[Immediate Rollback<br/>Emergency CAB approval]
Q1 -->|High<br/>Major feature broken| Q2{Deployment method?}
Q1 -->|Medium/Low<br/>Cosmetic or minor| R2[Forward-Fix<br/>Deploy patch in<br/>next window]
Q2 -->|Unlocked Packages| R3[Install Previous<br/>Package Version<br/>sf package install]
Q2 -->|CLI Deployment| Q3{Destructive changes<br/>included?}
Q2 -->|Change Sets| R4[Manual Reversal<br/>Redeploy prior config<br/>No automated rollback]
Q3 -->|No| R5[Redeploy Previous<br/>Git Commit<br/>sf project deploy]
Q3 -->|Yes| R6[Manual Recovery<br/>Recreate deleted<br/>components + redeploy]
R1 --> Q2
style R1 fill:#e76f51,stroke:#c45a3f,color:#fff
style R3 fill:#2d6a4f,stroke:#1b4332,color:#fff
style R4 fill:#e76f51,stroke:#c45a3f,color:#fff
style R5 fill:#4ecdc4,stroke:#3ab5ad,color:#000
style R6 fill:#e76f51,stroke:#c45a3f,color:#fff
style R2 fill:#2d6a4f,stroke:#1b4332,color:#fff
Destructive Changes Block Rollback
Destructive changes (deleted fields, objects, classes) are the biggest rollback risk. Once metadata is deleted in production, restoring it requires manual recreation — there is no automated undo. This is why every deployment plan must document destructive changes separately and why they require explicit CAB approval.
How to Use These Guides in a CTA Scenario
- Identify the lifecycle decisions required by the scenario (not all will be relevant)
- Walk through each relevant flowchart with the scenario’s specific constraints
- Document your path and the answers to each decision question
- Present the decisions as part of your governance and DevOps architecture
- Connect decisions to risk mitigation — many lifecycle choices directly reduce project risk
Review Board Strategy
In the CTA Review Board, governance and DevOps are often combined into a single artifact section. Show your environment topology diagram, your CI/CD pipeline, and your governance structure together to demonstrate a cohesive lifecycle strategy.
Related Topics
- Environment Strategy — Detailed environment design
- CI/CD & Deployment — Full CI/CD pipeline architecture
- Testing Strategy — Comprehensive testing approach
- Governance Model — Governance structures in depth
- Risk Management — How lifecycle decisions mitigate risk
- Best Practices — DevOps best practices and anti-patterns
Sources
- Salesforce Architects: Release Management Decision Guide
- Salesforce Architects: Environment Planning
- Atlassian: Comparing Git Workflows
- Martin Fowler: Continuous Integration
- CTA Study Groups: Community patterns for lifecycle decision frameworks