bc-code-intelligence-mcp 1.3.4 → 1.3.6

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 (522) hide show
  1. package/dist/layers/embedded-layer.d.ts.map +1 -1
  2. package/dist/layers/embedded-layer.js +40 -0
  3. package/dist/layers/embedded-layer.js.map +1 -1
  4. package/dist/services/enhanced-prompt-service.d.ts +1 -12
  5. package/dist/services/enhanced-prompt-service.d.ts.map +1 -1
  6. package/dist/services/enhanced-prompt-service.js +27 -38
  7. package/dist/services/enhanced-prompt-service.js.map +1 -1
  8. package/dist/services/methodology-service.d.ts.map +1 -1
  9. package/dist/services/methodology-service.js +15 -1
  10. package/dist/services/methodology-service.js.map +1 -1
  11. package/embedded-knowledge/.github/ISSUE_TEMPLATE/bug-report.md +24 -0
  12. package/embedded-knowledge/.github/ISSUE_TEMPLATE/content-improvement.md +24 -0
  13. package/embedded-knowledge/.github/ISSUE_TEMPLATE/knowledge-request.md +30 -0
  14. package/embedded-knowledge/AGENTS.md +178 -0
  15. package/embedded-knowledge/CONTRIBUTING.md +58 -0
  16. package/embedded-knowledge/LICENSE +21 -0
  17. package/embedded-knowledge/README.md +32 -0
  18. package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +90 -0
  19. package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +113 -0
  20. package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +101 -0
  21. package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +87 -0
  22. package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +155 -0
  23. package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +138 -0
  24. package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +79 -0
  25. package/embedded-knowledge/domains/alex-architect/samples/api-delegate-operation.md +280 -0
  26. package/embedded-knowledge/domains/alex-architect/samples/api-fieldset-registration.md +200 -0
  27. package/embedded-knowledge/domains/alex-architect/samples/api-interface-design.md +565 -0
  28. package/embedded-knowledge/domains/alex-architect/samples/api-page-implementation.md +665 -0
  29. package/embedded-knowledge/domains/alex-architect/samples/complex-facade-patterns.md +325 -0
  30. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern-al.md +696 -0
  31. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern.md +320 -0
  32. package/embedded-knowledge/domains/alex-architect/samples/subscriber-organization.md +102 -0
  33. package/embedded-knowledge/domains/alex-architect/samples/systemid-integration.md +433 -0
  34. package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +66 -0
  35. package/embedded-knowledge/domains/alex-architect/systemid-integration.md +115 -0
  36. package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +360 -0
  37. package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +86 -0
  38. package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +96 -0
  39. package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +70 -0
  40. package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +84 -0
  41. package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +93 -0
  42. package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +73 -0
  43. package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +78 -0
  44. package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +79 -0
  45. package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +87 -0
  46. package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +209 -0
  47. package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +246 -0
  48. package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +107 -0
  49. package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +105 -0
  50. package/embedded-knowledge/domains/dean-debug/samples/bc24-no-series-conversion.md +186 -0
  51. package/embedded-knowledge/domains/dean-debug/samples/case-performance-optimization.md +60 -0
  52. package/embedded-knowledge/domains/dean-debug/samples/compound-statements-debugging.md +139 -0
  53. package/embedded-knowledge/domains/dean-debug/samples/custom-dimensions.md +190 -0
  54. package/embedded-knowledge/domains/dean-debug/samples/custom-telemetry.md +516 -0
  55. package/embedded-knowledge/domains/dean-debug/samples/deleteall-performance.md +298 -0
  56. package/embedded-knowledge/domains/dean-debug/samples/error-correlation.md +324 -0
  57. package/embedded-knowledge/domains/dean-debug/samples/extension-isolation.md +344 -0
  58. package/embedded-knowledge/domains/dean-debug/samples/logmessage-methods.md +137 -0
  59. package/embedded-knowledge/domains/dean-debug/samples/maintainsiftindex-examples.md +340 -0
  60. package/embedded-knowledge/domains/dean-debug/samples/no-series-implementation.md +810 -0
  61. package/embedded-knowledge/domains/dean-debug/samples/no-series-module-bc24.md +86 -0
  62. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation-module-bc24.md +110 -0
  63. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation.md +758 -0
  64. package/embedded-knowledge/domains/dean-debug/samples/odata-query-optimization.md +665 -0
  65. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-case.md +316 -0
  66. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-filters.md +223 -0
  67. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-filter-exclusion.md +149 -0
  68. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-optimization.md +412 -0
  69. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-performance.md +211 -0
  70. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-primary-key.md +155 -0
  71. package/embedded-knowledge/domains/dean-debug/samples/sift-technology-fundamentals.md +475 -0
  72. package/embedded-knowledge/domains/dean-debug/samples/singleinstance-subscribers.md +238 -0
  73. package/embedded-knowledge/domains/dean-debug/samples/table-event-batching.md +97 -0
  74. package/embedded-knowledge/domains/dean-debug/samples/table-key-requirements.md +666 -0
  75. package/embedded-knowledge/domains/dean-debug/samples/telemetry-performance.md +319 -0
  76. package/embedded-knowledge/domains/dean-debug/samples/verbosity-strategy.md +236 -0
  77. package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +59 -0
  78. package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +67 -0
  79. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +70 -0
  80. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +90 -0
  81. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +87 -0
  82. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +70 -0
  83. package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +74 -0
  84. package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +81 -0
  85. package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +56 -0
  86. package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +66 -0
  87. package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +79 -0
  88. package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +78 -0
  89. package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +83 -0
  90. package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +76 -0
  91. package/embedded-knowledge/domains/dean-debug/testfield-performance.md +104 -0
  92. package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +145 -0
  93. package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +104 -0
  94. package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +114 -0
  95. package/embedded-knowledge/domains/eva-errors/samples/fielderror-default-messages.md +356 -0
  96. package/embedded-knowledge/domains/eva-errors/samples/fielderror-syntax.md +256 -0
  97. package/embedded-knowledge/domains/eva-errors/samples/table-safety-validation-patterns.md +101 -0
  98. package/embedded-knowledge/domains/eva-errors/samples/testfield-error-handling.md +108 -0
  99. package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +80 -0
  100. package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +98 -0
  101. package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +123 -0
  102. package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +96 -0
  103. package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +115 -0
  104. package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +115 -0
  105. package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +114 -0
  106. package/embedded-knowledge/domains/jordan-bridge/samples/al-event-subscriber-architecture.md +395 -0
  107. package/embedded-knowledge/domains/jordan-bridge/samples/api-error-responses.md +479 -0
  108. package/embedded-knowledge/domains/jordan-bridge/samples/api-field-control.md +548 -0
  109. package/embedded-knowledge/domains/jordan-bridge/samples/api-url-naming.md +287 -0
  110. package/embedded-knowledge/domains/jordan-bridge/samples/business-process-templates.md +434 -0
  111. package/embedded-knowledge/domains/jordan-bridge/samples/etag-implementation.md +508 -0
  112. package/embedded-knowledge/domains/jordan-bridge/samples/task-scheduler-pattern.md +615 -0
  113. package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +144 -0
  114. package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +96 -0
  115. package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +124 -0
  116. package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +84 -0
  117. package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +75 -0
  118. package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +96 -0
  119. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-multiple-conditions.md +385 -0
  120. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-syntax-structure.md +72 -0
  121. package/embedded-knowledge/domains/maya-mentor/samples/fielderror-syntax-usage.md +48 -0
  122. package/embedded-knowledge/domains/maya-mentor/samples/testfield-basic-syntax.md +49 -0
  123. package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +67 -0
  124. package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +119 -0
  125. package/embedded-knowledge/domains/quinn-tester/rule-execution.md +123 -0
  126. package/embedded-knowledge/domains/quinn-tester/samples/case-error-handling.md +64 -0
  127. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-message-construction.md +60 -0
  128. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-validation-patterns.md +83 -0
  129. package/embedded-knowledge/domains/quinn-tester/samples/rule-execution.md +716 -0
  130. package/embedded-knowledge/domains/quinn-tester/samples/table-safety-validation-patterns.md +101 -0
  131. package/embedded-knowledge/domains/quinn-tester/samples/temporary-table-operation-validation.md +91 -0
  132. package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +79 -0
  133. package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +79 -0
  134. package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +89 -0
  135. package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +76 -0
  136. package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +76 -0
  137. package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +76 -0
  138. package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +81 -0
  139. package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +76 -0
  140. package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +75 -0
  141. package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +76 -0
  142. package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +76 -0
  143. package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +76 -0
  144. package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +96 -0
  145. package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +76 -0
  146. package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +86 -0
  147. package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +90 -0
  148. package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +82 -0
  149. package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +78 -0
  150. package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +76 -0
  151. package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +78 -0
  152. package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +100 -0
  153. package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +115 -0
  154. package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +124 -0
  155. package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +110 -0
  156. package/embedded-knowledge/domains/roger-reviewer/samples/al-begin-end-blocks.md +438 -0
  157. package/embedded-knowledge/domains/roger-reviewer/samples/al-binary-operator-spacing.md +255 -0
  158. package/embedded-knowledge/domains/roger-reviewer/samples/al-comment-spacing-standards.md +209 -0
  159. package/embedded-knowledge/domains/roger-reviewer/samples/al-keyword-indentation-rules.md +218 -0
  160. package/embedded-knowledge/domains/roger-reviewer/samples/al-line-start-keyword-positioning.md +218 -0
  161. package/embedded-knowledge/domains/roger-reviewer/samples/al-separate-if-else-formatting.md +280 -0
  162. package/embedded-knowledge/domains/roger-reviewer/samples/al-statement-per-line-rule.md +188 -0
  163. package/embedded-knowledge/domains/roger-reviewer/samples/al-unnecessary-else-elimination.md +245 -0
  164. package/embedded-knowledge/domains/roger-reviewer/samples/al-variable-declaration-order.md +244 -0
  165. package/embedded-knowledge/domains/roger-reviewer/samples/begin-end-positioning.md +278 -0
  166. package/embedded-knowledge/domains/roger-reviewer/samples/boolean-simplification-examples.md +484 -0
  167. package/embedded-knowledge/domains/roger-reviewer/samples/case-error-handling.md +64 -0
  168. package/embedded-knowledge/domains/roger-reviewer/samples/compound-statement-readability.md +107 -0
  169. package/embedded-knowledge/domains/roger-reviewer/samples/lonely-repeat-examples.md +280 -0
  170. package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +75 -0
  171. package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +67 -0
  172. package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +76 -0
  173. package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +98 -0
  174. package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +128 -0
  175. package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +75 -0
  176. package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +95 -0
  177. package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +141 -0
  178. package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +91 -0
  179. package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +118 -0
  180. package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +111 -0
  181. package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +113 -0
  182. package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +127 -0
  183. package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +141 -0
  184. package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +66 -0
  185. package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +96 -0
  186. package/embedded-knowledge/domains/sam-coder/samples/al-blank-line-organization.md +161 -0
  187. package/embedded-knowledge/domains/sam-coder/samples/al-case-action-formatting.md +177 -0
  188. package/embedded-knowledge/domains/sam-coder/samples/al-lonely-repeat-pattern.md +239 -0
  189. package/embedded-knowledge/domains/sam-coder/samples/al-named-parameter-pattern.md +346 -0
  190. package/embedded-knowledge/domains/sam-coder/samples/al-record-find-early-exit.md +298 -0
  191. package/embedded-knowledge/domains/sam-coder/samples/command-queue-pattern.md +677 -0
  192. package/embedded-knowledge/domains/sam-coder/samples/deleteall-alternative-implementation.md +117 -0
  193. package/embedded-knowledge/domains/sam-coder/samples/deleteall-triggers.md +75 -0
  194. package/embedded-knowledge/domains/sam-coder/samples/deleteall-usage.md +169 -0
  195. package/embedded-knowledge/domains/sam-coder/samples/event-bridge-pattern.md +399 -0
  196. package/embedded-knowledge/domains/sam-coder/samples/event-payload-design.md +356 -0
  197. package/embedded-knowledge/domains/sam-coder/samples/generic-method-patterns.md +889 -0
  198. package/embedded-knowledge/domains/sam-coder/samples/manual-binding.md +84 -0
  199. package/embedded-knowledge/domains/sam-coder/samples/nested-compound-best-practices.md +127 -0
  200. package/embedded-knowledge/domains/sam-coder/samples/single-to-compound-conversion.md +89 -0
  201. package/embedded-knowledge/domains/sam-coder/samples/template-method-pattern.md +516 -0
  202. package/embedded-knowledge/domains/sam-coder/samples/testfield-patterns.md +61 -0
  203. package/embedded-knowledge/domains/sam-coder/samples/type-safe-operations.md +427 -0
  204. package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +122 -0
  205. package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +96 -0
  206. package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +101 -0
  207. package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +149 -0
  208. package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +107 -0
  209. package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +95 -0
  210. package/embedded-knowledge/domains/seth-security/api-permission-model.md +115 -0
  211. package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +78 -0
  212. package/embedded-knowledge/domains/seth-security/samples/al-temporary-table-safety.md +373 -0
  213. package/embedded-knowledge/domains/seth-security/samples/api-permission-model.md +308 -0
  214. package/embedded-knowledge/domains/shared/al-file-naming-conventions.md +146 -0
  215. package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +79 -0
  216. package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +78 -0
  217. package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +81 -0
  218. package/embedded-knowledge/indexes/bc-version-matrix.json +188 -0
  219. package/embedded-knowledge/indexes/domain-catalog.json +106 -0
  220. package/embedded-knowledge/indexes/tags/abbreviations.json +1 -0
  221. package/embedded-knowledge/indexes/tags/abstraction.json +1 -0
  222. package/embedded-knowledge/indexes/tags/access-control.json +1 -0
  223. package/embedded-knowledge/indexes/tags/accessibility.json +1 -0
  224. package/embedded-knowledge/indexes/tags/actions.json +1 -0
  225. package/embedded-knowledge/indexes/tags/advanced-patterns.json +1 -0
  226. package/embedded-knowledge/indexes/tags/advanced.json +1 -0
  227. package/embedded-knowledge/indexes/tags/al-extension.json +1 -0
  228. package/embedded-knowledge/indexes/tags/al-generics.json +1 -0
  229. package/embedded-knowledge/indexes/tags/al-objects.json +1 -0
  230. package/embedded-knowledge/indexes/tags/al-syntax.json +1 -0
  231. package/embedded-knowledge/indexes/tags/algorithm-structure.json +1 -0
  232. package/embedded-knowledge/indexes/tags/alternatives.json +1 -0
  233. package/embedded-knowledge/indexes/tags/analytics.json +1 -0
  234. package/embedded-knowledge/indexes/tags/api-delegates.json +1 -0
  235. package/embedded-knowledge/indexes/tags/api-design.json +1 -0
  236. package/embedded-knowledge/indexes/tags/api-documentation.json +1 -0
  237. package/embedded-knowledge/indexes/tags/api-endpoints.json +1 -0
  238. package/embedded-knowledge/indexes/tags/api-extensibility.json +1 -0
  239. package/embedded-knowledge/indexes/tags/api-fieldsets.json +1 -0
  240. package/embedded-knowledge/indexes/tags/api-integration.json +1 -0
  241. package/embedded-knowledge/indexes/tags/api-interfaces.json +1 -0
  242. package/embedded-knowledge/indexes/tags/api-optimization.json +1 -0
  243. package/embedded-knowledge/indexes/tags/api-pages.json +1 -0
  244. package/embedded-knowledge/indexes/tags/api-patterns.json +1 -0
  245. package/embedded-knowledge/indexes/tags/api-permissions.json +1 -0
  246. package/embedded-knowledge/indexes/tags/api-responses.json +1 -0
  247. package/embedded-knowledge/indexes/tags/api-simplification.json +1 -0
  248. package/embedded-knowledge/indexes/tags/api.json +1 -0
  249. package/embedded-knowledge/indexes/tags/architecture.json +1 -0
  250. package/embedded-knowledge/indexes/tags/async-patterns.json +1 -0
  251. package/embedded-knowledge/indexes/tags/async-processing.json +1 -0
  252. package/embedded-knowledge/indexes/tags/automatic-registration.json +1 -0
  253. package/embedded-knowledge/indexes/tags/batch-operations.json +1 -0
  254. package/embedded-knowledge/indexes/tags/bc24-migration.json +1 -0
  255. package/embedded-knowledge/indexes/tags/begin-blocks.json +1 -0
  256. package/embedded-knowledge/indexes/tags/begin-end.json +1 -0
  257. package/embedded-knowledge/indexes/tags/behavioral-patterns.json +1 -0
  258. package/embedded-knowledge/indexes/tags/best-practices.json +1 -0
  259. package/embedded-knowledge/indexes/tags/binding.json +1 -0
  260. package/embedded-knowledge/indexes/tags/block-structure.json +1 -0
  261. package/embedded-knowledge/indexes/tags/blocks.json +1 -0
  262. package/embedded-knowledge/indexes/tags/boolean-expressions.json +1 -0
  263. package/embedded-knowledge/indexes/tags/branching.json +1 -0
  264. package/embedded-knowledge/indexes/tags/breaking-changes.json +1 -0
  265. package/embedded-knowledge/indexes/tags/breakpoints.json +1 -0
  266. package/embedded-knowledge/indexes/tags/business-foundation.json +1 -0
  267. package/embedded-knowledge/indexes/tags/business-infrastructure.json +1 -0
  268. package/embedded-knowledge/indexes/tags/business-process.json +1 -0
  269. package/embedded-knowledge/indexes/tags/business-rules.json +1 -0
  270. package/embedded-knowledge/indexes/tags/caching.json +1 -0
  271. package/embedded-knowledge/indexes/tags/case-statements.json +1 -0
  272. package/embedded-knowledge/indexes/tags/case.json +1 -0
  273. package/embedded-knowledge/indexes/tags/code-analysis.json +1 -0
  274. package/embedded-knowledge/indexes/tags/code-clarity.json +1 -0
  275. package/embedded-knowledge/indexes/tags/code-comprehension.json +1 -0
  276. package/embedded-knowledge/indexes/tags/code-conversion.json +1 -0
  277. package/embedded-knowledge/indexes/tags/code-formatting.json +1 -0
  278. package/embedded-knowledge/indexes/tags/code-organization.json +1 -0
  279. package/embedded-knowledge/indexes/tags/code-patterns.json +1 -0
  280. package/embedded-knowledge/indexes/tags/code-quality.json +1 -0
  281. package/embedded-knowledge/indexes/tags/code-reuse.json +1 -0
  282. package/embedded-knowledge/indexes/tags/code-simplification.json +1 -0
  283. package/embedded-knowledge/indexes/tags/code-standards.json +1 -0
  284. package/embedded-knowledge/indexes/tags/code-structure.json +1 -0
  285. package/embedded-knowledge/indexes/tags/code-style.json +1 -0
  286. package/embedded-knowledge/indexes/tags/codeunit-design.json +1 -0
  287. package/embedded-knowledge/indexes/tags/command-queue.json +1 -0
  288. package/embedded-knowledge/indexes/tags/comments.json +1 -0
  289. package/embedded-knowledge/indexes/tags/compile-time-validation.json +1 -0
  290. package/embedded-knowledge/indexes/tags/complex-facade.json +1 -0
  291. package/embedded-knowledge/indexes/tags/complexity-hiding.json +1 -0
  292. package/embedded-knowledge/indexes/tags/complexity-management.json +1 -0
  293. package/embedded-knowledge/indexes/tags/compound-statements.json +1 -0
  294. package/embedded-knowledge/indexes/tags/concurrency.json +1 -0
  295. package/embedded-knowledge/indexes/tags/conditional-logic.json +1 -0
  296. package/embedded-knowledge/indexes/tags/conditional.json +1 -0
  297. package/embedded-knowledge/indexes/tags/conflict-resolution.json +1 -0
  298. package/embedded-knowledge/indexes/tags/consistency.json +1 -0
  299. package/embedded-knowledge/indexes/tags/contract-design.json +1 -0
  300. package/embedded-knowledge/indexes/tags/control-flow.json +1 -0
  301. package/embedded-knowledge/indexes/tags/conversion-guide.json +1 -0
  302. package/embedded-knowledge/indexes/tags/correlation.json +1 -0
  303. package/embedded-knowledge/indexes/tags/custom-messages.json +1 -0
  304. package/embedded-knowledge/indexes/tags/data-access.json +1 -0
  305. package/embedded-knowledge/indexes/tags/data-exposure.json +1 -0
  306. package/embedded-knowledge/indexes/tags/data-integrity.json +1 -0
  307. package/embedded-knowledge/indexes/tags/data-loading.json +1 -0
  308. package/embedded-knowledge/indexes/tags/data-manipulation.json +1 -0
  309. package/embedded-knowledge/indexes/tags/data-modeling.json +1 -0
  310. package/embedded-knowledge/indexes/tags/data-patterns.json +1 -0
  311. package/embedded-knowledge/indexes/tags/data-protection.json +1 -0
  312. package/embedded-knowledge/indexes/tags/data-validation.json +1 -0
  313. package/embedded-knowledge/indexes/tags/database.json +1 -0
  314. package/embedded-knowledge/indexes/tags/debugging.json +1 -0
  315. package/embedded-knowledge/indexes/tags/decision-making.json +1 -0
  316. package/embedded-knowledge/indexes/tags/declaration.json +1 -0
  317. package/embedded-knowledge/indexes/tags/default-messages.json +1 -0
  318. package/embedded-knowledge/indexes/tags/defensive-programming.json +1 -0
  319. package/embedded-knowledge/indexes/tags/deleteall.json +1 -0
  320. package/embedded-knowledge/indexes/tags/dependencies.json +1 -0
  321. package/embedded-knowledge/indexes/tags/deployment.json +1 -0
  322. package/embedded-knowledge/indexes/tags/developer-productivity.json +1 -0
  323. package/embedded-knowledge/indexes/tags/development-workflow.json +1 -0
  324. package/embedded-knowledge/indexes/tags/diagnostics.json +1 -0
  325. package/embedded-knowledge/indexes/tags/dimensions.json +1 -0
  326. package/embedded-knowledge/indexes/tags/documentation.json +1 -0
  327. package/embedded-knowledge/indexes/tags/early-exit.json +1 -0
  328. package/embedded-knowledge/indexes/tags/else-clauses.json +1 -0
  329. package/embedded-knowledge/indexes/tags/end-statements.json +1 -0
  330. package/embedded-knowledge/indexes/tags/enterprise-patterns.json +1 -0
  331. package/embedded-knowledge/indexes/tags/entity-relationships.json +1 -0
  332. package/embedded-knowledge/indexes/tags/error-handling.json +1 -0
  333. package/embedded-knowledge/indexes/tags/error-messages.json +1 -0
  334. package/embedded-knowledge/indexes/tags/error-prevention.json +1 -0
  335. package/embedded-knowledge/indexes/tags/error-text.json +1 -0
  336. package/embedded-knowledge/indexes/tags/etag.json +1 -0
  337. package/embedded-knowledge/indexes/tags/event-bridge.json +1 -0
  338. package/embedded-knowledge/indexes/tags/event-payload.json +1 -0
  339. package/embedded-knowledge/indexes/tags/event-routing.json +1 -0
  340. package/embedded-knowledge/indexes/tags/events.json +1 -0
  341. package/embedded-knowledge/indexes/tags/execution-flow.json +1 -0
  342. package/embedded-knowledge/indexes/tags/expressions.json +1 -0
  343. package/embedded-knowledge/indexes/tags/extensibility.json +1 -0
  344. package/embedded-knowledge/indexes/tags/extensions.json +1 -0
  345. package/embedded-knowledge/indexes/tags/facade-composition.json +1 -0
  346. package/embedded-knowledge/indexes/tags/facade-pattern.json +1 -0
  347. package/embedded-knowledge/indexes/tags/field-control.json +1 -0
  348. package/embedded-knowledge/indexes/tags/field-exclusion.json +1 -0
  349. package/embedded-knowledge/indexes/tags/field-registration.json +1 -0
  350. package/embedded-knowledge/indexes/tags/field-state.json +1 -0
  351. package/embedded-knowledge/indexes/tags/field-validation.json +1 -0
  352. package/embedded-knowledge/indexes/tags/fielderror.json +1 -0
  353. package/embedded-knowledge/indexes/tags/fields.json +1 -0
  354. package/embedded-knowledge/indexes/tags/filtering.json +1 -0
  355. package/embedded-knowledge/indexes/tags/filters.json +1 -0
  356. package/embedded-knowledge/indexes/tags/formatting.json +1 -0
  357. package/embedded-knowledge/indexes/tags/generic-methods.json +1 -0
  358. package/embedded-knowledge/indexes/tags/http-status.json +1 -0
  359. package/embedded-knowledge/indexes/tags/if-statements.json +1 -0
  360. package/embedded-knowledge/indexes/tags/implementation.json +1 -0
  361. package/embedded-knowledge/indexes/tags/indentation.json +1 -0
  362. package/embedded-knowledge/indexes/tags/index-summary.json +277 -0
  363. package/embedded-knowledge/indexes/tags/indexing.json +1 -0
  364. package/embedded-knowledge/indexes/tags/inheritance.json +1 -0
  365. package/embedded-knowledge/indexes/tags/integration.json +1 -0
  366. package/embedded-knowledge/indexes/tags/integrity-checking.json +1 -0
  367. package/embedded-knowledge/indexes/tags/intellisense.json +1 -0
  368. package/embedded-knowledge/indexes/tags/interface-design.json +1 -0
  369. package/embedded-knowledge/indexes/tags/interface-segregation.json +1 -0
  370. package/embedded-knowledge/indexes/tags/isolation.json +1 -0
  371. package/embedded-knowledge/indexes/tags/job-processing.json +1 -0
  372. package/embedded-knowledge/indexes/tags/keyboard-navigation.json +1 -0
  373. package/embedded-knowledge/indexes/tags/keywords.json +1 -0
  374. package/embedded-knowledge/indexes/tags/legacy-modernization.json +1 -0
  375. package/embedded-knowledge/indexes/tags/line-breaks.json +1 -0
  376. package/embedded-knowledge/indexes/tags/line-organization.json +1 -0
  377. package/embedded-knowledge/indexes/tags/line-positioning.json +1 -0
  378. package/embedded-knowledge/indexes/tags/localization.json +1 -0
  379. package/embedded-knowledge/indexes/tags/logging.json +1 -0
  380. package/embedded-knowledge/indexes/tags/loose-coupling.json +1 -0
  381. package/embedded-knowledge/indexes/tags/maintainability.json +1 -0
  382. package/embedded-knowledge/indexes/tags/memory-management.json +1 -0
  383. package/embedded-knowledge/indexes/tags/memory-optimization.json +1 -0
  384. package/embedded-knowledge/indexes/tags/memory.json +1 -0
  385. package/embedded-knowledge/indexes/tags/message-design.json +1 -0
  386. package/embedded-knowledge/indexes/tags/message-formatting.json +1 -0
  387. package/embedded-knowledge/indexes/tags/message-patterns.json +1 -0
  388. package/embedded-knowledge/indexes/tags/metadata-driven.json +1 -0
  389. package/embedded-knowledge/indexes/tags/method-comparison.json +1 -0
  390. package/embedded-knowledge/indexes/tags/module-architecture.json +1 -0
  391. package/embedded-knowledge/indexes/tags/module-validation.json +1 -0
  392. package/embedded-knowledge/indexes/tags/monitoring.json +1 -0
  393. package/embedded-knowledge/indexes/tags/multi-layer-facade.json +1 -0
  394. package/embedded-knowledge/indexes/tags/multi-tenancy.json +1 -0
  395. package/embedded-knowledge/indexes/tags/multiple-values.json +1 -0
  396. package/embedded-knowledge/indexes/tags/naming-conventions.json +1 -0
  397. package/embedded-knowledge/indexes/tags/naming.json +1 -0
  398. package/embedded-knowledge/indexes/tags/navigation.json +1 -0
  399. package/embedded-knowledge/indexes/tags/nested-statements.json +1 -0
  400. package/embedded-knowledge/indexes/tags/no-series-conversion.json +1 -0
  401. package/embedded-knowledge/indexes/tags/no-series-validation.json +1 -0
  402. package/embedded-knowledge/indexes/tags/no-series.json +1 -0
  403. package/embedded-knowledge/indexes/tags/number-generation.json +1 -0
  404. package/embedded-knowledge/indexes/tags/object-documentation.json +1 -0
  405. package/embedded-knowledge/indexes/tags/odata.json +1 -0
  406. package/embedded-knowledge/indexes/tags/ondelete.json +1 -0
  407. package/embedded-knowledge/indexes/tags/onvalidate.json +1 -0
  408. package/embedded-knowledge/indexes/tags/operation-delegation.json +1 -0
  409. package/embedded-knowledge/indexes/tags/operation-safety.json +1 -0
  410. package/embedded-knowledge/indexes/tags/operators.json +1 -0
  411. package/embedded-knowledge/indexes/tags/optimization.json +1 -0
  412. package/embedded-knowledge/indexes/tags/order.json +1 -0
  413. package/embedded-knowledge/indexes/tags/organization.json +1 -0
  414. package/embedded-knowledge/indexes/tags/pages.json +1 -0
  415. package/embedded-knowledge/indexes/tags/parameters.json +1 -0
  416. package/embedded-knowledge/indexes/tags/patterns.json +1 -0
  417. package/embedded-knowledge/indexes/tags/performance-optimization.json +1 -0
  418. package/embedded-knowledge/indexes/tags/performance.json +1 -0
  419. package/embedded-knowledge/indexes/tags/placement.json +1 -0
  420. package/embedded-knowledge/indexes/tags/posting-codeunits.json +1 -0
  421. package/embedded-knowledge/indexes/tags/posting.json +1 -0
  422. package/embedded-knowledge/indexes/tags/preconditions.json +1 -0
  423. package/embedded-knowledge/indexes/tags/primary-key.json +1 -0
  424. package/embedded-knowledge/indexes/tags/privacy.json +1 -0
  425. package/embedded-knowledge/indexes/tags/process-automation.json +1 -0
  426. package/embedded-knowledge/indexes/tags/production.json +1 -0
  427. package/embedded-knowledge/indexes/tags/productivity.json +1 -0
  428. package/embedded-knowledge/indexes/tags/query-performance.json +1 -0
  429. package/embedded-knowledge/indexes/tags/queue-management.json +1 -0
  430. package/embedded-knowledge/indexes/tags/ranges.json +1 -0
  431. package/embedded-knowledge/indexes/tags/readability.json +1 -0
  432. package/embedded-knowledge/indexes/tags/record-access.json +1 -0
  433. package/embedded-knowledge/indexes/tags/record-methods.json +1 -0
  434. package/embedded-knowledge/indexes/tags/refactoring.json +1 -0
  435. package/embedded-knowledge/indexes/tags/reference.json +1 -0
  436. package/embedded-knowledge/indexes/tags/repeat-loops.json +1 -0
  437. package/embedded-knowledge/indexes/tags/repeat-statement.json +1 -0
  438. package/embedded-knowledge/indexes/tags/runtime-errors.json +1 -0
  439. package/embedded-knowledge/indexes/tags/runtime.json +1 -0
  440. package/embedded-knowledge/indexes/tags/safeguards.json +1 -0
  441. package/embedded-knowledge/indexes/tags/security.json +1 -0
  442. package/embedded-knowledge/indexes/tags/sequence-management.json +1 -0
  443. package/embedded-knowledge/indexes/tags/serialization.json +1 -0
  444. package/embedded-knowledge/indexes/tags/session-logmessage.json +1 -0
  445. package/embedded-knowledge/indexes/tags/session.json +1 -0
  446. package/embedded-knowledge/indexes/tags/setloadfields.json +1 -0
  447. package/embedded-knowledge/indexes/tags/shortcuts.json +1 -0
  448. package/embedded-knowledge/indexes/tags/sift.json +1 -0
  449. package/embedded-knowledge/indexes/tags/singleinstance.json +1 -0
  450. package/embedded-knowledge/indexes/tags/spacing.json +1 -0
  451. package/embedded-knowledge/indexes/tags/sql-translation.json +1 -0
  452. package/embedded-knowledge/indexes/tags/standards.json +1 -0
  453. package/embedded-knowledge/indexes/tags/statements.json +1 -0
  454. package/embedded-knowledge/indexes/tags/streaming.json +1 -0
  455. package/embedded-knowledge/indexes/tags/strong-typing.json +1 -0
  456. package/embedded-knowledge/indexes/tags/structural-patterns.json +1 -0
  457. package/embedded-knowledge/indexes/tags/structure.json +1 -0
  458. package/embedded-knowledge/indexes/tags/subscribers.json +1 -0
  459. package/embedded-knowledge/indexes/tags/switch.json +1 -0
  460. package/embedded-knowledge/indexes/tags/symbol-search.json +1 -0
  461. package/embedded-knowledge/indexes/tags/syntax.json +1 -0
  462. package/embedded-knowledge/indexes/tags/systemid.json +1 -0
  463. package/embedded-knowledge/indexes/tags/table-configuration.json +1 -0
  464. package/embedded-knowledge/indexes/tags/table-events.json +1 -0
  465. package/embedded-knowledge/indexes/tags/table-keys.json +1 -0
  466. package/embedded-knowledge/indexes/tags/table-safety.json +1 -0
  467. package/embedded-knowledge/indexes/tags/task-scheduler.json +1 -0
  468. package/embedded-knowledge/indexes/tags/telemetry.json +1 -0
  469. package/embedded-knowledge/indexes/tags/template-method.json +1 -0
  470. package/embedded-knowledge/indexes/tags/temporary-tables.json +1 -0
  471. package/embedded-knowledge/indexes/tags/testfield.json +1 -0
  472. package/embedded-knowledge/indexes/tags/tradeoffs.json +1 -0
  473. package/embedded-knowledge/indexes/tags/triggers.json +1 -0
  474. package/embedded-knowledge/indexes/tags/troubleshooting.json +1 -0
  475. package/embedded-knowledge/indexes/tags/type-safety.json +1 -0
  476. package/embedded-knowledge/indexes/tags/url-structure.json +1 -0
  477. package/embedded-knowledge/indexes/tags/user-experience.json +1 -0
  478. package/embedded-knowledge/indexes/tags/user-feedback.json +1 -0
  479. package/embedded-knowledge/indexes/tags/user-interface.json +1 -0
  480. package/embedded-knowledge/indexes/tags/validation-feedback.json +1 -0
  481. package/embedded-knowledge/indexes/tags/validation.json +1 -0
  482. package/embedded-knowledge/indexes/tags/variables.json +1 -0
  483. package/embedded-knowledge/indexes/tags/verbosity.json +1 -0
  484. package/embedded-knowledge/indexes/tags/vs-code.json +1 -0
  485. package/embedded-knowledge/indexes/tags/web-services.json +1 -0
  486. package/embedded-knowledge/indexes/tags/workflow-management.json +1 -0
  487. package/embedded-knowledge/indexes/tags/workflow-optimization.json +1 -0
  488. package/embedded-knowledge/indexes/tags/workflow-templates.json +1 -0
  489. package/embedded-knowledge/indexes/tags/workspace.json +1 -0
  490. package/embedded-knowledge/indexes/tags/xml-documentation.json +1 -0
  491. package/embedded-knowledge/indexes/topic-relationships.json +128 -0
  492. package/embedded-knowledge/methodologies/index.json +81 -0
  493. package/embedded-knowledge/methodologies/phases/analysis-full.md +208 -0
  494. package/embedded-knowledge/methodologies/phases/analysis-quick.md +44 -0
  495. package/embedded-knowledge/methodologies/phases/analysis.md +182 -0
  496. package/embedded-knowledge/methodologies/phases/execution-validation-full.md +174 -0
  497. package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +31 -0
  498. package/embedded-knowledge/methodologies/phases/execution-validation.md +174 -0
  499. package/embedded-knowledge/methodologies/phases/performance-full.md +211 -0
  500. package/embedded-knowledge/methodologies/phases/performance-quick.md +32 -0
  501. package/embedded-knowledge/methodologies/phases/performance.md +211 -0
  502. package/embedded-knowledge/methodologies/phases/verification-full.md +162 -0
  503. package/embedded-knowledge/methodologies/phases/verification-quick.md +48 -0
  504. package/embedded-knowledge/methodologies/phases/verification.md +146 -0
  505. package/embedded-knowledge/methodologies/workflow-enforcement.md +142 -0
  506. package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +99 -0
  507. package/embedded-knowledge/specialists/alex-architect.md +216 -0
  508. package/embedded-knowledge/specialists/casey-copilot.md +226 -0
  509. package/embedded-knowledge/specialists/chris-config.md +267 -0
  510. package/embedded-knowledge/specialists/dean-debug.md +222 -0
  511. package/embedded-knowledge/specialists/eva-errors.md +235 -0
  512. package/embedded-knowledge/specialists/jordan-bridge.md +235 -0
  513. package/embedded-knowledge/specialists/logan-legacy.md +209 -0
  514. package/embedded-knowledge/specialists/maya-mentor.md +211 -0
  515. package/embedded-knowledge/specialists/morgan-market.md +226 -0
  516. package/embedded-knowledge/specialists/quinn-tester.md +235 -0
  517. package/embedded-knowledge/specialists/roger-reviewer.md +234 -0
  518. package/embedded-knowledge/specialists/sam-coder.md +359 -0
  519. package/embedded-knowledge/specialists/seth-security.md +235 -0
  520. package/embedded-knowledge/specialists/taylor-docs.md +257 -0
  521. package/embedded-knowledge/specialists/uma-ux.md +235 -0
  522. package/package.json +6 -6
@@ -0,0 +1,117 @@
1
+ # DeleteAll Alternative Implementation Patterns
2
+
3
+ ## Conditional DeleteAll vs Direct SQL
4
+ ```al
5
+ procedure CleanupTempData(TableID: Integer; BusinessLogicRequired: Boolean)
6
+ var
7
+ TempDataBuffer: Record "Temp Data Buffer";
8
+ begin
9
+ TempDataBuffer.SetRange("Source Table ID", TableID);
10
+
11
+ if BusinessLogicRequired then begin
12
+ // Use DeleteAll when OnDelete triggers must execute
13
+ TempDataBuffer.DeleteAll(true);
14
+ end else begin
15
+ // Use direct deletion for simple cleanup
16
+ if TempDataBuffer.FindSet() then
17
+ TempDataBuffer.DeleteAll(false);
18
+ end;
19
+ end;
20
+ ```
21
+
22
+ ## Batch Processing with Size Limits
23
+ ```al
24
+ procedure ProcessLargeDataDeletion(var RecordToDelete: Record "Large Data Table")
25
+ var
26
+ BatchSize: Integer;
27
+ ProcessedCount: Integer;
28
+ begin
29
+ BatchSize := 1000;
30
+ ProcessedCount := 0;
31
+
32
+ RecordToDelete.SetCurrentKey("Created Date Time");
33
+ if RecordToDelete.FindSet() then
34
+ repeat
35
+ RecordToDelete.Delete(true); // Individual delete with trigger execution
36
+ ProcessedCount += 1;
37
+
38
+ // Commit periodically to avoid large transactions
39
+ if ProcessedCount mod BatchSize = 0 then begin
40
+ Commit();
41
+ Message('Processed %1 records...', ProcessedCount);
42
+ end;
43
+ until RecordToDelete.Next() = 0;
44
+ end;
45
+ ```
46
+
47
+ ## Hybrid Approach with Validation
48
+ ```al
49
+ procedure SmartDeleteWithValidation(var OrderLine: Record "Sales Line")
50
+ var
51
+ SalesHeader: Record "Sales Header";
52
+ HasComplexRelationships: Boolean;
53
+ begin
54
+ // Analyze data complexity before choosing deletion method
55
+ HasComplexRelationships := CheckForReservations(OrderLine) or
56
+ CheckForItemTracking(OrderLine) or
57
+ CheckForJobRelations(OrderLine);
58
+
59
+ if HasComplexRelationships then begin
60
+ // Use DeleteAll with trigger execution for complex scenarios
61
+ OrderLine.DeleteAll(true);
62
+ end else begin
63
+ // Use faster approach for simple scenarios
64
+ if OrderLine.FindSet() then begin
65
+ SalesHeader.Get(OrderLine."Document Type", OrderLine."Document No.");
66
+ OrderLine.DeleteAll(false);
67
+ // Manual header update since OnDelete didn't run
68
+ SalesHeader.Modify(true);
69
+ end;
70
+ end;
71
+ end;
72
+ ```
73
+
74
+ ## Performance-Optimized Cleanup
75
+ ```al
76
+ procedure OptimizedCleanupRoutine()
77
+ var
78
+ LogEntry: Record "Activity Log";
79
+ CutoffDate: Date;
80
+ RecordCount: Integer;
81
+ begin
82
+ CutoffDate := CalcDate('-1Y', WorkDate());
83
+
84
+ // First pass: Count records for performance estimation
85
+ LogEntry.SetFilter("Activity Date", '<%1', CutoffDate);
86
+ RecordCount := LogEntry.Count();
87
+
88
+ case RecordCount of
89
+ 0..999:
90
+ // Small dataset: Use DeleteAll with business logic
91
+ LogEntry.DeleteAll(true);
92
+ 1000..9999:
93
+ // Medium dataset: Use DeleteAll without triggers
94
+ LogEntry.DeleteAll(false);
95
+ else begin
96
+ // Large dataset: Process in batches
97
+ ProcessLargeDeletionBatch(LogEntry);
98
+ end;
99
+ end;
100
+ end;
101
+
102
+ local procedure ProcessLargeDeletionBatch(var LogEntry: Record "Activity Log")
103
+ var
104
+ BatchCounter: Integer;
105
+ begin
106
+ if LogEntry.FindSet() then
107
+ repeat
108
+ LogEntry.Delete(false);
109
+ BatchCounter += 1;
110
+
111
+ if BatchCounter mod 5000 = 0 then begin
112
+ Commit();
113
+ Sleep(100); // Brief pause to reduce system load
114
+ end;
115
+ until LogEntry.Next() = 0;
116
+ end;
117
+ ```
@@ -0,0 +1,75 @@
1
+ # DeleteAll Method - OnDelete Trigger Integration
2
+
3
+ ## Understanding Trigger Execution with DeleteAll
4
+ ```al
5
+ table 50200 "Order Processing Log"
6
+ {
7
+ fields
8
+ {
9
+ field(1; "Entry No."; Integer) { AutoIncrement = true; }
10
+ field(10; "Order No."; Code[20]) { }
11
+ field(20; "Customer No."; Code[20]) { TableRelation = Customer; }
12
+ field(30; "Process Status"; Enum "Process Status") { }
13
+ field(40; "Created DateTime"; DateTime) { }
14
+ }
15
+
16
+ keys
17
+ {
18
+ key(PK; "Entry No.") { Clustered = true; }
19
+ key(OrderStatus; "Order No.", "Process Status") { }
20
+ }
21
+
22
+ trigger OnDelete()
23
+ var
24
+ RelatedOrderLine: Record "Order Line Processing";
25
+ AuditEntry: Record "Deletion Audit Log";
26
+ begin
27
+ // CRITICAL: This trigger ALWAYS executes during DeleteAll
28
+ // No way to bypass this - ensures data integrity is maintained
29
+
30
+ // 1. Validate deletion is allowed
31
+ if "Process Status" = "Process Status"::Active then
32
+ Error('Cannot delete active processing log entry %1', "Entry No.");
33
+
34
+ // 2. Clean up related records
35
+ RelatedOrderLine.Reset();
36
+ RelatedOrderLine.SetRange("Log Entry No.", "Entry No.");
37
+ if not RelatedOrderLine.IsEmpty() then
38
+ RelatedOrderLine.DeleteAll(true); // Cascaded deletion with triggers
39
+
40
+ // 3. Create audit trail
41
+ AuditEntry.Init();
42
+ AuditEntry."Table ID" := Database::"Order Processing Log";
43
+ AuditEntry."Record ID" := RecordId();
44
+ AuditEntry."Deletion Time" := CurrentDateTime;
45
+ AuditEntry."User ID" := UserId;
46
+ AuditEntry.Insert(true);
47
+
48
+ // 4. Update related master data
49
+ UpdateOrderStatistics("Order No.");
50
+ end;
51
+
52
+ local procedure UpdateOrderStatistics(OrderNo: Code[20])
53
+ var
54
+ OrderHeader: Record "Sales Header";
55
+ begin
56
+ // Update order processing statistics after log deletion
57
+ if OrderHeader.Get(OrderHeader."Document Type"::Order, OrderNo) then begin
58
+ OrderHeader."Processing Log Count" -= 1;
59
+ OrderHeader.Modify(true);
60
+ end;
61
+ end;
62
+ }
63
+ ```
64
+
65
+ ## Key Principles
66
+
67
+ ### 1. Triggers Always Execute
68
+ - DeleteAll with RunTrigger=true executes OnDelete for every record
69
+ - No bypass mechanism exists - ensures data integrity
70
+ - Plan trigger logic for bulk operation scenarios
71
+
72
+ ### 2. Error Propagation
73
+ - Any trigger error stops entire DeleteAll operation
74
+ - Consider try-function patterns for graceful error handling
75
+ - Individual record processing may be needed for partial success scenarios
@@ -0,0 +1,169 @@
1
+ # DeleteAll Method - Basic Usage Patterns
2
+
3
+ ## Simple DeleteAll Implementation
4
+ ```al
5
+ codeunit 50100 "Customer Data Cleanup"
6
+ {
7
+ procedure CleanupInactiveCustomers(DaysInactive: Integer)
8
+ var
9
+ Customer: Record Customer;
10
+ CutoffDate: Date;
11
+ begin
12
+ CutoffDate := CalcDate(StrSubstNo('-%1D', DaysInactive), Today());
13
+
14
+ // Filter customers who haven't placed orders since cutoff date
15
+ Customer.Reset();
16
+ Customer.SetFilter("Last Date Modified", '<%1', CutoffDate);
17
+ Customer.SetRange(Blocked, Customer.Blocked::" "); // Only non-blocked customers
18
+
19
+ // DeleteAll removes all matching records and executes OnDelete triggers
20
+ if Customer.FindSet() then
21
+ Customer.DeleteAll(true); // RunTrigger = true (recommended)
22
+ end;
23
+ }
24
+ ```
25
+
26
+ ## DeleteAll with Record Validation
27
+ ```al
28
+ table 50100 "Temporary Sales Data"
29
+ {
30
+ DataPerCompany = true;
31
+
32
+ fields
33
+ {
34
+ field(1; "Entry No."; Integer) { AutoIncrement = true; }
35
+ field(10; "Customer No."; Code[20]) { TableRelation = Customer; }
36
+ field(20; "Sales Amount"; Decimal) { }
37
+ field(30; "Process Date"; Date) { }
38
+ }
39
+
40
+ keys
41
+ {
42
+ key(PK; "Entry No.") { Clustered = true; }
43
+ key(ProcessDate; "Process Date") { }
44
+ }
45
+
46
+ trigger OnDelete()
47
+ begin
48
+ // This trigger ALWAYS executes during DeleteAll operations
49
+ // Cannot be bypassed - critical for data integrity
50
+ if "Sales Amount" > 10000 then
51
+ Error('Cannot delete high-value sales record: Entry %1', "Entry No.");
52
+
53
+ // Log deletion for audit trail
54
+ LogDeletion(Rec);
55
+ end;
56
+
57
+ local procedure LogDeletion(var TempSalesRec: Record "Temporary Sales Data")
58
+ var
59
+ AuditLog: Record "Change Log Entry";
60
+ begin
61
+ // Audit logging implementation
62
+ // This ensures all deletions are tracked
63
+ end;
64
+ }
65
+
66
+ codeunit 50101 "Sales Data Management"
67
+ {
68
+ procedure CleanupProcessedData(ProcessDate: Date)
69
+ var
70
+ TempSalesData: Record "Temporary Sales Data";
71
+ begin
72
+ // Clean up processed sales data older than specified date
73
+ TempSalesData.Reset();
74
+ TempSalesData.SetFilter("Process Date", '<%1', ProcessDate);
75
+
76
+ // DeleteAll will execute OnDelete trigger for each record
77
+ // This ensures audit logging and validation occurs
78
+ if not TempSalesData.IsEmpty() then begin
79
+ Message('Cleaning up %1 processed sales records', TempSalesData.Count());
80
+ TempSalesData.DeleteAll(true); // Always use RunTrigger = true for safety
81
+ end;
82
+ end;
83
+ }
84
+ ```
85
+
86
+ ## Error Handling with DeleteAll
87
+ ```al
88
+ codeunit 50102 "Order Cleanup Service"
89
+ {
90
+ procedure DeleteCancelledOrders(var ErrorsOccurred: Boolean): Integer
91
+ var
92
+ SalesHeader: Record "Sales Header";
93
+ DeleteCount: Integer;
94
+ OriginalCount: Integer;
95
+ begin
96
+ ErrorsOccurred := false;
97
+
98
+ // Find cancelled orders older than 30 days
99
+ SalesHeader.Reset();
100
+ SalesHeader.SetRange("Document Type", SalesHeader."Document Type"::Order);
101
+ SalesHeader.SetRange(Status, SalesHeader.Status::Released);
102
+ SalesHeader.SetFilter("Order Date", '<%1', CalcDate('-30D', Today()));
103
+
104
+ OriginalCount := SalesHeader.Count();
105
+
106
+ // Attempt deletion with error handling
107
+ if not SalesHeader.IsEmpty() then begin
108
+ if not TryDeleteOrders(SalesHeader) then begin
109
+ ErrorsOccurred := true;
110
+ Error('Failed to delete cancelled orders: %1', GetLastErrorText());
111
+ end;
112
+
113
+ // Calculate how many were actually deleted
114
+ SalesHeader.Reset();
115
+ SalesHeader.SetRange("Document Type", SalesHeader."Document Type"::Order);
116
+ SalesHeader.SetRange(Status, SalesHeader.Status::Released);
117
+ SalesHeader.SetFilter("Order Date", '<%1', CalcDate('-30D', Today()));
118
+ DeleteCount := OriginalCount - SalesHeader.Count();
119
+ end;
120
+
121
+ exit(DeleteCount);
122
+ end;
123
+
124
+ [TryFunction]
125
+ local procedure TryDeleteOrders(var SalesHeader: Record "Sales Header")
126
+ begin
127
+ // DeleteAll with error handling
128
+ // OnDelete triggers will execute and may raise errors
129
+ SalesHeader.DeleteAll(true);
130
+ end;
131
+ }
132
+ ```
133
+
134
+ ## Best Practices Demonstrated
135
+
136
+ ### 1. Always Use RunTrigger Parameter
137
+ ```al
138
+ // CORRECT: Always specify RunTrigger parameter explicitly
139
+ Customer.DeleteAll(true); // Recommended - ensures data integrity
140
+
141
+ // AVOID: Omitting parameter (defaults to false in some contexts)
142
+ Customer.DeleteAll(); // May skip important validation logic
143
+ ```
144
+
145
+ ### 2. Proper Filter Management
146
+ ```al
147
+ // CORRECT: Clear filters before deletion
148
+ MyRecord.Reset();
149
+ MyRecord.SetRange("Status", MyRecord.Status::Processed);
150
+ MyRecord.DeleteAll(true);
151
+
152
+ // INCORRECT: Assuming current filters
153
+ // MyRecord.DeleteAll(true); // May delete unexpected records
154
+ ```
155
+
156
+ ### 3. Transaction Safety
157
+ ```al
158
+ procedure SafeBulkDeletion(var TempData: Record "Temporary Data")
159
+ begin
160
+ // Large deletions should be performed in manageable chunks
161
+ if TempData.Count() > 10000 then begin
162
+ // Process in batches to avoid transaction timeout
163
+ ProcessDeletionInBatches(TempData);
164
+ end else begin
165
+ // Small dataset - single operation is safe
166
+ TempData.DeleteAll(true);
167
+ end;
168
+ end;
169
+ ```