← Back to list

SaaS Did Not Fail You. Your Implementation Did.

Hariprasad Vadivel · 2023-02-18 14:00 · 2 claps · 11.2 min read
#architecture #saas #crm #digital-transformation #technology
Open on Medium ↗
Wiki topics: BIZ · Business Strategy CRM · Email & CRM 🏛️ · Architecture

SaaS Did Not Fail You. Your Implementation Did.

What separates CRM winners from casualties — and how architects draw the line

There is a conversation that happens in almost every enterprise technology review I have been part of. It usually starts with a phrase like “we outgrew our CRM” or “the system can’t keep up with our process” or, most revealingly, “we’re too dependent on our vendor.”

What follows is typically a procurement exercise — a search for the next platform that will solve what the last one could not. New vendor, new license, same architectural decisions, same outcome in four years.

The SaaS model did not create this problem. But it made the problem easier to ignore for longer — because the infrastructure worked, the uptime held, the security certifications were in order, and nobody had to manage a server. The operational promise of SaaS was kept. The implementation discipline required to realize the strategic promise was quietly deferred, one customization at a time, until the weight of those decisions became structural.

This is the article about that weight. And more importantly, about the architectural patterns that prevent it.

First, Let Us Settle the Vocabulary Problem

Before diagnosing failures, it is worth acknowledging that the industry has created a terminology fog that makes honest diagnosis harder than it should be.

SaaS. PaaS. Low-code. No-code. Composable. Headless. These terms are used interchangeably in vendor marketing, loosely in analyst reports, and confidently incorrectly in boardroom presentations. The blurring is not accidental — vendors benefit from ambiguity because it lets them position the same product differently depending on who is asking.

Here is a working definition that holds up in practice:

SaaS — Software as a Service — is a fully managed application delivered over the internet, where the vendor controls the data model, the upgrade cycle, the infrastructure, and the core feature set. You configure it. You do not build it. Salesforce Sales Cloud, Dynamics 365 Sales, and ServiceNow are SaaS. You are a tenant. The building belongs to someone else.

PaaS — Platform as a Service — is an environment in which you build applications using vendor-provided infrastructure, runtime services, and development tools. The vendor manages the underlying compute, storage, and networking. You own the application logic. Azure, Google Cloud Platform, and AWS are PaaS. Microsoft Power Platform occupies an interesting middle position — it is a PaaS layer built on top of a SaaS data store, which is precisely where the vocabulary starts to break down.

The uncomfortable truth is that modern CRM implementations almost never sit cleanly in one category. A Dynamics 365 deployment that uses Dataverse as a data backbone, Power Apps for custom interfaces, Power Automate for process orchestration, Azure Functions for complex logic, and Azure API Management for integration — is that SaaS? PaaS? Both? The honest answer is that it is a composed platform, and treating it as pure SaaS leads to under-engineering, while treating it as pure PaaS leads to over-building.

The architect’s first responsibility is to name what you are actually building — and then govern it accordingly. Everything that follows depends on that clarity.

What SaaS Got Right

The SaaS model made three promises that it has largely kept, and they deserve acknowledgment before the critique.

Uptime as a Given

In the Siebel era, uptime was a negotiation. It depended on your infrastructure team, your database administrator, your hardware refresh cycle, and your disaster recovery investment. A go-live weekend carried existential risk — not just for the project but for the people running it.

SaaS transferred that risk to the vendor and backed it with contractual SLAs. Microsoft guarantees 99.9% uptime for Dynamics 365. Salesforce publishes its service availability publicly and in real time. The operational burden that once consumed significant IT capacity — patching, backup, failover, capacity planning — became the vendor’s problem.

This was genuinely transformative. It freed organizations to direct technical attention toward business problems rather than infrastructure maintenance. For small and mid-sized businesses especially, it democratized access to enterprise-grade reliability that would have been unaffordable on-premise.

Scalability Without a Project

In a traditional on-premise model, scaling meant a hardware conversation, a procurement cycle, a migration window, and a budget approval. Growth had a latency measured in months.

SaaS eliminated that latency. A Dynamics 365 tenant that doubles its user count does not file a change request. A Salesforce org that adds a new business unit does not provision new servers. The platform scales elastically beneath the application, invisibly, because the vendor has already built for multi-tenant scale across thousands of customers simultaneously.

This is not a small thing. Organizational agility — the ability to move quickly in response to market conditions — is partially a technology constraint. SaaS removed one of the most stubborn constraints on that agility.

Security as Infrastructure

Security in on-premise CRM was a configuration responsibility distributed across network teams, database administrators, application administrators, and compliance officers — often without a single owner who could see the whole picture.

SaaS consolidated security ownership at the platform layer. Encryption at rest and in transit, identity federation, role-based access control, audit logging, compliance certifications — SOC 2, ISO 27001, HIPAA, FedRAMP — these became baseline platform capabilities rather than bespoke implementation work. The vendor’s security team is larger, more specialized, and more continuously focused on threat response than most enterprise IT organizations can sustain internally.

The promise held. The perimeter moved. But it did not disappear — and this is where implementation discipline begins to matter, because the security posture of a SaaS deployment is still determined partly by how you configure it, what you connect to it, and what data governance decisions you make inside it.

Where SaaS Implementations Break

The platform worked. The architecture did not. Here is where the casualties consistently accumulate.

Pattern of Failure 1: Integration Dependencies and the Fragile Architecture

The most dangerous sentence in enterprise technology is: “We’ll just integrate that.”

SaaS platforms are designed to be connected. Salesforce has its AppExchange. Dynamics 365 has its connector ecosystem. Every major CRM vendor publishes APIs, webhooks, and pre-built connectors precisely because no single platform is meant to do everything. Integration is not a failure mode — it is an architectural intent.

The failure mode is integration without governance.

What this looks like in practice: a CRM integrated point-to-point with an ERP, a marketing automation platform, a customer data platform, a billing system, and a field service tool — each connection built independently, by different teams, at different times, using different patterns. Some use REST APIs. Some use middleware. Some use scheduled data exports. Some use direct database connections that the vendor’s security team would find alarming.

The result is what architects call a spaghetti integration architecture — a topology where every system knows too much about every other system, where a schema change in the ERP breaks the CRM sync, where a Salesforce API version deprecation takes down three downstream processes simultaneously, and where nobody has a complete map of what connects to what.

The architectural pattern that solves this is the Integration Abstraction Layer — a governed middleware tier that sits between all systems and owns the translation, transformation, and routing of data between them. In the Microsoft ecosystem, this is Azure API Management combined with Azure Service Bus — the former providing a stable, versioned API surface that consuming systems call regardless of what sits behind it, the latter providing asynchronous, durable message passing that decouples the timing of producer and consumer.

The principle is loose coupling with stable contracts. The CRM does not know what the ERP looks like internally. The ERP does not know what the CRM’s schema looks like. They know only what the integration layer exposes to them — a versioned, governed interface that changes on a controlled schedule with backward compatibility enforced. When the ERP upgrades, the integration layer absorbs the change. Downstream systems are unaffected.

This is not a new idea. It is a disciplined application of an old one that SaaS implementations consistently skip because the first integration was easy, and nobody stopped to design for the tenth.

Pattern of Failure 2: Data Silos and the Platform That Cannot See Itself

SaaS platforms accumulate data. That is, in a sense, their primary function — capturing interactions, transactions, and relationships in structured, queryable form. The irony is that organizations which deploy multiple SaaS tools end up with data that is simultaneously abundant and invisible.

Marketing knows what campaigns the customer responded to. Sales knows what opportunities are in the pipeline. Service knows what cases the customer raised. Finance knows what invoices are outstanding. Each system holds a fragment of the customer truth — and none of them, independently, can tell you whether the customer who just raised a high-severity support case is also two weeks from renewal and currently being pitched an upsell by a sales representative who has no idea the case exists.

This is the data silo problem — and it is architecturally distinct from the integration problem. You can integrate systems perfectly and still have siloed data, because integration moves data between systems without necessarily creating a unified, governed, queryable view of it.

The architectural pattern that addresses this is the Unified Customer Data Model — a canonical data structure, maintained in a governed central store, that aggregates and reconciles customer data from all source systems without replacing them.

In the Microsoft ecosystem, this is the Dataverse unified customer profile, combined with Azure Synapse Analytics for analytical workloads and Azure Data Factory for ingestion pipelines. The pattern works as follows: each source system — CRM, ERP, marketing platform, service desk — publishes its customer-relevant data to a central data lake on a governed schedule. A reconciliation layer resolves identity across systems — matching the CRM contact to the ERP billing account to the marketing subscriber — and produces a unified record that any consuming system or analyst can query.

The governing principle here is data as a product — treating the unified customer record as a first-class deliverable with its own ownership, quality standards, and consumers, rather than as a byproduct of system integration. This requires someone to own it. In most organizations, nobody does, which is why the silo persists long after the integration work is complete.

Pattern of Failure 3: Ecosystem Lock-In and Tool Sprawl

Every major SaaS vendor operates an ecosystem. Salesforce has AppExchange and its family of Marketing Cloud, Service Cloud, and Commerce Cloud. Microsoft has the Power Platform, Azure, Microsoft 365, and the Dynamics 365 suite. Each vendor’s pitch is coherent: buy more of our platform and the pieces fit together seamlessly.

This pitch is largely true — within the ecosystem. The failure arrives in two forms.

The first is ecosystem capture — the gradual replacement of best-of-breed tools with ecosystem-native alternatives, not because the native alternatives are better, but because the integration is easier and the procurement conversation is simpler. Organizations wake up five years later having replaced a superior marketing automation tool with a vendor’s native offering that is two product generations behind, because at the time it seemed like the path of least resistance.

The second is the opposite: tool sprawl — the accumulation of point solutions from multiple ecosystems, each excellent in isolation, collectively ungovernable. The marketing team bought HubSpot. The sales team is on Salesforce. The service team uses Zendesk. The finance team lives in NetSuite. The data team built a custom analytics layer on Snowflake. Each decision was locally rational. The aggregate is an architectural liability.

The pattern that governs this is Platform Boundary Definition — a deliberate, documented decision framework that answers three questions for every tool evaluation: what is this platform’s core competency and where does it end; what will we build natively within our primary platform; and what will we integrate from outside it, accepting the governance overhead that integration requires.

In practice, for a Dynamics 365 environment, this means explicitly deciding: Dynamics 365 owns the customer record, the sales process, and the service workflow. Power Platform owns the custom process automation and the low-code application layer. Azure owns the integration backbone, the data platform, and any workload requiring compute at scale. Everything outside this boundary requires an architectural review before procurement — not to prevent change, but to ensure that every addition to the ecosystem is a conscious decision rather than an accumulation.

The discipline is not about vendor loyalty. It is about surface area management — keeping the number of systems that must be understood, maintained, governed, and secured at a level that a real team can actually own.

Pattern of Failure 4: Over-Customization and the Upgrade Trap

This one is well known and still pervasive enough to warrant naming clearly.

SaaS platforms are upgraded by their vendors on a schedule the customer does not control. Salesforce releases three times a year. Microsoft releases Dynamics 365 updates continuously, with major wave releases twice annually. The implicit contract of SaaS is that you receive these upgrades automatically — and that they do not break your implementation.

That contract holds — until you have customized the platform in ways the vendor never intended. Not configuration, which is designed to survive upgrades, but genuine customization: JavaScript that manipulates the DOM in ways unsupported by the platform’s component model, plugins that intercept core platform events with brittle assumptions about execution order, custom workflows that replicate standard platform functionality because the standard version did not exist yet and nobody removed the custom one when it did.

Each of these customizations is a landmine waiting for the next upgrade wave to detonate it.

The architectural pattern here is the Customization Boundary — a governed distinction between what lives inside the platform’s configuration layer, what lives in the platform’s supported extensibility layer, and what lives outside the platform entirely.

In Dynamics 365 terms: standard configuration — fields, forms, views, business rules — lives inside the platform and upgrades invisibly. Supported extensibility — Power Automate flows, canvas apps, model-driven app components, plugin code that follows the platform’s execution model — lives in the extensibility layer and requires regression testing on upgrade but is architecturally sound. Anything that reaches outside the platform’s supported APIs, manipulates the rendering layer directly, or bypasses the security model belongs outside the platform entirely, in an Azure-hosted service that the platform calls as an external dependency.

The principle is stay in the upgrade path. Every customization decision should be evaluated against a single question: will this survive the next three platform releases without manual intervention? If the honest answer is no, the design needs to change before the code is written.

The Architect’s Role in a SaaS World

The patterns above share a common thread: none of them are platform problems. They are governance problems — decisions that were not made explicitly, boundaries that were not drawn deliberately, ownership that was not assigned clearly.

This is what the solution architect’s role actually is in a SaaS implementation. Not to configure the platform — competent administrators can do that. Not to manage the vendor relationship — that is a procurement function. The architect’s role is to make the invisible decisions visible: to name the integration topology before the first connector is built, to define the data ownership model before the first silo forms, to draw the platform boundary before the first point solution is purchased, to establish the customization threshold before the first workaround becomes permanent.

SaaS removed the infrastructure problem. It did not remove the need for architectural thinking. If anything, it raised the stakes — because the infrastructure is no longer the constraint, the quality of implementation decisions is the only remaining variable that separates a platform that compounds in value over time from one that compounds in technical debt.

The organizations that get this right share one characteristic: they have someone — or a team — whose explicit responsibility is the health of the platform as an architectural system, not just the delivery of features within it. Someone who reads the vendor roadmap not for the next feature to deploy but for the next constraint to plan around. Someone who treats the upgrade cycle not as an interruption to delivery but as the forcing function that keeps the implementation honest.

In the Siebel era, that person was called a technical architect and they were usually buried in the delivery organization. In the SaaS era, that role needs a seat at the table — because by the time the platform health problems are visible to the business, they have already been expensive for years.

in-a-nutshell

in-a-nutshell

Closing: The Promise Was Always Sound

SaaS changed the game. Uptime, scalability, and security are no longer the differentiators they once were — they are baseline expectations, reliably met, no longer worth debating.

What SaaS did not change is the fundamental requirement for discipline in how platforms are adopted, connected, governed, and evolved. The casualties of the SaaS era are not victims of a flawed model. They are the result of treating a platform decision as a procurement decision — of assuming that signing the contract was the hard part.

It was not. The hard part is everything that comes after it.

And that is, and has always been, the architect’s problem to solve.


메타데이터
post_id
d021ee6d478b
slug
a-solo-and-unplanned-trip-to-andaman-d021ee6d478b
url
https://medium.com/@hareev/a-solo-and-unplanned-trip-to-andaman-d021ee6d478b
canonical_url
https://medium.com/@hareev/a-solo-and-unplanned-trip-to-andaman-d021ee6d478b
author_url
https://medium.com/@hareev
status
ok
fetched_at
2026-06-11 12:34:08