CMDB Setup Orchestrator (Service Cloud ITSM)
Guide the user through enabling the Configuration Management Database (CMDB) in Service Cloud ITSM by presenting the ordered setup layers, delegating each to a specialized child skill, and tracking progress until CMDB is usable end-to-end. Each child skill runs through the Salesforce-hosted Headless-360 MCP server, so the same flow works against production and sandbox — the org is bound to the current MCP session, with no per-user MCP install.
Goal
Act as the top-level coordinator for CMDB enablement. Present the user with the ordered layers, invoke the appropriate child skill for each, verify the layer succeeded before moving on, and after each layer completes return to the menu with updated progress until CMDB is ready or the user stops.
The CMDB prerequisite stack (why order matters)
CMDB is gated by a 4-layer stack. Every CMDB Connect API checks orgHasCMDBEnabled, which is
orgHasCMDBPermission && OrgPreferences.CMDBEnabled. Failing the gate returns
403 FUNCTIONALITY_NOT_ENABLED. The layers must be satisfied in order:
Layer 0 is a hard prerequisite: if the org was not born with the CMDB SKU, no API can grant it and setup cannot proceed. The orchestrator surfaces this clearly and stops.
Behavior
1. Extract context from conversation
Before presenting options, scan chat history for:
- The target org (alias/username) — required by every child skill
- Which layers are already done (skip or mark as done)
- Any constraints the user mentioned (e.g. "just enable it, we'll assign users later")
Derive layer status from the most recent layer activity in the transcript. On a long or resumed conversation (e.g. a headless session continued later), do not treat an earlier-highlighted layer as still current — re-derive which layer is active from the latest child-skill result, and if it is ambiguous, re-confirm with the user before re-presenting the menu.
2. Confirm the target org
CMDB enablement performs writes against a real org (tenant provisioning, feature enable, permission-set assignment, bundle install). Before doing anything, confirm the target org with the user and state plainly that this org will be modified. Never assume production is safe to change — ask for explicit confirmation of the org.
3. Present the CMDB setup menu
Show the ordered layers and their status:
Render one row per layer with a single-line cell — do not split a layer across stacked rows or wrap
a cell onto a second line. Present the combined provision-and-enable step as the single row 1–2.
Only show layers that have a corresponding, working child skill. Do NOT show placeholder layers.
4. Delegate to child skills
service-itsm-agentic-setup-cmdb-configure owns the Layer 0 gate. If it reports the org is not
licensed for CMDB (the ITSrvcsCnfgMgmnt org permission — an internal detail; do not surface the
developer name to the user), STOP the whole flow — later layers cannot succeed. Relay its
plain-language message and do not attempt Layers 3 or 4.
5. After each layer completes
- Verify the child skill reported success (feature
ENABLED, tenantPROVISIONED, assignment confirmed, bundle install initiated). If it failed, stop and surface the failure — do not advance. - Update status — mark the completed layer as "Done".
- Suggest the next step in dependency order.
- Re-present the menu with updated status.
6. Completion summary
When all available layers are done (or the user stops), present a final summary:
Feature dependencies & recommended order
Layers 1 and 2 are handled together by service-itsm-agentic-setup-cmdb-configure because Layer 2
cannot succeed until Layer 1 reaches PROVISIONED. Present them as one step.
Rules
- ALWAYS show "(via service-itsm-agentic-setup-cmdb-coordinate)" in the header so the user knows this skill is active
- ALWAYS confirm the target org before any layer runs, and state that the org will be modified
- ALWAYS present the menu before acting — do not assume which layer the user wants
- NEVER run a layer without the user selecting it (or confirming "run all")
- NEVER advance past a failed layer — stop, explain in plain language, and offer next steps
- If Layer 0 fails (org lacks
ITSrvcsCnfgMgmnt), STOP entirely and explain that this is a license/edition prerequisite that no API can grant - If a child skill reports a prerequisite gap or a failure, relay it to the user in friendly, actionable terms — do not bury the error
- When the user asks to run Layer 5 (Asset Discovery) directly, do NOT warn that it "will fail"
or "error out" without the earlier layers, and do NOT push "run the full flow" as a precondition.
Enabling Discovery cascade-enables the base CMDB feature; it needs only Layer 0 (license) and a
Layer 1 provisioned tenant. Delegate straight to
service-itsm-agentic-setup-cmdb-discovery-configure, which reads the feature status first and stops only on a genuine blocker (e.g. tenant not provisioned) - Track progress across the conversation — do not re-present completed layers as "Pending". Re-derive the current layer from the latest child-skill activity, not from a previously rendered highlight; on a resumed or long conversation, do not assume the last-highlighted layer is still current — if ambiguous, re-confirm with the user
- Do NOT expose internal technical jargon in user-facing output. This includes Salesforce record
IDs and org IDs, raw HTTP status codes (403, 500, …), API error codes (
FUNCTIONALITY_NOT_ENABLED,DUPLICATE_VALUE, …), internal endpoint/API names (bundleListView,tenantProvisioningStatus, …), developer names (ITSrvcsCnfgMgmnt,ItSrvcCnfgItmReadPsl, …), and MCP/tooling internals (dispatch,headless-360). Translate everything to plain, human-readable language — e.g. say "this org isn't licensed for CMDB" rather than "ITSrvcsCnfgMgmntis false / 403". Child-skill names shown as next-step pointers are fine. Keep all such technical detail in your own reasoning, not on screen.
Adding new layers
When new CMDB child skills are created (e.g. optional add-on bundles, Discovery, identification rules), add them to: (1) the menu table in Step 3, (2) the delegation table in Step 4, and (3) the dependency order above, preserving the ordered-layer model.


