Customer identity (CIAM) RFP questions to ask before you pick a partner
If you are running an RFP for customer login on self-hosted Keycloak, ZITADEL or Ory, the most useful thing you can do is ask every partner for evidence in the same format. The questions below are neutral to the platform, so they work whether your shortlist is Keycloak, ZITADEL, Ory or a mix. The strongest answers name a method, an artifact and an owner for each risk: how a load test is run and what report comes out of it, which runbook governs a migration and who signs it off, and who approves a tenant identity provider before it goes live. A vague answer such as "we handle that" tells you nothing about who will be paged when login fails at 9 a.m. on a Monday.
This page is organized by the six risk areas that tend to decide CIAM projects: login peak load, migration of existing password hashes, B2B tenant and identity provider onboarding, login page theming, privacy handling for erasure and export, and upgrades without downtime. Each area has a set of questions and the signals that separate a credible answer from a sales answer. Use them as a scoring sheet. Ask each bidder to answer in writing, attach sample artifacts where they exist, and mark any answer that depends on a feature you have not yet confirmed in the platform version you plan to run.
DeployOpen does not publish prices. A quote follows from a written scope that defines the platform, the environments, the tenant model, the migration volume and the support expectations, and most engagements are fixed-scope with scope, deliverables and timelines agreed in writing before work starts. When you compare bids, make sure each one is priced against the same written scope, and ask what is one-time work, such as build and migration, and what recurs, such as upgrades, testing and support retainers.
How the answers differ by platform choice
Keycloak's high availability questions carry the most weight, because the project documents several architectures and each one changes how load peaks and failover are handled. Ask the partner which design they would deploy and why, and how they will show it works under failure.
- Single cluster: one Keycloak cluster, optionally spread across availability zones. Ask how the zone layout is tested and what happens when one zone fails.
- Multi-cluster (v2): a design that does not use an external Infinispan cluster. Ask how session state moves between sites and how failover is rehearsed.
- Multi-cluster (v1): documented as deprecated, with a separate Infinispan cluster per site. Ask whether any proposed design relies on it and what the migration path would be.
- Synchronous database: both supported high availability designs need a synchronously replicated database. Ask who owns the database, how replication is monitored and how the partner proves the design holds.
- Operator update policy: the Operator documentation strongly recommends manual approval mode for updates. Ask who approves each upgrade and whether schema migration runs at startup or is applied manually for large deployments.
Confirm each design against the current Keycloak high availability overview before accepting it in the written scope.
ZITADEL's questions center on tenancy. Its model separates instances, organizations and projects, so the partner must show exactly where each customer's data and configuration live. The database and deployment questions follow from the same design.
- Instance isolation: instances are virtual tenants with full data isolation. Ask how many instances the design uses and whether regulated customers or separate brands justify separate instances.
- Organization and project model: organizations hold users and projects, and projects group applications, roles and grants. Ask how B2B customers and internal roles map onto this structure and who maintains that mapping.
- Per-organization identity providers: each customer organization can use a different provider over OIDC, SAML or LDAP. Ask how onboarding of a new customer provider is tested and who owns the change.
- PostgreSQL 14 to 18: self-hosted ZITADEL supports PostgreSQL versions 14 through 18. Ask which version is proposed, how patches are applied and whether backups have been restored in a test.
- Helm chart deployment: the documentation recommends Kubernetes with the official Helm chart for high availability. Ask how the cluster, ingress and database are sized and how chart upgrades are rolled out.
Check the current support matrix in the ZITADEL database documentation before the proposal is accepted, since supported versions change between releases.
Ory divides identity across separate components. Kratos handles identity and user management, and Hydra acts as the OAuth 2.0 and OpenID Connect server. Both are licensed under Apache-2.0 and released v26.2.0 on March 20, 2026, so the questions focus on where the boundaries between components sit and who builds the parts between them.
- License split: Kratos and Hydra are both Apache-2.0. Ask which components the partner proposes and whether any paid or proprietary add-on is included in the design.
- Component boundaries: identity sits in Kratos and token issuance sits in Hydra, so login and consent screens are built and maintained by the implementation team. Ask who builds those screens, how they are tested and how they are themed for each brand.
- Version tracking: both components released v26.2.0 on March 20, 2026. Ask how the partner tracks later releases and whether both components are upgraded together and tested as a pair.
- Tenancy and federation: multi-tenant B2B behavior must be assembled from these parts. Ask how tenant separation, customer identity provider onboarding and SCIM provisioning are designed and who writes and supports that code.
- Topology and failover: ask for the proposed deployment topology, database choice and failover test results for each component, since the partner must document them separately.
Confirm each component's current capabilities and deployment guidance in the Ory Kratos repository and the Ory Hydra repository before assuming them in the design.
How do partners load test login peaks?
What load test scenarios should a CIAM partner cover?
A credible partner covers more than the password login form. The test plan should include password and passkey login, token refresh, registration with email verification, password reset, and session logout, each weighted by its share of real traffic. Passkey ceremonies deserve their own scenario because the browser and authenticator round trips change the server profile. Ask for a written test plan that lists each flow, its expected share of peak traffic, the request mix and the pass criteria for latency and error rate. Refresh traffic often exceeds login traffic in mature apps, so a plan that tests only logins will understate the load.
How should peak login profiles be agreed with the client?
The peak profile should come from the client's own traffic data, not from a generic benchmark. The partner should ask for historical login counts by hour, campaign or marketing launch dates, expected growth, and the ratio of new registrations to returning logins. From these inputs they should write a target profile with a sustained rate and a short burst rate, then get the client to sign it off in writing before testing starts. Illustrative example: a retail brand might plan for a flash sale that triples its normal login rate for ten minutes. A profile agreed in writing makes the results meaningful and prevents disputes after launch.
Which tools do partners use to generate login load?
Ask the partner to name the load generator and explain why it fits the protocol mix. Common open source choices include k6, Gatling and JMeter, and each can script OIDC authorization code flows with PKCE, token refresh and form posts. The answer should also cover where the generators run, because load sources placed inside the same cloud region as the identity service can distort latency. Confirm that the test uses realistic user data, realistic token lifetimes and realistic bot or credential-stuffing traffic, since synthetic data that always hits a warm cache produces optimistic numbers.
What database and cluster sizing evidence should a partner show?
The partner should show measured sizing, not a diagram. For Keycloak, the relevant evidence covers the supported database, connection pool sizing, and the cluster design, which must use a synchronously replicated database for the documented high availability designs. Ask which database engine was tested (Keycloak supports PostgreSQL, MySQL, MariaDB, Oracle, SQL Server and others) and whether the tested version matches the production version. For ZITADEL, ask for PostgreSQL sizing against the supported versions. Request CPU, memory, database connection counts, query latency and Infinispan cache behavior from the Keycloak cluster where it applies. Measurements from a comparable profile are the strongest answer.
How do load test results feed autoscaling and rate limits?
Results should set concrete thresholds, not general statements. The partner should convert measured capacity into autoscaling triggers for the Keycloak or ZITADEL pods, connection pool limits, and rate limits on login, password reset and registration endpoints. Ask how rate limits are tuned so that legitimate peaks pass while credential stuffing is slowed. Good answers name the metric that triggers scaling, the saturation point at which the rate limit engages, and the test that proved it. A partner should also explain how the thresholds are rechecked after each upgrade or traffic change.
Which metrics should be exported for monitoring during peaks?
The partner should confirm that the identity platform exports metrics in a format the client's monitoring stack can scrape and alert on. For Keycloak, ask whether the metrics endpoint is enabled in production and which series are dashboarded, such as login success and failure counts, token issuance rate, latency percentiles and database pool usage. Ask for alert rules tied to these metrics and a runbook for each. The client should own the dashboards and alert definitions after handover, so the team can watch the next peak without the partner present.
Can our own team run these load tests, and what should we budget for?
Your team can run load tests if it has the tooling skills, test data and access to a production-like environment. The cost components are the test environment, the load generation infrastructure, engineering time for scripting and analysis, and repeat runs after each change. Those costs recur whenever the platform, traffic profile or database changes. Ask a partner for a quote that lists the test environment, the number of test cycles, the tools used, the written report and whether retest after fixes is included. DeployOpen plans and runs fixed-scope engagements, with scope, deliverables and timelines agreed in writing before work starts. Ongoing testing is available as a retainer.
How B2B tenants and their identity providers get onboarded
A repeatable sequence turns each new customer organization into a configured tenant with its own identity provider, provisioned users and mapped roles, and leaves a record that the partner and the customer can both verify.
Confirm the tenant model and isolation boundary
Ask the partner to show how the platform separates customers. In Zitadel, the candidate units are instances (virtual tenants with full data isolation), organizations inside instances, and projects that group applications, roles and grants. In Keycloak, the usual units are realms and organizations. Ask which unit maps to a customer, which one holds shared applications, and what changes if a customer needs a separate database or cluster. The closing check is a written diagram plus a test tenant where the partner demonstrates that a user in one organization cannot see another organization's users or settings.
Register the customer's identity provider
Ask who collects the customer's federation metadata, which protocol they use (OIDC or SAML 2.0), and where the trust is configured. Zitadel can federate per organization, so each customer can use a different provider such as Entra ID, Okta, LDAP or another OIDC-compliant service. Keycloak supports identity brokering and LDAP or Active Directory federation. Confirm who holds the client secret or signing certificate, how it is stored, and how rotation is scheduled. The closing check is a sample configuration with secrets redacted and a successful test login from the customer's own test account.
Validate claims and attribute mapping
Before any production user signs in, the partner should map the identity provider's claims (email, group membership, department, tenant identifier) to platform attributes and roles. Ask how unexpected or missing claims are handled, whether logins from an unknown domain are rejected, and how the mapping is versioned. Request the mapping file and a claim-by-claim test matrix. The check is that a test user receives exactly the roles defined for that customer and nothing from another tenant.
Set up SCIM provisioning and deprovisioning
Ask whether the customer will push users and groups through SCIM v2 or whether the platform will rely on just-in-time creation at login. Zitadel provides a SCIM v2 service provider interface for standardized provisioning and lifecycle management, and Keycloak deployments may need an extension or connector depending on the version. The key question is deprovisioning: confirm that a user disabled in the customer's directory loses access, existing sessions are ended, and tokens are revoked within a window the customer agrees to in writing. The check is a recorded test where a user is created, updated and removed from the directory and the platform state follows each change.
Map groups to roles and grants
Groups from the customer directory should map to platform roles and application grants, using a rule set that the customer can read. Ask who approves a new mapping, whether mappings are stored as code in a repository, and how an administrator from the customer side can see what access their users hold. Request a sample mapping table for two illustrative customers with different application sets. The closing check is an access review export showing each role assignment and its source group.
Run the onboarding through a ticketed or self-service workflow with a named owner
Ask whether onboarding is a self-service flow in the customer admin console or a ticket handled by the partner's operations team. For either path, confirm who owns each step, what approvals are required before a production tenant goes live, and how changes after go-live are requested and logged. Ask for the runbook and the workflow history for a sample onboarding. The closing check is a signed-off go-live record naming the tenant, the approving owner on each side, and the date of activation.
Test, hand over and monitor the tenant
Ask what happens after go-live: which login and federation failures are logged, which alerts fire when a customer's identity provider is unreachable, and how certificate expiry is tracked for SAML and OIDC trusts. Request the monitoring dashboard or metric list and an example incident runbook for a failed federation. The closing check is a handover document listing the tenant's configuration, owners, rotation dates and escalation contacts, held by both the partner and the customer.
Questions on login page theming and branding
Login pages are the first thing customers and partner users see, and they are also a common route for phishing and script injection. The questions below help you test whether a CIAM partner can brand each tenant or brand, keep the login surface accurate and accessible, and keep control of who changes it. Each card names what to ask and what a sound answer looks like.
Per-brand and per-tenant themes
Ask how themes are scoped. Many B2B and multi-brand platforms need separate logos, colors, copy and legal text for each brand or customer tenant, and a shared default. A sound answer explains whether themes are stored per realm, organization or instance, how a new tenant inherits a default, and how a theme change is tested before it reaches production. Ask the partner to show a theme applied to two tenants on the same deployment. Zitadel organizes tenants as instances and organizations, which is one way to map brands to isolated scopes.
Custom domains and certificate handling
Ask how a customer-facing login domain such as login.brand.example is issued, validated and renewed. Confirm who holds the DNS and certificate tooling, whether certificates are automated, how wildcard or per-tenant certificates are handled, and what happens to sessions and redirect URIs when a domain changes. A sound answer names the certificate authority process, the renewal alert path, and a rollback plan. Expired login certificates are a common cause of sudden outages, so ask for the monitoring that covers them.
Localization and accessibility checks
Ask which languages are supported, who translates them, and how translated strings are reviewed for legal accuracy. For accessibility, ask for the standard the partner tests against, the tools used, and whether custom templates are re-tested after each change. A sound answer covers keyboard navigation, screen reader labels on password and passkey prompts, color contrast, and error messages that do not reveal whether an account exists. Ask for a sample test report from a previous login theme project.
Custom templates versus forked UI code
Ask whether the login UI is built from the product's theme extension points or from a copy of its source code. Forked code gives full control but turns every upstream release into a merge project, and the Keycloak upgrade model expects regular minor releases. A sound answer names the extension mechanism, lists the files customized, states how upgrade testing is scheduled, and gives an estimate of the effort per upgrade. Ask for the cost of that recurring work to appear in the quote, not only the initial build.
Script and third-party asset controls
Ask which scripts, fonts, analytics tags, chat widgets and external images may load on a login page. Each third-party asset is a possible skimming or tracking point, and some regulated sectors restrict it by policy. A sound answer lists the allowed origins, enforces a content security policy, pins or self-hosts assets where possible, and reviews any new script before release. Ask who removes an asset that fails review and how the partner proves the policy is active in the deployed environment.
Who approves theme changes
Ask who signs off on wording, branding and template changes, and whether that sign-off is recorded. Login pages often carry legal notices, consent text and recovery instructions, so marketing, legal, security and the platform team may each need a role. A sound answer describes a change workflow with version control, a staging environment, named approvers for each change type, and an audit trail of who changed what and when. Ask how emergency changes, such as removing a compromised script, are approved and logged.
How GDPR erasure and export should be handled in the scope
Erasure in a customer identity platform is never just a delete on the user table. The partner should map every place a customer's identifiers or personal data can live: the user store, active sessions and refresh tokens, consent and preference records, audit and event logs, backups, and every downstream system that received the user's identifier, such as a CRM, analytics tool or fraud service. Ask the partner to produce a written data inventory for the chosen platform, whether Keycloak, ZITADEL or Ory, that lists each store, the personal fields it holds, the owning system and the default retention. An erasure plan that does not match this inventory is incomplete.
Ask for the erasure runbook as a tested procedure, not a description. It should state the order of steps, how sessions and tokens are revoked before the account record is removed, how downstream systems are notified and confirmed, and what the operator sees when an erasure request fails partway. Ask how audit and legal retention exceptions are recorded: which events must be kept, under which lawful basis, for how long, and who approves an exception. The partner should also show how a retained record is pseudonymized or restricted so that it no longer identifies the data subject in normal operations.
For export, ask about the file format, the fields included, how the export is assembled from every store in the inventory, and how it is delivered. Delivery controls matter as much as the format: identity of the requester must be verified, download links should expire, and the transfer should be logged. Finally, ask how backups are purged. Restoring an old backup can silently bring back erased records, so the runbook needs a rule for backup expiry or for re-applying erasures after a restore. DeployOpen prepares these controls, configuration and evidence for your review, but it does not issue legal opinions or audit reports. Your privacy counsel and, where needed, an independent auditor must confirm that the approach meets your obligations.
How do upgrades avoid downtime?
How often does Keycloak release, and do upgrades break existing configurations?
Since Keycloak 26.0, the project plans four minor releases a year and a major release every two to three years, and it states that breaking changes in a minor release are opt-in. That lowers the risk of a routine minor upgrade changing behavior without warning, but it does not remove the need to test. Ask the partner which minor and major versions they support, how they track the Keycloak upgrading guide for each step, and which opt-in changes they have reviewed for your realms, clients and custom authenticators before any production change. The current release at the time of writing is 26.8.1, published October 13, 2026, so ask which version the first deployment will target and how the partner plans to move to later releases.
How does a partner handle ZITADEL release tags during upgrades?
The partner should pin every ZITADEL deployment to a specific tagged release, such as the v4.19.5 release published on October 15, 2026, and move between tags only through a tested change. Ask how they read the release notes for each tag, how they map changes to your Helm chart values and database settings, and whether they run the upgrade against a copy of production data first. Because self-hosted ZITADEL runs on PostgreSQL 14 through 18, ask how the partner confirms database compatibility before each step. A credible answer names the tag, the test evidence and the rollback point rather than saying the team will track the latest release.
Should operator updates for Keycloak run automatically or with manual approval?
Manual approval is the safer default. The Keycloak Operator documentation strongly recommends manual approval mode for operator updates to avoid unintended automatic upgrades, because an update can change the running server version without a planned change window. Ask the partner whether they install the Operator through Operator Lifecycle Manager, how they set the approval mode in each cluster, and who approves each update after it has passed staging. The answer should also explain how a rejected or failed upgrade is held in place so that production stays on the last tested version.
Does the database schema migrate automatically at startup, or should it be applied by hand?
Keycloak migrates its database schema automatically at startup by default. For large deployments, the upgrading guide suggests manual migration, where administrators apply the SQL themselves so that a DBA can review the changes and schedule them. Ask the partner which method they will use for your database, how long the schema step is expected to take in your environment (they should measure this in staging, since no general figure applies), and how they keep a copy of the schema before and after the change. Also ask whether the same schema procedure is used in every environment, so that production is not the first place a migration runs.
How do rolling updates keep logins working during a Keycloak cluster upgrade?
A rolling update replaces one node at a time, so that the remaining nodes keep serving logins while each replacement joins the cluster. This depends on the high availability design. Keycloak documents a single cluster optionally spread across availability zones and multi-cluster deployments, and both supported designs need a synchronously replicated database. Ask the partner to show the rolling procedure in writing, the order of node replacement, the health checks that gate each step, how user sessions are handled during the change, and the test results from a rehearsal in a staging environment that matches production topology. Ask also how they confirm that login, token refresh and admin console access work after each node is replaced.
What is a rollback plan for a failed identity platform upgrade?
A rollback plan names the point to return to before the change starts, the steps to restore it, and the time within which the decision to roll back must be made. For an identity platform, the most important rollback point is a verified backup of the database taken immediately before the schema change, together with the container images or chart values for the previous version. Ask the partner how they test the restore path, not only the backup, and whether they can return to the previous version without losing user data created during a partial upgrade. Clarify who has authority to call a rollback during the change window and how signing keys and client configuration are kept consistent if you must return to the earlier version.
Why does staging parity matter for an identity upgrade, and what should it include?
Staging parity means the test environment matches production in the things that change how an upgrade behaves: software versions, database engine and version, cluster topology, realm and client configuration, identity provider federations, theme files and the volume of data. An upgrade that passes in a small, single-node test environment can still fail under production load or with a federated directory. Ask the partner how they keep staging in sync with production, how they copy or anonymize data for tests, and which upgrade paths they have rehearsed. Any red flag should be taken seriously: an upgrade planned as an in-place change without a staging run is a risk the buyer carries, not a detail for later.
Can our own team run upgrades after the engagement ends, and what does ongoing support cost?
Your team can run upgrades on its own if the procedures, runbooks and rollback steps are handed over in writing and your staff have rehearsed them. Cost depends on how much of that work the partner keeps: planning each release, testing it against your configuration, writing the change plan and handling rollbacks. DeployOpen offers ongoing support, upgrades and continuous testing as retainers, and most engagements are fixed-scope with scope, deliverables and timelines agreed in writing before work starts. Ask for a quote that separates the initial deployment from the recurring upgrade work, lists what is included in each release cycle, and states how emergency changes are priced. DeployOpen does not publish a price list, so the quote follows from the written scope.
How to score partner responses
This table compares what a strong and a weak partner answer looks like for each area of a customer identity RFP. Score each area from zero to three, using the full marks column as the bar and treating any disqualifier as a stop. Weight areas by your own risk, since a consumer login product and a B2B tenant platform will not carry the same weight.
| Area | Full marks evidence | Partial marks evidence | Disqualifier |
|---|---|---|---|
| Load testing login peaks | Written test plan with target login rates, peak profile, test tooling, and results from a run against a production-like Keycloak or ZITADEL cluster in your environment | General statement that the platform scales, with no test scenario, data volume or failure-mode results | Refuses to load test in a non-production copy of your environment or cannot describe the peak scenarios |
| Password hash migration | Describes importing existing hashes or just-in-time migration with the source hash algorithm named, and a plan to rehash on successful login without a forced reset | Migration limited to bulk export of usernames, with users told to reset passwords | Proposes forcing all customers to reset passwords, or moving hashes without confirming the algorithm and parameters |
| B2B tenant and identity provider onboarding | Written onboarding runbook for SAML or OIDC federation per customer, SCIM provisioning, tenant isolation model, and a test tenant before go-live | Supports multi-tenancy but onboarding is manual with no tested runbook or tenant isolation explanation | Cannot explain how one customer's identity provider configuration is kept separate from another's |
| Login page theming | Per-brand or per-tenant theming delivered through version-controlled templates, with accessibility testing and a plan for translations | Theming possible through the admin console only, with no change control or accessibility review | No plan to apply your brand or limits all changes to vendor-supplied defaults |
| GDPR erasure and export | Documented workflow for access, export and erasure requests across the identity store and linked systems, with logs proving completion and retention rules for audit records | Erasure handled by deleting the user record, with no coverage of backups, logs or downstream systems | No defined process for data subject requests, or agrees to erasure without checking legal retention duties |
| Upgrades without downtime | Upgrade plan covering a rolling cluster procedure, database schema migration approach, pinned operator approval mode, and rollback steps tested in staging | Upgrades described as routine, with a maintenance window and no rollback test | Plans to upgrade production in place without a staging run or without a current, tested backup |
| Operations and support | Named service levels in writing, monitoring of login errors and latency, on-call coverage, and a runbook for incident handling | Support offered on request with no defined response times or monitoring scope | Cannot say who is on call or where the platform logs and metrics are stored |
| Compliance evidence | Maps platform settings and logs to the controls your regulator asks for, and states clearly that independent auditors provide the assurance | Lists features that could help, without mapping them to control evidence | Claims the platform or the partner is certified or audited in a way the partner cannot evidence |
Answers that should worry you
Vendors who answer these questions vaguely are often the ones who will discover the gaps in production. The red flags below cover load testing, password migration, tenant onboarding, compliance claims, upgrades and data erasure, and each card names the answer that should replace it.
Benchmarks instead of load tests
A partner who quotes a vendor benchmark or a generic requests-per-second figure has not tested your login flow. Peak logins depend on your token lifetimes, federation hops, passkey ceremonies and the database that stores sessions. Ask for a load test run against your scenario, with the test scripts, the target peak you set, the failure points they found and the fixes they applied. The better answer is a written test plan that you can rerun before each release. Ask for the test scripts, not the slide.
Forced resets for every password
Telling you that existing users will reset their passwords at the next login is a churn plan, not a migration plan. Most platforms can verify a legacy hash on first login and rehash it in the new store, which keeps customers signed in without a reset. Ask how the partner verifies each legacy hash format, how they handle users who never return, and how the old store is retired. The better answer is a just-in-time migration with a password fallback and a dated plan to remove the legacy path. Zitadel documents just-in-time migration from several sources, so ask which path applies to your source system.
Tenant onboarding done by hand
If each new B2B customer is set up through console clicks by an engineer, onboarding becomes slow and error-prone, and offboarding is often forgotten. Ask for a written runbook covering how a tenant is created, how its identity provider is registered, which claims and group mappings are required, how SCIM provisioning is switched on, and how a tenant is suspended or deleted. The better answer is scripted or infrastructure-as-code onboarding that the client can run, with a test tenant used to validate each change. Confirm that each customer organization can use its own identity provider in the design you are buying.
Certification claims instead of evidence
A partner that says the platform is certified, or that it will make you compliant, is describing a result it cannot deliver. Compliance assessments are performed by independent auditors and certification bodies, while the implementation partner prepares systems, controls and evidence. Ask which control evidence the partner will produce, such as configuration baselines, access review records, MFA enforcement settings, audit log samples and change records, and who owns each item after handover. The better answer is a mapping from each applicable requirement to a control and an evidence artifact, with the auditor's acceptance left to the auditor.
Zero-risk upgrade promises
Any partner who says upgrades carry no risk has not operated the platform through a major release. Keycloak plans four minor releases a year, and its operator documentation recommends manual approval for operator updates to avoid unintended automatic upgrades. Ask how each upgrade is rehearsed in a staging environment with a copy of production data, how schema migration is run and whether it is applied automatically or manually, and how rollback works. The better answer is a documented upgrade procedure with a tested rollback point and a named approval step before production changes.
Erasure as a single database delete
Deleting a user row does not complete a GDPR erasure request. Customer data also sits in session stores, audit logs, event records, backups, downstream systems and any identity provider links the user created. Ask the partner to list every store that holds personal data for the identity platform, how each one is purged or pseudonymized, how a request is traced end to end, and how backups are handled after deletion. The better answer is an erasure runbook with a per-store checklist, a data export procedure for portability requests, and a record that proves completion. Confirm the retention periods for audit logs with your legal team before work starts.
What do buyers ask before hiring a CIAM partner?
What drives the cost of a self-hosted customer identity project?
Scope drives most of the cost: the number of applications, the number of B2B tenants and their identity providers, the volume of existing users to migrate, how deep the login page theming goes, and the login peak the platform must absorb. Each tenant with its own SAML or OIDC identity provider adds configuration, testing and a support path, so a partner should itemize those counts instead of quoting a single lump sum. Load targets matter because they set the size of the database, the cluster and the load testing effort. Ask for each driver listed as a separate line in the written scope, so you can see which choices move the price.
Which parts of a CIAM project are one-time and which recur?
The initial build is one-time: architecture, installation, realm or organization design, identity provider federation, migration, theming, testing and handover. Recurring costs cover the infrastructure that runs the platform, monitoring, backups, security patching, platform upgrades and support. Keycloak plans four minor releases a year, so upgrades are a permanent line item, not a single event. Ask the partner to separate fixed-scope build fees from any retainer for ongoing support, upgrades and continuous testing, and to state what each retainer includes and excludes.
How long does a customer identity implementation take?
The timeline depends on the number of tenants and identity providers to onboard, the migration approach for existing accounts, the depth of login page customization, the high availability design, and how long compliance evidence and load testing take. Migration is often the longest item, because it involves reconciling user stores and validating logins against real traffic. Your team's review and approval cycles also set the pace. DeployOpen agrees timelines in the written scope before work starts, so ask for a milestone plan with named dependencies and the client decisions each milestone needs.
What does the client's team need to provide during the project?
Expect to supply decisions and access rather than engineering time alone. You will need a named product owner who approves the customer journeys, registration and consent flows, and branding. Your security team should approve the authentication policy, token lifetimes, MFA and passkey rules, and the audit logging design. Your infrastructure team must provide the cloud account or data center, network paths, DNS, certificates and the production database platform, and your legal or privacy team must confirm the consent and data subject request process. For each of these, ask the partner to list the role, the expected effort and the date the input is needed.
Can our team run parts of a customer identity project itself?
Yes, many organizations take on parts of the work, such as theming, operating routine upgrades or managing day-to-day realm and client configuration, while a partner covers architecture, hardening, migration and high availability. The split depends on your team's experience with the platform and your staffing. Keycloak's documentation notes that the Operator should use manual approval mode for updates to avoid unintended upgrades, which shows why upgrade ownership must be agreed up front. Ask the partner which tasks they would hand over, what training and runbooks come with that handover, and who is accountable when a change breaks a login flow.
What should we request in a quote for a CIAM partner?
Ask for a written scope with numbered deliverables, the assumptions behind each estimate, and an explicit list of exclusions. The quote should state the counts it is based on: applications, tenants, identity providers, users to migrate, languages and themes, and target login peaks. It should separate one-time build work from recurring retainers, name the database and high availability design, and describe the acceptance tests for load, migration and erasure requests. Ask how change requests are priced and how a scope change affects the timeline. A quote without these elements is hard to compare across bidders, so request a revised quote if any element is missing.
How do we confirm a CIAM partner can handle load peaks and upgrades?
Ask the partner to show a load test plan that uses your expected login peaks, names the tools and environment, and defines pass criteria before the test runs. For high availability, Keycloak documents a single cluster optionally spread across availability zones and multi-cluster designs, and both supported designs require a synchronously replicated database, so ask which design they propose and why. For upgrades, ask how they test a new minor release against your custom flows, whether they use manual schema migration for large deployments, and how they roll back. Keycloak's upgrading guide suggests manual migration for large deployments, so ask the partner to explain when they would use it.
How DeployOpen scopes, delivers and supports CIAM evaluations
DeployOpen is a Chainscore Labs company that plans, implements, customizes, integrates, hardens, backs up, upgrades, documents and supports self-hosted open-source identity platforms inside the client's own cloud accounts, data centers or air-gapped networks. For a CIAM evaluation, that means the Keycloak, ZITADEL or Ory deployment, its database, the login front end, and the connections to your customer directory and applications run in infrastructure you control. Before you send an RFP to any partner, including DeployOpen, ask who will operate the cluster, where customer data is stored, and which parts of the login path the partner will change.
Most engagements are fixed-scope. Before work starts, the scope, deliverables and timelines are agreed in writing, and a quote follows from that written scope rather than from a published price list. For a CIAM project, the scope should name the items your RFP questions raise: load test targets and results, the hash migration method, the tenant onboarding process, theming work, erasure and export procedures, and the upgrade runbook. Ask each bidder to show which of these they have priced, and which they have marked as out of scope. Ongoing support, upgrades and continuous testing are available as retainers, so the cost of keeping the platform current after go-live is a separate line to confirm in the quote.
DeployOpen prepares systems, controls and evidence for compliance assessments, such as configuration baselines, access reviews, logging settings and runbooks. It does not issue audit reports, attestations or certifications, and independent auditors and certification bodies make those determinations. When you evaluate any partner, including DeployOpen, ask which evidence artifacts they will hand over, who owns the audit relationship, and how the platform's settings will be documented for your assessor. Confirm any vendor or standards-body status claim directly with that party before you rely on it.

