Platform pain
Deploy to find your syntax errors: debugging SAP CPI
Because SAP Cloud Integration gives you no local Groovy debugger, the only way to catch a syntax error is to deploy the integration and watch it fail. Then you race a clock: trace-level logging auto-resets after ten minutes and the payload is purged after sixty, so you re-deploy to reproduce. Meanwhile the licence meter counts every 250 KB slice of every message, turning a splitter or a retry storm into a line item.
Why can't you catch a syntax error before you deploy?
The Groovy script step in Cloud Integration compiles on the server, inside the deployed integration flow. There is no local runtime, no breakpoint, no watch window. The community consensus is blunt: the only way to check for syntax errors is to deploy the integration. A typo in a closure, a missing import, a wrong method signature — none of it surfaces in the browser editor. You save, you deploy, you wait for a worker node to pick up the artifact, and only then does the compiler tell you what a linter would have told you in milliseconds on your laptop.
Each cycle is minutes, not seconds. For a script of any real complexity you will run that loop many times before the flow even reaches the logic you meant to test. The feedback latency is the tax, and you pay it per keystroke-worth of uncertainty.
What happens after you finally reproduce the failure?
Say a flow fails in production. You raise the log level to Trace to capture the message body and the exact step that threw. Now the retention rules matter, and as documented by SAP as of June 2026 they are unforgiving. Message processing logs are kept for thirty days, but the Trace level itself is not durable: SAP resets it to the previous level after ten minutes by default, and the traced payloads are purged after roughly sixty. If the failing message does not arrive inside that window, you have captured nothing.
| What you get | How long it lasts |
|---|---|
| Message processing logs (headers, status) | 30 days |
| Trace log level stays on | ~10 minutes, then auto-reset |
| Traced message payloads | Purged after ~60 minutes |
For a chatty, high-frequency interface this is survivable: switch on Trace, wait for the next message, read the body. For a nightly order batch or a twice-a-day settlement run it is not. The failing message may not come again for hours, long after Trace has switched itself off. You end up manufacturing synthetic messages to force a reproduction inside the ten-minute window — exactly the kind of batch-shaped latency that makes low-frequency integrations so unpleasant to operate.
Why does message volume turn into licence exposure?
The second cost is not developer time; it is the invoice. SAP Integration Suite meters traffic by message, and a message is not what you would assume. Per the vendor-neutral analysis at integration://excellence, as of June 2026:
Each message is counted up to 250 KB payload size, so when you transfer a 2 MB message, 9 messages will be charged.
Payload size is only the start. A splitter that fans one inbound file into a hundred 50 KB records is counted as twenty messages, not one — the pieces are summed and re-sliced against the 250 KB grid. And retries are counted each time, so an endpoint that is down during a delivery window quietly bills you for every attempt. The people running the flow see one message in the monitor; the meter sees twenty, or two hundred.
This matters more now because the commercial model changed. When SAP moved from counting connections to counting messages, high-volume landscapes saw cost increases of 20 to 60 percent, per SAP licensing analysts writing as of 2026. Volume growth, which used to be free once a connection existed, is now a variable cost that scales with every order line you push.
Why the two problems compound for an order-heavy business
Put the two together and you get a specific failure mode for a brewer. Order capture, advance ship notices, returnable-asset events and invoice confirmations are all high-fan-out, high-frequency, and spiky around month-end. A single large order with hundreds of lines is a splitter's paradise; a distributor's endpoint going dark for an hour is a retry storm. Both inflate the meter. And when one of those flows breaks, the debugging loop above forces you to re-deploy and re-run — sometimes replaying the very messages that cost money to process — all while a single integration team fields every request.
That last part is the quiet killer. Because the tooling makes each change slow and each incident expensive to investigate, the integration function becomes the constraint the rest of the business plans around — the team everyone waits for. A returnables discrepancy or a dropped field-rep capture that would take an afternoon to trace on a system with a real debugger becomes a multi-day ticket, because reproduction depends on a ten-minute trace window and a production replay you would rather not pay for.
The direction out is not a better plugin; it is moving the parts that hurt off the critical path. Groovy that runs in an ordinary JVM can be unit-tested in CI with breakpoints and sub-second feedback; structured logs shipped to your own store outlive a ten-minute trace window; and an event-driven design that avoids naive splitter fan-out and blind retries keeps the billable message count close to the business-event count instead of a multiple of it.
None of this argues for ripping out the financial core; the SAP ledger can stay exactly where it is. The question worth asking in the next planning cycle is narrower: which integrations genuinely need to live on a per-message platform with a ten-minute trace, and which are there by inertia? As order volumes climb, that line is where the next few points of integration spend — and most of the on-call pain — will actually be decided.
Frequently asked questions
Can you debug Groovy scripts locally before deploying to SAP CPI?
Not in the platform. The Groovy step compiles inside the deployed integration flow, so the only way to surface a syntax error is to deploy and run. Teams regain local breakpoints and sub-second feedback by running the same Groovy in an ordinary JVM under CI, then deploying already-tested code.
Why is my SAP Integration Suite message count higher than my transaction volume?
Because a message is counted per 250 KB payload slice, and splitters and retries are counted individually. A 2 MB payload bills as nine messages; a splitter over a hundred records can bill as twenty. As of June 2026, moving from connection to message pricing raised high-volume costs 20 to 60 percent.
How long does SAP CPI keep trace data for debugging?
As of June 2026, message processing logs are retained about 30 days, but the Trace log level auto-resets after roughly 10 minutes and traced payloads are purged after about 60. Low-frequency batch interfaces often need a synthetic message to reproduce a failure inside that short trace window.
Stuck with exactly this?
BrewOS builds the full route-to-market stack for global brewers — order capture, stock, loyalty, returnables, delivery and analytics on one event bus, run by a team of ~20 engineers. Bring us the feature that’s been stuck the longest and we’ll show you how we’d ship it in days.
Book a 30-minute walkthrough