@salesforce/afv-skills 1.44.0 → 1.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/skills/consumer-goods-rtr-datacloud-export-configure/SKILL.md +72 -0
- package/skills/consumer-goods-rtr-datacloud-export-configure/references/inputs-and-namespace.md +38 -0
- package/skills/consumer-goods-rtr-datacloud-export-configure/references/procedure.md +158 -0
- package/skills/consumer-goods-rtr-datacloud-export-configure/scripts/detect-namespace.js +86 -0
- package/skills/consumer-goods-rtr-datacloud-export-configure/scripts/render-apex.js +64 -0
- package/skills/consumer-goods-rtr-datacloud-export-configure/scripts/resolve-id-by-name.js +47 -0
- package/skills/consumer-goods-rtr-datacloud-export-configure/scripts/sf-rest.js +171 -0
- package/skills/consumer-goods-rtr-datacloud-export-configure/scripts/soql-escape.js +26 -0
- package/skills/consumer-goods-rtr-datacloud-export-configure/scripts/upsert-report-config.apex +51 -0
- package/skills/consumer-goods-rtr-datacloud-export-configure/scripts/upsert-system-setting.apex +21 -0
- package/skills/consumer-goods-tpe-dashboard-configure/SKILL.md +74 -0
- package/skills/consumer-goods-tpe-dashboard-configure/references/phases-1-6.md +112 -0
- package/skills/consumer-goods-tpe-dashboard-configure/references/phases-7-12.md +157 -0
- package/skills/consumer-goods-tpe-dashboard-configure/scripts/find-failure-reason.js +132 -0
- package/skills/consumer-goods-tpe-dashboard-configure/scripts/poll-status.js +116 -0
- package/skills/consumer-goods-tpe-dashboard-configure/scripts/render-apex.js +64 -0
- package/skills/consumer-goods-tpe-dashboard-configure/scripts/run-data-transform.js +121 -0
- package/skills/consumer-goods-tpe-dashboard-configure/scripts/schedule-business-period-export.apex +27 -0
- package/skills/consumer-goods-tpe-dashboard-configure/scripts/sf-rest.js +171 -0
- package/skills/consumer-goods-tpe-dashboard-configure/scripts/soql-escape.js +25 -0
- package/skills/consumer-goods-tpe-dashboard-custom-kpi-configure/SKILL.md +141 -0
- package/skills/consumer-goods-tpe-dashboard-custom-kpi-configure/references/payload-shapes.md +447 -0
- package/skills/consumer-goods-tpe-dashboard-custom-kpi-configure/references/procedure.md +263 -0
- package/skills/consumer-goods-tpe-dashboard-custom-kpi-configure/scripts/clone-tpe-dashboards.js +537 -0
- package/skills/consumer-goods-tpe-dashboard-custom-kpi-configure/scripts/sf-rest.js +195 -0
- package/skills/consumer-goods-tpe-datakit-deploy/SKILL.md +157 -0
- package/skills/consumer-goods-tpe-datakit-deploy/scripts/detect-namespace.js +86 -0
- package/skills/consumer-goods-tpe-datakit-deploy/scripts/download-static-resource.js +151 -0
- package/skills/consumer-goods-tpe-datakit-deploy/scripts/extract-crm-field-permissions.js +115 -0
- package/skills/consumer-goods-tpe-datakit-deploy/scripts/sf-rest.js +109 -0
- package/skills/consumer-goods-tpe-datakit-deploy/scripts/update-field-permissions.js +433 -0
- package/skills/service-catalog-template-coordinate/SKILL.md +263 -0
- package/skills/service-catalog-template-coordinate/examples/output-templates.md +44 -0
- package/skills/service-catalog-template-coordinate/references/mcp-invocation.md +183 -0
- package/skills/service-catalog-template-coordinate/references/operations.md +230 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/SKILL.md +243 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/references/cli-invocation.md +205 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/references/helper-contracts.md +236 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/references/permset-topology.md +132 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/scripts/classify-activated-agents.mjs +106 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/scripts/classify-agent-access-state.mjs +113 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/scripts/classify-assignment-state.mjs +99 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/scripts/classify-platform-permset-availability.mjs +155 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/scripts/gate-unified-catalog-tiers.mjs +100 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/scripts/rank-candidate-users.mjs +95 -0
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/scripts/resolve-target-user.mjs +86 -0
- package/skills/service-itsm-agentic-setup-agentforce-coordinate/SKILL.md +44 -23
- package/skills/service-itsm-agentic-setup-agentforce-coordinate/examples/output-templates.md +33 -9
- package/skills/service-itsm-agentic-setup-agentforce-studio-configure/SKILL.md +17 -18
- package/skills/service-itsm-agentic-setup-cmdb-coordinate/SKILL.md +3 -1
- package/skills/service-itsm-agentic-setup-configure/SKILL.md +20 -12
- package/skills/service-itsm-agentic-setup-configure/examples/output-templates.md +73 -5
- package/skills/service-itsm-agentic-setup-employee-agent-configure/SKILL.md +8 -7
- package/skills/service-itsm-agentic-setup-employee-agent-configure/references/cli-invocation.md +45 -33
- package/skills/service-itsm-agentic-setup-employee-agent-configure/references/reactivation.md +8 -6
- package/skills/service-itsm-agentic-setup-employee-agent-configure/references/workflow-detail.md +10 -10
- package/skills/service-itsm-agentic-setup-employee-agent-configure/scripts/classify-agent-existence.mjs +114 -56
- package/skills/service-itsm-agentic-setup-employee-agent-configure/scripts/classify-preflight.mjs +33 -17
- package/skills/service-itsm-agentic-setup-employee-agent-configure/scripts/render-report.mjs +9 -3
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/SKILL.md +8 -7
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/cli-invocation.md +43 -32
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/reactivation.md +6 -4
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/workflow-detail.md +10 -10
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/classify-agent-existence.mjs +106 -55
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/classify-preflight.mjs +27 -13
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/render-report.mjs +9 -3
- package/skills/service-itsm-agentic-setup-incident-sla-configure/SKILL.md +159 -161
- package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/attach-milestone-action.json +51 -0
- package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/attach-milestone.json +1 -1
- package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/predefined-incident-policy.json +120 -0
- package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/milestone-patterns.md +28 -5
- package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/output-templates.md +19 -1
- package/skills/service-itsm-agentic-setup-incident-sla-configure/references/mcp-invocation.md +350 -30
- package/skills/service-itsm-channels-coordinate/SKILL.md +80 -213
- package/skills/service-itsm-slack-itservice-configure/SKILL.md +363 -0
- package/skills/service-itsm-slack-itservice-configure/references/connect-agentforce-to-slack.md +159 -0
- package/skills/service-itsm-slack-itservice-configure/references/manage-slack-connection.md +88 -0
- package/skills/service-itsm-slack-itservice-configure/references/manage-user-access.md +117 -0
- package/skills/service-itsm-slack-itservice-configure/references/record-visibility.md +78 -0
- package/skills/service-itsm-slack-itservice-configure/references/site-membership-verification.md +126 -0
- package/skills/service-itsm-slack-itservice-configure/scripts/classify-user-access.mjs +167 -0
- package/skills/service-itsm-teams-configure/SKILL.md +50 -47
- package/skills/service-itsm-teams-configure/references/azure-credential-population.md +42 -28
- package/skills/service-itsm-teams-configure/references/gotchas.md +1 -2
- package/skills/service-itsm-teams-coordinate/SKILL.md +22 -18
- package/skills/service-itsm-teams-coordinate/examples/output-templates.md +12 -9
- package/skills/service-itsm-teams-itdesk-configure/SKILL.md +60 -44
- package/skills/service-itsm-teams-itservice-configure/SKILL.md +56 -70
- package/skills/service-catalog-template-deploy/SKILL.md +0 -310
- package/skills/service-catalog-template-deploy/references/cli-invocation.md +0 -258
- package/skills/service-catalog-template-deploy/scripts/activate-verify.mjs +0 -164
- package/skills/service-catalog-template-deploy/scripts/build-deploy-payload.mjs +0 -94
- package/skills/service-catalog-template-deploy/scripts/resolve-template.mjs +0 -331
- package/skills/service-catalog-template-search/SKILL.md +0 -212
- package/skills/service-catalog-template-search/references/cli-invocation.md +0 -128
- package/skills/service-catalog-template-search/scripts/classify-catalog.mjs +0 -205
|
@@ -2,13 +2,12 @@
|
|
|
2
2
|
name: service-itsm-agentic-setup-incident-sla-configure
|
|
3
3
|
description: "End-to-end Incident SLA setup for Service Cloud ITSM — creating a MilestoneType, an Incident-scoped SLA Policy (SlaProcess), attaching a Milestone with criteria, and wiring an Entitlement so Incidents derive an EntityMilestone with a computed TargetDate. Use when the user asks to configure SLA milestones on Incidents, create an SLA policy for Incident records, set up entitlement processes for ITSM, wire milestones so they appear on the Incident page, or enable SLA tracking for incident management. DO NOT TRIGGER when: the user asks about Case entitlements or Case SLA (not Incident), querying existing SLA policies without setup intent, general Entitlement sObject CRUD unrelated to Incident, or Milestone queries for reporting purposes only."
|
|
4
4
|
metadata:
|
|
5
|
-
version: "3.
|
|
5
|
+
version: "3.6"
|
|
6
6
|
domains: ["Service"]
|
|
7
7
|
minApiVersion: "67.0"
|
|
8
8
|
relatedSkills:
|
|
9
9
|
- "service-itsm-incident-mgmt-configure"
|
|
10
10
|
- "service-itsm-incident-priority-configure"
|
|
11
|
-
accessCheck: []
|
|
12
11
|
mcpTools:
|
|
13
12
|
headless-360:
|
|
14
13
|
tools: ["describe", "discover", "dispatch", "dispatch_readonly"]
|
|
@@ -23,25 +22,23 @@ allowed-tools: |
|
|
|
23
22
|
|
|
24
23
|
# Configuring Incident SLA (End-to-End)
|
|
25
24
|
|
|
26
|
-
Configures a complete **Incident SLA pipeline** for Service Cloud ITSM — the chain that derives
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
1. **MilestoneType** — define what you're measuring (e.g., "First Response").
|
|
35
|
-
2. **SLA Policy** — the SlaProcess scoped to Incident with entry/exit criteria.
|
|
36
|
-
3. **Milestone** — attach to the policy with a time trigger and filter criteria.
|
|
37
|
-
4. **Entitlement** — wire to an Account so Incidents with that Entitlement engage the SLA.
|
|
25
|
+
Configures a complete **Incident SLA pipeline** for Service Cloud ITSM — the chain that derives an
|
|
26
|
+
EntityMilestone (with a computed TargetDate) on every Incident with an Entitlement. Every operation
|
|
27
|
+
runs through the Salesforce-hosted **`headless-360`** MCP server; the org is derived from the OAuth
|
|
28
|
+
JWT — the skill never handles an org id, alias, or credentials. It also needs the org-level **SLA Management for IT
|
|
29
|
+
Service** setup item (the Phase 0.5 gate — see below). Setup has four parts:
|
|
30
|
+
**MilestoneType** (what you measure) → **SLA Policy** (SlaProcess scoped to Incident, entry/exit
|
|
31
|
+
criteria) → **Milestone** (time trigger + filter criteria) → **Entitlement** (wired to an Account so
|
|
32
|
+
Incidents engage the SLA).
|
|
38
33
|
|
|
39
34
|
## Scope
|
|
40
35
|
|
|
41
36
|
- **In scope**: Creating MilestoneTypes, SLA Policies (SlaProcess), Milestones with criteria,
|
|
42
37
|
Entitlements, and verifying SLA engagement on Incident records — all via `headless-360` MCP.
|
|
43
|
-
- **In scope — prerequisite**: checking and (on
|
|
44
|
-
|
|
38
|
+
- **In scope — prerequisite**: checking and (on consent) enabling **SLA Management for IT Service**
|
|
39
|
+
(Phase 0.5); halts if not fully enabled or consent declined.
|
|
40
|
+
- **In scope — predefined vs custom** (Phase 0.6): offering the OOB *Standard Support for Incidents*
|
|
41
|
+
policy (Incident only) vs a custom one.
|
|
45
42
|
- **Out of scope**: Case SLA/entitlements; Assignment Rules; Escalation Rules; Notification
|
|
46
43
|
Rules; general Entitlement CRUD not related to Incident SLA; SLA reporting.
|
|
47
44
|
|
|
@@ -49,43 +46,27 @@ permanent **SLA Versioning** bit, both gated by Phase 0.5. Setup has four parts:
|
|
|
49
46
|
|
|
50
47
|
## Routes at a glance
|
|
51
48
|
|
|
52
|
-
Reads
|
|
53
|
-
`
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|---------|---------------|------|
|
|
59
|
-
| Master Incident Mgmt pref (read) | `GET /services/data/v67.0/connect/setup/discovery/features`, filter `apiName == "service-cloud-itsm-incident"` for `status` | — |
|
|
60
|
-
| SLA Mgmt prerequisite (Phase 0.5) | Feature `status`/`enable` + SLA Versioning read/PATCH on `EntitlementSettings` — see `references/mcp-invocation.md` | see ref |
|
|
61
|
-
| Preflight (Incident on) | `GET /services/data/v67.0/sobjects/Incident/describe` | — |
|
|
62
|
-
| Default BusinessHours | `GET /services/data/v67.0/query` (q via `query_params.q`) | — |
|
|
63
|
-
| Create MilestoneType | `POST /services/data/v67.0/connect/sla-management/milestone-types` | `{"name","description","recurrenceType"}` |
|
|
64
|
-
| Create SLA Policy | `POST /services/data/v67.0/connect/sla-management/sla-policies` | `{"name","processType":"Incident","businessHourId",...}` |
|
|
65
|
-
| Attach Milestone | `POST /services/data/v67.0/connect/sla-management/sla-policies/<id>/milestones` | `{"milestoneTypeId","timeTrigger","milestoneCriteria":[...]}` |
|
|
66
|
-
| Create Entitlement | `POST /services/data/v67.0/sobjects/Entitlement` | `{"Name","AccountId","SlaProcessId","BusinessHoursId","StartDate","EndDate"}` |
|
|
67
|
-
| Create test Incident | `POST /services/data/v67.0/sobjects/Incident` | `{"Subject","EntitlementId",...}` |
|
|
68
|
-
| Verify SLA policy | `GET /services/data/v67.0/query` (q for `SlaProcess`) | — |
|
|
69
|
-
| Verify engagement | `GET /services/data/v67.0/query` (q for `EntityMilestone`) | — |
|
|
70
|
-
|
|
71
|
-
**Response envelope**: SLA Management Connect, `/sobjects/…`, and `/query` are standard REST — the
|
|
72
|
-
`dispatch*` MCP tool returns the REST response directly (`{status_code, body}`); read `body`. Only
|
|
73
|
-
`/headless/invoke/…` Aura-controller routes are doubly wrapped (`body.body`) — this skill uses none.
|
|
49
|
+
Reads → `mcp__headless-360__dispatch_readonly`, writes → `mcp__headless-360__dispatch`. Both take raw
|
|
50
|
+
HTTP: `{"url","method","body"?,"query_params"?}` — **not** `{operation_id, arguments}`. **Response
|
|
51
|
+
envelope**: standard REST — read `body` from `{status_code, body}`. The full route table — create
|
|
52
|
+
MilestoneType / SLA Policy / Milestone, Entitlement, BusinessHours, test Incident, the Phase 0.5
|
|
53
|
+
feature calls, and the `create-milestone-action` op — with request/response shapes lives in
|
|
54
|
+
`references/mcp-invocation.md`.
|
|
74
55
|
|
|
75
56
|
---
|
|
76
57
|
|
|
77
58
|
## Clarifying Questions
|
|
78
59
|
|
|
79
|
-
Ask only what you cannot infer from
|
|
80
|
-
conversation)"). **Resolve the Phase 0.5 gate first
|
|
60
|
+
Ask only what you cannot infer from context (pre-populate; note "(from
|
|
61
|
+
conversation)"). **Resolve the Phase 0.5 gate first.**
|
|
81
62
|
|
|
82
63
|
- **Which org?** `headless-360` binds to the current OAuth session; confirm the target before mutating.
|
|
83
|
-
- **Milestone strategy?** See Phase 1.4
|
|
84
|
-
- **Target Account?**
|
|
64
|
+
- **Milestone strategy?** See Phase 1.4 (skipped per its skip conditions).
|
|
65
|
+
- **Target Account?** For the Entitlement.
|
|
85
66
|
- **Milestone criteria?** Default `Status != Closed`, plus pattern-specific filters.
|
|
86
67
|
|
|
87
|
-
Default suggestion: SLA Policy `Incident SLA Policy`, default BusinessHours,
|
|
88
|
-
Entitlement `today → today + 1 year`, milestone strategy resolved per Phase 1.4.
|
|
68
|
+
Default suggestion: SLA Policy `Incident SLA Policy`, default BusinessHours, the Account the user
|
|
69
|
+
picks, Entitlement `today → today + 1 year`, milestone strategy resolved per Phase 1.4.
|
|
89
70
|
|
|
90
71
|
---
|
|
91
72
|
|
|
@@ -96,62 +77,66 @@ All steps are sequential. **Always read before you write.** Every call goes thro
|
|
|
96
77
|
|
|
97
78
|
### Phase 0 — Reuse what the session already knows
|
|
98
79
|
|
|
99
|
-
Each Phase 1 read
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
session (successful `dispatch_readonly` on Setup Discovery, or a live read by
|
|
106
|
-
`service-itsm-incident-mgmt-configure`) AND `status` was `ENABLED` AND no write since.
|
|
107
|
-
A cached "not enabled" / unknown / user-asserted value is NOT cache-eligible — fall
|
|
108
|
-
through to step 1.
|
|
109
|
-
- **SLA Management feature + SLA Versioning** — reuse only if both were read live this session
|
|
110
|
-
(Phase 0.5) and unwritten since; else re-run Phase 0.5.
|
|
111
|
-
- **Incident describe / SLA-field presence** — if `Incident.describe` was already run against
|
|
112
|
-
the current org this session and the presence of `EntitlementId` / `SlaStartDate` /
|
|
113
|
-
`SlaExitDate` is in context, skip step 3 and reuse the answer.
|
|
114
|
-
- **Default BusinessHours id** — if a `BusinessHoursId` for the current org's default is
|
|
115
|
-
already captured, skip step 4.
|
|
116
|
-
- **Account id** — if the Account the user named (or the fallback first-active Account)
|
|
117
|
-
was already resolved to an `Id` this session, skip step 5.
|
|
118
|
-
- **Discover / describe of SLA Connect operations** — if the routes were already verified
|
|
119
|
-
as indexed this session, skip step 2.
|
|
120
|
-
|
|
121
|
-
**When in doubt, re-check.** Skip only when the earlier fact is unambiguously in context
|
|
122
|
-
AND you have not switched orgs — the `headless-360` MCP session binds to one org via the
|
|
123
|
-
JWT, so an org change is only possible if the session was re-authed mid-conversation. If
|
|
124
|
-
the user hints at a different org, or you cannot tell which org the earlier fact came
|
|
125
|
-
from, re-run the read. A wrong skip on a live org write is worse than a duplicated read.
|
|
80
|
+
Each Phase 1 read carries a **skip-if-already-known** clause: skip only when the same fact was
|
|
81
|
+
produced **this session** by a successful `dispatch_readonly` on the current org and unwritten since —
|
|
82
|
+
a user statement is never cache-eligible. Cacheable: master Incident Mgmt pref (step 1, only if
|
|
83
|
+
`ENABLED`), SLA feature + Versioning (Phase 0.5), Incident describe (3), `BusinessHoursId` (4), Account
|
|
84
|
+
id (5), SLA Connect ops indexed (2). **When in doubt, re-check** — a wrong skip on a live write is
|
|
85
|
+
worse than a re-read.
|
|
126
86
|
|
|
127
87
|
### Phase 0.5 — SLA Management for IT Service prerequisite gate
|
|
128
88
|
|
|
129
|
-
**Resolve this gate on its own
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
- **
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
89
|
+
**Resolve this gate first, on its own. Reads are safe up front; confirm the org before any write.**
|
|
90
|
+
"SLA Management for IT Service" is enabled only when **both** Simplified SLA Setup (feature
|
|
91
|
+
`service-cloud-itsm-manage-sla-policies`) **and** SLA Versioning
|
|
92
|
+
(`EntitlementSettings.IsEntitlementVersioningEnabled`) are on; either off → not enabled. The one
|
|
93
|
+
feature-`enable` turns on both, **permanently** enabling versioning — inseparable. Shapes /
|
|
94
|
+
`enableBlockedReasons` / ack wording: `references/mcp-invocation.md`.
|
|
95
|
+
|
|
96
|
+
- **Read both** (`dispatch_readonly`); proceed to Phase 0.6 **only when both are on**.
|
|
97
|
+
- **On an OFF org, read the master license first** (Phase 1 step 1, `service-cloud-itsm-incident`):
|
|
98
|
+
`NOT_AVAILABLE` → **HALT** — don't flip the permanent Versioning switch where Incident SLA can't run.
|
|
99
|
+
- **Two separate `AskUserQuestion` acks — never merge.** (a) master Incident Mgmt `NOT_ENABLED` → ask
|
|
100
|
+
to enable it first (reversible, no permanence warning). (b) a *distinct* permanence ack: enabling
|
|
101
|
+
**SLA Management** turns on **SLA Versioning**, which **can't be turned off** (the feature disables
|
|
102
|
+
later but Versioning stays on). Offer **enable**/**stop** — no "versioning-off"; a bare "enable SLA"
|
|
103
|
+
is **not** consent.
|
|
104
|
+
- **Decline (b), non-empty `enableBlockedReasons`, or a re-read mismatch → HALT** — enable no SLA
|
|
105
|
+
Mgmt/Versioning, don't proceed to Phase 0.6/1 (a reversible master enable from (a) stands). **After
|
|
106
|
+
any write, re-read both and report the REAL state** — never trust `201`/`204`.
|
|
107
|
+
|
|
108
|
+
### Phase 0.6 — Predefined (OOB) vs Custom
|
|
109
|
+
|
|
110
|
+
Once the gate passes, offer the OOB policy **before** any custom-flow questions. **Incident only.**
|
|
111
|
+
|
|
112
|
+
1. **Prerequisite + detect.** Confirm master Incident Mgmt pref `ENABLED` (Phase 1 step 1). Then `dispatch_readonly` `GET /connect/sla-management/sla-policies` with
|
|
113
|
+
`query_params.processTypes=Incident`; match display name **"Standard Support for Incidents"**.
|
|
114
|
+
- **Already present** → **no re-seed** (no idempotency), no custom upsell; report it is seeded.
|
|
115
|
+
**If warn/escalate actions were requested → resolve the named existing milestones → Phase 2.5 →
|
|
116
|
+
Phase 3 verify → STOP** (attach actions even though the policy was already seeded).
|
|
117
|
+
2. **Fork** — one `AskUserQuestion`, **Predefined listed first / recommended**: use Salesforce's
|
|
118
|
+
predefined Incident SLA policy (*Standard Support for Incidents* — priority-tiered milestones)
|
|
119
|
+
**or** build a custom one. One-way note: predefined seeds an
|
|
120
|
+
**active** policy + Entitlement, no un-seed path (manual delete only).
|
|
121
|
+
- **Predefined →** resolve BusinessHours + Account (Phase 1 steps 4–5) → **Phase 2-OOB** → **Phase
|
|
122
|
+
2.5** (if actions requested) → Phase 3 verify → **STOP**.
|
|
123
|
+
- **Custom →** existing Phase 1 → 1.4 → 1.5 → 2 → 3, unchanged.
|
|
124
|
+
|
|
125
|
+
**MUST read `references/mcp-invocation.md` (Predefined Incident Policy) before seeding.**
|
|
142
126
|
|
|
143
127
|
### Phase 1 — Preflight & discovery
|
|
144
128
|
|
|
145
|
-
**On any `401` / `403` / `404` from a step below, halt and surface the raw error** — the org
|
|
129
|
+
**On any `401` / `403` / `404` from a step below, halt and surface the raw error** — the org/client is misconfigured. `401` → MCP auth (ECA not propagated / expired token). `403` → user perm OR ITSM Incident Management license/pref missing (`ITSMIncidentMgmtEnabled` / `IncidentMgmt.orgHasITSMOrgPermission`). `404` → `headless-360` not activated OR Entitlement Management not enabled for Incident.
|
|
146
130
|
|
|
147
131
|
1. **Master Incident Management pref — direct read** *(skip conditions in Phase 0)*.
|
|
148
|
-
`dispatch_readonly`
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
132
|
+
`dispatch_readonly` `GET .../connect/setup/discovery/features`, filter `features[]` to the **exact**
|
|
133
|
+
`apiName == "service-cloud-itsm-incident"` — never a look-alike (`service-cloud-incident-management`
|
|
134
|
+
is generic Case-based Incident Management, not our target). Read `status`: `ENABLED` → proceed;
|
|
135
|
+
`NOT_AVAILABLE` (license missing) → **halt and surface it** — cannot be enabled here, no delegate/ack;
|
|
136
|
+
`NOT_ENABLED` → **explicit `AskUserQuestion` ack first (never auto-enable as an implied SLA
|
|
137
|
+
dependency)**, then delegate to `service-itsm-incident-mgmt-configure` inline (confirms-to-write) and
|
|
138
|
+
re-read; if declined, halt — every SLA artifact below depends on the master being on. Full shape + why
|
|
139
|
+
setup-org-preferences 404s here: `references/mcp-invocation.md` (Preflight A).
|
|
155
140
|
2. **Discover the Connect operations** — *(skip if already verified this session — see Phase 0)*.
|
|
156
141
|
`mcp__headless-360__discover(query="sla-management milestone")` to confirm the SLA Management
|
|
157
142
|
Connect API is indexed, then `mcp__headless-360__describe(id=<operation_id>)`
|
|
@@ -169,46 +154,37 @@ handling, and the permanence rule are in `references/mcp-invocation.md`.
|
|
|
169
154
|
`query_params.q="SELECT Id, Name FROM BusinessHours WHERE IsActive = true AND IsDefault = true"`.
|
|
170
155
|
If `body.records` is empty, stop with a message to create default Business Hours in Setup. Capture
|
|
171
156
|
`BusinessHoursId`.
|
|
172
|
-
5. **Resolve the target Account** — *(skip if
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
`SlaProcess`, and `Entitlement` by name against the resolved Account. Record which artifacts
|
|
186
|
-
already exist. If **every** artifact the request would create already exists with the requested
|
|
187
|
-
configuration, Phase 1.4 skip condition (b) applies — set `noOp=true` and skip Phase 1.4 and
|
|
188
|
-
Phase 2. Any missing or divergent artifact means a mutation is required; proceed to Phase 1.4.
|
|
157
|
+
5. **Resolve the target Account** — *(skip if already resolved this session)*. Phase 2's Entitlement
|
|
158
|
+
needs an `AccountId`. If the user **named** one → look up (`SELECT Id, Name FROM Account WHERE Name
|
|
159
|
+
= '<escaped>' LIMIT 1`); not found → **stop and ask**, never substitute. If the user **authorized
|
|
160
|
+
any/existing Account** → pick the most recently active (`... WHERE IsDeleted = false ORDER BY
|
|
161
|
+
LastModifiedDate DESC LIMIT 1`) and **surface which** in the plan. Otherwise → **ask via
|
|
162
|
+
`AskUserQuestion`**: list real candidates by **name only** + "type a name"; **never auto-pick,
|
|
163
|
+
pre-select, or expose an internal sort key** (e.g. recency). If none exists, stop. Capture `AccountId` + name.
|
|
164
|
+
6. **Read existing SLA artifacts (idempotency probe)** — `dispatch_readonly` SOQL for `SlaProcess` by
|
|
165
|
+
name (`... WHERE Name = '<name>' AND SobjectType = 'Incident'` — the field is `SobjectType`;
|
|
166
|
+
`ProcessType` returns `INVALID_FIELD`), each `MilestoneType` the strategy would create,
|
|
167
|
+
`SlaMilestone` under the matched policy, and `Entitlement` by name on the resolved Account. If
|
|
168
|
+
**every** artifact already exists with the requested config, set `noOp=true` and skip Phase 1.4 +
|
|
169
|
+
Phase 2 (skip condition (b)); any missing/divergent artifact → proceed to Phase 1.4.
|
|
189
170
|
|
|
190
171
|
### Phase 1.4 — Milestone Strategy
|
|
191
172
|
|
|
192
173
|
Every SLA policy needs at least one milestone. Load `examples/milestone-patterns.md` — it lists the
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
dispatch. Multi-milestone selection expands to N milestone creates in Phase 2 step 10 (one POST per
|
|
198
|
-
milestone, `order` 1..N, all attached to the same SlaProcess).
|
|
174
|
+
skip conditions (concrete shape in prompt / idempotent no-op / explicit up-front authorization) and
|
|
175
|
+
the five strategy options with their `AskUserQuestion` prompt, defaults, and MilestoneType-reuse
|
|
176
|
+
rules. Skip condition (c) still requires Phase 1.5 plan-narration before dispatch. Multi-milestone
|
|
177
|
+
selection expands to N creates in Phase 2 step 10 (one POST per milestone, `order` 1..N, same SlaProcess).
|
|
199
178
|
|
|
200
179
|
### Phase 1.5 — Confirm before mutating
|
|
201
180
|
|
|
202
|
-
7. **Confirm the plan** — present the resolved
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
(note `(confirmed in conversation)`). Otherwise dispatch `AskUserQuestion` and require an
|
|
210
|
-
explicit "yes" before Phase 2. Everything before this step is read-only; everything after
|
|
211
|
-
mutates the org.
|
|
181
|
+
7. **Confirm the plan** — present the resolved config (target **org**, **SLA Policy** name, resolved
|
|
182
|
+
**Account** name, **Entitlement** date range, and the **full per-milestone list** — never collapse
|
|
183
|
+
Priority-tiered / Custom to "N milestones"). **Skip the `AskUserQuestion`** (but still narrate the
|
|
184
|
+
plan before dispatch) when up-front authorization was granted (note `(authorized in prompt)`), the
|
|
185
|
+
branch is a no-op, or it was already confirmed in conversation (note `(confirmed in conversation)`);
|
|
186
|
+
otherwise require an explicit "yes" before Phase 2. Everything before this step is read-only;
|
|
187
|
+
everything after mutates the org.
|
|
212
188
|
|
|
213
189
|
### Phase 2 — Create SLA Artifacts (exact order — each depends on the previous)
|
|
214
190
|
|
|
@@ -224,24 +200,44 @@ milestone, `order` 1..N, all attached to the same SlaProcess).
|
|
|
224
200
|
and, for each milestone in the strategy, populate `milestoneTypeId`, `timeTrigger`, `order`
|
|
225
201
|
(1..N in the strategy's order) and any per-pattern `filterItems` additions from
|
|
226
202
|
`examples/milestone-patterns.md`, then `POST /connect/sla-management/sla-policies/<slaId>/milestones`.
|
|
227
|
-
`milestoneCriteria`
|
|
228
|
-
|
|
229
|
-
milestone;
|
|
230
|
-
half-attached policy.
|
|
203
|
+
Each `milestoneCriteria[]` item needs `milestoneAgreementType` (`SLA`/`OLA`) and
|
|
204
|
+
`filterType: RuleFilter`. Do **not** put `slaProcessId` in the body — carried by the path.
|
|
205
|
+
Multi-milestone strategies dispatch once per milestone; on any milestone POST failure, halt
|
|
206
|
+
and surface the raw error — do not continue with a half-attached policy.
|
|
231
207
|
11. **Create Entitlement** — `POST /sobjects/Entitlement` linking the resolved Account (from Phase 1
|
|
232
208
|
step 5), the SLA Policy (`SlaProcessId`), and Business Hours. For immediate engagement, backdate
|
|
233
209
|
`StartDate` to yesterday.
|
|
234
210
|
|
|
211
|
+
### Phase 2-OOB — Seed the Predefined Incident Policy
|
|
212
|
+
|
|
213
|
+
Reached only from Phase 0.6 Predefined (replaces Phase 1.4/1.5/2). Follow the seed recipe
|
|
214
|
+
in `references/mcp-invocation.md` (**Predefined Incident Policy**) with the template in
|
|
215
|
+
`assets/predefined-incident-policy.json` — it uses the **Phase 2 routes** (2 MilestoneTypes → SLA
|
|
216
|
+
Policy `active:true` → 8 priority-tiered milestones → Entitlement), validates each `Priority`/`Status`
|
|
217
|
+
against the live picklist, and avoids the Connect activate PATCH. Then run **Phase 2.5** (if actions
|
|
218
|
+
requested), then **Phase 3** (Critical test Incident), and **STOP** — no *proactive* custom offer.
|
|
219
|
+
|
|
220
|
+
### Phase 2.5 — Milestone Actions (optional: Warn / Escalate)
|
|
221
|
+
|
|
222
|
+
After milestones exist (Phase 2 or 2-OOB), **only if** the user asked to warn/escalate/notify: apply
|
|
223
|
+
the requested checkpoint(s) to **every milestone the user named** (not just one), computing each
|
|
224
|
+
offset from that milestone's own target. Map "warn at X%" → an offset *before* target, "on breach" →
|
|
225
|
+
*at/after* it; **confirm the full set before writing** (up-front auth waives the re-ask; narrate it
|
|
226
|
+
regardless — no headless delete), then, per milestone, delegate to headless
|
|
227
|
+
**`create-milestone-action`** (`discover` → `describe` → `dispatch`). **Confirm each from the response
|
|
228
|
+
body** (`success` + non-empty `actionMappings`; a *timed* checkpoint also returns a `triggerId`), never
|
|
229
|
+
the `201`. Formula, roles, proven body, defaults, and the IST business-hours note:
|
|
230
|
+
`references/mcp-invocation.md` (Milestone Actions).
|
|
231
|
+
|
|
235
232
|
### Phase 3 — Verify
|
|
236
233
|
|
|
237
234
|
12. **Verify the SLA Policy** — SOQL on `SlaProcess` (do not trust the create response).
|
|
238
|
-
13. **Create a test Incident** with `EntitlementId`
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
`EntityMilestone` will spawn even though the policy is wired correctly.
|
|
235
|
+
13. **Create a test Incident** with `EntitlementId` set to the new Entitlement. For Priority-tiered
|
|
236
|
+
strategies, set a `Priority` that matches at least one milestone's criteria (or one test Incident
|
|
237
|
+
per Priority) — otherwise no `EntityMilestone` spawns even with the policy wired correctly.
|
|
242
238
|
14. **Verify engagement** — SOQL confirming `Incident.SlaStartDate` is populated and the expected
|
|
243
|
-
`EntityMilestone` row(s) exist with
|
|
244
|
-
|
|
239
|
+
`EntityMilestone` row(s) exist with correct `TargetDate`(s) — one per milestone whose criteria
|
|
240
|
+
the Incident satisfies.
|
|
245
241
|
15. **Report results** using the output format below.
|
|
246
242
|
|
|
247
243
|
---
|
|
@@ -250,40 +246,42 @@ milestone, `order` 1..N, all attached to the same SlaProcess).
|
|
|
250
246
|
|
|
251
247
|
| Constraint | Rationale |
|
|
252
248
|
|-----------|-----------|
|
|
253
|
-
| Gate on **SLA Management for IT Service** first (Phase 0.5) —
|
|
249
|
+
| Gate on **SLA Management for IT Service** first (Phase 0.5) — one enable turns on the feature **and**, one-way, **SLA Versioning**; **two separate acks (master, then permanence) — never merged**; decline / blocked / verify-fail → **HALT, no fall-through**; re-read + report real state | Versioning can't be undone; writes don't confirm state |
|
|
250
|
+
| Offer the **predefined (OOB)** policy first (Phase 0.6, Incident only); detect before seed; if chosen, seed → verify → **STOP** (no custom upsell) | OOB seed has no server idempotency (re-seeding duplicates) |
|
|
254
251
|
| Discover + describe before any mutation | Catches a missing SLA surface / disabled Incident Management early |
|
|
255
|
-
| Ask (via `AskUserQuestion`) which milestone strategy to use —
|
|
256
|
-
| Reuse one MilestoneType per shared name; create a distinct
|
|
257
|
-
| For multi-milestone strategies, halt on any milestone POST failure
|
|
258
|
-
| Priority-tiered
|
|
252
|
+
| Ask (via `AskUserQuestion`) which milestone strategy to use — don't silently default to Single | Real ITSM policies usually have >1 milestone; a silent default hides it |
|
|
253
|
+
| Reuse one MilestoneType per shared name; create a distinct one per distinct concern | The runtime keys milestones by MilestoneType — sharing collapses distinct concerns |
|
|
254
|
+
| For multi-milestone strategies, halt on any milestone POST failure (no half-attached policy) | Partial attach diverges from the confirmed plan |
|
|
255
|
+
| Priority-tiered: validate every `Priority` value against the live Incident picklist before dispatch | The server accepts any string on `filterItems.value` — an unknown value silently makes the milestone dead code |
|
|
259
256
|
| Entitlement is standard sObject DML (not Connect API); `StartDate` controls status (future = Inactive) | Not part of the `/connect/sla-management/` surface |
|
|
260
257
|
| Verify SLA Policy via SOQL, not the create response | The create response echoes nulls |
|
|
261
|
-
| Never show
|
|
258
|
+
| Never show record IDs **in any message, incl. interim narration** — the test Incident by **IncidentNumber**, milestones by **MilestoneType name**, never the 15/18-char Id; keep `AskUserQuestion` labels customer-facing (no "demo", "the skill", internal defaults) | Leaked Ids and internal/demo framing look unprofessional |
|
|
262
259
|
|
|
263
|
-
Additional API quirks (payload rules,
|
|
260
|
+
Additional API quirks (payload rules, operator enum, missing-criteria error): `references/mcp-invocation.md`.
|
|
264
261
|
|
|
265
262
|
---
|
|
266
263
|
|
|
267
264
|
## Verification Checklist
|
|
268
265
|
|
|
269
|
-
- [ ] **SLA Management
|
|
270
|
-
- [ ]
|
|
271
|
-
- [ ] `
|
|
266
|
+
- [ ] **SLA Management gated (Phase 0.5)** — feature + SLA Versioning both on, only after the **permanence ack** (separate from the master ack); reported state matches a re-read, not the write. If it couldn't be enabled (declined / blocked / verify-fail), the run **HALTED** before Phase 0.6/1 — no artifacts.
|
|
267
|
+
- [ ] **Predefined vs Custom offered (Phase 0.6)** — with the feature ON, the OOB *Standard Support for Incidents* policy was offered first; if it existed, reported not re-seeded; if chosen, seeded (2 MilestoneTypes + 8 tiered milestones + Entitlement), verified, **no** custom offer followed.
|
|
268
|
+
- [ ] Master Incident Mgmt pref (exact `service-cloud-itsm-incident`) confirmed `ENABLED` via a live read, or delegated to `service-itsm-incident-mgmt-configure` when `NOT_ENABLED` (`NOT_AVAILABLE` → HALT) — not a user assertion, not a look-alike.
|
|
269
|
+
- [ ] `discover`/`describe` (or the Incident describe) confirmed the SLA Connect operations.
|
|
272
270
|
- [ ] Incident describe returned 200 with `EntitlementId`, `SlaStartDate`, `SlaExitDate`.
|
|
273
271
|
- [ ] Default BusinessHours found.
|
|
274
|
-
- [ ] **Milestone strategy resolved** — via a Phase 1.4 skip condition
|
|
275
|
-
- [ ] **Configuration confirmed OR skip condition met**
|
|
276
|
-
- [ ] Artifacts created in order (MilestoneType(s) → Policy → Milestone(s) → Entitlement); each POST
|
|
277
|
-
- [ ]
|
|
278
|
-
- [ ]
|
|
279
|
-
- [ ]
|
|
280
|
-
- [ ] Before/after
|
|
272
|
+
- [ ] **Milestone strategy resolved** — via a Phase 1.4 skip condition OR `AskUserQuestion`; for Priority-tiered / Custom, every `Priority`/criteria value was validated against the live Incident picklist before dispatch.
|
|
273
|
+
- [ ] **Configuration confirmed OR skip condition met** (up-front authorization / no-op / prior confirmation / explicit "yes"); the resolved plan (org, SLA name, account, entitlement range, per-milestone list) was narrated before Phase 2.
|
|
274
|
+
- [ ] Artifacts created in order (MilestoneType(s) → Policy → Milestone(s) → Entitlement); each POST 201; any milestone POST failure halted the run (no partial attach). Trivial on no-op runs.
|
|
275
|
+
- [ ] **Milestone actions (Phase 2.5)** — if requested, attached to **every** named milestone; each confirmed from `body.success` + `actionMappings`, not the `201`; full set narrated before write.
|
|
276
|
+
- [ ] SLA Policy verified via SOQL, not the create response (on no-op, the Phase-1 read is the verification).
|
|
277
|
+
- [ ] Test Incident has `SlaStartDate` populated (Priority chosen to match a criterion for Priority-tiered) and ≥1 EntityMilestone with the correct TargetDate; expected milestone(s) present for multi-milestone. Skip on no-op.
|
|
278
|
+
- [ ] Before/after + summary shown; on no-op, the summary states the pre-existing configuration verbatim and reports "no changes made".
|
|
281
279
|
|
|
282
280
|
---
|
|
283
281
|
|
|
284
282
|
## Output Format
|
|
285
283
|
|
|
286
|
-
See `examples/output-templates.md` for the canonical failure / single-milestone success / multi-milestone success templates. Fill in the placeholders as-is. No
|
|
284
|
+
See `examples/output-templates.md` for the canonical failure / single-milestone success / multi-milestone success templates. Fill in the placeholders as-is. No files are produced — the skill mutates org configuration in place through headless-360 MCP dispatch.
|
|
287
285
|
|
|
288
286
|
---
|
|
289
287
|
|
|
@@ -292,17 +290,17 @@ See `examples/output-templates.md` for the canonical failure / single-milestone
|
|
|
292
290
|
| File | When to read |
|
|
293
291
|
|------|--------------|
|
|
294
292
|
| `references/mcp-invocation.md` | Every phase — exact `mcp__headless-360__*` call shapes, payload templates, response envelope, discovery, and gotchas (filter-operator enum, v67 routes, entitlement behavior) |
|
|
295
|
-
| `examples/milestone-patterns.md` | Phase 1.4 — the five milestone strategies
|
|
293
|
+
| `examples/milestone-patterns.md` | Phase 1.4 — the five milestone strategies with default times, criteria, MilestoneType reuse rules, and per-pattern filter-item extensions |
|
|
296
294
|
| `examples/output-templates.md` | Output Format — canonical failure / single-milestone success / multi-milestone success templates |
|
|
297
|
-
| `assets/attach-milestone.json` | Phase 2 step 10 —
|
|
295
|
+
| `assets/attach-milestone.json` | Phase 2 step 10 — request-body template for the milestone POST (`sla-policies/<slaId>/milestones`); substitute `milestoneTypeId`, `businessHoursId`, `timeTrigger`, `order`; append per-pattern `filterItems` |
|
|
296
|
+
| `assets/predefined-incident-policy.json` | Phase 0.6 / Phase 2-OOB — the OOB *Standard Support for Incidents* seed template (policy + 2 MilestoneTypes + 8 priority-tiered milestones) |
|
|
297
|
+
| `assets/attach-milestone-action.json` | Phase 2.5 — Warn/Escalate milestone-action body templates (Field Update); pair with `references/mcp-invocation.md` (Milestone Actions) |
|
|
298
298
|
|
|
299
299
|
---
|
|
300
300
|
|
|
301
301
|
## Related Skills
|
|
302
302
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
Other adjacent ITSM setup flows (Major Incident Management, custom fields on Incident / Problem /
|
|
308
|
-
ChangeRequest) are out of scope; use their dedicated skill when available.
|
|
303
|
+
The priority matrix (Impact × Urgency → Priority) is separate — `service-itsm-incident-priority-configure`;
|
|
304
|
+
if a Priority-tiered strategy is requested but `Incident.Priority` is missing values, direct the user
|
|
305
|
+
there first. Other adjacent ITSM flows (Major Incident Mgmt, custom fields on Incident/Problem/ChangeRequest)
|
|
306
|
+
are out of scope.
|
package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/attach-milestone-action.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_notes": "Phase 2.5 request-body templates for POST /connect/sla-management/sla-policies/<slaId>/milestones/<milestoneId>/actions. Send EXACTLY ONE action sub-object per call. timeLength/timeUnit live INSIDE checkpoint. timeUnit is Minutes|Hours|Days only. Never send isInitiationCheckpoint. Confirm success from body.success + non-empty body.actionMappings (+ triggerId for timed checkpoints), not the 201. UNIQUENESS: the actionFieldUpdate name/developerName must be unique per milestone (a WorkflowFieldUpdate DeveloperName is unique on the Incident object) — attaching the same-named action to a second milestone fails with DUPLICATE_DEVELOPER_NAME. Suffix both with the milestone (e.g. _FR for First Response, _RES for Resolution). These mirror the live-validated 'Proven bodies' in references/mcp-invocation.md (Milestone Actions) — keep the two in sync.",
|
|
3
|
+
|
|
4
|
+
"warningAction": {
|
|
5
|
+
"_notes": "Warn BEFORE target. timeLength = round(targetMinutes * (1 - X/100)). 2-hr (120-min) milestone, warn at 75% -> 30 min before. Default action = Field Update setting Priority = High. Replace <MS> in name/developerName with a per-milestone suffix. For a custom-field target, put its 00N... CustomField id in columnEnumOrId (not the __c API name).",
|
|
6
|
+
"isSuccessCheckpoint": false,
|
|
7
|
+
"checkpoint": { "isWarning": true, "timeLength": 30, "timeUnit": "Minutes" },
|
|
8
|
+
"entityName": "Incident",
|
|
9
|
+
"actionFieldUpdate": {
|
|
10
|
+
"name": "SLA Warn 75pct <MS>",
|
|
11
|
+
"sourceTable": "Incident",
|
|
12
|
+
"targetTable": "Incident",
|
|
13
|
+
"columnEnumOrId": "Priority",
|
|
14
|
+
"developerName": "SLA_Warn_75_<MS>",
|
|
15
|
+
"operationString": "LITERAL",
|
|
16
|
+
"literal": "High"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
|
|
20
|
+
"violationAction": {
|
|
21
|
+
"_notes": "Escalate ON breach = Violation with timeLength 0 (fires at target). Default: set Priority = Critical. Replace <MS> in name/developerName with the same per-milestone suffix used for the warning.",
|
|
22
|
+
"isSuccessCheckpoint": false,
|
|
23
|
+
"checkpoint": { "isWarning": false, "timeLength": 0, "timeUnit": "Minutes" },
|
|
24
|
+
"entityName": "Incident",
|
|
25
|
+
"actionFieldUpdate": {
|
|
26
|
+
"name": "SLA Escalate on Breach <MS>",
|
|
27
|
+
"sourceTable": "Incident",
|
|
28
|
+
"targetTable": "Incident",
|
|
29
|
+
"columnEnumOrId": "Priority",
|
|
30
|
+
"developerName": "SLA_Escalate_Breach_<MS>",
|
|
31
|
+
"operationString": "LITERAL",
|
|
32
|
+
"literal": "Critical"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
"istBusinessHours": {
|
|
37
|
+
"_notes": "'IST business hours' is a POLICY-level BusinessHours, not a milestone-action field. Resolve-then-create: reuse an existing BusinessHours with TimeZoneSidKey='Asia/Kolkata' if present, else POST /sobjects/BusinessHours with this body (confirm first; BusinessHours is NOT API-deletable). Attach via the policy/Entitlement BusinessHoursId. If the org has ignoreMilestoneBusinessHours=true, milestone timers run 24/7 and ignore this - disclose that.",
|
|
38
|
+
"Name": "IST Business Hours",
|
|
39
|
+
"TimeZoneSidKey": "Asia/Kolkata",
|
|
40
|
+
"MondayStartTime": "09:00:00.000Z",
|
|
41
|
+
"MondayEndTime": "18:00:00.000Z",
|
|
42
|
+
"TuesdayStartTime": "09:00:00.000Z",
|
|
43
|
+
"TuesdayEndTime": "18:00:00.000Z",
|
|
44
|
+
"WednesdayStartTime": "09:00:00.000Z",
|
|
45
|
+
"WednesdayEndTime": "18:00:00.000Z",
|
|
46
|
+
"ThursdayStartTime": "09:00:00.000Z",
|
|
47
|
+
"ThursdayEndTime": "18:00:00.000Z",
|
|
48
|
+
"FridayStartTime": "09:00:00.000Z",
|
|
49
|
+
"FridayEndTime": "18:00:00.000Z"
|
|
50
|
+
}
|
|
51
|
+
}
|