bc-code-intelligence-mcp 1.3.3 → 1.3.4

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 (548) hide show
  1. package/dist/config/test-enhanced-layer-service.js +10 -10
  2. package/dist/config/test-enhanced-layer-service.js.map +1 -1
  3. package/dist/dev/hot-reload.d.ts +2 -2
  4. package/dist/dev/hot-reload.d.ts.map +1 -1
  5. package/dist/dev/hot-reload.js.map +1 -1
  6. package/dist/index.d.ts +0 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +34 -38
  9. package/dist/index.js.map +1 -1
  10. package/dist/layers/index.d.ts +1 -1
  11. package/dist/layers/index.d.ts.map +1 -1
  12. package/dist/layers/index.js +1 -1
  13. package/dist/layers/index.js.map +1 -1
  14. package/dist/services/code-analysis-service.d.ts.map +1 -1
  15. package/dist/services/code-analysis-service.js +4 -0
  16. package/dist/services/code-analysis-service.js.map +1 -1
  17. package/dist/services/knowledge-service.d.ts +21 -10
  18. package/dist/services/knowledge-service.d.ts.map +1 -1
  19. package/dist/services/knowledge-service.js +71 -54
  20. package/dist/services/knowledge-service.js.map +1 -1
  21. package/dist/services/multi-content-layer-service.d.ts +90 -0
  22. package/dist/services/multi-content-layer-service.d.ts.map +1 -1
  23. package/dist/services/multi-content-layer-service.js +380 -0
  24. package/dist/services/multi-content-layer-service.js.map +1 -1
  25. package/dist/services/workflow-service.d.ts +11 -3
  26. package/dist/services/workflow-service.d.ts.map +1 -1
  27. package/dist/services/workflow-service.js +119 -78
  28. package/dist/services/workflow-service.js.map +1 -1
  29. package/dist/streamlined-handlers.d.ts +31 -2
  30. package/dist/streamlined-handlers.d.ts.map +1 -1
  31. package/dist/streamlined-handlers.js +151 -109
  32. package/dist/streamlined-handlers.js.map +1 -1
  33. package/dist/streamlined-tools.d.ts +12 -0
  34. package/dist/streamlined-tools.d.ts.map +1 -1
  35. package/dist/streamlined-tools.js +11 -6
  36. package/dist/streamlined-tools.js.map +1 -1
  37. package/package.json +13 -4
  38. package/embedded-knowledge/.github/ISSUE_TEMPLATE/bug-report.md +0 -24
  39. package/embedded-knowledge/.github/ISSUE_TEMPLATE/content-improvement.md +0 -24
  40. package/embedded-knowledge/.github/ISSUE_TEMPLATE/knowledge-request.md +0 -30
  41. package/embedded-knowledge/AGENTS.md +0 -178
  42. package/embedded-knowledge/CONTRIBUTING.md +0 -58
  43. package/embedded-knowledge/LICENSE +0 -21
  44. package/embedded-knowledge/README.md +0 -32
  45. package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +0 -90
  46. package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +0 -113
  47. package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +0 -101
  48. package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +0 -87
  49. package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +0 -155
  50. package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +0 -138
  51. package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +0 -79
  52. package/embedded-knowledge/domains/alex-architect/samples/api-delegate-operation.md +0 -280
  53. package/embedded-knowledge/domains/alex-architect/samples/api-fieldset-registration.md +0 -200
  54. package/embedded-knowledge/domains/alex-architect/samples/api-interface-design.md +0 -565
  55. package/embedded-knowledge/domains/alex-architect/samples/api-page-implementation.md +0 -665
  56. package/embedded-knowledge/domains/alex-architect/samples/complex-facade-patterns.md +0 -325
  57. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern-al.md +0 -696
  58. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern.md +0 -320
  59. package/embedded-knowledge/domains/alex-architect/samples/subscriber-organization.md +0 -102
  60. package/embedded-knowledge/domains/alex-architect/samples/systemid-integration.md +0 -433
  61. package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +0 -66
  62. package/embedded-knowledge/domains/alex-architect/systemid-integration.md +0 -115
  63. package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +0 -360
  64. package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +0 -86
  65. package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +0 -96
  66. package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +0 -70
  67. package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +0 -84
  68. package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +0 -93
  69. package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +0 -73
  70. package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +0 -78
  71. package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +0 -79
  72. package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +0 -87
  73. package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +0 -209
  74. package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +0 -246
  75. package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +0 -107
  76. package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +0 -105
  77. package/embedded-knowledge/domains/dean-debug/samples/bc24-no-series-conversion.md +0 -186
  78. package/embedded-knowledge/domains/dean-debug/samples/case-performance-optimization.md +0 -60
  79. package/embedded-knowledge/domains/dean-debug/samples/compound-statements-debugging.md +0 -139
  80. package/embedded-knowledge/domains/dean-debug/samples/custom-dimensions.md +0 -190
  81. package/embedded-knowledge/domains/dean-debug/samples/custom-telemetry.md +0 -516
  82. package/embedded-knowledge/domains/dean-debug/samples/deleteall-performance.md +0 -298
  83. package/embedded-knowledge/domains/dean-debug/samples/error-correlation.md +0 -324
  84. package/embedded-knowledge/domains/dean-debug/samples/extension-isolation.md +0 -344
  85. package/embedded-knowledge/domains/dean-debug/samples/logmessage-methods.md +0 -137
  86. package/embedded-knowledge/domains/dean-debug/samples/maintainsiftindex-examples.md +0 -340
  87. package/embedded-knowledge/domains/dean-debug/samples/no-series-implementation.md +0 -810
  88. package/embedded-knowledge/domains/dean-debug/samples/no-series-module-bc24.md +0 -86
  89. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation-module-bc24.md +0 -110
  90. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation.md +0 -758
  91. package/embedded-knowledge/domains/dean-debug/samples/odata-query-optimization.md +0 -665
  92. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-case.md +0 -316
  93. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-filters.md +0 -223
  94. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-filter-exclusion.md +0 -149
  95. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-optimization.md +0 -412
  96. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-performance.md +0 -211
  97. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-primary-key.md +0 -155
  98. package/embedded-knowledge/domains/dean-debug/samples/sift-technology-fundamentals.md +0 -475
  99. package/embedded-knowledge/domains/dean-debug/samples/singleinstance-subscribers.md +0 -238
  100. package/embedded-knowledge/domains/dean-debug/samples/table-event-batching.md +0 -97
  101. package/embedded-knowledge/domains/dean-debug/samples/table-key-requirements.md +0 -666
  102. package/embedded-knowledge/domains/dean-debug/samples/telemetry-performance.md +0 -319
  103. package/embedded-knowledge/domains/dean-debug/samples/verbosity-strategy.md +0 -236
  104. package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +0 -59
  105. package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +0 -67
  106. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +0 -70
  107. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +0 -90
  108. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +0 -87
  109. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +0 -70
  110. package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +0 -74
  111. package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +0 -81
  112. package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +0 -56
  113. package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +0 -66
  114. package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +0 -79
  115. package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +0 -78
  116. package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +0 -83
  117. package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +0 -76
  118. package/embedded-knowledge/domains/dean-debug/testfield-performance.md +0 -104
  119. package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +0 -145
  120. package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +0 -104
  121. package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +0 -114
  122. package/embedded-knowledge/domains/eva-errors/samples/fielderror-default-messages.md +0 -356
  123. package/embedded-knowledge/domains/eva-errors/samples/fielderror-syntax.md +0 -256
  124. package/embedded-knowledge/domains/eva-errors/samples/table-safety-validation-patterns.md +0 -101
  125. package/embedded-knowledge/domains/eva-errors/samples/testfield-error-handling.md +0 -108
  126. package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +0 -80
  127. package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +0 -98
  128. package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +0 -123
  129. package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +0 -96
  130. package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +0 -115
  131. package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +0 -115
  132. package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +0 -114
  133. package/embedded-knowledge/domains/jordan-bridge/samples/al-event-subscriber-architecture.md +0 -395
  134. package/embedded-knowledge/domains/jordan-bridge/samples/api-error-responses.md +0 -479
  135. package/embedded-knowledge/domains/jordan-bridge/samples/api-field-control.md +0 -548
  136. package/embedded-knowledge/domains/jordan-bridge/samples/api-url-naming.md +0 -287
  137. package/embedded-knowledge/domains/jordan-bridge/samples/business-process-templates.md +0 -434
  138. package/embedded-knowledge/domains/jordan-bridge/samples/etag-implementation.md +0 -508
  139. package/embedded-knowledge/domains/jordan-bridge/samples/task-scheduler-pattern.md +0 -615
  140. package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +0 -144
  141. package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +0 -96
  142. package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +0 -124
  143. package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +0 -84
  144. package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +0 -75
  145. package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +0 -96
  146. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-multiple-conditions.md +0 -385
  147. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-syntax-structure.md +0 -72
  148. package/embedded-knowledge/domains/maya-mentor/samples/fielderror-syntax-usage.md +0 -48
  149. package/embedded-knowledge/domains/maya-mentor/samples/testfield-basic-syntax.md +0 -49
  150. package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +0 -67
  151. package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +0 -119
  152. package/embedded-knowledge/domains/quinn-tester/rule-execution.md +0 -123
  153. package/embedded-knowledge/domains/quinn-tester/samples/case-error-handling.md +0 -64
  154. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-message-construction.md +0 -60
  155. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-validation-patterns.md +0 -83
  156. package/embedded-knowledge/domains/quinn-tester/samples/rule-execution.md +0 -716
  157. package/embedded-knowledge/domains/quinn-tester/samples/table-safety-validation-patterns.md +0 -101
  158. package/embedded-knowledge/domains/quinn-tester/samples/temporary-table-operation-validation.md +0 -91
  159. package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +0 -79
  160. package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +0 -79
  161. package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +0 -89
  162. package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +0 -76
  163. package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +0 -76
  164. package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +0 -76
  165. package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +0 -81
  166. package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +0 -76
  167. package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +0 -75
  168. package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +0 -76
  169. package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +0 -76
  170. package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +0 -76
  171. package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +0 -96
  172. package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +0 -76
  173. package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +0 -86
  174. package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +0 -90
  175. package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +0 -82
  176. package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +0 -78
  177. package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +0 -76
  178. package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +0 -78
  179. package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +0 -100
  180. package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +0 -115
  181. package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +0 -124
  182. package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +0 -110
  183. package/embedded-knowledge/domains/roger-reviewer/samples/al-begin-end-blocks.md +0 -438
  184. package/embedded-knowledge/domains/roger-reviewer/samples/al-binary-operator-spacing.md +0 -255
  185. package/embedded-knowledge/domains/roger-reviewer/samples/al-comment-spacing-standards.md +0 -209
  186. package/embedded-knowledge/domains/roger-reviewer/samples/al-keyword-indentation-rules.md +0 -218
  187. package/embedded-knowledge/domains/roger-reviewer/samples/al-line-start-keyword-positioning.md +0 -218
  188. package/embedded-knowledge/domains/roger-reviewer/samples/al-separate-if-else-formatting.md +0 -280
  189. package/embedded-knowledge/domains/roger-reviewer/samples/al-statement-per-line-rule.md +0 -188
  190. package/embedded-knowledge/domains/roger-reviewer/samples/al-unnecessary-else-elimination.md +0 -245
  191. package/embedded-knowledge/domains/roger-reviewer/samples/al-variable-declaration-order.md +0 -244
  192. package/embedded-knowledge/domains/roger-reviewer/samples/begin-end-positioning.md +0 -278
  193. package/embedded-knowledge/domains/roger-reviewer/samples/boolean-simplification-examples.md +0 -484
  194. package/embedded-knowledge/domains/roger-reviewer/samples/case-error-handling.md +0 -64
  195. package/embedded-knowledge/domains/roger-reviewer/samples/compound-statement-readability.md +0 -107
  196. package/embedded-knowledge/domains/roger-reviewer/samples/lonely-repeat-examples.md +0 -280
  197. package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +0 -75
  198. package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +0 -67
  199. package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +0 -76
  200. package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +0 -98
  201. package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +0 -128
  202. package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +0 -75
  203. package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +0 -95
  204. package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +0 -141
  205. package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +0 -91
  206. package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +0 -118
  207. package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +0 -111
  208. package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +0 -113
  209. package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +0 -127
  210. package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +0 -141
  211. package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +0 -66
  212. package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +0 -96
  213. package/embedded-knowledge/domains/sam-coder/samples/al-blank-line-organization.md +0 -161
  214. package/embedded-knowledge/domains/sam-coder/samples/al-case-action-formatting.md +0 -177
  215. package/embedded-knowledge/domains/sam-coder/samples/al-lonely-repeat-pattern.md +0 -239
  216. package/embedded-knowledge/domains/sam-coder/samples/al-named-parameter-pattern.md +0 -346
  217. package/embedded-knowledge/domains/sam-coder/samples/al-record-find-early-exit.md +0 -298
  218. package/embedded-knowledge/domains/sam-coder/samples/command-queue-pattern.md +0 -677
  219. package/embedded-knowledge/domains/sam-coder/samples/deleteall-alternative-implementation.md +0 -117
  220. package/embedded-knowledge/domains/sam-coder/samples/deleteall-triggers.md +0 -75
  221. package/embedded-knowledge/domains/sam-coder/samples/deleteall-usage.md +0 -169
  222. package/embedded-knowledge/domains/sam-coder/samples/event-bridge-pattern.md +0 -399
  223. package/embedded-knowledge/domains/sam-coder/samples/event-payload-design.md +0 -356
  224. package/embedded-knowledge/domains/sam-coder/samples/generic-method-patterns.md +0 -889
  225. package/embedded-knowledge/domains/sam-coder/samples/manual-binding.md +0 -84
  226. package/embedded-knowledge/domains/sam-coder/samples/nested-compound-best-practices.md +0 -127
  227. package/embedded-knowledge/domains/sam-coder/samples/single-to-compound-conversion.md +0 -89
  228. package/embedded-knowledge/domains/sam-coder/samples/template-method-pattern.md +0 -516
  229. package/embedded-knowledge/domains/sam-coder/samples/testfield-patterns.md +0 -61
  230. package/embedded-knowledge/domains/sam-coder/samples/type-safe-operations.md +0 -427
  231. package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +0 -122
  232. package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +0 -96
  233. package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +0 -101
  234. package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +0 -149
  235. package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +0 -107
  236. package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +0 -95
  237. package/embedded-knowledge/domains/seth-security/api-permission-model.md +0 -115
  238. package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +0 -78
  239. package/embedded-knowledge/domains/seth-security/samples/al-temporary-table-safety.md +0 -373
  240. package/embedded-knowledge/domains/seth-security/samples/api-permission-model.md +0 -308
  241. package/embedded-knowledge/domains/shared/al-file-naming-conventions.md +0 -146
  242. package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +0 -79
  243. package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +0 -78
  244. package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +0 -81
  245. package/embedded-knowledge/indexes/bc-version-matrix.json +0 -188
  246. package/embedded-knowledge/indexes/domain-catalog.json +0 -106
  247. package/embedded-knowledge/indexes/tags/abbreviations.json +0 -1
  248. package/embedded-knowledge/indexes/tags/abstraction.json +0 -1
  249. package/embedded-knowledge/indexes/tags/access-control.json +0 -1
  250. package/embedded-knowledge/indexes/tags/accessibility.json +0 -1
  251. package/embedded-knowledge/indexes/tags/actions.json +0 -1
  252. package/embedded-knowledge/indexes/tags/advanced-patterns.json +0 -1
  253. package/embedded-knowledge/indexes/tags/advanced.json +0 -1
  254. package/embedded-knowledge/indexes/tags/al-extension.json +0 -1
  255. package/embedded-knowledge/indexes/tags/al-generics.json +0 -1
  256. package/embedded-knowledge/indexes/tags/al-objects.json +0 -1
  257. package/embedded-knowledge/indexes/tags/al-syntax.json +0 -1
  258. package/embedded-knowledge/indexes/tags/algorithm-structure.json +0 -1
  259. package/embedded-knowledge/indexes/tags/alternatives.json +0 -1
  260. package/embedded-knowledge/indexes/tags/analytics.json +0 -1
  261. package/embedded-knowledge/indexes/tags/api-delegates.json +0 -1
  262. package/embedded-knowledge/indexes/tags/api-design.json +0 -1
  263. package/embedded-knowledge/indexes/tags/api-documentation.json +0 -1
  264. package/embedded-knowledge/indexes/tags/api-endpoints.json +0 -1
  265. package/embedded-knowledge/indexes/tags/api-extensibility.json +0 -1
  266. package/embedded-knowledge/indexes/tags/api-fieldsets.json +0 -1
  267. package/embedded-knowledge/indexes/tags/api-integration.json +0 -1
  268. package/embedded-knowledge/indexes/tags/api-interfaces.json +0 -1
  269. package/embedded-knowledge/indexes/tags/api-optimization.json +0 -1
  270. package/embedded-knowledge/indexes/tags/api-pages.json +0 -1
  271. package/embedded-knowledge/indexes/tags/api-patterns.json +0 -1
  272. package/embedded-knowledge/indexes/tags/api-permissions.json +0 -1
  273. package/embedded-knowledge/indexes/tags/api-responses.json +0 -1
  274. package/embedded-knowledge/indexes/tags/api-simplification.json +0 -1
  275. package/embedded-knowledge/indexes/tags/api.json +0 -1
  276. package/embedded-knowledge/indexes/tags/architecture.json +0 -1
  277. package/embedded-knowledge/indexes/tags/async-patterns.json +0 -1
  278. package/embedded-knowledge/indexes/tags/async-processing.json +0 -1
  279. package/embedded-knowledge/indexes/tags/automatic-registration.json +0 -1
  280. package/embedded-knowledge/indexes/tags/batch-operations.json +0 -1
  281. package/embedded-knowledge/indexes/tags/bc24-migration.json +0 -1
  282. package/embedded-knowledge/indexes/tags/begin-blocks.json +0 -1
  283. package/embedded-knowledge/indexes/tags/begin-end.json +0 -1
  284. package/embedded-knowledge/indexes/tags/behavioral-patterns.json +0 -1
  285. package/embedded-knowledge/indexes/tags/best-practices.json +0 -1
  286. package/embedded-knowledge/indexes/tags/binding.json +0 -1
  287. package/embedded-knowledge/indexes/tags/block-structure.json +0 -1
  288. package/embedded-knowledge/indexes/tags/blocks.json +0 -1
  289. package/embedded-knowledge/indexes/tags/boolean-expressions.json +0 -1
  290. package/embedded-knowledge/indexes/tags/branching.json +0 -1
  291. package/embedded-knowledge/indexes/tags/breaking-changes.json +0 -1
  292. package/embedded-knowledge/indexes/tags/breakpoints.json +0 -1
  293. package/embedded-knowledge/indexes/tags/business-foundation.json +0 -1
  294. package/embedded-knowledge/indexes/tags/business-infrastructure.json +0 -1
  295. package/embedded-knowledge/indexes/tags/business-process.json +0 -1
  296. package/embedded-knowledge/indexes/tags/business-rules.json +0 -1
  297. package/embedded-knowledge/indexes/tags/caching.json +0 -1
  298. package/embedded-knowledge/indexes/tags/case-statements.json +0 -1
  299. package/embedded-knowledge/indexes/tags/case.json +0 -1
  300. package/embedded-knowledge/indexes/tags/code-analysis.json +0 -1
  301. package/embedded-knowledge/indexes/tags/code-clarity.json +0 -1
  302. package/embedded-knowledge/indexes/tags/code-comprehension.json +0 -1
  303. package/embedded-knowledge/indexes/tags/code-conversion.json +0 -1
  304. package/embedded-knowledge/indexes/tags/code-formatting.json +0 -1
  305. package/embedded-knowledge/indexes/tags/code-organization.json +0 -1
  306. package/embedded-knowledge/indexes/tags/code-patterns.json +0 -1
  307. package/embedded-knowledge/indexes/tags/code-quality.json +0 -1
  308. package/embedded-knowledge/indexes/tags/code-reuse.json +0 -1
  309. package/embedded-knowledge/indexes/tags/code-simplification.json +0 -1
  310. package/embedded-knowledge/indexes/tags/code-standards.json +0 -1
  311. package/embedded-knowledge/indexes/tags/code-structure.json +0 -1
  312. package/embedded-knowledge/indexes/tags/code-style.json +0 -1
  313. package/embedded-knowledge/indexes/tags/codeunit-design.json +0 -1
  314. package/embedded-knowledge/indexes/tags/command-queue.json +0 -1
  315. package/embedded-knowledge/indexes/tags/comments.json +0 -1
  316. package/embedded-knowledge/indexes/tags/compile-time-validation.json +0 -1
  317. package/embedded-knowledge/indexes/tags/complex-facade.json +0 -1
  318. package/embedded-knowledge/indexes/tags/complexity-hiding.json +0 -1
  319. package/embedded-knowledge/indexes/tags/complexity-management.json +0 -1
  320. package/embedded-knowledge/indexes/tags/compound-statements.json +0 -1
  321. package/embedded-knowledge/indexes/tags/concurrency.json +0 -1
  322. package/embedded-knowledge/indexes/tags/conditional-logic.json +0 -1
  323. package/embedded-knowledge/indexes/tags/conditional.json +0 -1
  324. package/embedded-knowledge/indexes/tags/conflict-resolution.json +0 -1
  325. package/embedded-knowledge/indexes/tags/consistency.json +0 -1
  326. package/embedded-knowledge/indexes/tags/contract-design.json +0 -1
  327. package/embedded-knowledge/indexes/tags/control-flow.json +0 -1
  328. package/embedded-knowledge/indexes/tags/conversion-guide.json +0 -1
  329. package/embedded-knowledge/indexes/tags/correlation.json +0 -1
  330. package/embedded-knowledge/indexes/tags/custom-messages.json +0 -1
  331. package/embedded-knowledge/indexes/tags/data-access.json +0 -1
  332. package/embedded-knowledge/indexes/tags/data-exposure.json +0 -1
  333. package/embedded-knowledge/indexes/tags/data-integrity.json +0 -1
  334. package/embedded-knowledge/indexes/tags/data-loading.json +0 -1
  335. package/embedded-knowledge/indexes/tags/data-manipulation.json +0 -1
  336. package/embedded-knowledge/indexes/tags/data-modeling.json +0 -1
  337. package/embedded-knowledge/indexes/tags/data-patterns.json +0 -1
  338. package/embedded-knowledge/indexes/tags/data-protection.json +0 -1
  339. package/embedded-knowledge/indexes/tags/data-validation.json +0 -1
  340. package/embedded-knowledge/indexes/tags/database.json +0 -1
  341. package/embedded-knowledge/indexes/tags/debugging.json +0 -1
  342. package/embedded-knowledge/indexes/tags/decision-making.json +0 -1
  343. package/embedded-knowledge/indexes/tags/declaration.json +0 -1
  344. package/embedded-knowledge/indexes/tags/default-messages.json +0 -1
  345. package/embedded-knowledge/indexes/tags/defensive-programming.json +0 -1
  346. package/embedded-knowledge/indexes/tags/deleteall.json +0 -1
  347. package/embedded-knowledge/indexes/tags/dependencies.json +0 -1
  348. package/embedded-knowledge/indexes/tags/deployment.json +0 -1
  349. package/embedded-knowledge/indexes/tags/developer-productivity.json +0 -1
  350. package/embedded-knowledge/indexes/tags/development-workflow.json +0 -1
  351. package/embedded-knowledge/indexes/tags/diagnostics.json +0 -1
  352. package/embedded-knowledge/indexes/tags/dimensions.json +0 -1
  353. package/embedded-knowledge/indexes/tags/documentation.json +0 -1
  354. package/embedded-knowledge/indexes/tags/early-exit.json +0 -1
  355. package/embedded-knowledge/indexes/tags/else-clauses.json +0 -1
  356. package/embedded-knowledge/indexes/tags/end-statements.json +0 -1
  357. package/embedded-knowledge/indexes/tags/enterprise-patterns.json +0 -1
  358. package/embedded-knowledge/indexes/tags/entity-relationships.json +0 -1
  359. package/embedded-knowledge/indexes/tags/error-handling.json +0 -1
  360. package/embedded-knowledge/indexes/tags/error-messages.json +0 -1
  361. package/embedded-knowledge/indexes/tags/error-prevention.json +0 -1
  362. package/embedded-knowledge/indexes/tags/error-text.json +0 -1
  363. package/embedded-knowledge/indexes/tags/etag.json +0 -1
  364. package/embedded-knowledge/indexes/tags/event-bridge.json +0 -1
  365. package/embedded-knowledge/indexes/tags/event-payload.json +0 -1
  366. package/embedded-knowledge/indexes/tags/event-routing.json +0 -1
  367. package/embedded-knowledge/indexes/tags/events.json +0 -1
  368. package/embedded-knowledge/indexes/tags/execution-flow.json +0 -1
  369. package/embedded-knowledge/indexes/tags/expressions.json +0 -1
  370. package/embedded-knowledge/indexes/tags/extensibility.json +0 -1
  371. package/embedded-knowledge/indexes/tags/extensions.json +0 -1
  372. package/embedded-knowledge/indexes/tags/facade-composition.json +0 -1
  373. package/embedded-knowledge/indexes/tags/facade-pattern.json +0 -1
  374. package/embedded-knowledge/indexes/tags/field-control.json +0 -1
  375. package/embedded-knowledge/indexes/tags/field-exclusion.json +0 -1
  376. package/embedded-knowledge/indexes/tags/field-registration.json +0 -1
  377. package/embedded-knowledge/indexes/tags/field-state.json +0 -1
  378. package/embedded-knowledge/indexes/tags/field-validation.json +0 -1
  379. package/embedded-knowledge/indexes/tags/fielderror.json +0 -1
  380. package/embedded-knowledge/indexes/tags/fields.json +0 -1
  381. package/embedded-knowledge/indexes/tags/filtering.json +0 -1
  382. package/embedded-knowledge/indexes/tags/filters.json +0 -1
  383. package/embedded-knowledge/indexes/tags/formatting.json +0 -1
  384. package/embedded-knowledge/indexes/tags/generic-methods.json +0 -1
  385. package/embedded-knowledge/indexes/tags/http-status.json +0 -1
  386. package/embedded-knowledge/indexes/tags/if-statements.json +0 -1
  387. package/embedded-knowledge/indexes/tags/implementation.json +0 -1
  388. package/embedded-knowledge/indexes/tags/indentation.json +0 -1
  389. package/embedded-knowledge/indexes/tags/index-summary.json +0 -277
  390. package/embedded-knowledge/indexes/tags/indexing.json +0 -1
  391. package/embedded-knowledge/indexes/tags/inheritance.json +0 -1
  392. package/embedded-knowledge/indexes/tags/integration.json +0 -1
  393. package/embedded-knowledge/indexes/tags/integrity-checking.json +0 -1
  394. package/embedded-knowledge/indexes/tags/intellisense.json +0 -1
  395. package/embedded-knowledge/indexes/tags/interface-design.json +0 -1
  396. package/embedded-knowledge/indexes/tags/interface-segregation.json +0 -1
  397. package/embedded-knowledge/indexes/tags/isolation.json +0 -1
  398. package/embedded-knowledge/indexes/tags/job-processing.json +0 -1
  399. package/embedded-knowledge/indexes/tags/keyboard-navigation.json +0 -1
  400. package/embedded-knowledge/indexes/tags/keywords.json +0 -1
  401. package/embedded-knowledge/indexes/tags/legacy-modernization.json +0 -1
  402. package/embedded-knowledge/indexes/tags/line-breaks.json +0 -1
  403. package/embedded-knowledge/indexes/tags/line-organization.json +0 -1
  404. package/embedded-knowledge/indexes/tags/line-positioning.json +0 -1
  405. package/embedded-knowledge/indexes/tags/localization.json +0 -1
  406. package/embedded-knowledge/indexes/tags/logging.json +0 -1
  407. package/embedded-knowledge/indexes/tags/loose-coupling.json +0 -1
  408. package/embedded-knowledge/indexes/tags/maintainability.json +0 -1
  409. package/embedded-knowledge/indexes/tags/memory-management.json +0 -1
  410. package/embedded-knowledge/indexes/tags/memory-optimization.json +0 -1
  411. package/embedded-knowledge/indexes/tags/memory.json +0 -1
  412. package/embedded-knowledge/indexes/tags/message-design.json +0 -1
  413. package/embedded-knowledge/indexes/tags/message-formatting.json +0 -1
  414. package/embedded-knowledge/indexes/tags/message-patterns.json +0 -1
  415. package/embedded-knowledge/indexes/tags/metadata-driven.json +0 -1
  416. package/embedded-knowledge/indexes/tags/method-comparison.json +0 -1
  417. package/embedded-knowledge/indexes/tags/module-architecture.json +0 -1
  418. package/embedded-knowledge/indexes/tags/module-validation.json +0 -1
  419. package/embedded-knowledge/indexes/tags/monitoring.json +0 -1
  420. package/embedded-knowledge/indexes/tags/multi-layer-facade.json +0 -1
  421. package/embedded-knowledge/indexes/tags/multi-tenancy.json +0 -1
  422. package/embedded-knowledge/indexes/tags/multiple-values.json +0 -1
  423. package/embedded-knowledge/indexes/tags/naming-conventions.json +0 -1
  424. package/embedded-knowledge/indexes/tags/naming.json +0 -1
  425. package/embedded-knowledge/indexes/tags/navigation.json +0 -1
  426. package/embedded-knowledge/indexes/tags/nested-statements.json +0 -1
  427. package/embedded-knowledge/indexes/tags/no-series-conversion.json +0 -1
  428. package/embedded-knowledge/indexes/tags/no-series-validation.json +0 -1
  429. package/embedded-knowledge/indexes/tags/no-series.json +0 -1
  430. package/embedded-knowledge/indexes/tags/number-generation.json +0 -1
  431. package/embedded-knowledge/indexes/tags/object-documentation.json +0 -1
  432. package/embedded-knowledge/indexes/tags/odata.json +0 -1
  433. package/embedded-knowledge/indexes/tags/ondelete.json +0 -1
  434. package/embedded-knowledge/indexes/tags/onvalidate.json +0 -1
  435. package/embedded-knowledge/indexes/tags/operation-delegation.json +0 -1
  436. package/embedded-knowledge/indexes/tags/operation-safety.json +0 -1
  437. package/embedded-knowledge/indexes/tags/operators.json +0 -1
  438. package/embedded-knowledge/indexes/tags/optimization.json +0 -1
  439. package/embedded-knowledge/indexes/tags/order.json +0 -1
  440. package/embedded-knowledge/indexes/tags/organization.json +0 -1
  441. package/embedded-knowledge/indexes/tags/pages.json +0 -1
  442. package/embedded-knowledge/indexes/tags/parameters.json +0 -1
  443. package/embedded-knowledge/indexes/tags/patterns.json +0 -1
  444. package/embedded-knowledge/indexes/tags/performance-optimization.json +0 -1
  445. package/embedded-knowledge/indexes/tags/performance.json +0 -1
  446. package/embedded-knowledge/indexes/tags/placement.json +0 -1
  447. package/embedded-knowledge/indexes/tags/posting-codeunits.json +0 -1
  448. package/embedded-knowledge/indexes/tags/posting.json +0 -1
  449. package/embedded-knowledge/indexes/tags/preconditions.json +0 -1
  450. package/embedded-knowledge/indexes/tags/primary-key.json +0 -1
  451. package/embedded-knowledge/indexes/tags/privacy.json +0 -1
  452. package/embedded-knowledge/indexes/tags/process-automation.json +0 -1
  453. package/embedded-knowledge/indexes/tags/production.json +0 -1
  454. package/embedded-knowledge/indexes/tags/productivity.json +0 -1
  455. package/embedded-knowledge/indexes/tags/query-performance.json +0 -1
  456. package/embedded-knowledge/indexes/tags/queue-management.json +0 -1
  457. package/embedded-knowledge/indexes/tags/ranges.json +0 -1
  458. package/embedded-knowledge/indexes/tags/readability.json +0 -1
  459. package/embedded-knowledge/indexes/tags/record-access.json +0 -1
  460. package/embedded-knowledge/indexes/tags/record-methods.json +0 -1
  461. package/embedded-knowledge/indexes/tags/refactoring.json +0 -1
  462. package/embedded-knowledge/indexes/tags/reference.json +0 -1
  463. package/embedded-knowledge/indexes/tags/repeat-loops.json +0 -1
  464. package/embedded-knowledge/indexes/tags/repeat-statement.json +0 -1
  465. package/embedded-knowledge/indexes/tags/runtime-errors.json +0 -1
  466. package/embedded-knowledge/indexes/tags/runtime.json +0 -1
  467. package/embedded-knowledge/indexes/tags/safeguards.json +0 -1
  468. package/embedded-knowledge/indexes/tags/security.json +0 -1
  469. package/embedded-knowledge/indexes/tags/sequence-management.json +0 -1
  470. package/embedded-knowledge/indexes/tags/serialization.json +0 -1
  471. package/embedded-knowledge/indexes/tags/session-logmessage.json +0 -1
  472. package/embedded-knowledge/indexes/tags/session.json +0 -1
  473. package/embedded-knowledge/indexes/tags/setloadfields.json +0 -1
  474. package/embedded-knowledge/indexes/tags/shortcuts.json +0 -1
  475. package/embedded-knowledge/indexes/tags/sift.json +0 -1
  476. package/embedded-knowledge/indexes/tags/singleinstance.json +0 -1
  477. package/embedded-knowledge/indexes/tags/spacing.json +0 -1
  478. package/embedded-knowledge/indexes/tags/sql-translation.json +0 -1
  479. package/embedded-knowledge/indexes/tags/standards.json +0 -1
  480. package/embedded-knowledge/indexes/tags/statements.json +0 -1
  481. package/embedded-knowledge/indexes/tags/streaming.json +0 -1
  482. package/embedded-knowledge/indexes/tags/strong-typing.json +0 -1
  483. package/embedded-knowledge/indexes/tags/structural-patterns.json +0 -1
  484. package/embedded-knowledge/indexes/tags/structure.json +0 -1
  485. package/embedded-knowledge/indexes/tags/subscribers.json +0 -1
  486. package/embedded-knowledge/indexes/tags/switch.json +0 -1
  487. package/embedded-knowledge/indexes/tags/symbol-search.json +0 -1
  488. package/embedded-knowledge/indexes/tags/syntax.json +0 -1
  489. package/embedded-knowledge/indexes/tags/systemid.json +0 -1
  490. package/embedded-knowledge/indexes/tags/table-configuration.json +0 -1
  491. package/embedded-knowledge/indexes/tags/table-events.json +0 -1
  492. package/embedded-knowledge/indexes/tags/table-keys.json +0 -1
  493. package/embedded-knowledge/indexes/tags/table-safety.json +0 -1
  494. package/embedded-knowledge/indexes/tags/task-scheduler.json +0 -1
  495. package/embedded-knowledge/indexes/tags/telemetry.json +0 -1
  496. package/embedded-knowledge/indexes/tags/template-method.json +0 -1
  497. package/embedded-knowledge/indexes/tags/temporary-tables.json +0 -1
  498. package/embedded-knowledge/indexes/tags/testfield.json +0 -1
  499. package/embedded-knowledge/indexes/tags/tradeoffs.json +0 -1
  500. package/embedded-knowledge/indexes/tags/triggers.json +0 -1
  501. package/embedded-knowledge/indexes/tags/troubleshooting.json +0 -1
  502. package/embedded-knowledge/indexes/tags/type-safety.json +0 -1
  503. package/embedded-knowledge/indexes/tags/url-structure.json +0 -1
  504. package/embedded-knowledge/indexes/tags/user-experience.json +0 -1
  505. package/embedded-knowledge/indexes/tags/user-feedback.json +0 -1
  506. package/embedded-knowledge/indexes/tags/user-interface.json +0 -1
  507. package/embedded-knowledge/indexes/tags/validation-feedback.json +0 -1
  508. package/embedded-knowledge/indexes/tags/validation.json +0 -1
  509. package/embedded-knowledge/indexes/tags/variables.json +0 -1
  510. package/embedded-knowledge/indexes/tags/verbosity.json +0 -1
  511. package/embedded-knowledge/indexes/tags/vs-code.json +0 -1
  512. package/embedded-knowledge/indexes/tags/web-services.json +0 -1
  513. package/embedded-knowledge/indexes/tags/workflow-management.json +0 -1
  514. package/embedded-knowledge/indexes/tags/workflow-optimization.json +0 -1
  515. package/embedded-knowledge/indexes/tags/workflow-templates.json +0 -1
  516. package/embedded-knowledge/indexes/tags/workspace.json +0 -1
  517. package/embedded-knowledge/indexes/tags/xml-documentation.json +0 -1
  518. package/embedded-knowledge/indexes/topic-relationships.json +0 -128
  519. package/embedded-knowledge/methodologies/index.json +0 -81
  520. package/embedded-knowledge/methodologies/phases/analysis-full.md +0 -208
  521. package/embedded-knowledge/methodologies/phases/analysis-quick.md +0 -44
  522. package/embedded-knowledge/methodologies/phases/analysis.md +0 -182
  523. package/embedded-knowledge/methodologies/phases/execution-validation-full.md +0 -174
  524. package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +0 -31
  525. package/embedded-knowledge/methodologies/phases/execution-validation.md +0 -174
  526. package/embedded-knowledge/methodologies/phases/performance-full.md +0 -211
  527. package/embedded-knowledge/methodologies/phases/performance-quick.md +0 -32
  528. package/embedded-knowledge/methodologies/phases/performance.md +0 -211
  529. package/embedded-knowledge/methodologies/phases/verification-full.md +0 -162
  530. package/embedded-knowledge/methodologies/phases/verification-quick.md +0 -48
  531. package/embedded-knowledge/methodologies/phases/verification.md +0 -146
  532. package/embedded-knowledge/methodologies/workflow-enforcement.md +0 -142
  533. package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +0 -99
  534. package/embedded-knowledge/specialists/alex-architect.md +0 -216
  535. package/embedded-knowledge/specialists/casey-copilot.md +0 -226
  536. package/embedded-knowledge/specialists/chris-config.md +0 -267
  537. package/embedded-knowledge/specialists/dean-debug.md +0 -222
  538. package/embedded-knowledge/specialists/eva-errors.md +0 -235
  539. package/embedded-knowledge/specialists/jordan-bridge.md +0 -235
  540. package/embedded-knowledge/specialists/logan-legacy.md +0 -209
  541. package/embedded-knowledge/specialists/maya-mentor.md +0 -211
  542. package/embedded-knowledge/specialists/morgan-market.md +0 -226
  543. package/embedded-knowledge/specialists/quinn-tester.md +0 -235
  544. package/embedded-knowledge/specialists/roger-reviewer.md +0 -234
  545. package/embedded-knowledge/specialists/sam-coder.md +0 -359
  546. package/embedded-knowledge/specialists/seth-security.md +0 -235
  547. package/embedded-knowledge/specialists/taylor-docs.md +0 -257
  548. package/embedded-knowledge/specialists/uma-ux.md +0 -235
@@ -1,84 +0,0 @@
1
- ---
2
- title: "Custom Telemetry Implementation in AL"
3
- domain: "dean-debug"
4
- difficulty: "intermediate"
5
- bc_versions: "14+"
6
- tags: ["telemetry", "session-logmessage", "privacy", "diagnostics", "monitoring"]
7
- samples: "samples/custom-telemetry.md"
8
- type: "implementation-pattern"
9
- category: "diagnostics"
10
- pattern_type: "good"
11
- severity: "medium"
12
- impact_level: "high"
13
- improvement_suggestion: "Implement custom telemetry for actionable monitoring and diagnostics"
14
- implementation_steps: ["design-telemetry-schema", "implement-session-logmessage", "validate-privacy-compliance"]
15
- validation_criteria: ["privacy-compliant", "actionable-data", "performance-neutral"]
16
- technical_areas: ["al-code", "monitoring"]
17
- ---
18
-
19
- # Custom Telemetry Implementation in AL
20
-
21
- ## Overview
22
-
23
- Custom telemetry in AL enables developers to emit structured diagnostic data through Session.LogMessage() for Application Insights integration. This observability foundation supports proactive monitoring, performance analysis, and troubleshooting while maintaining strict privacy compliance.
24
-
25
- **Critical Principle**: Treat telemetry as an API - documented, versioned, discoverable, and non-breaking for downstream analytics consumers.
26
-
27
- ## Strategic Framework
28
-
29
- ### Telemetry Design Philosophy
30
- - **Actionable Data Only**: Emit signals customers can act upon, avoiding noise from non-actionable metrics
31
- - **Privacy by Design**: Never log PII, customer data, or sensitive business information
32
- - **Cost Consciousness**: Balance diagnostic value with data ingestion costs through intelligent sampling
33
- - **Schema Consistency**: Use standardized naming conventions and structured dimensions
34
-
35
- ### When to Implement Custom Telemetry
36
- - **Error Deflection**: Authentication failures, permission issues, configuration problems
37
- - **Performance Monitoring**: Long-running operations, resource bottlenecks, timeout scenarios
38
- - **Feature Adoption**: Usage patterns, workflow completion rates, feature discovery
39
- - **Integration Health**: External service calls, API responses, data synchronization status
40
-
41
- ## Architecture Focus
42
-
43
- ### Session.LogMessage() Implementation Pattern
44
- Structure telemetry calls with consistent event IDs, descriptive messages following "Object ActionInPastTense" pattern, and appropriate verbosity levels. Use custom dimensions dictionary for structured data while maintaining PascalCasing conventions.
45
-
46
- ### Privacy-Compliant Data Classification
47
- Always use DataClassification::SystemMetadata for telemetry events. Review all LogMessage calls for potential privacy violations before production deployment. Focus on operational metadata rather than business data.
48
-
49
- ### Telemetry Scope Strategy
50
- Default to TelemetryScope::ExtensionPublisher to control costs. Use TelemetryScope::All only when customers can directly act on the telemetry data for their business operations.
51
-
52
- ## Best Practices
53
-
54
- ### Implementation Guidelines
55
- - **Object-Level Emission**: Call Session.LogMessage() from within objects causing situations requiring telemetry
56
- - **Structured Dimensions**: Use Dictionary of [Text,Text] for custom dimensions with meaningful prefixes
57
- - **Message Consistency**: Always include human-readable "message" field expressing event purpose
58
- - **Correlation Support**: Include identifiers enabling distributed tracing across system boundaries
59
-
60
- ### Performance Considerations
61
- - **Non-Blocking**: Ensure telemetry calls never impact user experience or application performance
62
- - **Minimal Processing**: Avoid complex calculations within telemetry emission paths
63
- - **Sampling Strategy**: Implement intelligent sampling for high-frequency events
64
-
65
- ### Analytics Integration
66
- Design telemetry for Application Insights consumption with KQL-friendly field names, consistent schemas across related events, and dimensions supporting common analytical queries.
67
-
68
- ## Anti-Patterns
69
-
70
- ### Avoid These Approaches
71
- - **Privacy Violations**: Logging customer data, PII, or sensitive business information
72
- - **Telemetry Flooding**: Excessive volume without considering customer ingestion costs
73
- - **Functional Dependencies**: Using telemetry data for application logic rather than pure observability
74
- - **Inconsistent Schemas**: Different naming patterns across related telemetry events
75
-
76
- ### Common Implementation Mistakes
77
- - Missing privacy review before production deployment
78
- - Using special characters or spaces in custom dimension keys
79
- - Emitting telemetry from central objects rather than originating sources
80
- - Failing to provide actionable information for intended telemetry consumers
81
-
82
- *Implementation examples: see samples/custom-telemetry.md*
83
- *Privacy guidelines: see privacy-compliance-patterns.md*
84
- *Related patterns: monitoring-strategy.md, error-handling-patterns.md*
@@ -1,93 +0,0 @@
1
- ---
2
- title: "DeleteAll Performance Tradeoff"
3
- domain: "dean-debug"
4
- difficulty: "intermediate"
5
- bc_versions: "14+"
6
- tags: ["deleteall", "performance", "optimization", "tradeoffs"]
7
- prerequisites: ["deleteall-method-usage", "performance-fundamentals"]
8
- samples: "samples/deleteall-performance.md"
9
- ---
10
- # DeleteAll Performance Tradeoff
11
-
12
- ## Overview
13
-
14
- DeleteAll presents a fundamental performance tradeoff in BC: business logic compliance versus execution speed. While DeleteAll ensures complete business rule enforcement through OnDelete trigger execution, this comprehensive approach comes with significant performance implications.
15
-
16
- **Core Tradeoff**: Business logic completeness versus execution performance - DeleteAll prioritizes data integrity over speed.
17
-
18
- **Performance Reality**: DeleteAll operations typically perform 10-100x slower than direct SQL deletions due to individual record processing and trigger execution overhead.
19
-
20
- ## Strategic Framework
21
-
22
- ### Performance Cost Analysis
23
-
24
- **Execution Overhead Sources**:
25
- - Individual record processing rather than set-based operations
26
- - OnDelete trigger execution for every deleted record
27
- - Related table operations multiplying database interactions
28
- - Validation logic execution adding computational overhead
29
- - Transaction management extending operation duration
30
-
31
- ### Business Value Assessment
32
-
33
- **Data Integrity Benefits**:
34
- - Complete business rule enforcement during deletion operations
35
- - Proper audit trail and logging maintenance
36
- - Cascade delete operations preserving referential integrity
37
- - Custom validation logic execution ensuring data consistency
38
- - Related table synchronization maintaining system coherence
39
-
40
- ## Performance Impact Prediction
41
-
42
- ### Record Volume Sensitivity
43
- - Small datasets (< 1000 records): Performance impact typically acceptable
44
- - Medium datasets (1000-10000 records): Noticeable but manageable impact
45
- - Large datasets (> 10000 records): Significant performance degradation likely
46
- - Very large datasets (> 100000 records): Potentially prohibitive execution times
47
-
48
- ### Trigger Complexity Multiplier
49
- - Simple OnDelete triggers: Minimal additional overhead per record
50
- - Moderate trigger logic: 2-5x performance impact multiplication
51
- - Complex trigger operations: 10-50x performance impact multiplication
52
- - External system integration: Unpredictable and potentially severe impact
53
-
54
- ## Decision Guidelines
55
-
56
- ### When to Use DeleteAll
57
- - Business logic enforcement is critical for data integrity
58
- - Audit trail and logging must be maintained
59
- - Cascade delete operations are required
60
- - Related table synchronization is necessary
61
- - Custom validation logic must execute during deletion
62
-
63
- ### When to Consider Alternatives
64
- - Simple cleanup operations without business logic requirements
65
- - System maintenance operations where speed is critical
66
- - Temporary data removal with minimal related table impact
67
- - Bulk operations on isolated tables without complex relationships
68
-
69
- ## Best Practices
70
-
71
- ### Performance-Conscious Implementation
72
- - Limit DeleteAll operations to appropriate dataset sizes based on system capacity
73
- - Schedule large DeleteAll operations during low-usage periods
74
- - Implement batch processing for large datasets requiring business logic enforcement
75
- - Monitor system performance during deletion operations
76
-
77
- ### Decision Making Framework
78
- - Identify specific business logic requirements for deletion operations
79
- - Evaluate data integrity criticality versus performance needs
80
- - Assess related table impact and cascade operation requirements
81
- - Determine acceptable performance thresholds for user experience
82
-
83
- ## Anti-Patterns
84
-
85
- ### Performance Expectations Mismatch
86
- **Incorrect Assumption**: Expecting DeleteAll to perform comparably to direct SQL operations. DeleteAll prioritizes business logic compliance over speed, and trigger execution overhead is inherent.
87
-
88
- ### Inappropriate Usage Scenarios
89
- **Wrong Application**: Using DeleteAll for simple cleanup operations without business logic needs. Reserve DeleteAll for scenarios where business logic enforcement justifies performance cost.
90
-
91
- ### Scale Misunderstanding
92
- **Problematic Planning**: Underestimating performance impact at scale. Test DeleteAll performance with realistic production data volumes and complexity before implementation.
93
-
@@ -1,73 +0,0 @@
1
- ---
2
- title: "DeleteAll SQL Translation and Performance Impact"
3
- domain: "dean-debug"
4
- difficulty: "intermediate"
5
- bc_versions: "14+"
6
- tags: ["deleteall", "sql-translation", "performance-optimization"]
7
- samples: "samples/deleteall-performance.md"
8
- type: "improvement-pattern"
9
- category: "performance-optimization"
10
- pattern_type: "good"
11
- severity: "medium"
12
- impact_level: "high"
13
- improvement_suggestion: "Use DeleteAll for bulk deletions to leverage SQL DELETE performance"
14
- implementation_steps: ["identify-bulk-deletion-scenarios", "replace-iterative-loops", "validate-event-dependencies"]
15
- validation_criteria: ["performance-benchmarks", "event-dependency-analysis"]
16
- technical_areas: ["al-code", "database"]
17
- ---
18
-
19
- # DeleteAll SQL Translation and Performance Impact
20
-
21
- ## Overview
22
-
23
- DeleteAll method translates directly to SQL DELETE statements, providing significant performance advantages over iterative record deletion. This single SQL operation eliminates AL runtime overhead but bypasses table-level AL events, creating critical performance vs. event consistency trade-offs.
24
-
25
- **Key Insight**: DeleteAll executes as one database operation rather than individual record processing, dramatically improving performance for large datasets while skipping AL-level validations.
26
-
27
- ## Strategic Framework
28
-
29
- ### Performance Characteristics
30
- - **Single SQL DELETE**: Entire operation executes as one database statement
31
- - **Eliminates AL Overhead**: No per-record AL runtime processing
32
- - **Database-Level Execution**: Constraints and triggers still execute
33
- - **Bypasses AL Events**: OnDelete triggers and validations are skipped
34
-
35
- ### When to Use DeleteAll
36
- - **Large Record Sets**: Performance gains most pronounced with bulk deletions
37
- - **Simple Deletion Logic**: No complex AL validation required
38
- - **Performance Critical**: Operations where speed is prioritized
39
- - **Database Constraints Sufficient**: Referential integrity handled at database level
40
-
41
- ## Architecture Focus
42
-
43
- ### SQL Translation Impact
44
- DeleteAll converts to optimized SQL DELETE with WHERE clauses matching record filters. Database engine handles the bulk operation efficiently using index structures and internal optimization strategies.
45
-
46
- ### Event Processing Differences
47
- Table-level AL events (OnDelete triggers, validation logic) are completely bypassed. Only database-level constraints and triggers execute, creating potential inconsistencies with iterative deletion behavior.
48
-
49
- ### Memory and Resource Efficiency
50
- Single SQL operation uses minimal AL runtime resources compared to loop-based deletion that processes each record through full AL stack.
51
-
52
- ## Best Practices
53
-
54
- ### Performance Optimization
55
- - **Bulk Operations**: Prefer DeleteAll for large dataset removals
56
- - **Filter Optimization**: Ensure filters use indexed fields for optimal SQL execution
57
- - **Transaction Boundaries**: Consider transaction scope for very large deletions
58
- - **Resource Monitoring**: Monitor database resource usage during bulk operations
59
-
60
- ### Event Dependency Management
61
- - **Validate Dependencies**: Ensure no critical AL logic exists in bypassed events
62
- - **Alternative Patterns**: Implement necessary validations before DeleteAll execution
63
- - **Documentation**: Document event bypass behavior for maintenance clarity
64
-
65
- ## Anti-Patterns
66
-
67
- ### Avoid These Approaches
68
- - Using DeleteAll when AL events contain critical business logic
69
- - Iterative deletion loops for performance-critical bulk operations
70
- - Ignoring database constraint dependencies during bulk deletions
71
- - Mixing DeleteAll with individual record processing without understanding event differences
72
-
73
- *Implementation examples: see samples/deleteall-performance.md*
@@ -1,78 +0,0 @@
1
- ---
2
- title: "Extension Telemetry Isolation"
3
- domain: "dean-debug"
4
- difficulty: "intermediate"
5
- bc_versions: "14+"
6
- tags: ["telemetry", "extensions", "isolation", "multi-tenancy"]
7
- prerequisites: ["custom-dimensions-best-practices"]
8
- samples: "samples/extension-isolation.md"
9
- ---
10
- # Extension Telemetry Isolation
11
-
12
- ## Overview
13
-
14
- Extension telemetry isolation ensures that telemetry events from different extensions can be independently monitored, analyzed, and troubleshot without interference. Proper isolation enables extension publishers to monitor their components separately while supporting comprehensive system-wide analysis.
15
-
16
- Telemetry isolation becomes critical in multi-extension environments where different publishers need independent monitoring capabilities and where system administrators require the ability to analyze issues by extension scope.
17
-
18
- ## Isolation Strategies
19
-
20
- ### Extension Identification
21
- Include consistent extension identification in all telemetry events through custom dimensions. Use extension publisher information, extension name, and version details to enable filtering and analysis by extension scope.
22
-
23
- Implement standardized extension identification patterns that work across all extensions and enable consistent filtering in monitoring systems. Consider using the extension's App ID as a reliable identification mechanism.
24
-
25
- ### Namespace Separation
26
- Design telemetry event naming conventions that include extension context to prevent naming conflicts between extensions. Use prefixed event names or structured naming that clearly identifies the source extension.
27
-
28
- Namespace separation enables independent analysis while preventing confusion when multiple extensions emit similar telemetry event types.
29
-
30
- ### Custom Dimension Isolation
31
- Use extension-specific custom dimension naming to prevent dimension name conflicts between extensions. Implement dimension naming conventions that include extension context while maintaining analytical capability.
32
-
33
- Consider using dimension namespaces or prefixes that clearly identify the source extension while enabling cross-extension analysis where appropriate.
34
-
35
- ## Multi-Tenant Considerations
36
-
37
- ### Tenant Isolation
38
- Ensure telemetry isolation works effectively in multi-tenant environments where multiple tenants may use the same extensions. Combine extension isolation with tenant identification to enable both extension-specific and tenant-specific analysis.
39
-
40
- Design isolation patterns that scale across large multi-tenant deployments while maintaining performance and analytical capability.
41
-
42
- ### Cross-Tenant Analysis
43
- Consider scenarios where extension publishers need to analyze telemetry across multiple tenant installations. Design isolation patterns that enable this analysis while respecting tenant data privacy and security requirements.
44
-
45
- ## Implementation Patterns
46
-
47
- ### Extension Context Propagation
48
- Propagate extension identification consistently throughout business process execution, including scenarios where multiple extensions interact. Ensure extension context flows through integration boundaries and system interactions.
49
-
50
- Use parameter passing or context objects to maintain extension identification throughout complex business processes that span multiple components or extensions.
51
-
52
- ### Shared Resource Monitoring
53
- Design telemetry patterns for monitoring shared resources (like database tables or integration endpoints) that are accessed by multiple extensions. Enable analysis by extension while maintaining visibility into overall resource utilization.
54
-
55
- ### Extension Interaction Tracking
56
- Implement telemetry patterns that track interactions between different extensions. This capability supports troubleshooting scenarios where issues arise from extension interactions or dependencies.
57
-
58
- ## Analysis and Monitoring
59
-
60
- ### Extension-Specific Dashboards
61
- Create monitoring dashboards that filter telemetry by extension scope. Enable extension publishers to monitor their components independently while providing system administrators with comprehensive system views.
62
-
63
- ### Cross-Extension Analysis
64
- Design analysis capabilities that can examine interactions between extensions while respecting isolation boundaries. Support troubleshooting scenarios where issues span multiple extensions.
65
-
66
- ### Performance Impact Isolation
67
- Enable analysis of performance impact by extension to identify which extensions contribute to system performance issues. Use extension identification to isolate performance telemetry and enable targeted optimization efforts.
68
-
69
- ## Troubleshooting Applications
70
-
71
- ### Extension-Specific Issues
72
- Use extension isolation to focus troubleshooting efforts on specific extensions when issues are identified. Filter telemetry to specific extensions to reduce noise and accelerate root cause identification.
73
-
74
- ### Integration Issue Analysis
75
- Leverage extension isolation when troubleshooting integration issues that may involve multiple extensions. Analyze telemetry from each involved extension to understand interaction patterns and identify failure points.
76
-
77
- ### Performance Investigation
78
- Use extension isolation to identify performance bottlenecks attributable to specific extensions. Analyze resource utilization and operation timing by extension scope to guide optimization efforts.
@@ -1,79 +0,0 @@
1
- ---
2
- title: "MaintainSIFTIndex Property Behavior"
3
- domain: "dean-debug"
4
- difficulty: "intermediate"
5
- bc_versions: "14+"
6
- tags: ["sift", "performance", "indexing", "optimization", "table-configuration"]
7
- prerequisites: ["sift-basics", "table-keys"]
8
- related_topics: ["sift-tuning", "key-optimization"]
9
- samples: "samples/maintainsiftindex-examples.md"
10
- ---
11
- # MaintainSIFTIndex Property Behavior
12
-
13
- ## Overview
14
-
15
- MaintainSIFTIndex controls whether Business Central automatically maintains SIFT index structures for a key during data modifications. This property directly impacts both query performance and modification overhead, requiring careful balance between read and write operations.
16
-
17
- **Critical Decision**: Set MaintainSIFTIndex=Yes only when SIFT queries significantly outweigh modification operations on the indexed fields.
18
-
19
- ## Property Behavior Analysis
20
-
21
- ### MaintainSIFTIndex=Yes
22
- - **Real-time index updates** during INSERT/MODIFY/DELETE operations
23
- - **Immediate SIFT availability** for queries without rebuild delays
24
- - **Higher modification overhead** due to index maintenance
25
- - **Consistent query performance** regardless of data changes
26
-
27
- ### MaintainSIFTIndex=No
28
- - **Deferred index maintenance** until SIFT queries execute
29
- - **Lower modification overhead** during data entry operations
30
- - **Potential query delays** while indexes rebuild on first access
31
- - **Variable query performance** based on index freshness
32
-
33
- ## Performance Trade-off Framework
34
-
35
- ### Use MaintainSIFTIndex=Yes When
36
- - **High query frequency** on SIFT fields (>10x modification rate)
37
- - **Real-time reporting requirements** demand immediate data availability
38
- - **Batch processing scenarios** where query performance is critical
39
- - **Read-heavy workloads** with infrequent data modifications
40
-
41
- ### Use MaintainSIFTIndex=No When
42
- - **High modification frequency** exceeds query requirements
43
- - **Data entry intensive operations** where speed is paramount
44
- - **Batch import scenarios** with subsequent query phases
45
- - **Memory-constrained environments** requiring reduced overhead
46
-
47
- ## Decision Criteria Matrix
48
-
49
- ### Workload Assessment
50
- Evaluate modification-to-query ratios for each key. Keys with modification rates >3x query rates typically benefit from MaintainSIFTIndex=No, while query-heavy keys (>5x query rate) should use MaintainSIFTIndex=Yes.
51
-
52
- ### Resource Considerations
53
- Consider available memory and CPU resources. High-modification environments with limited resources may require selective MaintainSIFTIndex=No settings to maintain overall system performance.
54
-
55
- ## Implementation Best Practices
56
-
57
- ### Strategic Configuration
58
- - **Profile actual usage patterns** before setting property values
59
- - **Monitor SIFT performance metrics** after configuration changes
60
- - **Document rationale** for each MaintainSIFTIndex decision
61
- - **Regular reassessment** as business processes evolve
62
-
63
- ### Testing Approach
64
- Test both settings under realistic data volumes and usage patterns. Performance differences may not be apparent with small datasets but become critical at production scale.
65
-
66
- ## Common Configuration Mistakes
67
-
68
- ### Anti-Patterns to Avoid
69
- - **Default Yes everywhere** without workload analysis
70
- - **Inconsistent settings** across related keys without justification
71
- - **Ignoring modification overhead** in data-entry intensive processes
72
- - **Setting without monitoring** performance impact post-implementation
73
-
74
- ### Validation Criteria
75
- Verify configuration effectiveness through SIFT performance monitoring, modification operation timing, and overall system resource utilization patterns.
76
-
77
- *Complete SIFT optimization guide: see SIFT pattern documentation*
78
- *Implementation samples: see samples/maintainsiftindex-examples.md*
79
- *Performance monitoring: see SIFT metadata indexes documentation*
@@ -1,87 +0,0 @@
1
- ---
2
- title: "No Series Implementation Patterns"
3
- domain: "dean-debug"
4
- difficulty: "intermediate"
5
- bc_versions: "14..23"
6
- tags: ["no-series", "number-generation", "sequence-management", "business-infrastructure"]
7
- prerequisites: ["table-design", "no-series-basics", "business-logic-patterns"]
8
- samples: "samples/no-series-implementation.md"
9
- related_topics: ["no-series-validation-patterns", "data-integrity-patterns"]
10
- ---
11
-
12
- # No Series Implementation Patterns
13
-
14
- ## Overview
15
-
16
- No Series Implementation Patterns provide robust approaches for implementing automatic number generation in Business Central applications. These patterns ensure unique, sequential numbering for business documents while handling concurrency, gaps, and performance requirements.
17
-
18
- **Key Benefit**: Provides reliable, scalable number generation that maintains data integrity and supports high-concurrency scenarios while meeting business numbering requirements.
19
-
20
- ## Core Implementation Architecture
21
-
22
- ### Number Generation Strategy
23
- Design number generation systems that balance uniqueness requirements, performance needs, and gap handling policies based on business requirements.
24
-
25
- ### Concurrency Management
26
- Implement concurrency controls that prevent number conflicts when multiple users create documents simultaneously.
27
-
28
- ### Gap Handling Policies
29
- Design gap handling strategies that align with business requirements for number sequence continuity and audit compliance.
30
-
31
- ## Essential Implementation Patterns
32
-
33
- ### Standard No Series Integration
34
- Leverage Business Central's built-in No Series functionality effectively while extending it for specific business requirements.
35
-
36
- ### Custom Number Generation
37
- Implement custom numbering schemes for scenarios where standard No Series functionality doesn't meet specific business needs.
38
-
39
- ### Multi-Dimensional Numbering
40
- Design numbering systems that incorporate multiple dimensions (company, location, document type) while maintaining uniqueness.
41
-
42
- ## Advanced Implementation Techniques
43
-
44
- ### Performance-Optimized Generation
45
- Implement number generation patterns that minimize database locks and support high-throughput document creation scenarios.
46
-
47
- ### Distributed Number Generation
48
- Design numbering systems that work effectively across multiple Business Central instances or integration scenarios.
49
-
50
- ### Intelligent Gap Management
51
- Create gap management systems that can detect and optionally fill gaps based on business policies and compliance requirements.
52
-
53
- ## Concurrency and Locking Patterns
54
-
55
- ### Lock Minimization Strategies
56
- - Implement number generation that minimizes database lock duration
57
- - Use optimistic locking patterns where appropriate for performance
58
- - Design lock escalation strategies for high-contention scenarios
59
- - Support lock timeout handling and retry mechanisms
60
-
61
- ### Transaction Coordination
62
- - Coordinate number generation with business transaction boundaries
63
- - Handle rollback scenarios and number sequence implications
64
- - Support distributed transaction scenarios with proper number handling
65
- - Implement compensation patterns for failed number generation
66
-
67
- ## Advanced Features
68
-
69
- ### Performance & Integration
70
- Implement batch allocation, caching strategies, robust error handling, and external system coordination for enterprise scenarios.
71
-
72
- ## Quality Assurance
73
-
74
- ### Validation & Integrity
75
- Implement comprehensive validation, integrity monitoring, and policy-driven numbering with multi-format support.
76
-
77
- ## Implementation Guidelines
78
-
79
- ### Testing & Best Practices
80
- Test concurrency scenarios, implement comprehensive logging, and provide clear documentation with monitoring capabilities.
81
-
82
- ### Common Pitfalls
83
- Avoid concurrency issues, performance bottlenecks, and gap accumulation through proper design and testing.
84
-
85
- *Complete no series implementation examples: samples/no-series-implementation.md*
86
- *Number validation patterns: no-series-validation-patterns.md*
87
- *Data integrity patterns: data-integrity-patterns.md*