Operations App SSO Migration Procedure
1. Purpose
This document describes the recommended migration procedure for enabling Enterprise SSO in the Operations App, including:
-
steps customers must follow in their Identity Provider (IdP),
-
steps Services / Support must follow in the Operations App,
-
expected user behavior during migration,
-
warnings, risks, and rollback considerations.
The procedure is designed to support progressive, low-risk migration, without service disruption or uncontrolled user creation.
2. Key Principles (Important to Communicate Early)
Before starting, all stakeholders must understand:
-
SSO is enabled progressively, not in bulk.
-
Users are created only when they log in (JIT provisioning).
-
Email is used for discovery, not identity.
-
Identity binding happens only after successful SSO login.
-
Disabling users is explicit and reversible.
-
No billing or licensing logic is changed by this migration.
3. Migration Phases (High-Level)
-
Preparation
-
SSO Configuration
-
Pilot Users
-
Gradual Rollout
-
Enforcement
-
Optional De-Provisioning (SCIM)
Each phase is independent and reversible.
4. Phase 1 — Preparation
Critical: Automatic User Creation via SSO
When SSO is enabled for the Operations App, new users may be created automatically the first time they successfully authenticate via SSO (Just-In-Time provisioning).
This means:
-
Any user who can authenticate via the configured IdP and matches the SSO routing rules may gain access to the Operations App.
-
Users do not need to be manually pre-created in the Operations App.
Customer responsibility
It is the customer’s responsibility to:
-
Control which users in the IdP are eligible to authenticate (e.g. assignments, access policies).
-
Review and disable existing Operations App users who should no longer have access.
-
Monitor newly created users during rollout to ensure access remains appropriate.
Failure to clean up obsolete local users may result in:
-
unintended access,
-
inflated user counts,
-
confusion during audit or support activities.
Critical: depending on the current billing model, make sure to count the ENABLED users (instead of just users).
4.1 Customer Responsibilities (IdP)
Customers must:
-
Identify the IdP to be used (Azure AD, Okta, etc.).
-
Ensure each Operations App user has:
-
a stable IdP identifier (sub / persistent NameID),
-
a valid email address (recommended).
-
-
Decide whether:
-
all users will migrate at once, or
-
migration will be phased by team or role.
-
Important
-
Users do not need to be pre-created in the Operations App.
-
IdP group membership alone does not create Operations App users.
Users are created only after a successful SSO login (Just-In-Time provisioning)
When SSO-related user fields (e.g. auth_mode, account_state) are introduced, existing Operations App users are initialized with safe defaults under the hood at deployment/migration time. This does not change login behavior and does not require any customer or Services action.
4.2 Services Team Responsibilities (Ops App)
Before enabling SSO:
-
Review existing Operations App users:
-
Identify users without email.
-
Identify users that should never use SSO (service accounts, test users).
-
-
Communicate clearly:
-
users will continue to log in locally until instructed otherwise,
-
no immediate change occurs when SSO config is created.
-
5. Phase 2 — SSO Configuration
5.1 Services Team — Create SSO Configuration
In the Operations App:
-
Create a new SSO configuration.
-
Select target audience:
-
Operator (Operations App).
-
-
Select an Operations User template:
-
This defines permissions for future JIT users only.
-
-
Configure IdP metadata, certificates, endpoints.
-
Save the configuration.
✔️ At this stage:
-
No user behavior changes.
-
No users are created.
-
No users are blocked.
5.2 Validation Checklist
Before proceeding:
-
Only one SSO configuration should match a given email domain (or other discovery rule).
-
No ambiguity exists in routing.
-
Services team confirms routing determinism using test identifiers.
6. Phase 3 — Pilot Users
6.1 Services Team — Prepare Pilot Users
For existing users who will pilot SSO:
-
Ensure the user has an email set (if blank).
-
Set auth_mode = SSO_PREFERRED.
This allows:
-
SSO attempt first,
-
safe local fallback.
⚠️ Do not set SSO_REQUIRED yet.
6.2 Pilot User Instructions (Client-Facing)
Users are instructed to:
-
Go to the Operations App login page.
-
Enter their email (recommended) or username.
-
If redirected to the IdP:
-
authenticate as usual.
-
-
If not redirected:
-
log in with existing username/password.
-
On first successful SSO login:
-
their account becomes permanently linked to the IdP,
-
no further action is required.
7. Phase 4 — Gradual Rollout
7.1 Services Team
Repeat for additional users or groups:
-
Populate email if missing.
-
Set auth_mode = SSO_PREFERRED.
Monitor:
-
SSO Event Log (runtime observability).
-
Binding success/failure.
-
Provisioning failures (for new users).
7.2 Handling New Users
For users not yet in the Operations App:
-
They are created automatically only when they log in via SSO.
-
Permissions are assigned via the selected Operations User template.
-
No local password is created by default.
This prevents:
-
overnight creation of hundreds of users,
-
uncontrolled billing growth.
8. Phase 5 — Enforcement (Optional)
Once confidence is high:
8.1 Services Team
For selected users or groups:
-
Change auth_mode to SSO_REQUIRED.
Pre-flight validation ensures:
-
routing is deterministic,
-
users are not locked out.
After this:
-
local login is no longer allowed,
-
SSO becomes mandatory.
⚠️ Warning
-
Do not enforce SSO_REQUIRED unless users have already logged in successfully via SSO at least once, or routing is guaranteed.
9. Phase 6 — Optional De-Provisioning (SCIM)
9.1 When to Enable SCIM De-Provisioning
Only after:
-
SSO migration is stable,
-
users are reliably linked,
-
customer understands disable semantics.
9.2 Services Team — Configuration
-
Enable SCIM integration on the SSO configuration.
-
Set scim_deprovisioning_enabled = true.
-
Provide SCIM endpoint and credentials to the customer.
9.3 De-Provisioning Behavior (Important to Explain)
When a user is removed or disabled in the IdP:
-
If the user exists and is SSO-linked:
-
their Operations App account is disabled.
-
-
If the user:
-
never logged in,
-
or was never SSO-linked:
-
the SCIM request is a no-op.
-
Disabled users:
-
cannot log in (local or SSO),
-
remain visible,
-
can be re-enabled manually if needed.
10. Warnings and Attention Points
Identity & Matching
-
Email changes in IdP do not affect linkage.
-
Usernames may change without impact.
-
Only (issuer, subject) matters.
Admin Actions
-
Admins cannot “fix” linkage manually.
-
Admins cannot force identity binding.
-
Re-enabling users does not remove linkage.
Observability
-
Audit Trail ≠ Runtime Event Log.
-
Use:
-
Audit Trail for configuration & admin actions.
-
SSO Event Log for login failures, binding issues, provisioning errors.
-
11. Risks and Mitigations
|
Risk |
Mitigation |
|---|---|
|
User lockout |
Use SSO_PREFERRED before SSO_REQUIRED |
|
Ambiguous routing |
Blocked deterministically; fix config before rollout |
|
Too many users created |
JIT provisioning only |
|
IdP cleanup disables wrong users |
SCIM applies only to SSO-linked users |
|
Debugging failures |
Always-on runtime SSO Event Log |
12. Rollback Strategy
At any time:
-
Set users back to LOCAL_ONLY.
-
Disable SSO configuration.
-
Disable SCIM de-provisioning flag.
No user data is lost; no identity linkage is removed.
13. Final Notes for Services Team
-
Never rush enforcement.
-
Always test with pilot users.
-
Check observability before assuming user error.
-
SSO linkage is permanent; treat first login carefully.