Skip to content
Edouard Topin's Blog
From Legacy VM Apps to All Apps with VCF Automation 9.1 / Series 09/09

Finishing the Migration: Identity, Operations, Audit, and VM Apps Retirement

Migrate identity and operations, drain the legacy estate, and prove that no unaccepted dependency remains before deletion.

Edouard Topin
8 min read
A VM Apps organization moving from open to frozen, disabled, and potentially deleted

The last migrated VM does not finish the program. A forgotten token, cleanup subscription, dashboard pointing at the old CI, or team still opening incidents against VM Apps is enough to preserve dependency. Counting workloads therefore creates a false sense of closure.

This final chapter handles the platform as a whole: identity, API clients, support, cost, archives, external writers, and the legacy organization. Retirement follows four states: open → frozen → disabled → optionally deleted. The controls are an unexecuted reconstruction. Adapt them to the VCF Automation 9.1 build, retention contract, and GSS answers obtained for the environment.

Controlled drainPermanent deletionTraceable audit

TL;DR

  • Freeze new requests, drain deployments, and stop legacy writers before disabling; zero VMs does not prove zero dependency.
  • Disablement is the observation gate: users lose access while the Provider Administrator retains documented management capability. Deletion is permanent.
  • On Monday, build a “zero unaccepted dependencies” matrix spanning workload, data, network, identity, API, extensions, operations, and audit, with an owner for every exception.

Four states, one irreversible point

The activation and deactivation TechDocs state that disabling an organization prevents users from logging in and ends their sessions. The Provider Administrator can still manage its resources and networks. That behavior makes Disabled a useful gate: observe what breaks without having deleted the organization.

Retirement states for a VM Apps organization: open, frozen, disabled for observation, and permanently deleted after a no-unaccepted-dependency gate
Disablement creates an observation period; deletion removes organization-level rollback.

Frozen is a proposed operating convention, not a Broadcom organization type. New catalog requests are blocked while Day-2 actions and subscriptions required by living resources remain available. The return from Disabled to an operable state must be verified on the exact build before being promised. Organization deletion is documented as permanent and must never be used as a test.

Leave legacy identity without losing users

After upgrade, vIDM may continue providing compatibility for the VM Apps rail. The target separates planes: Provider Management migrates to VCF Identity Broker and VCF SSO, while the All Apps organization uses a supported IdP and group mappings. Broadcom KB 440245, whose declared environment is VCF Automation 9.0.x, documents the incompatibility of vIDM as an All Apps IdP. For 9.1, confirm this against the 9.1 IdP TechDocs and the exact build.

The safe sequence begins with a tested break-glass account, followed by target IdP connection. Import groups rather than a hand-maintained user list, map Organization Admin, Project Admin, and Project User roles, and test every persona: allowed login, expected visibility, allowed action, and intended denial. One successful administrator does not prove consumer mappings.

Service accounts and machine clients need their own inventory. Give them a target endpoint, supported token flow, organization and project context, minimum scopes, and rotated secret. Observe authentication logs before revoking the old rail. The SSO migration to VCF Identity Broker provides the product procedure; your register links every source group and client to its target equivalent.

Requalify APIs and extensions

VM Apps and All Apps do not expose the same functional contract. A client receiving HTTP 200 but an empty catalog may use the wrong tenant, scope, or project. Test a useful operation end to end, not merely token acquisition.

Element VM Apps rail All Apps rail Closure evidence
endpoint inventoried legacy URL approved target URL useful request succeeds
token old flow supported flow expiry and rotation tested
context VM Apps organization All Apps organization + project expected objects visible
payload historical types All Apps model contract and error validated
scopes inherited least privilege negative denial tested

KB 427076 notes that Embedded Orchestrator does not support Basic Authentication in the documented context. Do not re-enable a weak mechanism to avoid adapting a client. Migrate packages, endpoints, certificates, and token flows, then revoke legacy credentials.

Order matters for subscriptions and Custom Resources. Disable create or update subscriptions once no service should write to DNS, IPAM, AD, or CMDB. Keep delete/cleanup paths until the final object is handled; otherwise the platform loses the ability to clean what it created. Then archive package, version, topic, observed payload, workflow, technical account, and relation to external IDs.

client_migration_record_template:
  evidence_status: expected-result
  validation_requirements:
    - useful-operation-succeeds
    - least-privilege-negative-test
    - legacy-secret-revoked-after-observation
  client: webshop-release-pipeline
  target_context: acme-all-apps/prj-webshop-modern
  authentication: supported-token-flow
  useful_test: catalog-query-and-deployment-read
  least_privilege_negative_test: required
  old_secret_revocation: after-observation
  execution_status: not-performed

Operate two rails without two truths

During coexistence, Service Desk, NOC, and SecOps must know which rail owns each service. For every All Apps target, publish runbook, on-call team, dashboards, alerts, log correlation by organization/project/Namespace/deployment, backup and restore, rotation rules, Day-2 actions, and provider-versus-organization escalation route.

Create a mapping between old and new CIs. Without it, incidents may open against the retired VM Apps object, target alerts may route to the previous team, and audit can lose the link between source request and target deployment. Technical coexistence is simpler than the ownership discipline it requires.

Cost reporting also needs correction. KB 435125 says VM Apps organizations are not visible under Capacity > Cost > ShowBack > Organization, unlike All Apps organizations. An apparent decrease in that view does not prove legacy drainage. Build a transitional report from other supported views or exports and show dual-run cost separately. Do not promise historical showback continuity across both models.

Freeze, drain, archive

Classify every VM Apps catalog item as replace, retain, retire, or unknown. replace hides or unpublishes the legacy item for new requests and points consumers to the target. retain describes an exception with owner and review date. retire closes after proof. unknown blocks retirement and immediately receives an investigation owner.

Every remaining deployment gets an explicit disposition:

deployment_disposition_example:
  evidence_status: design-hypothesis
  execution_status: not-performed
  source_id: webshop-prod-042
  service: webshop-prod
  owner: ecommerce-operations
  decision: migrated
  target_id: webshop-modern-118
  data_disposition: reconciled-and-accepted
  external_objects: [dns-record, cmdb-ci, ad-computer-accounts]
  audit_reference: CHG-2026-1842
  delete_authorized: false

An ownerless deployment is not a good deletion candidate. It is a blocker. For retired objects, the archive retains organization, project, catalog item, template, and version identifiers; requests, deployments, and resources; owners, leases, and approvals; useful event history; Custom Forms; Orchestrator packages; Custom Resource instances; old ID → new ID relationships; cutover decisions; and cleanup evidence.

Test the archive by searching for an old identifier from a workstation that does not depend on the VM Apps organization. An archive readable only through the platform about to be deleted is not an exit archive.

Stop writers in the right order

Begin by preventing new requests. Verify no deployment requires an external create/update, run final cleanups, disable create/update subscriptions, keep delete until the end, and then revoke legacy accounts and workflows. Finally confirm that All Apps writers are the only active owners.

This sequence prevents a late action from modifying a CI, address, or AD account during observation. It also prevents the opposite trap: removing cleanup too early and leaving external objects without lifecycle.

The “zero unaccepted dependencies” review

Domain Closure question
workload does every deployment have a disposition and owner?
data does every volume, backup, and archive have decided retention?
network are legacy rules, VIPs, DNS, and IPAM handled?
identity are groups, accounts, tokens, and certificates migrated or revoked?
extensions are subscriptions, workflows, and Custom Resources stopped or archived?
operations are target monitoring, backup, incident, and cost processes operational?
audit can every old ID be found outside VM Apps?
support do blocking GSS questions have written answers?

“Accepted” allows a legitimate exception but never an invisible one. It has an owner, risk, expiry, cost, and durable operating platform. The gate does not necessarily seek zero objects; it requires zero dependencies whose disposition remains unknown.

Disable, observe, decide

After approval, disable acme-vmapps-legacy from Provider Management. Retain task ID, timestamp, approvers, pre-action state, user-denial test, and All Apps control results. During observation, monitor rejected authentication, API calls, scheduled tasks, alerts, and user tickets.

If a legitimate dependency appears, Provider Management presents the organization control as “Enable or Disable,” but reactivation behavior and state preservation must be validated on the exact build. If reactivation is required and validated, re-enable the organization under an approved change, expose only the minimum catalog or Day-2 capability needed to handle the dependency, return to frozen state, and restart observation. Do not reopen the entire catalog by reflex.

Permanent deletion requires at least: completed observation, no untreated workload or external object, tested archive, revoked credentials, compliant backups, application/data/platform/security/audit signatures, and approved irreversible change. Delete prerequisites vary by organization type; apply the build-specific procedure to the VM Apps source rather than extrapolating All Apps prerequisites.

A script fails after disablement
Identify its owner and legitimacy. If necessary and validated on the build, restore minimum access, migrate the client, and restart the entire observation period.
The API catalog is empty
Verify token, organization context, project, and scopes. A successful HTTP code does not validate client intent.
VM Apps cost is absent from showback
Apply the documented limitation and use the complementary transitional report. Absence from this view does not mean zero cost.
Cleanup no longer starts
The subscription was probably stopped too early. Restore the minimum function, clean objects, and correct writer shutdown order.
A dependency appears after deletion
Deletion is permanent; preserve evidence and engage support. Never promise undocumented organization restoration.

Leave Mixed Tenancy too

After VM Apps and its shared dependencies disappear, reassess the feature flag, residual visibility, vCenter/NSX capacity, temporary network rules, legacy accounts, and transition infrastructure. The exact flag-removal sequence and prechecks need lab validation and, for production, GSS confirmation. Do not disable shared capability merely because the last deployment is gone; first verify what still consumes it.

Conclusion

Migration completion is a demonstration, not opportunistic cleanup. Prove target identity works, clients act in the right tenant, operations own on-call responsibility, archives survive the legacy platform, and each writer stopped at the right time. Only then does disablement observe the expected silence; deletion remains a separate irreversible decision.

Zero unknowns

An exception may remain, but its owner, risk, expiry, and operating path are explicit.

Disable before deletion

The gate ends sessions and reveals late dependencies while preserving documented provider management capability.

Audit survives

Old and new IDs remain linked in an archive readable without bringing the source organization back online.

The target product built in the previous App Stack Formation article gives consumers a real replacement path. To revisit the whole decision, return to the VM Apps to All Apps migration study.

Official sources: SSO migration to Identity Broker · Identity Provider management · KB 440245 — vIDM and All Apps · KB 427076 — Orchestrator Authentication · KB 435125 — Showback · Deactivate an organization · Delete an organization.

Get the next one by email

New articles and series, sent when they are published. No other mail.

One click to unsubscribe, any time.

Back to blog
Share

Related articles

  1. 8 min read

    App Stack Formation: Capture the WebShop Namespace Without Capturing Its Flaws

    Validate the Namespace, VM Group, and Content Library before performing a controlled, traceable App Stack capture.

  2. 6 min read

    From Captured Namespace to Catalog Product: Customize and Version the App Stack

    Test the clone, externalize identities and data, then promote a versioned App Stack into the catalog.

  3. 8 min read

    After the Upgrade: What the VM Apps Organization Really Preserves

    Establish a post-upgrade baseline, validate identity, Orchestrator, and Day-2, then separate upgrade debt from migration debt.

Follow along

New articles, thoughts, and updates.