Cost Governance and Decision-Making - Patterns
Learn more about Well-Architected Resource and Cost Optimization → Cost Monitoring and Governance
Patterns
| Where to look | What good looks like |
|---|---|
| Setup → Company Settings → System Overview Reports & Dashboards → Cost Utilization Folder | ✅ Pattern: Create executive dashboard showing $2.1M annual Salesforce investment distributed across 1,200 licenses (68% active weekly), 450 GB storage (72% capacity), and 15 sandboxes (11 actively used) ✅ Dashboard reveals $400K optimization opportunity in inactive licenses and unused sandboxes through operational metrics |
| Reports & Dashboards → Investment Dashboard Setup → Company Information | ✅ Pattern: Investment dashboards show spending by business unit or cost center, sandbox and environment costs by development team, add-on product costs with utilization metrics ✅ Project spending based on current growth trends enabling budget accountability and allocation discussions |
Anti-Patterns
| Where to look | What bad looks like |
|---|---|
| Accounting System → Invoice Records Only | ⚠️ Anti-Pattern: Finance team has invoice visibility showing total spending but no operational metrics revealing utilization patterns or optimization opportunities ⚠️ Cannot identify inactive licenses, unused sandboxes, or capacity waste without operational dashboards |
Patterns
| Where to look | What good looks like |
|---|---|
| Reports & Dashboards → License Budget Alerts Setup → License Allocations | ✅ Pattern: License budgets establish allocation targets by department with alerts when approaching capacity ✅ Prevent uncontrolled provisioning creating budget overruns discovered only at renewal time through proactive monitoring |
| Setup → Storage Usage → Alert Rules Flow → Storage Warning Automation | ✅ Pattern: Automated alert triggers at 70% storage utilization providing 4-month lead time to implement archival strategy before hitting limits ✅ Prevents emergency data deletion or expensive overage charges through proactive notification with adequate response time |
| System Overview → API Usage Alerts Event Monitoring → API Threshold Warnings | ✅ Pattern: API budgets track consumption against limits with alerts at example utilization thresholds such as 70% and 85% ✅ Enable proactive optimization rather than reactive emergency responses after limits cause integration failures or user disruption |
| Setup → Sandbox Management → Budget Controls Flow → Sandbox Request Approval | ✅ Pattern: Sandbox budgets control environment proliferation through allocation limits and approval processes for additional environments ✅ Prevent teams from creating unlimited temporary environments that transition to permanent status without justification |
Anti-Patterns
| Where to look | What bad looks like |
|---|---|
| No Budget Controls → Uncontrolled Spending | ⚠️ Anti-Pattern: No license budgets or approval workflows allowing unlimited provisioning across departments without visibility to spending patterns ⚠️ Budget overruns discovered at renewal when aggregate spending exceeds planned investment by 30-40% due to uncontrolled growth |
| No Storage Alerts → Reactive Overages | ⚠️ Anti-Pattern: Storage overage discovered during renewal negotiation requiring immediate purchase at premium pricing without time for archival evaluation ⚠️ Missing advance warning that would enable archival implementation before overages occur, resulting in 2-3x higher costs |
Patterns
| Where to look | What good looks like |
|---|---|
| Reports & Dashboards → Showback Report Reports → Cost by Business Unit | ✅ Pattern: Quarterly showback report shows Sales Cloud consuming 45% of license investment, Service Cloud 30%, and Operations 25% ✅ Enables executive discussion about whether investment distribution aligns with business value priorities and strategic focus areas |
| Financial System → Chargeback Allocation Reports → Department Cost Allocation | ✅ Pattern: Allocation rules distribute costs appropriately: license costs by user department assignment, sandbox costs by owning development team ✅ Integration costs allocated by business process consuming integration services, development costs by requesting project funding source |
| Reports & Dashboards → Sandbox Cost Report Setup → Sandbox Usage by Team | ✅ Pattern: Sandbox and environment costs allocated by owning development team creating direct accountability for environment management ✅ Teams see their sandbox investment enabling informed decisions about environment requests and lifecycle management |
Anti-Patterns
| Where to look | What bad looks like |
|---|---|
| IT Budget Only → No Business Unit Visibility | ⚠️ Anti-Pattern: All Salesforce costs allocated to IT budget without business unit visibility ⚠️ Business stakeholders treat platform as “free” and make requests without cost awareness or investment prioritization discussions |
| No Usage Attribution → Cannot Optimize | ⚠️ Anti-Pattern: Total spending visible but no attribution to business units, projects, or teams making optimization decisions impossible ⚠️ Cannot identify which investments deliver value and which consume budget without proportional returns |
Patterns
| Where to look | What good looks like |
|---|---|
| Collaboration → FinOps Team Meetings → Monthly Cost Review | ✅ Pattern: Cross-functional collaboration between finance, architecture, and business stakeholders ensures cost decisions consider business value alongside spending impact ✅ FinOps brings finance expertise to architecture discussions and technical understanding to budget planning creating balanced decisions |
| Calendar → Optimization Reviews Process → Regular Cadence | ✅ Pattern: Continuous optimization cadence with monthly anomaly review, quarterly utilization audit, and annual comprehensive TCO assessment ✅ Regular review cycles prevent cost drift and validate that spending growth corresponds to business value growth through systematic analysis |
| Tools → License Cost Calculator Architecture → TCO Models | ✅ Pattern: FinOps team provides architects with license cost calculator showing TCO implications of different license type selections ✅ Enables cost-aware design decisions during architecture phase rather than discovering costs after deployment when changes are expensive |
| Training → Cost Awareness Program Documentation → Cost Impact Guidelines | ✅ Pattern: Cost awareness education ensures teams understand how architectural decisions affect total cost of ownership ✅ Architects design better solutions balancing capability and investment; developers write more efficient automation respecting governor limits and API consumption |
| Automation → Cost Monitoring Scripts Dashboards → Auto-Generated Reports | ✅ Pattern: Automated monitoring of utilization, optimization opportunities, and spending reports reduces manual effort ✅ Scales with organizational complexity without linear headcount growth, enabling cost awareness across growing platform footprint |
Anti-Patterns
| Where to look | What bad looks like |
|---|---|
| Annual Only → No Feedback Loop | ⚠️ Anti-Pattern: Cost visibility limited to annual renewal discussions providing no feedback loop ⚠️ Architecture teams cannot understand or optimize spending patterns during design phase when changes are least expensive |
| Siloed Decisions → No Cross-Functional Input | ⚠️ Anti-Pattern: Architecture decisions made without finance input, budget decisions made without technical understanding ⚠️ Results in solutions that exceed budget without business justification or budget cuts that eliminate capabilities delivering critical value |
| No Cost Education → Uninformed Decisions | ⚠️ Anti-Pattern: Teams make architectural decisions without understanding cost implications because no training or visibility exists ⚠️ Accumulates waste through thousands of micro-decisions that individually seem minor but compound to significant spending |
Patterns
| Where to look | What good looks like |
|---|---|
| Documentation → Architecture Decision Record Process → ADR Template | ✅ Pattern: Architecture Decision Record for customer portal includes license analysis: 10,000 external users with Customer Community Plus licenses ($6 per user monthly = $720K annually) ✅ Compares versus custom web application with API integration ($250K initial + $50K annual maintenance), recommending custom application with 2-year payback |
| Governance → Architecture Review Board Process → Cost Review Criteria | ✅ Pattern: Architecture Review Board includes cost perspective alongside functional and non-functional requirements producing better-aligned investment decisions ✅ Cost is one input to architectural decisions ensuring organizations invest appropriately in capabilities that matter while avoiding waste |
| Documentation → ADR Cost Section Templates → TCO Projection | ✅ Pattern: Include cost impact assessment in Architecture Decision Records documenting major design choices ✅ Require TCO projection for solutions exceeding defined investment thresholds ($100K or organizational policy) with documented assumptions |
| Process → License Impact Review Architecture → Premium Feature Analysis | ✅ Pattern: Evaluate license implications during solution design determining whether design requires premium licenses or add-ons ✅ Assess integration cost implications before committing to patterns affecting API consumption or middleware licensing requirements |
Anti-Patterns
| Where to look | What bad looks like |
|---|---|
| No Cost Consideration → Emergency Redesign | ⚠️ Anti-Pattern: Architecture designed without cost consideration, discovering at implementation planning that proposed approach requires $720K annual investment ⚠️ Causes emergency redesign under time pressure with inferior outcomes compared to cost-aware design from start |
| Post-Design Cost Discovery → Wasted Effort | ⚠️ Anti-Pattern: Architecture complete before cost analysis revealing approach exceeds budget by 3x ⚠️ Wasted design effort and delayed delivery while team redesigns within budget constraints that were known from project start |
Patterns
| Where to look | What good looks like |
|---|---|
| AppExchange → Solution Evaluation Analysis → TCO Comparison | ✅ Pattern: Document generation solution evaluation: AppExchange option at $15 per user monthly ($18K annually for 100 users) versus custom development at $80K initial build + $15K annual maintenance ✅ AppExchange breaks even in 5 years with faster deployment and lower risk for commodity capability |
| AppExchange → Strategic vs Commodity Architecture → Capability Classification | ✅ Pattern: Commodity capabilities (document generation, e-signature, address enrichment) purchased from AppExchange where solutions are mature with strong reviews ✅ Proprietary pricing algorithm providing competitive advantage built custom with full control over roadmap and differentiation |
| Spreadsheet → 3-5 Year TCO Model Analysis → Cost Projection | ✅ Pattern: Build TCO models projecting 3-5 year total costs revealing complete investment picture beyond initial expenses ✅ AppExchange carries compounding annual subscription but includes maintenance; custom requires one-time development plus 15-20% annual maintenance |
| Integration Analysis → Custom vs Platform TCO → Integration Comparison | ✅ Pattern: Custom integration development: $150K initial build + $30K annual maintenance + team learning curve versus MuleSoft license: $75K annual + faster integration delivery ✅ MuleSoft provides reusable patterns across all integrations reducing per-integration cost as portfolio grows |
| Documentation → Build vs Buy ADR Process → Evaluation Framework | ✅ Pattern: Architecture Decision Record documents build vs buy evaluation with scoring matrix weighting strategic value, TCO, timeline, capability, and exit costs ✅ Creates audit trail for future reassessment when requirements evolve or vendor landscape changes |
Anti-Patterns
| Where to look | What bad looks like |
|---|---|
| Always Build → Wasted Development | ⚠️ Anti-Pattern: Building custom document generation solution because “we have developers available” without modeling 5-year TCO ⚠️ AppExchange delivers better value for commodity capability; custom development wastes capacity on undifferentiated functionality |
| Always Buy → Missing Differentiation | ⚠️ Anti-Pattern: Purchasing all capabilities from AppExchange including strategic differentiators because “faster to deploy” ⚠️ Competitors using same AppExchange solutions gain same capabilities eliminating competitive advantage from platform investment |
| Single Meeting Decision → No Analysis | ⚠️ Anti-Pattern: Build vs buy decision made in single meeting based on initial cost comparison without systematic evaluation or documentation ⚠️ Missing strategic value assessment, TCO projection, timeline requirements, capability evaluation, and exit cost analysis |
| Incomplete Cost Model → Hidden Costs | ⚠️ Anti-Pattern: Building custom integration because “we already have developers” without modeling 5-year maintenance burden ⚠️ Maintenance typically consumes 15-20% of initial development cost annually plus platform compatibility effort not visible in initial decision |
Patterns
| Where to look | What good looks like |
|---|---|
| Process → Strategic Value Assessment Analysis → Differentiation Matrix | ✅ Pattern: Systematize build vs buy decisions through consistent evaluation preventing ad-hoc decisions based on incomplete analysis ✅ Assess strategic value first: core competitive differentiators warrant custom investment; commodity capabilities favor purchasing proven solutions at lower total cost |
| AppExchange → Solution Maturity Review Analysis → Vendor Stability Check | ✅ Pattern: Evaluate available AppExchange options reviewing solution maturity, customer ratings, ISV stability, feature alignment, and pricing models ✅ Immature solutions with few customers carry higher risk; prioritize proven solutions with strong reviews and stable vendor financials |
| Spreadsheet → Sensitivity Analysis TCO → Assumption Documentation | ✅ Pattern: Model 3-5 year TCO for viable options including all cost categories: licenses/subscriptions, implementation effort, maintenance burden, enhancement development, platform compatibility ✅ Use spreadsheet enabling sensitivity analysis on assumptions showing how outcome changes if growth rates or utilization differs from projections |
| Timeline → Market Timing Analysis Strategy → Time-to-Value Assessment | ✅ Pattern: Assess timeline requirements showing custom development requires months to years depending on complexity while AppExchange deploys in weeks ✅ Market timing may drive buy decision despite higher long-term cost when competitive pressure or business opportunity requires immediate capability |
| Analysis → Exit Cost Evaluation Risk → Vendor Lock-In Assessment | ✅ Pattern: Evaluate exit costs and vendor concentration risk asking how difficult is switching if chosen option proves inadequate ✅ Consider vendor acquisition or discontinuation risk and solution portability if requirements change, preferring lower exit costs providing strategic flexibility |
| Capability → Honest Assessment Team → Maintenance Capacity Review | ✅ Pattern: Consider organizational capability honestly evaluating whether custom solutions can be maintained long-term ✅ Custom solutions require ongoing internal expertise for maintenance and evolution; organizations lacking this capability should purchase despite potentially higher cost |
Anti-Patterns
| Where to look | What bad looks like |
|---|---|
| No Framework → Inconsistent Decisions | ⚠️ Anti-Pattern: Build vs buy decisions vary by project team preferences without consistent evaluation criteria ⚠️ Some teams always build, others always buy, creating architectural inconsistency and suboptimal total investment across platform |
| Build Everything → Undifferentiated Effort | ⚠️ Anti-Pattern: Building everything custom because “we want control” without distinguishing between commodity capabilities and strategic differentiators ⚠️ Wastes development capacity on undifferentiated functionality that mature AppExchange solutions provide at lower total cost |
| Initial Cost Only → Incomplete Analysis | ⚠️ Anti-Pattern: Decision based solely on initial cost comparison: “AppExchange is $20K, custom build is $15K, so we’ll build” ⚠️ Missing 3-5 year TCO showing custom solution costs $15K initial + $3K annual maintenance while AppExchange includes all maintenance in subscription |
| Optimistic Capability → Failed Maintenance | ⚠️ Anti-Pattern: Choosing custom development assuming team can maintain solution despite no current capacity or expertise ⚠️ Technical debt accumulates as maintenance is deferred; solution eventually becomes unmaintainable requiring expensive replacement |