scc-universal 1.1.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.
Files changed (271) hide show
  1. package/.claude-plugin/plugin.json +44 -0
  2. package/.cursor/agents/deep-researcher.md +142 -0
  3. package/.cursor/agents/doc-updater.md +219 -0
  4. package/.cursor/agents/eval-runner.md +335 -0
  5. package/.cursor/agents/learning-engine.md +210 -0
  6. package/.cursor/agents/loop-operator.md +245 -0
  7. package/.cursor/agents/refactor-cleaner.md +119 -0
  8. package/.cursor/agents/sf-admin-agent.md +127 -0
  9. package/.cursor/agents/sf-agentforce-agent.md +126 -0
  10. package/.cursor/agents/sf-apex-agent.md +117 -0
  11. package/.cursor/agents/sf-architect.md +426 -0
  12. package/.cursor/agents/sf-aura-reviewer.md +369 -0
  13. package/.cursor/agents/sf-bugfix-agent.md +101 -0
  14. package/.cursor/agents/sf-flow-agent.md +155 -0
  15. package/.cursor/agents/sf-integration-agent.md +141 -0
  16. package/.cursor/agents/sf-lwc-agent.md +123 -0
  17. package/.cursor/agents/sf-review-agent.md +357 -0
  18. package/.cursor/agents/sf-visualforce-reviewer.md +465 -0
  19. package/.cursor/hooks/adapter.js +81 -0
  20. package/.cursor/hooks/after-file-edit.js +26 -0
  21. package/.cursor/hooks/after-mcp-execution.js +12 -0
  22. package/.cursor/hooks/after-shell-execution.js +30 -0
  23. package/.cursor/hooks/after-tab-file-edit.js +12 -0
  24. package/.cursor/hooks/before-mcp-execution.js +11 -0
  25. package/.cursor/hooks/before-read-file.js +13 -0
  26. package/.cursor/hooks/before-shell-execution.js +29 -0
  27. package/.cursor/hooks/before-submit-prompt.js +23 -0
  28. package/.cursor/hooks/pre-compact.js +7 -0
  29. package/.cursor/hooks/session-end.js +10 -0
  30. package/.cursor/hooks/session-start.js +10 -0
  31. package/.cursor/hooks/stop.js +18 -0
  32. package/.cursor/hooks/subagent-start.js +10 -0
  33. package/.cursor/hooks/subagent-stop.js +10 -0
  34. package/.cursor/hooks.json +107 -0
  35. package/.cursor/skills/aside/SKILL.md +115 -0
  36. package/.cursor/skills/checkpoint/SKILL.md +50 -0
  37. package/.cursor/skills/configure-scc/SKILL.md +160 -0
  38. package/.cursor/skills/continuous-agent-loop/SKILL.md +260 -0
  39. package/.cursor/skills/mcp-server-patterns/SKILL.md +142 -0
  40. package/.cursor/skills/model-route/SKILL.md +81 -0
  41. package/.cursor/skills/prompt-optimizer/SKILL.md +366 -0
  42. package/.cursor/skills/refactor-clean/SKILL.md +133 -0
  43. package/.cursor/skills/resume-session/SKILL.md +111 -0
  44. package/.cursor/skills/save-session/SKILL.md +183 -0
  45. package/.cursor/skills/search-first/SKILL.md +140 -0
  46. package/.cursor/skills/security-scan/SKILL.md +142 -0
  47. package/.cursor/skills/sessions/SKILL.md +124 -0
  48. package/.cursor/skills/sf-agentforce-development/SKILL.md +449 -0
  49. package/.cursor/skills/sf-apex-async-patterns/SKILL.md +324 -0
  50. package/.cursor/skills/sf-apex-best-practices/SKILL.md +421 -0
  51. package/.cursor/skills/sf-apex-constraints/SKILL.md +79 -0
  52. package/.cursor/skills/sf-apex-cursor/SKILL.md +336 -0
  53. package/.cursor/skills/sf-apex-enterprise-patterns/SKILL.md +344 -0
  54. package/.cursor/skills/sf-apex-testing/SKILL.md +407 -0
  55. package/.cursor/skills/sf-api-design/SKILL.md +237 -0
  56. package/.cursor/skills/sf-approval-processes/SKILL.md +312 -0
  57. package/.cursor/skills/sf-aura-development/SKILL.md +260 -0
  58. package/.cursor/skills/sf-build-fix/SKILL.md +120 -0
  59. package/.cursor/skills/sf-data-modeling/SKILL.md +274 -0
  60. package/.cursor/skills/sf-debugging/SKILL.md +362 -0
  61. package/.cursor/skills/sf-deployment/SKILL.md +291 -0
  62. package/.cursor/skills/sf-deployment-constraints/SKILL.md +153 -0
  63. package/.cursor/skills/sf-devops-ci-cd/SKILL.md +322 -0
  64. package/.cursor/skills/sf-docs-lookup/SKILL.md +100 -0
  65. package/.cursor/skills/sf-e2e-testing/SKILL.md +321 -0
  66. package/.cursor/skills/sf-experience-cloud/SKILL.md +248 -0
  67. package/.cursor/skills/sf-flow-development/SKILL.md +376 -0
  68. package/.cursor/skills/sf-governor-limits/SKILL.md +319 -0
  69. package/.cursor/skills/sf-harness-audit/SKILL.md +139 -0
  70. package/.cursor/skills/sf-help/SKILL.md +156 -0
  71. package/.cursor/skills/sf-integration/SKILL.md +479 -0
  72. package/.cursor/skills/sf-lwc-constraints/SKILL.md +128 -0
  73. package/.cursor/skills/sf-lwc-development/SKILL.md +302 -0
  74. package/.cursor/skills/sf-lwc-testing/SKILL.md +387 -0
  75. package/.cursor/skills/sf-metadata-management/SKILL.md +285 -0
  76. package/.cursor/skills/sf-platform-events-cdc/SKILL.md +372 -0
  77. package/.cursor/skills/sf-quickstart/SKILL.md +170 -0
  78. package/.cursor/skills/sf-security/SKILL.md +330 -0
  79. package/.cursor/skills/sf-security-constraints/SKILL.md +125 -0
  80. package/.cursor/skills/sf-soql-constraints/SKILL.md +129 -0
  81. package/.cursor/skills/sf-soql-optimization/SKILL.md +353 -0
  82. package/.cursor/skills/sf-tdd-workflow/SKILL.md +332 -0
  83. package/.cursor/skills/sf-testing-constraints/SKILL.md +198 -0
  84. package/.cursor/skills/sf-trigger-constraints/SKILL.md +88 -0
  85. package/.cursor/skills/sf-trigger-frameworks/SKILL.md +343 -0
  86. package/.cursor/skills/sf-visualforce-development/SKILL.md +259 -0
  87. package/.cursor/skills/strategic-compact/SKILL.md +205 -0
  88. package/.cursor/skills/update-docs/SKILL.md +162 -0
  89. package/.cursor/skills/update-platform-docs/SKILL.md +86 -0
  90. package/.cursor-plugin/plugin.json +26 -0
  91. package/LICENSE +21 -0
  92. package/README.md +522 -0
  93. package/agents/deep-researcher.md +145 -0
  94. package/agents/doc-updater.md +222 -0
  95. package/agents/eval-runner.md +340 -0
  96. package/agents/learning-engine.md +211 -0
  97. package/agents/loop-operator.md +247 -0
  98. package/agents/refactor-cleaner.md +122 -0
  99. package/agents/sf-admin-agent.md +131 -0
  100. package/agents/sf-agentforce-agent.md +132 -0
  101. package/agents/sf-apex-agent.md +124 -0
  102. package/agents/sf-architect.md +435 -0
  103. package/agents/sf-aura-reviewer.md +372 -0
  104. package/agents/sf-bugfix-agent.md +105 -0
  105. package/agents/sf-flow-agent.md +159 -0
  106. package/agents/sf-integration-agent.md +146 -0
  107. package/agents/sf-lwc-agent.md +127 -0
  108. package/agents/sf-review-agent.md +366 -0
  109. package/agents/sf-visualforce-reviewer.md +468 -0
  110. package/assets/logo.svg +18 -0
  111. package/docs/ARCHITECTURE.md +133 -0
  112. package/docs/authoring-guide.md +373 -0
  113. package/docs/hook-development.md +578 -0
  114. package/docs/token-optimization.md +139 -0
  115. package/docs/workflow-examples.md +645 -0
  116. package/examples/agentforce-action/README.md +227 -0
  117. package/examples/apex-trigger-handler/README.md +114 -0
  118. package/examples/devops-pipeline/README.md +325 -0
  119. package/examples/flow-automation/README.md +188 -0
  120. package/examples/integration-pattern/README.md +416 -0
  121. package/examples/lwc-component/README.md +180 -0
  122. package/examples/platform-events/README.md +492 -0
  123. package/examples/scratch-org-setup/README.md +138 -0
  124. package/examples/security-audit/README.md +244 -0
  125. package/examples/visualforce-migration/README.md +314 -0
  126. package/hooks/hooks.json +338 -0
  127. package/hooks/memory-persistence/README.md +73 -0
  128. package/manifests/install-modules.json +217 -0
  129. package/manifests/install-profiles.json +17 -0
  130. package/mcp-configs/mcp-servers.json +19 -0
  131. package/package.json +89 -0
  132. package/schemas/hooks.schema.json +123 -0
  133. package/schemas/install-modules.schema.json +76 -0
  134. package/schemas/install-profiles.schema.json +28 -0
  135. package/schemas/install-state.schema.json +73 -0
  136. package/schemas/package-manager.schema.json +18 -0
  137. package/schemas/plugin.schema.json +112 -0
  138. package/schemas/scc-install-config.schema.json +29 -0
  139. package/schemas/state-store.schema.json +111 -0
  140. package/scripts/cli/install-apply.js +170 -0
  141. package/scripts/cli/uninstall.js +193 -0
  142. package/scripts/hooks/check-console-log.js +101 -0
  143. package/scripts/hooks/check-hook-enabled.js +17 -0
  144. package/scripts/hooks/check-platform-docs-age.js +48 -0
  145. package/scripts/hooks/cost-tracker.js +78 -0
  146. package/scripts/hooks/doc-file-warning.js +63 -0
  147. package/scripts/hooks/evaluate-session.js +98 -0
  148. package/scripts/hooks/governor-check.js +220 -0
  149. package/scripts/hooks/learning-observe.sh +206 -0
  150. package/scripts/hooks/mcp-health-check.js +588 -0
  151. package/scripts/hooks/post-bash-build-complete.js +34 -0
  152. package/scripts/hooks/post-bash-pr-created.js +43 -0
  153. package/scripts/hooks/post-edit-console-warn.js +61 -0
  154. package/scripts/hooks/post-edit-format.js +79 -0
  155. package/scripts/hooks/post-edit-typecheck.js +98 -0
  156. package/scripts/hooks/post-write.js +168 -0
  157. package/scripts/hooks/pre-bash-git-push-reminder.js +35 -0
  158. package/scripts/hooks/pre-bash-tmux-reminder.js +47 -0
  159. package/scripts/hooks/pre-compact.js +51 -0
  160. package/scripts/hooks/pre-tool-use.js +163 -0
  161. package/scripts/hooks/pre-write-doc-warn.js +9 -0
  162. package/scripts/hooks/quality-gate.js +251 -0
  163. package/scripts/hooks/run-with-flags-shell.sh +32 -0
  164. package/scripts/hooks/run-with-flags.js +135 -0
  165. package/scripts/hooks/session-end-marker.js +29 -0
  166. package/scripts/hooks/session-end.js +311 -0
  167. package/scripts/hooks/session-start.js +202 -0
  168. package/scripts/hooks/sfdx-scanner-check.js +142 -0
  169. package/scripts/hooks/sfdx-validate.js +119 -0
  170. package/scripts/hooks/stop-hook.js +170 -0
  171. package/scripts/hooks/suggest-compact.js +67 -0
  172. package/scripts/lib/agent-adapter.js +82 -0
  173. package/scripts/lib/apex-analysis.js +194 -0
  174. package/scripts/lib/hook-flags.js +74 -0
  175. package/scripts/lib/install-config.js +73 -0
  176. package/scripts/lib/install-executor.js +363 -0
  177. package/scripts/lib/install-state.js +121 -0
  178. package/scripts/lib/orchestration-session.js +299 -0
  179. package/scripts/lib/package-manager.js +124 -0
  180. package/scripts/lib/project-detect.js +228 -0
  181. package/scripts/lib/schema-validator.js +190 -0
  182. package/scripts/lib/skill-adapter.js +100 -0
  183. package/scripts/lib/state-store.js +376 -0
  184. package/scripts/lib/tmux-worktree-orchestrator.js +598 -0
  185. package/scripts/lib/utils.js +313 -0
  186. package/scripts/scc.js +164 -0
  187. package/skills/_reference/AGENTFORCE_PATTERNS.md +112 -0
  188. package/skills/_reference/APEX_CURSOR.md +159 -0
  189. package/skills/_reference/API_VERSIONS.md +78 -0
  190. package/skills/_reference/APPROVAL_PROCESSES.md +105 -0
  191. package/skills/_reference/ASYNC_PATTERNS.md +163 -0
  192. package/skills/_reference/AURA_COMPONENTS.md +146 -0
  193. package/skills/_reference/DATA_MIGRATION_PATTERNS.md +151 -0
  194. package/skills/_reference/DATA_MODELING.md +124 -0
  195. package/skills/_reference/DEBUGGING_TOOLS.md +140 -0
  196. package/skills/_reference/DEPLOYMENT_CHECKLIST.md +87 -0
  197. package/skills/_reference/DEPRECATIONS.md +79 -0
  198. package/skills/_reference/DOCKER_CI_PATTERNS.md +138 -0
  199. package/skills/_reference/ENTERPRISE_PATTERNS.md +122 -0
  200. package/skills/_reference/EXPERIENCE_CLOUD.md +143 -0
  201. package/skills/_reference/FLOW_PATTERNS.md +113 -0
  202. package/skills/_reference/GOVERNOR_LIMITS.md +77 -0
  203. package/skills/_reference/INTEGRATION_PATTERNS.md +105 -0
  204. package/skills/_reference/LWC_PATTERNS.md +79 -0
  205. package/skills/_reference/METADATA_TYPES.md +115 -0
  206. package/skills/_reference/NAMING_CONVENTIONS.md +84 -0
  207. package/skills/_reference/PACKAGE_DEVELOPMENT.md +150 -0
  208. package/skills/_reference/PLATFORM_EVENTS.md +121 -0
  209. package/skills/_reference/REPORTING_API.md +143 -0
  210. package/skills/_reference/SCRATCH_ORG_PATTERNS.md +126 -0
  211. package/skills/_reference/SECURITY_PATTERNS.md +127 -0
  212. package/skills/_reference/SHARING_MODEL.md +120 -0
  213. package/skills/_reference/SOQL_PATTERNS.md +119 -0
  214. package/skills/_reference/TESTING_STANDARDS.md +96 -0
  215. package/skills/_reference/TRIGGER_PATTERNS.md +114 -0
  216. package/skills/_reference/VISUALFORCE_PATTERNS.md +121 -0
  217. package/skills/aside/SKILL.md +118 -0
  218. package/skills/checkpoint/SKILL.md +53 -0
  219. package/skills/configure-scc/SKILL.md +163 -0
  220. package/skills/continuous-agent-loop/SKILL.md +264 -0
  221. package/skills/mcp-server-patterns/SKILL.md +146 -0
  222. package/skills/model-route/SKILL.md +84 -0
  223. package/skills/prompt-optimizer/SKILL.md +369 -0
  224. package/skills/refactor-clean/SKILL.md +136 -0
  225. package/skills/resume-session/SKILL.md +114 -0
  226. package/skills/save-session/SKILL.md +186 -0
  227. package/skills/search-first/SKILL.md +144 -0
  228. package/skills/security-scan/SKILL.md +146 -0
  229. package/skills/sessions/SKILL.md +127 -0
  230. package/skills/sf-agentforce-development/SKILL.md +450 -0
  231. package/skills/sf-apex-async-patterns/SKILL.md +326 -0
  232. package/skills/sf-apex-best-practices/SKILL.md +425 -0
  233. package/skills/sf-apex-constraints/SKILL.md +81 -0
  234. package/skills/sf-apex-cursor/SKILL.md +338 -0
  235. package/skills/sf-apex-enterprise-patterns/SKILL.md +348 -0
  236. package/skills/sf-apex-testing/SKILL.md +409 -0
  237. package/skills/sf-api-design/SKILL.md +238 -0
  238. package/skills/sf-approval-processes/SKILL.md +315 -0
  239. package/skills/sf-aura-development/SKILL.md +263 -0
  240. package/skills/sf-build-fix/SKILL.md +121 -0
  241. package/skills/sf-data-modeling/SKILL.md +278 -0
  242. package/skills/sf-debugging/SKILL.md +363 -0
  243. package/skills/sf-deployment/SKILL.md +295 -0
  244. package/skills/sf-deployment-constraints/SKILL.md +155 -0
  245. package/skills/sf-devops-ci-cd/SKILL.md +325 -0
  246. package/skills/sf-docs-lookup/SKILL.md +103 -0
  247. package/skills/sf-e2e-testing/SKILL.md +324 -0
  248. package/skills/sf-experience-cloud/SKILL.md +249 -0
  249. package/skills/sf-flow-development/SKILL.md +377 -0
  250. package/skills/sf-governor-limits/SKILL.md +323 -0
  251. package/skills/sf-harness-audit/SKILL.md +142 -0
  252. package/skills/sf-help/SKILL.md +159 -0
  253. package/skills/sf-integration/SKILL.md +483 -0
  254. package/skills/sf-lwc-constraints/SKILL.md +130 -0
  255. package/skills/sf-lwc-development/SKILL.md +303 -0
  256. package/skills/sf-lwc-testing/SKILL.md +388 -0
  257. package/skills/sf-metadata-management/SKILL.md +288 -0
  258. package/skills/sf-platform-events-cdc/SKILL.md +375 -0
  259. package/skills/sf-quickstart/SKILL.md +173 -0
  260. package/skills/sf-security/SKILL.md +334 -0
  261. package/skills/sf-security-constraints/SKILL.md +127 -0
  262. package/skills/sf-soql-constraints/SKILL.md +131 -0
  263. package/skills/sf-soql-optimization/SKILL.md +354 -0
  264. package/skills/sf-tdd-workflow/SKILL.md +336 -0
  265. package/skills/sf-testing-constraints/SKILL.md +200 -0
  266. package/skills/sf-trigger-constraints/SKILL.md +90 -0
  267. package/skills/sf-trigger-frameworks/SKILL.md +347 -0
  268. package/skills/sf-visualforce-development/SKILL.md +260 -0
  269. package/skills/strategic-compact/SKILL.md +208 -0
  270. package/skills/update-docs/SKILL.md +165 -0
  271. package/skills/update-platform-docs/SKILL.md +90 -0
@@ -0,0 +1,151 @@
1
+ # Data Migration Patterns — Salesforce Reference
2
+
3
+ > Last verified: API v66.0, Spring '26 (2026-03-28)
4
+ > Source: <https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_batch_interface.htm>
5
+ > Source: <https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/bulk_api_2_0.htm>
6
+
7
+ ## Migration Pattern Decision Matrix
8
+
9
+ | Volume | Complexity | Pattern | Agent |
10
+ |---|---|---|---|
11
+ | < 200 records | Simple field update | Anonymous Apex or Data Loader | sf-apex-agent |
12
+ | 200 - 10,000 | Field transformation, backfill | Batch Apex (scope 200) | sf-apex-agent |
13
+ | 10K - 500K | Multi-object, conditional logic | Batch Apex (scope 200, `Database.Stateful`) | sf-apex-agent |
14
+ | 500K - 50M | Large data volume, simple transform | Bulk API 2.0 via Data Loader or sf CLI | sf-admin-agent |
15
+ | 50M+ | Massive volume | Bulk API 2.0 + external ETL | sf-integration-agent |
16
+ | Any + external system sync | Data needs to sync to/from external | Queueable chain with callouts | sf-integration-agent |
17
+
18
+ ## Batch Migration Template
19
+
20
+ ```apex
21
+ public class MigrateEquipmentStatusBatch implements Database.Batchable<SObject>, Database.Stateful {
22
+ private Integer successCount = 0;
23
+ private Integer errorCount = 0;
24
+ private List<String> errors = new List<String>();
25
+
26
+ public Database.QueryLocator start(Database.BatchableContext bc) {
27
+ return Database.getQueryLocator([
28
+ SELECT Id, Legacy_Status__c, Status__c
29
+ FROM Equipment__c
30
+ WHERE Status__c = null AND Legacy_Status__c != null
31
+ ]);
32
+ }
33
+
34
+ public void execute(Database.BatchableContext bc, List<Equipment__c> scope) {
35
+ for (Equipment__c eq : scope) {
36
+ eq.Status__c = mapLegacyStatus(eq.Legacy_Status__c);
37
+ }
38
+ List<Database.SaveResult> results = Database.update(scope, false);
39
+ for (Integer i = 0; i < results.size(); i++) {
40
+ if (results[i].isSuccess()) {
41
+ successCount++;
42
+ } else {
43
+ errorCount++;
44
+ errors.add(scope[i].Id + ': ' + results[i].getErrors()[0].getMessage());
45
+ }
46
+ }
47
+ }
48
+
49
+ public void finish(Database.BatchableContext bc) {
50
+ // Log results, send notification
51
+ }
52
+
53
+ private String mapLegacyStatus(String legacy) {
54
+ Map<String, String> statusMap = new Map<String, String>{
55
+ 'A' => 'Active', 'I' => 'Inactive', 'R' => 'Retired'
56
+ };
57
+ return statusMap.containsKey(legacy) ? statusMap.get(legacy) : 'Unknown';
58
+ }
59
+ }
60
+ ```
61
+
62
+ ## Pre-Migration Checklist
63
+
64
+ | Check | Command / Action |
65
+ |---|---|
66
+ | Backup affected records | `sf data export bulk --query "SELECT Id, ... FROM Object__c" --output-file backup.csv` |
67
+ | Verify record count | `SELECT COUNT() FROM Object__c WHERE [migration criteria]` |
68
+ | Check for triggers/flows that will fire | Scan automation on affected objects — consider bypass |
69
+ | Verify field types match | Source field type compatible with target |
70
+ | Check governor limits | Scope size × operations per record < limits |
71
+ | Create rollback plan | Backup CSV + restore script |
72
+ | Test in sandbox first | Always run full migration in sandbox before production |
73
+
74
+ ## Bypass Automation During Migration
75
+
76
+ Use Custom Metadata toggle to disable triggers/flows during bulk data operations:
77
+
78
+ ```apex
79
+ // In trigger handler — check bypass before executing
80
+ Trigger_Setting__mdt setting = Trigger_Setting__mdt.getInstance('Equipment');
81
+ if (setting != null && !setting.Is_Active__c) {
82
+ return; // Bypass during migration
83
+ }
84
+ ```
85
+
86
+ ## Validation After Migration
87
+
88
+ | Check | Query |
89
+ |---|---|
90
+ | Record count matches | `SELECT COUNT() FROM Object__c WHERE [migrated criteria]` |
91
+ | No null values in required fields | `SELECT COUNT() FROM Object__c WHERE Required_Field__c = null` |
92
+ | Mapped values are valid | `SELECT Status__c, COUNT(Id) FROM Object__c GROUP BY Status__c` |
93
+ | No orphaned records | `SELECT COUNT() FROM Child__c WHERE Parent__c = null` |
94
+ | Error count is acceptable | Check Batch job `NumberOfErrors` in AsyncApexJob |
95
+
96
+ ## Rollback Strategies
97
+
98
+ | Scenario | Strategy |
99
+ |---|---|
100
+ | Field value update (reversible) | Restore from backup CSV via Data Loader upsert on Id |
101
+ | New records created (additive) | Delete via `DELETE FROM Object__c WHERE CreatedDate = TODAY AND CreatedById = [migration user]` |
102
+ | Field deleted (irreversible) | Cannot rollback — this is why backups are mandatory |
103
+ | Relationship changes | Restore original lookup values from backup |
104
+
105
+ ## Governor Limit Considerations
106
+
107
+ | Concern | Mitigation |
108
+ |---|---|
109
+ | 50M records max per QueryLocator | Use `Database.getQueryLocator` (not `Iterable`) |
110
+ | 200 scope size default | Keep at 200 unless callouts needed (then reduce) |
111
+ | Triggers fire on DML | Bypass via Custom Metadata toggle |
112
+ | Sharing recalculation | Schedule during off-hours for objects with complex sharing |
113
+ | 10,000 DML rows per transaction | Scope 200 × 1 DML = 200 rows (safe) |
114
+ | CPU time 60,000ms (async) | Keep transformation logic simple per record |
115
+
116
+ ## Testing Migrations
117
+
118
+ ```apex
119
+ @IsTest
120
+ static void testMigrateEquipmentStatus_bulk200() {
121
+ List<Equipment__c> records = new List<Equipment__c>();
122
+ for (Integer i = 0; i < 200; i++) {
123
+ records.add(new Equipment__c(
124
+ Legacy_Status__c = 'A',
125
+ Account__c = testAccount.Id
126
+ ));
127
+ }
128
+ insert records;
129
+
130
+ Test.startTest();
131
+ Database.executeBatch(new MigrateEquipmentStatusBatch(), 200);
132
+ Test.stopTest();
133
+
134
+ List<Equipment__c> migrated = [
135
+ SELECT Status__c FROM Equipment__c WHERE Id IN :records
136
+ ];
137
+ for (Equipment__c eq : migrated) {
138
+ Assert.areEqual('Active', eq.Status__c, 'Legacy status A should map to Active');
139
+ }
140
+ }
141
+ ```
142
+
143
+ ## Key Principles
144
+
145
+ 1. **Always backup before migrating** — no exceptions
146
+ 2. **Always test in sandbox first** — with production-like data volume
147
+ 3. **Use partial success DML** — `Database.update(scope, false)` to not fail entire batch on one bad record
148
+ 4. **Log errors per record** — use `Database.Stateful` to accumulate errors across batches
149
+ 5. **Bypass automation** — disable triggers/flows via Custom Metadata during bulk operations
150
+ 6. **Validate after migration** — count records, check field values, verify relationships
151
+ 7. **Schedule during off-hours** — sharing recalculation on large objects is expensive
@@ -0,0 +1,124 @@
1
+ <!-- Source: https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_custom_objects.htm -->
2
+ <!-- Last verified: API v66.0 — 2026-03-29 -->
3
+
4
+ # Data Modeling — Salesforce Reference
5
+
6
+ ## Custom Object Limits by Edition
7
+
8
+ | Edition | Max Custom Objects | Max Custom Fields per Object |
9
+ |---|---|---|
10
+ | Contact Manager | 5 | 25 |
11
+ | Group / Professional | 50 | 100 |
12
+ | Enterprise / Developer | 200 / 400 | 500 |
13
+ | Unlimited / Performance | 2,000 | 800 |
14
+
15
+ Hard ceiling: 800 custom fields on any single object (Unlimited/Performance).
16
+
17
+ ## Field Types
18
+
19
+ | Field Type | Max Length / Size | Indexable | Filterable in SOQL |
20
+ |---|---|---|---|
21
+ | Text | 255 chars | Yes | Yes |
22
+ | Text Area | 255 chars | No | Yes (limited) |
23
+ | Long Text Area | 131,072 chars | No | No (not selective) |
24
+ | Rich Text Area | 131,072 chars | No | No |
25
+ | Number | 18 digits | Yes | Yes |
26
+ | Currency | 18 digits (multi-currency aware) | Yes | Yes |
27
+ | Percent | 18 digits (stored as decimal) | Yes | Yes |
28
+ | Date | Date only | Yes | Yes |
29
+ | DateTime | Date + time (UTC) | Yes | Yes |
30
+ | Checkbox | Boolean | Yes | Yes |
31
+ | Picklist (single) | Controlled vocabulary | Yes (restricted) | Yes |
32
+ | Picklist (multi-select) | Multiple values | No | INCLUDES/EXCLUDES only |
33
+ | Formula | Calculated, read-only | No (derived) | Yes |
34
+ | Roll-Up Summary | Aggregate (SUM, COUNT, MIN, MAX) | N/A | N/A |
35
+ | Lookup | Reference to another record | Yes (auto-indexed) | Yes |
36
+ | External ID | Upsert key from external system | Yes (auto-indexed) | Yes |
37
+
38
+ ## Relationship Types
39
+
40
+ | Relationship | Cascade Delete | Roll-Up Summary | Required | Reparent | Sharing Inherited |
41
+ |---|---|---|---|---|---|
42
+ | Lookup | No (configurable) | No | No | Yes | No |
43
+ | Master-Detail | Yes | Yes | Yes | No (unless enabled) | Yes |
44
+ | Many-to-Many (junction) | Both sides | From junction | Both | No | From primary master |
45
+ | Hierarchical (self-lookup) | No | No | No | Yes | No |
46
+ | External Lookup | No | No | No | Yes | No |
47
+ | Indirect Lookup | No | No | No | Yes | No |
48
+
49
+ Max relationships per object: **40** (lookup + master-detail combined).
50
+ Max master-detail per object: **2**.
51
+
52
+ ## Automatically Indexed Fields
53
+
54
+ | Field | Notes |
55
+ |---|---|
56
+ | `Id` | Primary key |
57
+ | `Name` | Standard name field |
58
+ | `OwnerId` | Record owner |
59
+ | `CreatedDate` | Audit field |
60
+ | `SystemModstamp` | Audit field |
61
+ | `RecordTypeId` | Record type discriminator |
62
+ | All External ID fields | Auto-indexed on creation |
63
+ | All Lookup / Master-Detail fields | Auto-indexed on creation |
64
+
65
+ ## Custom Index Selectivity Thresholds
66
+
67
+ | Index Type | Threshold (first 1M records) | Threshold (remaining records) | Max Rows Returned |
68
+ |---|---|---|---|
69
+ | Standard index | < 30% | < 15% | 1,000,000 |
70
+ | Custom index | < 10% | < 5% | 333,333 |
71
+
72
+ Max custom indexes per object: **25** (soft limit; shared with External ID + unique fields).
73
+
74
+ ## Roll-Up Summary & Formula Limits
75
+
76
+ | Limit | Default | Max (via Support) |
77
+ |---|---|---|
78
+ | Roll-Up Summary fields per object | 25 | 40 |
79
+ | Formula fields per object | 40 | -- |
80
+ | External ID fields per object | 25 | Soft limit, can request increase |
81
+
82
+ ## Custom Metadata vs Custom Settings vs Custom Labels
83
+
84
+ | Feature | Custom Metadata (`__mdt`) | Custom Settings | Custom Labels |
85
+ |---|---|---|---|
86
+ | Deployable via metadata | Yes | No (hierarchy) / Yes (list) | Yes |
87
+ | Available in Flows | Yes (Get Records) | Yes (formula) | Yes |
88
+ | Available in Formulas | Yes | Yes | Yes |
89
+ | Available in SOQL | Yes | Yes (limits apply) | No |
90
+ | Per-user/profile values | No | Yes (hierarchy) | No (language only) |
91
+ | Packageable | Yes | Limited | Yes |
92
+ | Governor limit on reads | No (cached) | Yes (SOQL equivalent) | No |
93
+ | Max records | 10 million | 10 MB total cached | Unlimited |
94
+ | Best for | Config deployed with code | User/profile-specific settings | Translatable strings |
95
+
96
+ ## Object-Wide Defaults (OWD)
97
+
98
+ | OWD Setting | Record Owner | Other Users | Best For |
99
+ |---|---|---|---|
100
+ | Public Read/Write | Full | Read + Write | Reference/config data |
101
+ | Public Read Only | Full | Read only | Products, pricebooks |
102
+ | Private | Full | None | Accounts, Opportunities |
103
+ | Controlled by Parent | Inherits | Inherits | Child (Master-Detail) |
104
+
105
+ ## External Object Adapters
106
+
107
+ | Adapter | Use Case | Notes |
108
+ |---|---|---|
109
+ | OData 2.0 / 4.0 | External REST API with OData | Network latency dependent |
110
+ | Custom Adapter | Proprietary API or database | Apex-based |
111
+ | Cross-Org | Another Salesforce org | Salesforce Connect |
112
+
113
+ Limitations: No triggers, no Flows, no Validation Rules on External Objects.
114
+
115
+ ## Anti-Patterns
116
+
117
+ | Anti-Pattern | Problem | Fix |
118
+ |---|---|---|
119
+ | Polymorphic lookup abuse | Hard to query/maintain | Explicit lookup fields per related object |
120
+ | Over-normalization | Too many objects for simple data | Flatten into fields unless multi-value needed |
121
+ | Too many custom fields | Approaching 800-field limit | Split into child objects or Custom Metadata |
122
+ | Circular Master-Detail | Deletion/sharing cascades | Break circle with Lookup on one side |
123
+ | Text instead of Lookup | No referential integrity | Use Lookup fields |
124
+ | Ignoring LDV (>100K records) | Non-selective full table scans | Custom indexes, skinny tables |
@@ -0,0 +1,140 @@
1
+ <!-- Source: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_debugging.htm -->
2
+ <!-- Last verified: API v66.0 — 2026-03-29 -->
3
+ <!-- WARNING: Web fetch of canonical URL failed (LWR client-side rendering). Facts below extracted from sf-debugging skill. -->
4
+
5
+ # Debugging Tools — Reference
6
+
7
+ ## Debug Log Limits
8
+
9
+ | Limit | Value |
10
+ |-------|-------|
11
+ | Maximum debug log size | **20 MB** (truncated from middle if exceeded) |
12
+ | Maximum SOQL queries per transaction | 100 |
13
+ | Maximum DML statements per transaction | 150 |
14
+ | Maximum DML rows per transaction | 10,000 |
15
+ | Maximum SOSL queries per transaction | 20 |
16
+ | Maximum query rows per transaction | 50,000 |
17
+ | Maximum CPU time (sync) | 10,000 ms |
18
+ | Maximum heap size (sync) | 6,000,000 bytes (6 MB) |
19
+
20
+ ## Debug Log Categories and Levels
21
+
22
+ | Category | Available Levels | What It Logs |
23
+ |----------|-----------------|--------------|
24
+ | `APEX_CODE` | NONE, ERROR, WARN, INFO, DEBUG, FINE, FINER, FINEST | Apex statements, `System.debug()` |
25
+ | `APEX_PROFILING` | NONE, INFO, FINE | Limits usage, performance timing |
26
+ | `CALLOUT` | NONE, INFO, FINE | HTTP callout request/response |
27
+ | `DB` | NONE, INFO, FINE, FINER | SOQL, SOSL, DML operations |
28
+ | `SYSTEM` | NONE, DEBUG, FINE | System events (async jobs, etc.) |
29
+ | `VALIDATION` | NONE, INFO | Validation rule evaluation |
30
+ | `WORKFLOW` | NONE, INFO | Workflow rules, Process Builder |
31
+ | `VISUALFORCE` | NONE, INFO, FINE, FINER, FINEST | Visualforce page rendering |
32
+ | `NBA` | NONE, INFO | Einstein Next Best Action |
33
+
34
+ ## Recommended Debug Level Presets
35
+
36
+ | Scenario | APEX_CODE | APEX_PROFILING | CALLOUT | DB | SYSTEM |
37
+ |----------|-----------|---------------|---------|-----|--------|
38
+ | Standard Debugging | DEBUG | INFO | INFO | INFO | DEBUG |
39
+ | Performance Investigation | FINE | FINE | FINE | FINE | FINE |
40
+ | Callout Debugging | DEBUG | — | FINE | INFO | — |
41
+
42
+ ## Debug Log Access Methods
43
+
44
+ | Method | Command / Steps |
45
+ |--------|----------------|
46
+ | SF CLI: Stream live | `sf apex tail log --target-org myOrg` |
47
+ | SF CLI: With debug level | `sf apex tail log --target-org myOrg --debug-level SFDC_DevConsole` |
48
+ | SF CLI: Get specific log | `sf apex get log --log-id 07L... --target-org myOrg` |
49
+ | SF CLI: List logs | `sf apex list log --target-org myOrg` |
50
+ | SF CLI: Run anonymous Apex | `sf apex run --file scripts/apex/debug-script.apex --target-org myOrg` |
51
+ | Setup UI | Setup > Debug Logs > New (Monitored Users) |
52
+ | Developer Console | Debug > Change Log Levels |
53
+
54
+ ## Critical Log Markers
55
+
56
+ | Marker | Meaning |
57
+ |--------|---------|
58
+ | `SOQL_EXECUTE_BEGIN` | SOQL query started (count toward 100 limit) |
59
+ | `SOQL_EXECUTE_END` | SOQL query completed (includes row count) |
60
+ | `DML_BEGIN` / `DML_END` | DML operation (count toward 150 limit) |
61
+ | `CUMULATIVE_LIMIT_USAGE` | Limits summary at transaction end |
62
+ | `FATAL_ERROR` | Uncaught exception |
63
+ | `EXCEPTION_THROWN` | Any exception (caught or uncaught) |
64
+ | `USER_DEBUG` | `System.debug()` output |
65
+ | `HEAP_ALLOCATE` | Large memory allocation |
66
+ | `EXECUTION_STARTED` / `EXECUTION_FINISHED` | Transaction boundaries |
67
+ | `CODE_UNIT_STARTED` | Trigger, class, or anonymous Apex entry |
68
+
69
+ ## Developer Console Features
70
+
71
+ | Feature | Shortcut / Access |
72
+ |---------|-------------------|
73
+ | Execute Anonymous Apex | Ctrl+E / Cmd+E |
74
+ | Query Editor | Tab in Developer Console |
75
+ | Query Plan (Explain) | "Query Plan" button in Query Editor |
76
+ | Checkpoints (heap inspection) | Debug > Add/Remove Checkpoint on a code line |
77
+ | Checkpoint Inspector | Debug > Checkpoint Inspector |
78
+
79
+ ## SOQL Query Plan (Explain Plan)
80
+
81
+ | Cost Value | Meaning |
82
+ |-----------|---------|
83
+ | Cost < 1 | Uses index — efficient |
84
+ | Cost >= 1 | Full table scan — potentially slow for LDV |
85
+ | Leading Operation: `TableScan` | No suitable index found |
86
+ | Leading Operation: `Index` | Index used — efficient |
87
+
88
+ ## VS Code Debuggers
89
+
90
+ | Debugger | Cost | How It Works | Requirements |
91
+ |----------|------|-------------|-------------|
92
+ | Apex Replay Debugger | Free | Replays `.log` files in VS Code | Salesforce Extension Pack |
93
+ | Interactive Apex Debugger | Paid | Live breakpoints, real-time inspection | Performance/Unlimited Edition or Enterprise add-on |
94
+
95
+ ### Apex Replay Debugger Steps
96
+
97
+ 1. Install Salesforce Extension Pack in VS Code
98
+ 2. Capture a debug log (CLI, Dev Console, or Setup)
99
+ 3. Open `.log` file in VS Code
100
+ 4. Command Palette: "SFDX: Launch Apex Replay Debugger with Current File"
101
+ 5. Set breakpoints in `.cls` files
102
+ 6. Step through execution, inspect variables and call stack
103
+
104
+ ### Interactive Debugger Availability
105
+
106
+ | Edition | Available |
107
+ |---------|-----------|
108
+ | Performance Edition | Yes |
109
+ | Unlimited Edition | Yes |
110
+ | Enterprise Edition | Add-on only |
111
+ | Developer Edition | No |
112
+ | Sandbox (without entitlement) | No |
113
+
114
+ ## Common Errors: Root Causes
115
+
116
+ | Error | Root Cause | Fix Pattern |
117
+ |-------|-----------|-------------|
118
+ | `Too many SOQL queries: 101` | SOQL inside a loop | Bulk-query outside loop, use Map for lookup |
119
+ | `Apex CPU time limit exceeded` | O(n^2) loops, string ops | Use Map for O(1) lookup; move to async |
120
+ | `NullPointerException` | Unchecked null reference | Null-safe operator `?.` (API 56.0+) or manual null check |
121
+ | `UNABLE_TO_LOCK_ROW` | Concurrent updates on same record | Retry via Queueable, `FOR UPDATE`, reduce batch size |
122
+ | `MIXED_DML_OPERATION` | Setup + non-setup DML in same transaction | Separate with `@future` |
123
+ | `Too many DML rows: 10001` | DML on > 10,000 rows | Use Batch Apex |
124
+ | `Callout from triggers` | Sync callout in trigger context | Use `@future(callout=true)` |
125
+
126
+ ## Flow Debugging
127
+
128
+ | Feature | Access |
129
+ |---------|--------|
130
+ | Flow Debug Mode | Flow Builder > Debug button (top right) |
131
+ | Rollback option | Checkbox to undo DML during debug |
132
+ | Input variables | Set before running debug |
133
+
134
+ ## LWC Debugging
135
+
136
+ | Tool | Purpose |
137
+ |------|---------|
138
+ | Browser DevTools (`console.group`, `console.error`) | Component-level logging |
139
+ | Lightning Debug Mode | Setup > Session Settings (slower, better errors) |
140
+ | Salesforce Inspector Reloaded (Chrome) | Metadata browsing, SOQL runner, API inspector |
@@ -0,0 +1,87 @@
1
+ # Deployment Checklist — Salesforce Reference
2
+
3
+ > Last verified: API v66.0 (Spring '26)
4
+ > Source: <https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_deploy.htm>
5
+
6
+ ## Test Levels
7
+
8
+ | Test Level | What Runs | When to Use |
9
+ |---|---|---|
10
+ | `NoTestRun` | Nothing | Sandbox only; production only if no Apex code in deployment |
11
+ | `RunSpecifiedTests` | Named test classes only | Small Apex deployments; coverage >= 75% for deployed classes |
12
+ | `RunLocalTests` | All local tests (excludes managed package tests) | Recommended default for production deployments |
13
+ | `RunAllTestsInOrg` | All tests including managed packages | Major releases or full org validation |
14
+ | `RunRelevantTests` (v66.0+) | Tests linked to changed classes via `@testFor` | CI/CD PR validation for faster feedback |
15
+
16
+ ## Validation-Then-Quick-Deploy Workflow
17
+
18
+ | Step | Command | Notes |
19
+ |---|---|---|
20
+ | 1. Validate | `sf project deploy validate` | Runs tests, does NOT deploy |
21
+ | 2. Wait | `sf project deploy report --job-id <ID>` | Check async status |
22
+ | 3. Quick deploy | `sf project deploy quick --job-id <ID>` | No re-run of tests, deploys in seconds |
23
+
24
+ Quick deploy window: **10 days** after successful validation, invalidated if any Apex is deployed to the org in the interim.
25
+
26
+ ## Deployment Order for Dependent Metadata
27
+
28
+ | Order | Metadata Type | Depends On |
29
+ |---|---|---|
30
+ | 1 | CustomObject | — |
31
+ | 2 | CustomField | CustomObject |
32
+ | 3 | RecordType | CustomObject |
33
+ | 4 | ValidationRule | CustomField |
34
+ | 5 | Layout | CustomField, RecordType |
35
+ | 6 | ApexClass | CustomObject, CustomField |
36
+ | 7 | ApexTrigger | ApexClass (handlers) |
37
+ | 8 | LightningComponentBundle | ApexClass (controllers) |
38
+ | 9 | FlexiPage / App Page | LWC |
39
+ | 10 | PermissionSet | Objects, Fields, Apex |
40
+ | 11 | Profile | All of the above — deploy last |
41
+
42
+ ## Destructive Changes
43
+
44
+ To delete metadata, deploy `destructiveChanges.xml` alongside an empty `package.xml`. Use `--post-destructive-changes` (runs after deploy) for removing replaced components. Use `--pre-destructive-changes` (runs before deploy) for removing blockers.
45
+
46
+ ## Rollback Strategies
47
+
48
+ | Strategy | When to Use |
49
+ |---|---|
50
+ | `git revert` + full redeploy | Coupled changes across multiple files |
51
+ | Single-file rollback | Isolated, dependency-free component only |
52
+ | Pre-deploy snapshot (`sf project retrieve start`) | Before any production deploy |
53
+ | Package version rollback (`sf package install`) | Unlocked/managed package orgs |
54
+
55
+ ## Production Deployment Checklist
56
+
57
+ - [ ] All local tests pass with 75%+ org-wide code coverage
58
+ - [ ] Validation against production succeeded
59
+ - [ ] Change management ticket approved
60
+ - [ ] Deployment order documented for dependent components
61
+ - [ ] Rollback plan prepared
62
+ - [ ] Data backup confirmed for schema changes
63
+ - [ ] Stakeholders notified
64
+ - [ ] Post-deploy smoke test plan ready
65
+
66
+ ## Common Deployment Errors
67
+
68
+ | Error | Cause | Fix |
69
+ |---|---|---|
70
+ | "Test coverage is 0% for trigger X" | Trigger has no test class | Write and include a test class |
71
+ | "Average coverage below 75%" | Org-wide coverage insufficient | Add tests for uncovered classes |
72
+ | "Entity of type X not found" | Component missing in target org | Deploy dependency first |
73
+ | "CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY" | Trigger/validation blocking deploy | Check error details |
74
+ | "duplicate value found" | Unique constraint violation | Check for existing records |
75
+
76
+ ## SF CLI Deploy Flags
77
+
78
+ | Flag | Purpose |
79
+ |---|---|
80
+ | `--source-dir` | Local source directory to deploy |
81
+ | `--manifest` | package.xml file path |
82
+ | `--metadata` | Specific types or components |
83
+ | `--test-level` | Test execution level |
84
+ | `--tests` | Comma-separated test class names (with RunSpecifiedTests) |
85
+ | `--wait` | Minutes to wait for async deploy |
86
+ | `--async` | Return job ID immediately |
87
+ | `--verbose` | Detailed output |
@@ -0,0 +1,79 @@
1
+ # Salesforce Deprecations & Retirements
2
+
3
+ > Last verified: 2026-03-31
4
+ >
5
+ > **MAINTENANCE:**
6
+ >
7
+ > 1. Append new entries with `Added: YYYY-MM` when Salesforce announces deprecations
8
+ > 2. Remove entries older than 24 months (model knows them). Exception: "Retiring Soon" entries stay until retirement date + 24 months.
9
+ > 3. Update "Last verified" date
10
+ > 4. Releases and deprecations are INDEPENDENT — a new release does NOT deprecate the previous one
11
+
12
+ ## Already Retired — NEVER Suggest These
13
+
14
+ | Feature | Retired | Replacement | Added |
15
+ |---------|---------|-------------|-------|
16
+ | Customizable Forecasting | Summer '20 | Collaborative Forecasting | 2026-03 |
17
+ | Original Territory Management | Summer '21 | Sales Territories (fka ETM 2.0) | 2026-03 |
18
+ | Classic Knowledge | Summer '25 | Lightning Knowledge (`Knowledge__kav` + Record Types) | 2026-03 |
19
+ | Salesforce Functions | Jan 2025 | External Services / Heroku | 2026-03 |
20
+ | API versions 21.0–30.0 | Summer '25 (v64.0) | Minimum supported: v31.0 | 2026-03 |
21
+ | SOAP `login()` at v65.0+ | Winter '26 (v65.0) | OAuth 2.0 (JWT Bearer, Web Server, Client Credentials) | 2026-03 |
22
+ | Legacy Chat / Live Agent / Embedded Chat | Feb 14, 2026 | Messaging for In-App and Web | 2026-03 |
23
+ | Pipeline Inspection Close Date Predictions | Jan 2025 | Einstein Opportunity Scoring | 2026-03 |
24
+ | Document Generation 1.0 | Jul 2025 | Document Generation 2.0 | 2026-03 |
25
+ | Einstein Automated Contacts | Spring '25 (v63.0) | Manual / Agentforce | 2026-03 |
26
+ | Service Setup Assistant (new orgs) | Spring '26 (v66.0) | Salesforce Go | 2026-03 |
27
+
28
+ ## End of Sale — No New Licenses
29
+
30
+ | Feature | End of Sale | Successor | Added |
31
+ |---------|------------|-----------|-------|
32
+ | Salesforce CPQ | March 27, 2025 | Agentforce Revenue Management (ARM). NO automated migration path. | 2026-03 |
33
+ | Sales Dialer (new licenses) | Spring '26 | Partner telephony / Agentforce Contact Center | 2026-03 |
34
+
35
+ ## Retiring Soon — WARN Users
36
+
37
+ | Feature | Retirement Date | Action Required | Added |
38
+ |---------|----------------|-----------------|-------|
39
+ | Standard Omni-Channel | June 1, 2026 | Migrate to Enhanced Omni-Channel before cutoff | 2026-03 |
40
+ | EWS for Einstein Activity Capture | Aug 2026 | Migrate to Microsoft Graph (one-way, per-user reconnect) | 2026-03 |
41
+ | Standard-Volume Platform Events | June 2027 | Migrate to High-Volume Platform Events | 2026-03 |
42
+ | Salesforce for Outlook | Dec 2027 | Outlook Integration + Einstein Activity Capture | 2026-03 |
43
+ | SOAP `login()` for API v31–64 | Summer '27 | OAuth 2.0 | 2026-03 |
44
+
45
+ ## End of Support (Still Executes, No Bug Fixes)
46
+
47
+ | Feature | End of Support | Replacement | Added |
48
+ |---------|---------------|-------------|-------|
49
+ | Workflow Rules | Dec 31, 2025 | Flow Builder | 2026-03 |
50
+ | Process Builder | Dec 31, 2025 | Flow Builder | 2026-03 |
51
+
52
+ ## Product Renames — Use Current Names
53
+
54
+ | Old Name | Current Name | Changed | Added |
55
+ |----------|-------------|---------|-------|
56
+ | Enterprise Territory Management 2.0 | Sales Territories | Summer '24 | 2026-03 |
57
+ | High Velocity Sales | Sales Engagement | Winter '24 | 2026-03 |
58
+ | Salesforce CPQ / Revenue Cloud Advanced | Agentforce Revenue Management (ARM) | Oct 2025 | 2026-03 |
59
+ | Sales Cloud (branding) | Agentforce Sales | Spring '26 | 2026-03 |
60
+ | Einstein Service Agent | Agentforce Service Agent | Jan 2025 | 2026-03 |
61
+ | Einstein Copilot | Agentforce | Jan 2025 | 2026-03 |
62
+ | Omni-Channel Supervisor | Command Center for Service | Spring '26 | 2026-03 |
63
+
64
+ ## Beta Features — NOT Production-Ready
65
+
66
+ | Feature | Status | Notes | Added |
67
+ |---------|--------|-------|-------|
68
+ | RunRelevantTests | Beta (Spring '26 v66.0) | Do not rely on for production deployments | 2026-03 |
69
+ | LWC Complex Template Expressions | Beta/Pilot (Spring '26) | Explicitly "do not use in production" | 2026-03 |
70
+ | Agent Script | Public Beta (Nov 2025) | No GA date announced | 2026-03 |
71
+
72
+ ## API Breaking Changes
73
+
74
+ | Change | API Version | Impact | Added |
75
+ |--------|------------|--------|-------|
76
+ | SOAP `login()` removed | v65.0+ (Winter '26) | Use OAuth 2.0 | 2026-03 |
77
+ | Abstract/override require explicit access modifier | v65.0+ (Winter '26) | Add public/protected/global to abstract/override methods | 2026-03 |
78
+ | Legacy hostnames return 404 | Spring '26 (v66.0) | Use MyDomain URLs only (na1.salesforce.com no longer works) | 2026-03 |
79
+ | Session IDs removed from outbound messages | Feb 16, 2026 | Use OAuth for callbacks instead of session ID | 2026-03 |