Display and read aloud

Your integration works, but does not scale: common integration mistakes in growing organizations

Server racks and network cables in a data center, representing system integration and technical architecture in growing organizations
Integrations are built for today’s situation. The trap lies in tomorrow’s. Photo: Unsplash

The integration is built, tested, and live. Orders from the web shop arrive in Salesforce, invoices are generated automatically, customer data synchronizes between CRM and ERP. Six months later everything still works. A year later too.

Then the volume grows. The company expands, the number of transactions increases, new locations are added, an acquisition brings additional data systems. And then the integration starts to stutter. Delays in data synchronization, failed messages that silently disappear, duplicate records that suddenly appear, an integration that locks up under peak load.

What worked fine at low volume does not scale. And that is rarely an accident.

The most common causes

In the integrations where I am asked to look at what is going wrong, a handful of patterns come up repeatedly.

No error handling outside the happy path. The integration was built for the situation where everything goes right. But when an external API responds slowly, a record is not found, or a field contains an unexpected value, there is no proper handling. The message silently disappears, the system crashes, or a deficient fallback runs. In test environments this never surfaces. In production, under pressure, it does.

Synchronous integrations that should be asynchronous. An integration that waits for the other side to respond on every request works fine at low volumes. But at higher volumes the waiting accumulates: systems slow down, timeouts increase, users complain. Asynchronous design with a message queue is more robust at higher volumes, but it requires more thought during the design phase.

No idempotency. When the same message is delivered more than once, which is inevitable with error handling and retries, the system must handle that without creating duplicate records or executing actions twice. An integration without idempotency leads to data pollution at larger volumes that has to be cleaned up manually.

Hard-coded limits and identifiers. An integration that relies on fixed IDs, fixed account numbers, or fixed URLs baked directly into the code is difficult to adjust when circumstances change. This leads to brittle integrations that require manual intervention with every change.

The problem with testing at low volume

Many integration failures do not surface in the test phase, simply because testing is done at low volume. Five test orders run smoothly. The integration is approved. But at a hundred orders per hour, with variation in data formats, exceptions, and peak loads, an integration behaves differently.

Load testing is not an optional extra for integrations operating under variable load in production. It is a basic requirement. The same applies to minimal chaos testing: what happens when the external API is unavailable for a minute? What if a field is empty that is normally always populated?

Monitoring as a requirement, not an option

An integration without monitoring is a black box. You do not know whether messages are arriving, how long processing takes, or whether errors are being silently handled. At small volumes that is manageable: if something is wrong, a user will tell you quickly.

At larger volumes that no longer works. Errors accumulate before anyone notices. Monitoring that actively alerts on failed messages, unusual processing times, or unexpected record counts makes the difference between a controlled environment and a reactive firefighting operation.

When to rebuild?

There is a point at which an integration has accumulated so much technical debt that repairing it is less efficient than rebuilding. That point is hard to acknowledge, especially when the original builders are still involved in the project.

Indicators include: recurring failures that are temporarily resolved but never structurally fixed, maintenance time consuming a large share of available capacity, or the impossibility of extending the integration without risking existing functionality. Rebuilding is not failure. It is acknowledging that the initial design was built for a situation that is no longer current.

Conclusion

Integrations are built for today’s situation. The mistakes that cause problems later are not careless, they are logical: nobody knows upfront exactly how fast an organization will grow and what demands will be placed on an integration three years from now.

What you can do is consciously choose robustness in the design: error handling that works outside the happy path, asynchronous design where volume demands it, monitoring that actively informs, and idempotency that prevents duplicate processing. These are not gold-plating choices. They are investments that substantially extend the lifespan and reliability of an integration.


Is your integration hitting its limits? Blazeforce helps assess existing integrations and rebuild them on a robust foundation. Get in touch for a no-obligation conversation.

Take the next step

A question about “Your integration works, but does not scale: common integration mistakes in growing organizations”?

Tell us which situation you recognise or what you want to improve. Your message goes directly to BlazeForce.

Read how we handle your data in our privacy and cookie policy.