Platform pain
Documented limits and gotchas of the platforms running enterprise route-to-market today.
When a dropped photo costs a rep their bonus
When a retail-execution app drops a rep's photo or clears their answers, the lost sync becomes a payroll dispute. Why persistence bugs hit incentive pay.
Deploy to find your syntax errors: debugging SAP CPI
Debugging SAP CPI means deploying to find Groovy syntax errors, racing a 10-minute trace window, and watching per-message pricing inflate the bill.
Earned today, visible tomorrow: loyalty's batch accrual lag
Packaged loyalty platforms accrue engagement points in batch once a day, so members wait up to 24 hours. Why batch accrual lag quietly breaks loyalty mechanics.
Enterprise loyalty, enterprise rigidity: Epsilon reviews
Epsilon PeopleCloud Loyalty reviews flag campaigns you cannot edit after launch, speed limits and thin public data. What the flexibility limits mean for buyers.
The integration team everyone waits for
Why a centralized integration team becomes the bottleneck every cross-system feature waits behind, and what the shared middleware queue really costs.
The 29-day sandbox and other deployment stories
Why Salesforce deployment is hard: change sets can't roll back, config records won't travel, full sandboxes refresh every 29 days, and three releases a year.
The rule builder nobody can read six months later
Why the Talon.One rule builder is unreadable six months on: reviewers report missing descriptions, a freezing UI, 4-hour support caps and usage pricing.
'Works offline' until it doesn't: the field-data reality
Field apps that claim to work offline hang or take 30 minutes to open. Why offline-first field data collection is an architecture, not a checkbox.
Does IBM Sterling OMS need its own ops team?
IBM Sterling OMS is the DOM flagship, but its heavy install, multi-JVM footprint and escalation-tier support mean order orchestration needs its own ops team.
SPDD, SPAU and the 35-minute transport
Why SAP S/4HANA upgrades slow commerce teams: SPDD and SPAU modification adjustment on every upgrade, plus community-reported 35-minute transports to Quality.
Use it or lose it: CrowdTwist services hours that expire
Oracle CrowdTwist professional services hours expire in six to twelve months and forfeit unused, per Oracle's own terms. Read the clause before signing.
7,000 tasks a day: how Workato recipe pricing compounds
Workato bills per task, not per order: a 7-action recipe run 1,000x a day is 7,000 tasks. How recipe-tier pricing, overages and connector surcharges compound.
Why Antavo scores 59 out of 100 on implementation
Antavo scores 59/100 on ease of implementation and 54 on customization, below the loyalty category average. What the numbers mean for B2B beer loyalty.
$17k per connection and the batch that fails whole
Boomi connection pricing runs near $17,016 each per year, and its single-JVM Atoms fail whole batches on one bad record. What that costs route-to-market.
The software your industry runs on has no reviews
Beverage distribution software has almost no public reviews. Why DSD, route-accounting and telesales tools have near-zero corpora, and what to vet instead.
Why Dynamics 365 Commerce isn't plug-and-play retail
Is Dynamics 365 Commerce plug-and-play? No. A practitioner's look at why data migration, POS connectivity and channel inventory sync break by design.
API-only loyalty: the programme is still yours to build
An API-only loyalty platform like Eagle Eye AIR ships a promotions engine, not a finished programme. Here is why the build lands on you or your SI.
When SAP sunsets the marketing stack you built on
The SAP Marketing Cloud sunset ends support in December 2026 and forces an Emarsys migration that is a rebuild, not an upgrade — with thin observability.
Nine document types that bill you for your own orders
SAP Digital Access and indirect access bill you when external systems post sales orders or invoices to SAP ERP. Nine document types and the Diageo precedent.
Status 51: the IDoc queue where orders go to wait
IDoc status 51 means SAP accepted an inbound document but refused to post it. Why stuck IDocs pile up, why BD87 resists automation, and how to read them first.
Per-conversation AI pricing and the budget you can't forecast
Per-conversation AI pricing is unpredictable: Salesforce dropped $2-per-conversation Agentforce for Flex Credits, but the budget forecast problem remains.
2,000 buyer groups and your search silently breaks
Salesforce B2B Commerce entitlement limits index only the first 2,000 buyer groups per product for search. Here's why brewer segmentation hits the cliff.
Governor limits: when your promo logic hits an invisible wall
Salesforce governor limits cap B2B commerce and loyalty logic at fixed per-transaction ceilings that Support cannot raise. Why bulk promo rules break.
The open-source loyalty engine that isn't open anymore
Open Loyalty's open-source edition ships as unsupported GitHub code, while the real product is a metered enterprise API fenced by documented hard limits.
The WMS mods that vanish with every upgrade
Why do Manhattan and Blue Yonder WMS customizations vanish on upgrade? A diagnosis of why brewery depot and returnables mods break, and what it costs.
Half-hour builds, 90-minute deploys: SAP Commerce Cloud v2
Why SAP Commerce Cloud v2 build times run to half an hour and deploys to 90 minutes: a practitioner diagnosis of CCv2's rebuild-from-scratch pipeline.
Your middleware retires in 2027. The migration tool does 60%.
SAP PI/PO hits end of maintenance on Dec 31, 2027 and SAP's migration tool automates only 60-70%. What stays manual, why it takes a year, and what it freezes.
The Akeneo PIM features behind the enterprise gate
Akeneo Community Edition gates workflow, versioning, rules and asset management behind Enterprise, is now unsupported, and barely scales with added hardware.
'One week to test is not enough': the forced-update treadmill
Dynamics 365 One Version forces monthly quality updates and mandatory service updates with a one-week test window, leaving the regression risk on the customer.
Salesforce Loyalty limits you can only raise by support case
Salesforce Loyalty Management limits are extendable only via a support case to the Feature Activations and Limits Team; accrual runs under Apex governor caps.
No migration tool: SAP Accelerator's storefront dead end
SAP Commerce Accelerator storefront hits end of maintenance in 2027 with no migration tool. Why the Composable Storefront rewrite costs more than the quote.
SessionM loyalty: 'incredibly expensive for what you get'
A field postmortem on Mastercard SessionM: why loyalty features need custom development, why data egress stays hard, and why roadmap dates slip by years.
MuleSoft vCore pricing: an Abrams tank for a Corolla
MuleSoft vCore pricing bills reserved compute in full, forces overprovisioning, and stacks add-ons plus roughly 20% renewal hikes. Why it runs like tanks.
'You pretty much need an IT department': Virto Commerce
Virto Commerce is a .NET framework, not a turnkey product: in production it needs in-house C# engineers, and reviewers say you basically need an IT department.
$48,000 a year to look at your own data
Salesforce Connect lists near $4,000 per connection a month to surface external objects. Here is why reading your own ERP data through it ends up costing twice.
Dynamics dual-write: when CRM and ERP disagree for 10 days
Dynamics 365 dual-write keeps CRM and ERP in sync until it stalls: the 10-lookup limit, 500k-row caps, and stuck initial syncs that leave the two out of step.
Chasing .NET: the platform upgrade treadmill
A .NET-based commerce platform inherits Microsoft's runtime calendar: a forced major-version upgrade roughly every two years. Inside the .NET upgrade treadmill.
The trade-promo module only consultants can touch
Why can only consultants touch your Vistex trade-promotion module? Scarce config skills raise TCO and slow every pricing move on a quarter of revenue.
Why your SAP ImpEx job runs all day
A SAP Commerce ImpEx job that runs all day while the same file imports in minutes is a batch-culture problem: single-threaded loads and hotfolder retries.
Why loyalty implementations run 90 days to 12 months
Loyalty platforms take 90 days to 12 months to implement, by vendors' own admission. Here's why loyalty implementation time varies fourfold and its later cost.
500 seconds and no log: batch jobs in F&O
Dynamics 365 F&O batch jobs fail silently: five default retries turn a 60-second failure into ~500 seconds with no log, and stuck jobs need a manual reset.
Spaghetti in a box: the ESB pattern that follows you to Kafka
An enterprise service bus swapped for Kafka keeps the ESB antipattern: centralized transformation logic recreates the spaghetti. The fix is schema ownership.
When your commerce platform goes end-of-life under you
CloudCraze went support-only in Winter 2021. What happens when a commerce platform goes end-of-life under you, and why a frozen managed package costs money?
Base, attach, and the costliest Dynamics licensing error
Dynamics 365 base and attach licensing is where budgets quietly leak: duplicate base licenses, a 20-user Finance minimum, and easy-to-overbuy CRM tiers.
1.9 stars: when the field app is the weakest link
Salesforce Maps holds a 1.9-star App Store rating: reps report crashes every 20 minutes and battery drain. Why the field app is your CRM's weakest link.
The ecosystem tax: dozens of partners, not thousands
A small partner ecosystem — dozens of delivery firms, not thousands — concentrates commerce-platform risk in one SI. Plan your bus factor before you sign.
Adding up the iPaaS bill for one mid-size brewer
A worked example of the iPaaS bill for a mid-size brewer's route-to-market stack: MuleSoft, Boomi and CPI line items, the hidden overages, and the in-house fix.
IPU pricing: why Informatica lands 40-60% over budget
Informatica IPU consumption pricing routinely runs 40-60% over budget. Why the meter defies forecasting, and what the March 2026 PowerCenter EOL forces on you.
When the platform's modules move faster than your team
Platform module churn and breaking releases turn every upgrade into custom-code rework. Why a fast-moving commerce core taxes your team, and how to contain it.
Why loyalty points liability still lives in a spreadsheet
Why loyalty points liability still lives in a spreadsheet: platforms export a balance and finance rebuilds breakage and IFRS 15 and ASC 606 disclosures by hand.
Empties in SAP: bring your own Z-tables
SAP empties management is built for returnable packaging, not beverage one-way deposits — the reason teams build Z-tables, reports and excise add-ons.
$250/GB/month: Salesforce storage math nobody does upfront
Salesforce data storage runs ~$250/GB per month, roughly 10,000x commodity S3. Here's why order-heavy B2B orgs hit hidden Salesforce storage costs fast.
The $500k storefront you already paid for once
SAP Composable Storefront migration cost: why moving off the Accelerator is a $350K-$500K rebuild, not an upgrade, and why you re-buy a storefront you own.
Your nightly ETL is a 14-hour lie about inventory
A nightly ETL leaves up to 14 hours where your stock is a lie: stale availability, wholesale oversells and weekly reconciliation. Why batch sync fails beer RTM.
Enterprise velocity
Why large organizations ship slowly — the mechanics of the drag.
Empty shelves, full warehouses: master data as destiny
Garbage master data produces full warehouses and empty shelves at once. Target Canada and Haribo's SAP go-live show what bad master data does to a supply chain.
45% over budget, half the value: the base rate for big IT
McKinsey and Oxford studied 5,400+ large IT projects: 45% ran over budget and delivered 56% less value. That is the base rate for any big platform program.
42% of engineering time never touches a feature
Developers spend ~42% of engineering time on maintenance, not features. Where that time really goes in enterprise stacks, and why four vendors make it worse.
Your feature spends 80% of its life waiting
Most software teams run at 15-40% flow efficiency, so features spend 60-85% of their lead time waiting in queues, approvals and handoffs — not coding.
The first two years of offshore are a productivity loan
Offshore knowledge transfer costs and a ~20% first-two-year efficiency drop leave realistic net savings near 10-15%, and rotation resets the productivity loan.
The 300,000-hour meeting is on your calendar too
Bain found a weekly executive committee that cost 300,000 hours a year. Here is how your steering committees and release boards hide the same coordination cost.
Frozen by your own upgrade: the ERP freeze window
An ERP freeze window is when a multi-year S/4HANA migration freezes every system tied to the financial core, stalling your route-to-market roadmap.
Knowledge transfer decks are where context goes to die
Knowledge transfer decks fail because the SI staffing model rotates consultants every 12-18 months, so you pay day rates to relearn your own system's context.
The $125M order system reps refused to use
Avon's $125M order management write-off shows why reps refused a system that ran as designed, and why order-capture usability is the real adoption case.
Every discovered dependency generates an invoice
Why systems integrator change requests double budgets: the economics of $30-50K monthly run rates, 20-30% CR markups, and GSA rate-card reality.
Which digital layers must wait for ERP harmonization?
A top-3 brewer runs 43-45 ERP instances. Why ERP harmonization takes years, and which route-to-market layers you don't need to freeze while you wait.
The meeting that costs more than the feature
A cross-vendor feature spends more on coordination than on the build. Why four vendor boundaries and Brooks's n(n-1)/2 make the meeting cost more than the code.
80% keep-the-lights-on: reading your IT budget honestly
Reading your IT budget honestly: why maintenance and keep-the-lights-on spend runs 55-80%, and how integration and licensing quietly compound the tax.
Excel is your real route-to-market platform
Shadow Excel runs the route-to-market work the platform can't model: empties, shortage allocation, promo compliance. Why spreadsheets win and what they cost.
15.5 months is the median, not the horror story
The median ERP implementation runs 15.5 months per Panorama's 2024 report. Here is why a normal, on-track project still freezes route-to-market delivery.
The go-live that sued its integrator
National Grid's big-bang SAP go-live broke payroll and cost over $585m to fix; Wipro settled for $75m. Why fixed-bid contracts pay integrators to ship broken.
The 12-month purchase of a 6-week feature
Enterprise software takes 6-18 months to buy while the feature ships in weeks. Why the procurement cycle outlasts the business case that justified it.
Your change advisory board is making releases riskier
Change advisory boards correlate with slower delivery and worse stability, and don't cut change failure rate. Here's the evidence and how to replace a CAB.
The quarterly release train guarantees quarterly features
A quarterly release train doesn't cap feature speed, it sets the floor. Batch-size economics and DORA lead-time bands show why features wait for the train.
AI and engineering throughput: the honest numbers
What AI actually does to engineering throughput: RCTs show ~26% more pull requests, but gains fall under 10% on complex work and one trial saw devs 19% slower.
208x more deploys, 106x faster: what elite actually means
DORA elite performers deploy 208x more often and 106x faster than low performers. Here's what 'elite' measures and how enterprise RTM teams close the gap.
Six sign-offs, zero accountability: the UAT chain
Multi-vendor UAT sign-off chains yield six signatures and zero accountability. Why vendor boundaries cause the inversion, and what the seam-level delay costs.
Beer route-to-market
Pain specific to beer distribution: empties, combos, telesales, OpCo rollouts.
Perfect store programs die in the last mile of data
Perfect store photo recognition works; the pipeline behind it doesn't. Why shelf-scan data lands days too late to fix the store, and where the real fix lives.
If the app needs 4G, the fragmented trade doesn't have it
Offline-first order capture keeps B2B ordering working where the fragmented trade has no reliable 4G. Why enterprise storefronts fail offline, how to fix it.
The truck that delivers full and returns empty-handed
Beer delivery routes plan the drop but not the empties pickup, so the return leg runs empty. Plan drop and returnables collection as one event-driven flow.
Why your ERP still can't tell you who has your kegs
Standard ERP can't track returnable kegs or deposit liability per outlet. Here's why empties tracking becomes a spreadsheet and where SAP EA-CP falls short.
Your distributors know your customers better than you do
Brewers see sell-in but not sell-out: how distributor data fragmentation and DMS silos hide outlet-level demand from your ERP, and what closing the gap takes.
The anatomy of a combo promo that took two quarters to ship
Why a combo promo takes two quarters to ship in a bought route-to-market suite: one mechanic crosses four vendor backlogs, catalog, loyalty and deposit netting.
Suggested orders: the 26% revenue lever in your order flow
Suggested order algorithms lift net revenue per delivery, but only when live stock, history and promos sit in one place. Why they decay and how to fix it.
Design a returnables ledger that actually reconciles
Design a returnables and keg-deposit ledger that actually reconciles: an event-sourced balance per outlet, deposit netting on the invoice, pickups routed.
Telesales is your most expensive order-capture channel
In beer distribution, telesales is the most expensive order-capture channel: assisted orders cost about 7x self-service and miss the 20% placed after hours.
59% of trade promotions lose money. Can you tell?
Why do trade promotions lose money? 59% fail globally and most CPGs can't tell which, because order, redemption and cost data never share one live stream.
Why every OpCo rollout restarts from zero
Why per-OpCo commerce rollouts take years: with no shared multi-tenant core, every country rollout becomes a re-implementation instead of configuration.
Points liability: the number your CFO sees before you do
Loyalty points liability hits the balance sheet first: per-market SKU earn rules and challenge payouts make points liability accounting a reconciliation job.
One promo, thirty legal regimes
Alcohol trade-promotion compliance differs by jurisdiction: loyalty-point bans, minimum unit pricing and tied-house rules vary per market, not per brand.
Case notes
Short notes on things the BrewOS team fixed inside real (unnamed) operations.
Case note: credit checks that stopped blocking order capture
How we moved real-time credit limit checks off the synchronous ERP path: credit state as an event-driven projection, with a hard-block only at delivery.
Case note: a loyalty mechanic in five days, not five months
How we shipped a returnables-aware loyalty mechanic in five days, not the months an enterprise loyalty build takes: rules as config on one shared event bus.
Case note: the console that retired the printed call sheet
How a telesales console replaced printed call sheets: one live customer timeline, a per-outlet suggested order, and why the commission model had to change.
Case note: order capture from 13 seconds to sub-second
How we took B2B order capture from 13 seconds to sub-second: precompute price and availability per outlet, cache at the edge, and validate off the hot path.
Case note: answering the CFO's question the same afternoon
How we answered a CFO's premium-mix analytics question the same afternoon from an event store, no BI backlog ticket, plus the semantic layer we added after.
Case note: replacing the commerce layer, SAP FI untouched
How we replaced the commerce layer without touching SAP FI: a strangler pattern, IDoc coexistence and per-capability cutover, reconciled to the ledger daily.
Case note: a price-ladder change, every channel, same day
How we made a price-ladder change reach every channel the same day - app, telesales, reps and invoicing on one effective date, from one event not four re-keys.
Case note: ending the monthly empties-balance argument
A BrewOS field note on cutting empties-balance disputes: give each outlet a per-container ledger in the app, reconcile against a signed event log, not memory.
Case note: a new market as configuration, not a project
We launch a new market as configuration, not a project: catalog, currency, tax, language and promo rules as per-market config over one codebase, in weeks.
Case note: one on-call rota for the whole stack
What incident response looks like with one on-call rota for the whole stack instead of four vendors on a bridge call: one event bus, one trace.
Case note: closing the loop from rep visit to next order
Closing the loop between the rep visit and the next order: put visit events on the same bus as orders so a stock-out becomes a same-day suggested order.
Case note: retiring the 2 a.m. stock sync
How we replaced a nightly batch stock sync with event-driven availability per depot, cut overselling, and made promise dates that hold. A BrewOS field note.
Fix patterns
Patterns that actually remove the drag — and how to apply them.
MCP and the end of the integration project
An MCP server over a public API on live domain events ends the integration project: analytics, RGM models and AI agents plug in with a key, not a pipeline.
The strangler fig: replacing a commerce stack while it runs
How the strangler fig pattern lets you replace a CRM, commerce and loyalty stack while it keeps running, with SAP in place, and how to sequence it safely.
How to design a platform pilot your board can actually judge
How to design an enterprise platform-replacement pilot your board can judge: one OpCo, written exit numbers, coexistence with the incumbent, and code you own.
One event bus vs. a middleware translation chain
Event bus vs middleware integration: why point-to-point ESB mappings decay into a translation chain, what one event stream changes, and how to migrate off it.
Build vs. buy changed in 2024. Your RFP hasn't noticed.
Build vs. buy changed in 2024: AI-augmented teams of ~20 engineers now build what RFPs still price for hundreds - and where buying still genuinely wins.
Cost-to-serve: the metric that justifies the whole rebuild
Cost-to-serve is the metric that justifies a route-to-market rebuild: how to compute cost per order across capture channels honestly and where savings hide.
Your event log is an audit trail SOX auditors will like
Event sourcing gives you a SOX audit trail by construction: an immutable event log with actor, timestamp and replayable state that satisfies ITGC evidence.
Rollout as a config change: feature flags across OpCos
Feature flags per OpCo turn a phased rollout into a config change: ship dark everywhere, enable each market after local validation, roll back with a flip.
Conway's law is your integration bill
Conway's law is why your integration bill climbs: four RTM vendors become four boundaries. How one stream-aligned team and one domain model repeal the tax.
Why AI agents need the whole system in context
AI agents need full system context to plan, estimate and execute — not one module at a time. Why fragmented vendor stacks starve them, and how to fix it.