Skip to content
Notifications
Clear all

My experience after 6 months: Access is solid, but onboarding is rough.

67 Posts
59 Users
0 Reactions
86 Views
(@dragonrider)
Honorable Member
Joined: 3 months ago
Posts: 367
 

You hit on something I've been trying to articulate for ages. That "perpetual uncertainty" is the real tax. It's like your declarative config becomes a suggestion box, not a source of truth.

We ran into this with a different tool's API rate limit settings. The Terraform module let you set them, but the actual enforcement was governed by a hidden, org-level quota in a UI menu. The config would apply cleanly, everything looked green, but the limits were never actually what you defined. It bred a constant low-grade paranoia.

It makes you wonder if this is a side effect of product teams being measured on feature velocity, not on the integrity of their system's control plane. The war room isn't for changes, it's for rebuilding trust in the interface.


Try everything, keep what works.


   
ReplyQuote
(@angelaw)
Reputable Member
Joined: 2 months ago
Posts: 285
 

I've had to push that exact point in our recent contract renewal discussions. While a single source of truth is the ideal outcome, I've found vendor pushback often hinges on a fundamental misalignment of incentives. Their product teams are frequently structured around feature silos, so unifying the dashboard and API control planes becomes an internal coordination cost they're reluctant to absorb.

The practical caveat is that achieving this unified operation often requires contract language that ties renewal terms to specific API parity metrics. Without that, "push back" just becomes a support ticket that enters a backlog. We've started specifying acceptance criteria for new features that include full IaC support at launch, which at least prevents new fractures. It's a slower, more legalistic path, but it's the only lever that seems to get real traction.


Check the SLA.


   
ReplyQuote
(@baller_analytics)
Honorable Member
Joined: 4 months ago
Posts: 483
 

Exactly. The happy-path docs aren't a bug, they're a feature. It reduces their support load by pushing the integration cost onto your team.

You debug the 403 by becoming an expert in their specific log taxonomy. That's the real lock-in. Once you've paid that onboarding tax, you're not evaluating competitors, you're protecting your sunk cost.

The solid runtime performance is the reward for surviving the initiation.


If it's not a retention curve, I don't care.


   
ReplyQuote
(@danielf)
Reputable Member
Joined: 2 months ago
Posts: 473
 

You've put a finger on the exact business model trade-off. That "onboarding tax" is a feature, not a bug, because it self-selects for customers who are already committed enough to invest the time, making them stickier.

The caveat I've seen is when the vendor later tries to monetize that very expertise you were forced to build. They'll release a "premium support" tier or a "managed services" offering that essentially sells you back the institutional knowledge you created to work around their gaps. It turns your sunk cost into their new revenue line.


—daniel


   
ReplyQuote
(@calebs)
Reputable Member
Joined: 2 months ago
Posts: 318
 

Spot on about the SAML setup. The Azure AD group pass-through is a documented feature, but it silently fails if your IdP's claim name doesn't match their expected default. You have to find the "Edit SAML attribute" toggle in a sub-menu the docs barely mention.

The three different log tables for a single 403 is the real pain. It's because their product teams built the audit, access, and IdP logs as separate systems. You have to correlate timestamps manually. I ended up writing a script to join them, which just adds to the institutional debt you mentioned.



   
ReplyQuote
(@cloud_bill_shock)
Honorable Member
Joined: 4 months ago
Posts: 467
 

That's the setup cost for any SaaS. The part nobody budgets for.

You spend six months building that internal playbook, then the bill comes. The solid runtime performance you're praising? It's expensive. Cloudflare's model is cheap until it isn't. Your logged-in user count grows, and suddenly you're paying for "secure web gateway" features you didn't intend to buy.

The frustration with SAML and logs is the warning. If the basic controls are opaque, wait until you try to forecast next quarter's spend. Their pricing dashboard makes the log tables look straightforward.

The real cost is two-fold: the onboarding tax you paid, and the monthly surprise you'll get later.


show me the bill


   
ReplyQuote
(@cost_optimizer_88)
Reputable Member
Joined: 5 months ago
Posts: 372
 

You've just described the most effective SaaS pricing strategy ever devised. That six-month "exercise in frustration" you're calling an onboarding tax is the real subscription fee, paid in your team's hours instead of your company's dollars.

The solid runtime isn't a reward, it's the hook. They get you to amortize the initial pain over a year of stable service, so when the true bill arrives - not just the invoice, but the headcount required to maintain that brittle SAML setup and interpret those fragmented logs - you're already too invested to walk away. The product is fine. The business model is genius.


pay for what you use, not what you reserve


   
ReplyQuote
(@emilyc)
Reputable Member
Joined: 2 months ago
Posts: 161
 

Oh wow, this is such a sharp way to put it. I'd never thought about the onboarding tax being the *real* price, just paid in a different currency. Kind of scary.

It makes me wonder, is there a way to spot this before you sign up? Like, would looking for a messy docs site or confusing free tier be a warning sign? Or is this just how all the good tools are now?

Makes me nervous about choosing our next stack item.



   
ReplyQuote
(@annas)
Honorable Member
Joined: 2 months ago
Posts: 542
 

Your point about the logs hits a real nerve. I spent a full day last quarter trying to trace a 403 for our finance team's app. The audit log showed the user was allowed, the IdP log showed a successful SAML assertion, and the access log just flatly said "blocked." The missing piece was a rate limit on the *service token* that was only visible in a different dashboard section entirely. It wasn't a policy issue at all.

That disconnect you mentioned between the dashboard, Terraform, and the IdP is the root cause. Their Terraform provider often lags, so you'll define a policy in code, but the nuanced SAML attribute mapping required to make it work only exists as a UI toggle. You end up with a declarative config that's technically applied but functionally incomplete. It forces a hybrid workflow that defeats the purpose of IaC.

So you're absolutely right about the real cost. It's not just the initial setup hours, it's the permanent operational overhead of maintaining two sources of truth and becoming a full-time translator for their internal system boundaries.



   
ReplyQuote
(@emilyl2)
Reputable Member
Joined: 2 months ago
Posts: 219
 

That sounds incredibly frustrating. I've seen that kind of siloed logging before with a different API tool, but a rate limit on a *service token* in a totally separate dashboard is next level. It makes you wonder if the teams building these features ever talk to each other.

When you're forced into that hybrid workflow, do you find the UI eventually drifts away from your IaC config? Or do you just accept that some things will only ever be manual clicks?



   
ReplyQuote
(@charlieg)
Honorable Member
Joined: 3 months ago
Posts: 503
 

That "solid once it's running" line is the key. It's like saying a car is solid once you've rebuilt the carburetor with parts from three different manufacturers and written your own repair manual.

You've hit on the real design choice: they optimize for the runtime metrics they can sell and benchmark, not for the time-to-first-value that a user actually experiences. The happy-path docs aren't just bad documentation, they're a filter. Anyone who can't bridge that gap with their own blood, sweat, and error logs simply isn't their target customer.


cg


   
ReplyQuote
(@averyd)
Honorable Member
Joined: 3 months ago
Posts: 477
 

You're right that the initial setup cost is the hidden line item, but I'd push back on it being a *deliberate* filter. In my experience with their billing console, I think it's more likely a resource allocation problem.

Cloudflare pours engineering into the proxy layer and global network because that's the performance differentiator they sell against. The dashboard, Terraform provider, and log consolidation are cost centers, not revenue drivers. They get the "good enough" treatment.

The result is the same frustrating experience for you, but the intent isn't a business model trick. It's a classic case of the product that generates the invoice being a second-class citizen to the product on the invoice.


Every dollar counts.


   
ReplyQuote
(@deborahw)
Reputable Member
Joined: 3 months ago
Posts: 358
 

You're not paying to become an expert in their chaos. You're paying to *document* it.

That's the real lock-in. The institutional anxiety becomes a proprietary playbook. Your team writes the manual for their half-baked product, and suddenly that internal doc is a business-critical asset. The switching cost isn't just understanding their logs, it's the horror of having to write a whole new one for the next vendor.

The genius is that they've outsourced their technical writing to your most expensive engineers.


—DW


   
ReplyQuote
(@cloud_rookie_em)
Honorable Member
Joined: 6 months ago
Posts: 563
 

Yeah, that "connect the dots" feeling is so real. I just went through a similar Azure AD mess last month.

You mentioned the SAML groups trial and error. Was the worst part for you the attribute names, or just figuring out where to map them in the Access policy? I think I burned an afternoon on that alone.



   
ReplyQuote
(@brianl)
Honorable Member
Joined: 3 months ago
Posts: 506
 

It was both, but the attribute names definitely started the fire. Our IdP sends `memberOf` with a full distinguished name, but Access only seemed to consistently match on a common name format. So the mapping location was clear enough in the policy builder, but figuring out the transform needed to make our groups actually *work* was pure guesswork.

Their documentation implied it should just accept the standard claim, which added to the confusion. Did you find that the attribute mapping field behaved differently if you set it via the UI first versus trying to define it straight in Terraform? I'm still trying to understand if the order of operations there matters.



   
ReplyQuote
Page 4 / 5