Back to BlogIndustry Guides

From MVP to Enterprise-Ready SaaS: SSO, Audit Logs, SLAs and Data Export

Rupak Amin

Founder & Lead Engineer, RAITHub

14 min read

An enterprise-ready SaaS gives buyers SAML or OIDC single sign-on, SCIM user provisioning, granular roles, an exportable audit log, data export and deletion, a status page and a written uptime SLA, usually 99.9%, which allows about 43 minutes of downtime in a 30-day month. Most teams can add these in three stages over roughly six months after an MVP.

If you would rather have it built for you, see how RAITHub would build this below.

This guide is for founders and CTOs whose first large prospect has replied with "we need SSO and a security review before procurement". It covers what each enterprise feature really involves, which to buy instead of build, and a staged roadmap. The foundations underneath (tenant isolation, billing, the first audit log) are in the pillar guide, how to build multi-tenant B2B SaaS.

What does "enterprise-ready SaaS" actually mean to a buyer?

It means the buyer's IT, security and procurement teams can say yes without exceptions. Each team has its own checklist, and the product either answers it or creates work for them.

RequirementWho asksWhat it means in the product
SSO (SAML or OIDC)ITStaff sign in with the company's identity provider, such as Okta or Microsoft Entra ID; no separate passwords
SCIM provisioningITUsers are created, updated and deactivated automatically when HR changes them in the directory
Granular RBACSecurity, team leadsRoles built from named permissions, checked on the server, ideally with customer-defined roles
Audit logsSecurity, complianceWho did what, when, to which record; viewable and exportable by the customer's admins
Data export and deletionLegal, procurementA full export in a usable format, and a documented deletion on exit
Uptime SLA and status pageProcurement, operationsA written availability target, service credits, and a public place to see incidents
Data residencyLegal, regulated buyersCustomer data stored and processed in an agreed region
Security questionnaireSecurityTruthful answers on access, encryption, backups, incident response and vendors

None of these is a feature end users will notice. All of them can stall a deal for a quarter if they are missing when the contract is ready.

Should SSO use SAML or OIDC?

Support both if you sell to large companies, because their identity providers and IT teams differ. If you can only build one first, build SAML, then add OIDC.

SAML 2.0 is an OASIS standard whose core specification dates from March 2005 (OASIS SAML 2.0 specifications); the identity provider sends a signed XML assertion to your app. OpenID Connect describes itself as "a simple identity layer on top of the OAuth 2.0 protocol", and its ID token is a JSON Web Token (OpenID Connect Core 1.0).

SAML 2.0OpenID Connect
Message formatSigned XML assertionsJSON Web Tokens over OAuth 2.0
Where you meet itOlder and larger enterprise identity setups; very common in procurement checklistsNewer setups, modern identity providers, and apps that also call APIs
Main riskXML signature validation is easy to get wrong; never hand-roll itToken validation (issuer, audience, expiry, signature) skipped or partial
Setup for the customerExchange metadata files or URLs and certificatesExchange a client ID, secret and issuer URL

Whichever protocol, the hard parts sit in your own data model: mapping an email domain to a tenant, deciding whether SSO is optional or enforced per organization, linking an existing password account to an SSO identity, and keeping a break-glass admin login for when the customer's identity provider is down.

What is SCIM, and do you need it on day one?

SCIM is the protocol that lets a customer's directory add, change and remove your users automatically. Most teams add it a few months after SSO, when the first large customer asks.

The IETF defines SCIM as "an HTTP-based protocol that makes managing identities in multi-domain scenarios easier to support via a standardized service" (RFC 7644, September 2015). In practice the customer's directory calls your /scim/v2/Users and /scim/v2/Groups endpoints. The call that matters most is deactivation: when someone leaves the customer's company, access to your product must end in minutes, not at the next login.

A minimal deactivation handler, in TypeScript with node-pg. It ends sessions and writes the audit entry in the same transaction as the change, so there is never a deactivated user with a live session or a change with no record:

import type { Pool } from 'pg'

// PATCH /scim/v2/Users/:id with { op: 'replace', value: { active: false } }
export async function deactivateScimUser(
  db: Pool, tenantId: string, scimId: string, actor: string
): Promise<number> {
  const client = await db.connect()
  try {
    await client.query('BEGIN')
    // Scope row-level security to this tenant for this transaction only
    await client.query("SELECT set_config('app.tenant_id', $1, true)", [tenantId])
    const { rows } = await client.query(
      'UPDATE memberships SET status = $1 WHERE scim_id = $2 RETURNING user_id',
      ['deactivated', scimId]
    )
    if (rows.length === 0) {
      await client.query('ROLLBACK')
      return 404
    }
    await client.query('DELETE FROM sessions WHERE user_id = $1', [rows[0].user_id])
    await client.query(
      'INSERT INTO audit_log (tenant_id, actor, action, target) VALUES ($1, $2, $3, $4)',
      [tenantId, actor, 'scim.user.deactivated', scimId]
    )
    await client.query('COMMIT')
    return 200
  } catch (err) {
    await client.query('ROLLBACK')
    throw err
  } finally {
    client.release()
  }
}

The set_config call with true as the last argument scopes the tenant to the transaction, which matters with pooled connections. The row-level security side is covered in the Postgres row-level security guide.

How granular does RBAC need to be for enterprise customers?

Granular enough that a customer's admin can give someone exactly the access their job needs, and no more. That means roles made of named permissions, not an "is admin" flag.

A typical MVP has owner, admin and member. Enterprise buyers then ask for read-only auditors, billing-only users, regional managers, and their own custom roles. If permissions were named from the start, those requests are configuration; if access is scattered through "if admin" checks, every request is a code change and a security risk. Sundor Skin, a B2B wholesale platform RAITHub built, runs 12 staff roles built from 88 permission codes on 146 PostgreSQL tables with row-level security (Sundor Skin). The design method is in SaaS authorization and RBAC design.

What should an enterprise SaaS audit log include?

Actor, action, target, tenant, time and source, written in the same transaction as the change, append-only, and exportable by the customer's own admins.

Buyers will ask three things: can our admins see it, can we export it or stream it to our SIEM (security information and event management tool), and how long is it kept. Decide retention per plan in writing. Design detail, including what to log and what never to log, is in SaaS audit log design.

What do buyers expect for data export, deletion and residency?

A self-service or on-request export of all their data in a documented format, a deletion procedure with a stated timeline, and a clear answer on which region stores their data.

  • Export. CSV per entity is the floor; JSON with stable IDs is better. Under the EU GDPR, individuals have a right to data portability (GDPR Article 20), and business customers will ask for the same at contract level.
  • Deletion. State what is deleted, when backups age out, and what is kept for legal reasons. GDPR Article 17 sets out the right to erasure (GDPR Article 17).
  • Residency. Easiest if tenant IDs exist on every table from day one, so a customer can later be moved to a database in another region. Name every subprocessor and the region it uses.

This is general information, not legal advice; confirm data-protection and contract obligations with your adviser.

What uptime SLA should a B2B SaaS offer?

Most B2B SaaS contracts start at 99.9% monthly availability with service credits. Only promise what your monitoring can measure and your architecture can survive.

Availability targetAllowed downtime per 30-day monthWhat it usually requires
99.5%About 3.6 hoursOne region, managed database, monitoring and alerts
99.9%About 43 minutesZero-downtime deploys, tested backups and restores, on-call cover, a runbook per failure
99.95%About 22 minutesRedundancy across availability zones and fast failover
99.99%About 4 minutesMulti-region design and a dedicated operations function

The figures are plain arithmetic on a 43,200-minute month. Exclude scheduled maintenance in the contract only if you announce it in advance, and publish incidents on a status page so customers see the same truth you do. Atlassian Statuspage has a free public page with 100 subscribers and paid plans from $29 a month (Statuspage pricing).

How do you answer the security questionnaire before SOC 2?

Truthfully, control by control, with evidence and a dated plan for each gap. A SOC 2 report is about the company running the service, so it is yours to obtain, not your development partner's.

The process, wording and document pack are in your first enterprise security questionnaire, with no SOC 2. Every feature in this guide becomes a "Yes, with evidence" answer on that form. For the record: RAITHub is not SOC 2 or ISO 27001 certified. It builds the controls an auditor will test, signs NDAs and DPAs, and works inside your controls, with production data in your own cloud account and synthetic data in development.

What is a realistic roadmap from MVP to enterprise-ready?

Three stages. Fix what is hard to retrofit now, add what the first enterprise deal needs in three months, and add what scales enterprise sales by six months.

StageBuildWhy then
NowTenant ID on every table with row-level security; memberships and named permissions; append-only audit log written in-transaction; backups with a tested restore; basic monitoringThese shape the schema; retrofitting them means migrating live customer data
3 monthsSAML SSO, then OIDC; enforced-SSO setting per organization; CSV and JSON export; status page; documented 99.9% target; questionnaire answer packWhat the first enterprise contract usually blocks on
6 monthsSCIM provisioning; customer-defined roles; audit log viewer, export and SIEM streaming; deletion workflow; regional deployment option; written SLA with creditsWhat lets you close the second and tenth enterprise deal without custom work

Do-it-yourself estimate: an experienced team that already has clean memberships and permissions can usually add SAML SSO through a vendor in one to two weeks and SCIM in another two to three. The main risk is not the protocol; it is deprovisioning that misses sessions, API keys or invites, leaving former employees with access.

Buy, build or hire?

Buy the protocol plumbing where you can; build the parts that touch your data model; hire when you lack the team or the time before a deal closes.

OptionExamples and published pricingChoose this whenWatch out for
Off-the-shelf identity serviceWorkOS charges $125 per SSO or Directory Sync connection per month for the first 15 connections, with lower tiers above that, and $125 a month per audit-log SIEM stream (WorkOS pricing). Auth0's B2B Essentials plan starts at $150 a month and includes 3 enterprise connections, with extras at $100 a month each (Auth0 pricing)You need SSO and SCIM for a deal in weeks and your memberships model is already cleanPer-connection costs grow with every enterprise customer; you still own role mapping, deprovisioning and audit
Template or open-source starterSaaS starter kits and self-hosted identity serversYou have engineers to run and patch it, and want no per-connection feeYou own security updates and the hard edge cases; starter kits rarely include SCIM or audit export
Custom build on your stackYour own SSO, SCIM, RBAC and audit, sometimes on top of a vendor for the protocol layerEnterprise is your core market and the features are part of the product, not a checkboxHighest upfront cost; every protocol edge case, identity provider quirk and security fix is yours to test and maintain

The common, sensible mix: a vendor for SAML, OIDC and SCIM protocol handling, and your own code for tenants, permissions, sessions and the audit log.

Why RAITHub for this

Because the parts of enterprise readiness that vendors cannot sell you, isolation, permissions and tests that prove them, are what RAITHub has already built on live platforms.

  • Permissions at enterprise depth. Sundor Skin has 12 staff roles from 88 permission codes, row-level security across 146 PostgreSQL tables, and 530+ automated tests (Sundor Skin).
  • Multi-role SaaS with heavy testing. PropDesk, a property-management SaaS, serves 4 roles from one codebase, collects rent through Stripe, and runs 1,024 automated tests (PropDesk).
  • Login hardening on our own site. This website has 400+ tests and database-backed login rate limiting that works across serverless instances without Redis (RAITHub website).
  • Honest about status. RAITHub is not SOC 2 certified and will not pretend otherwise on your questionnaire. Case studies are on the work page.

When you don't need us

  • No enterprise buyer has asked yet. Put the "now" foundations in place and wait for a real request before building SSO or SCIM.
  • Your model is already clean. If memberships and permissions are sound, a vendor such as WorkOS or Auth0 plus a week or two of your own team's time may be all you need.
  • You need a certified vendor or a SOC 2 report this quarter. That is an audit of your company, run by a CPA firm; RAITHub cannot supply it.
  • You want developers placed inside your team. RAITHub offers fixed-scope builds and dedicated teams, not staff augmentation.

How RAITHub would build this

Scope, agreed in a written spec before production code:

  • Audit tenant isolation, memberships and permissions; fix what blocks SSO and SCIM.
  • SAML and OIDC SSO with per-organization enforcement and a break-glass admin, on a vendor or custom, as agreed.
  • SCIM provisioning with deprovisioning that ends sessions, API keys and invites, tested.
  • Exportable audit log, data export and deletion workflow, status page and monitoring for your SLA target.
  • An evidence pack mapping each feature to questionnaire answers.

Timeline: 4–6 weeks at fixed scope for a defined enterprise-readiness release, following the SaaS service range; deeper backend work such as regional deployment fits the 6–12 week backend range.

You receive: automated tests and CI, including tests that try to cross tenant and role boundaries; handover docs and runbooks; and full IP under NDA.

Next step: a free 15-minute technical audit, then a written fixed quote. See the SaaS development service and SaaS industry page, or book the audit.

Frequently asked questions

What makes a SaaS product enterprise-ready?

SAML or OIDC SSO, SCIM provisioning, permission-based roles, an exportable audit log, data export and deletion, a status page, a written uptime SLA and truthful security-questionnaire answers, on top of database-enforced tenant isolation.

Is SAML or OIDC better for B2B SaaS SSO?

Neither is better in general. SAML uses signed XML assertions and is common in large enterprise setups; OIDC is an identity layer on OAuth 2.0 using JWTs. Enterprise-focused products usually support both, starting with SAML.

How much does enterprise SSO cost to add?

Through a vendor, WorkOS lists $125 per connection per month for the first 15 connections, and Auth0's B2B Essentials plan starts at $150 a month with 3 enterprise connections. A custom build trades those monthly fees for upfront engineering and ongoing maintenance.

Do I need SOC 2 to sell to enterprises?

Not always for the first deal. Many buyers accept a completed questionnaire with evidence and a dated plan. SOC 2 is an audit of your company by a CPA firm; RAITHub is not SOC 2 certified and cannot provide one for you.

What uptime SLA should a SaaS startup promise?

99.9% monthly availability is a common starting point, allowing about 43 minutes of downtime in a 30-day month. Promise only what your monitoring can measure and your deploys and restores can support.

How long does it take to go from MVP to enterprise-ready?

Roughly six months in three stages if foundations are sound. A defined enterprise-readiness release with RAITHub typically takes 4–6 weeks at fixed scope, agreed in a written spec.

Enterprise-ready SaaSSSOSAMLOIDCSCIMRBACAudit logSaaS SLA

Ready to discuss your project?

Book a free 15-minute technical audit with our engineering team.