bc-code-intelligence-mcp 1.1.1

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 (638) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +107 -0
  3. package/dist/cache/cache-manager.d.ts +95 -0
  4. package/dist/cache/cache-manager.d.ts.map +1 -0
  5. package/dist/cache/cache-manager.js +328 -0
  6. package/dist/cache/cache-manager.js.map +1 -0
  7. package/dist/cli/bc-code-intel-cli.d.ts +9 -0
  8. package/dist/cli/bc-code-intel-cli.d.ts.map +1 -0
  9. package/dist/cli/bc-code-intel-cli.js +441 -0
  10. package/dist/cli/bc-code-intel-cli.js.map +1 -0
  11. package/dist/config/config-loader.d.ts +21 -0
  12. package/dist/config/config-loader.d.ts.map +1 -0
  13. package/dist/config/config-loader.js +402 -0
  14. package/dist/config/config-loader.js.map +1 -0
  15. package/dist/config/config-validator.d.ts +84 -0
  16. package/dist/config/config-validator.d.ts.map +1 -0
  17. package/dist/config/config-validator.js +604 -0
  18. package/dist/config/config-validator.js.map +1 -0
  19. package/dist/config/test-config-loader.d.ts +10 -0
  20. package/dist/config/test-config-loader.d.ts.map +1 -0
  21. package/dist/config/test-config-loader.js +135 -0
  22. package/dist/config/test-config-loader.js.map +1 -0
  23. package/dist/config/test-enhanced-layer-service.d.ts +7 -0
  24. package/dist/config/test-enhanced-layer-service.d.ts.map +1 -0
  25. package/dist/config/test-enhanced-layer-service.js +104 -0
  26. package/dist/config/test-enhanced-layer-service.js.map +1 -0
  27. package/dist/config/test-git-layer.d.ts +7 -0
  28. package/dist/config/test-git-layer.d.ts.map +1 -0
  29. package/dist/config/test-git-layer.js +68 -0
  30. package/dist/config/test-git-layer.js.map +1 -0
  31. package/dist/dev/hot-reload.d.ts +91 -0
  32. package/dist/dev/hot-reload.d.ts.map +1 -0
  33. package/dist/dev/hot-reload.js +358 -0
  34. package/dist/dev/hot-reload.js.map +1 -0
  35. package/dist/index.d.ts +57 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +673 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/layers/base-layer.d.ts +83 -0
  40. package/dist/layers/base-layer.d.ts.map +1 -0
  41. package/dist/layers/base-layer.js +166 -0
  42. package/dist/layers/base-layer.js.map +1 -0
  43. package/dist/layers/embedded-layer.d.ts +53 -0
  44. package/dist/layers/embedded-layer.d.ts.map +1 -0
  45. package/dist/layers/embedded-layer.js +238 -0
  46. package/dist/layers/embedded-layer.js.map +1 -0
  47. package/dist/layers/git-layer.d.ts +54 -0
  48. package/dist/layers/git-layer.d.ts.map +1 -0
  49. package/dist/layers/git-layer.js +369 -0
  50. package/dist/layers/git-layer.js.map +1 -0
  51. package/dist/layers/index.d.ts +12 -0
  52. package/dist/layers/index.d.ts.map +1 -0
  53. package/dist/layers/index.js +11 -0
  54. package/dist/layers/index.js.map +1 -0
  55. package/dist/layers/layer-service.d.ts +129 -0
  56. package/dist/layers/layer-service.d.ts.map +1 -0
  57. package/dist/layers/layer-service.js +570 -0
  58. package/dist/layers/layer-service.js.map +1 -0
  59. package/dist/layers/project-layer.d.ts +50 -0
  60. package/dist/layers/project-layer.d.ts.map +1 -0
  61. package/dist/layers/project-layer.js +256 -0
  62. package/dist/layers/project-layer.js.map +1 -0
  63. package/dist/monitoring/production-monitor.d.ts +148 -0
  64. package/dist/monitoring/production-monitor.d.ts.map +1 -0
  65. package/dist/monitoring/production-monitor.js +463 -0
  66. package/dist/monitoring/production-monitor.js.map +1 -0
  67. package/dist/performance/performance-monitor.d.ts +99 -0
  68. package/dist/performance/performance-monitor.d.ts.map +1 -0
  69. package/dist/performance/performance-monitor.js +253 -0
  70. package/dist/performance/performance-monitor.js.map +1 -0
  71. package/dist/sdk/bc-code-intel-client.d.ts +175 -0
  72. package/dist/sdk/bc-code-intel-client.d.ts.map +1 -0
  73. package/dist/sdk/bc-code-intel-client.js +380 -0
  74. package/dist/sdk/bc-code-intel-client.js.map +1 -0
  75. package/dist/search/intelligent-search.d.ts +97 -0
  76. package/dist/search/intelligent-search.d.ts.map +1 -0
  77. package/dist/search/intelligent-search.js +355 -0
  78. package/dist/search/intelligent-search.js.map +1 -0
  79. package/dist/security/access-control.d.ts +110 -0
  80. package/dist/security/access-control.d.ts.map +1 -0
  81. package/dist/security/access-control.js +353 -0
  82. package/dist/security/access-control.js.map +1 -0
  83. package/dist/services/code-analysis-service.d.ts +72 -0
  84. package/dist/services/code-analysis-service.d.ts.map +1 -0
  85. package/dist/services/code-analysis-service.js +811 -0
  86. package/dist/services/code-analysis-service.js.map +1 -0
  87. package/dist/services/knowledge-service.d.ts +91 -0
  88. package/dist/services/knowledge-service.d.ts.map +1 -0
  89. package/dist/services/knowledge-service.js +370 -0
  90. package/dist/services/knowledge-service.js.map +1 -0
  91. package/dist/services/methodology-service.d.ts +91 -0
  92. package/dist/services/methodology-service.d.ts.map +1 -0
  93. package/dist/services/methodology-service.js +408 -0
  94. package/dist/services/methodology-service.js.map +1 -0
  95. package/dist/services/workflow-service.d.ts +132 -0
  96. package/dist/services/workflow-service.d.ts.map +1 -0
  97. package/dist/services/workflow-service.js +277 -0
  98. package/dist/services/workflow-service.js.map +1 -0
  99. package/dist/setup/post-install.d.ts +12 -0
  100. package/dist/setup/post-install.d.ts.map +1 -0
  101. package/dist/setup/post-install.js +81 -0
  102. package/dist/setup/post-install.js.map +1 -0
  103. package/dist/streamlined-handlers.d.ts +51 -0
  104. package/dist/streamlined-handlers.d.ts.map +1 -0
  105. package/dist/streamlined-handlers.js +287 -0
  106. package/dist/streamlined-handlers.js.map +1 -0
  107. package/dist/streamlined-tools.d.ts +316 -0
  108. package/dist/streamlined-tools.d.ts.map +1 -0
  109. package/dist/streamlined-tools.js +189 -0
  110. package/dist/streamlined-tools.js.map +1 -0
  111. package/dist/test-enhanced-mcp-server.d.ts +7 -0
  112. package/dist/test-enhanced-mcp-server.d.ts.map +1 -0
  113. package/dist/test-enhanced-mcp-server.js +177 -0
  114. package/dist/test-enhanced-mcp-server.js.map +1 -0
  115. package/dist/types/bc-knowledge.d.ts +294 -0
  116. package/dist/types/bc-knowledge.d.ts.map +1 -0
  117. package/dist/types/bc-knowledge.js +44 -0
  118. package/dist/types/bc-knowledge.js.map +1 -0
  119. package/dist/types/config-types.d.ts +180 -0
  120. package/dist/types/config-types.d.ts.map +1 -0
  121. package/dist/types/config-types.js +104 -0
  122. package/dist/types/config-types.js.map +1 -0
  123. package/dist/types/index.d.ts +5 -0
  124. package/dist/types/index.d.ts.map +1 -0
  125. package/dist/types/index.js +7 -0
  126. package/dist/types/index.js.map +1 -0
  127. package/dist/types/layer-types.d.ts +171 -0
  128. package/dist/types/layer-types.d.ts.map +1 -0
  129. package/dist/types/layer-types.js +27 -0
  130. package/dist/types/layer-types.js.map +1 -0
  131. package/dist/types/persona-types.d.ts +77 -0
  132. package/dist/types/persona-types.d.ts.map +1 -0
  133. package/dist/types/persona-types.js +341 -0
  134. package/dist/types/persona-types.js.map +1 -0
  135. package/dist/utils/path-utils.d.ts +5 -0
  136. package/dist/utils/path-utils.d.ts.map +1 -0
  137. package/dist/utils/path-utils.js +14 -0
  138. package/dist/utils/path-utils.js.map +1 -0
  139. package/dist/workflows/domain-workflows.d.ts +8 -0
  140. package/dist/workflows/domain-workflows.d.ts.map +1 -0
  141. package/dist/workflows/domain-workflows.js +360 -0
  142. package/dist/workflows/domain-workflows.js.map +1 -0
  143. package/embedded-knowledge/.github/ISSUE_TEMPLATE/bug-report.md +24 -0
  144. package/embedded-knowledge/.github/ISSUE_TEMPLATE/content-improvement.md +24 -0
  145. package/embedded-knowledge/.github/ISSUE_TEMPLATE/knowledge-request.md +30 -0
  146. package/embedded-knowledge/AGENTS.md +69 -0
  147. package/embedded-knowledge/CONTRIBUTING.md +58 -0
  148. package/embedded-knowledge/LICENSE +21 -0
  149. package/embedded-knowledge/README.md +15 -0
  150. package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +90 -0
  151. package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +113 -0
  152. package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +101 -0
  153. package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +87 -0
  154. package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +155 -0
  155. package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +138 -0
  156. package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +79 -0
  157. package/embedded-knowledge/domains/alex-architect/samples/api-delegate-operation.md +280 -0
  158. package/embedded-knowledge/domains/alex-architect/samples/api-fieldset-registration.md +200 -0
  159. package/embedded-knowledge/domains/alex-architect/samples/api-interface-design.md +565 -0
  160. package/embedded-knowledge/domains/alex-architect/samples/api-page-implementation.md +665 -0
  161. package/embedded-knowledge/domains/alex-architect/samples/complex-facade-patterns.md +325 -0
  162. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern-al.md +696 -0
  163. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern.md +320 -0
  164. package/embedded-knowledge/domains/alex-architect/samples/subscriber-organization.md +102 -0
  165. package/embedded-knowledge/domains/alex-architect/samples/systemid-integration.md +433 -0
  166. package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +66 -0
  167. package/embedded-knowledge/domains/alex-architect/systemid-integration.md +115 -0
  168. package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +295 -0
  169. package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +86 -0
  170. package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +96 -0
  171. package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +70 -0
  172. package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +84 -0
  173. package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +93 -0
  174. package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +73 -0
  175. package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +78 -0
  176. package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +79 -0
  177. package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +87 -0
  178. package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +209 -0
  179. package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +246 -0
  180. package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +107 -0
  181. package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +105 -0
  182. package/embedded-knowledge/domains/dean-debug/samples/bc24-no-series-conversion.md +186 -0
  183. package/embedded-knowledge/domains/dean-debug/samples/case-performance-optimization.md +60 -0
  184. package/embedded-knowledge/domains/dean-debug/samples/compound-statements-debugging.md +139 -0
  185. package/embedded-knowledge/domains/dean-debug/samples/custom-dimensions.md +190 -0
  186. package/embedded-knowledge/domains/dean-debug/samples/custom-telemetry.md +516 -0
  187. package/embedded-knowledge/domains/dean-debug/samples/deleteall-performance.md +298 -0
  188. package/embedded-knowledge/domains/dean-debug/samples/error-correlation.md +324 -0
  189. package/embedded-knowledge/domains/dean-debug/samples/extension-isolation.md +344 -0
  190. package/embedded-knowledge/domains/dean-debug/samples/logmessage-methods.md +137 -0
  191. package/embedded-knowledge/domains/dean-debug/samples/maintainsiftindex-examples.md +340 -0
  192. package/embedded-knowledge/domains/dean-debug/samples/no-series-implementation.md +810 -0
  193. package/embedded-knowledge/domains/dean-debug/samples/no-series-module-bc24.md +86 -0
  194. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation-module-bc24.md +110 -0
  195. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation.md +758 -0
  196. package/embedded-knowledge/domains/dean-debug/samples/odata-query-optimization.md +665 -0
  197. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-case.md +316 -0
  198. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-filters.md +223 -0
  199. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-filter-exclusion.md +149 -0
  200. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-optimization.md +412 -0
  201. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-performance.md +211 -0
  202. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-primary-key.md +155 -0
  203. package/embedded-knowledge/domains/dean-debug/samples/sift-technology-fundamentals.md +475 -0
  204. package/embedded-knowledge/domains/dean-debug/samples/singleinstance-subscribers.md +238 -0
  205. package/embedded-knowledge/domains/dean-debug/samples/table-event-batching.md +97 -0
  206. package/embedded-knowledge/domains/dean-debug/samples/table-key-requirements.md +666 -0
  207. package/embedded-knowledge/domains/dean-debug/samples/telemetry-performance.md +319 -0
  208. package/embedded-knowledge/domains/dean-debug/samples/verbosity-strategy.md +236 -0
  209. package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +59 -0
  210. package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +67 -0
  211. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +70 -0
  212. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +90 -0
  213. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +87 -0
  214. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +70 -0
  215. package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +74 -0
  216. package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +81 -0
  217. package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +56 -0
  218. package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +66 -0
  219. package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +79 -0
  220. package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +78 -0
  221. package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +83 -0
  222. package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +76 -0
  223. package/embedded-knowledge/domains/dean-debug/testfield-performance.md +104 -0
  224. package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +145 -0
  225. package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +104 -0
  226. package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +114 -0
  227. package/embedded-knowledge/domains/eva-errors/samples/fielderror-default-messages.md +356 -0
  228. package/embedded-knowledge/domains/eva-errors/samples/fielderror-syntax.md +256 -0
  229. package/embedded-knowledge/domains/eva-errors/samples/table-safety-validation-patterns.md +101 -0
  230. package/embedded-knowledge/domains/eva-errors/samples/testfield-error-handling.md +108 -0
  231. package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +80 -0
  232. package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +98 -0
  233. package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +123 -0
  234. package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +96 -0
  235. package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +115 -0
  236. package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +115 -0
  237. package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +114 -0
  238. package/embedded-knowledge/domains/jordan-bridge/samples/al-event-subscriber-architecture.md +395 -0
  239. package/embedded-knowledge/domains/jordan-bridge/samples/api-error-responses.md +479 -0
  240. package/embedded-knowledge/domains/jordan-bridge/samples/api-field-control.md +548 -0
  241. package/embedded-knowledge/domains/jordan-bridge/samples/api-url-naming.md +287 -0
  242. package/embedded-knowledge/domains/jordan-bridge/samples/business-process-templates.md +434 -0
  243. package/embedded-knowledge/domains/jordan-bridge/samples/etag-implementation.md +508 -0
  244. package/embedded-knowledge/domains/jordan-bridge/samples/task-scheduler-pattern.md +615 -0
  245. package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +144 -0
  246. package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +96 -0
  247. package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +124 -0
  248. package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +84 -0
  249. package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +75 -0
  250. package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +96 -0
  251. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-multiple-conditions.md +385 -0
  252. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-syntax-structure.md +72 -0
  253. package/embedded-knowledge/domains/maya-mentor/samples/fielderror-syntax-usage.md +48 -0
  254. package/embedded-knowledge/domains/maya-mentor/samples/testfield-basic-syntax.md +49 -0
  255. package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +67 -0
  256. package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +119 -0
  257. package/embedded-knowledge/domains/quinn-tester/rule-execution.md +123 -0
  258. package/embedded-knowledge/domains/quinn-tester/samples/case-error-handling.md +64 -0
  259. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-message-construction.md +60 -0
  260. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-validation-patterns.md +83 -0
  261. package/embedded-knowledge/domains/quinn-tester/samples/rule-execution.md +716 -0
  262. package/embedded-knowledge/domains/quinn-tester/samples/table-safety-validation-patterns.md +101 -0
  263. package/embedded-knowledge/domains/quinn-tester/samples/temporary-table-operation-validation.md +91 -0
  264. package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +79 -0
  265. package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +79 -0
  266. package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +89 -0
  267. package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +76 -0
  268. package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +76 -0
  269. package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +76 -0
  270. package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +81 -0
  271. package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +76 -0
  272. package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +75 -0
  273. package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +76 -0
  274. package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +76 -0
  275. package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +76 -0
  276. package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +96 -0
  277. package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +76 -0
  278. package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +86 -0
  279. package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +90 -0
  280. package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +82 -0
  281. package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +78 -0
  282. package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +76 -0
  283. package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +78 -0
  284. package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +100 -0
  285. package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +115 -0
  286. package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +124 -0
  287. package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +110 -0
  288. package/embedded-knowledge/domains/roger-reviewer/samples/al-begin-end-blocks.md +438 -0
  289. package/embedded-knowledge/domains/roger-reviewer/samples/al-binary-operator-spacing.md +255 -0
  290. package/embedded-knowledge/domains/roger-reviewer/samples/al-comment-spacing-standards.md +209 -0
  291. package/embedded-knowledge/domains/roger-reviewer/samples/al-keyword-indentation-rules.md +218 -0
  292. package/embedded-knowledge/domains/roger-reviewer/samples/al-line-start-keyword-positioning.md +218 -0
  293. package/embedded-knowledge/domains/roger-reviewer/samples/al-separate-if-else-formatting.md +280 -0
  294. package/embedded-knowledge/domains/roger-reviewer/samples/al-statement-per-line-rule.md +188 -0
  295. package/embedded-knowledge/domains/roger-reviewer/samples/al-unnecessary-else-elimination.md +245 -0
  296. package/embedded-knowledge/domains/roger-reviewer/samples/al-variable-declaration-order.md +244 -0
  297. package/embedded-knowledge/domains/roger-reviewer/samples/begin-end-positioning.md +278 -0
  298. package/embedded-knowledge/domains/roger-reviewer/samples/boolean-simplification-examples.md +484 -0
  299. package/embedded-knowledge/domains/roger-reviewer/samples/case-error-handling.md +64 -0
  300. package/embedded-knowledge/domains/roger-reviewer/samples/compound-statement-readability.md +107 -0
  301. package/embedded-knowledge/domains/roger-reviewer/samples/lonely-repeat-examples.md +280 -0
  302. package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +75 -0
  303. package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +67 -0
  304. package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +76 -0
  305. package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +98 -0
  306. package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +128 -0
  307. package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +75 -0
  308. package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +95 -0
  309. package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +141 -0
  310. package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +91 -0
  311. package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +118 -0
  312. package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +111 -0
  313. package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +113 -0
  314. package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +127 -0
  315. package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +141 -0
  316. package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +66 -0
  317. package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +96 -0
  318. package/embedded-knowledge/domains/sam-coder/samples/al-blank-line-organization.md +161 -0
  319. package/embedded-knowledge/domains/sam-coder/samples/al-case-action-formatting.md +177 -0
  320. package/embedded-knowledge/domains/sam-coder/samples/al-lonely-repeat-pattern.md +239 -0
  321. package/embedded-knowledge/domains/sam-coder/samples/al-named-parameter-pattern.md +346 -0
  322. package/embedded-knowledge/domains/sam-coder/samples/al-record-find-early-exit.md +298 -0
  323. package/embedded-knowledge/domains/sam-coder/samples/command-queue-pattern.md +677 -0
  324. package/embedded-knowledge/domains/sam-coder/samples/deleteall-alternative-implementation.md +117 -0
  325. package/embedded-knowledge/domains/sam-coder/samples/deleteall-triggers.md +75 -0
  326. package/embedded-knowledge/domains/sam-coder/samples/deleteall-usage.md +169 -0
  327. package/embedded-knowledge/domains/sam-coder/samples/event-bridge-pattern.md +399 -0
  328. package/embedded-knowledge/domains/sam-coder/samples/event-payload-design.md +356 -0
  329. package/embedded-knowledge/domains/sam-coder/samples/generic-method-patterns.md +889 -0
  330. package/embedded-knowledge/domains/sam-coder/samples/manual-binding.md +84 -0
  331. package/embedded-knowledge/domains/sam-coder/samples/nested-compound-best-practices.md +127 -0
  332. package/embedded-knowledge/domains/sam-coder/samples/single-to-compound-conversion.md +89 -0
  333. package/embedded-knowledge/domains/sam-coder/samples/template-method-pattern.md +516 -0
  334. package/embedded-knowledge/domains/sam-coder/samples/testfield-patterns.md +61 -0
  335. package/embedded-knowledge/domains/sam-coder/samples/type-safe-operations.md +427 -0
  336. package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +122 -0
  337. package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +96 -0
  338. package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +101 -0
  339. package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +149 -0
  340. package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +107 -0
  341. package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +95 -0
  342. package/embedded-knowledge/domains/seth-security/api-permission-model.md +115 -0
  343. package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +78 -0
  344. package/embedded-knowledge/domains/seth-security/samples/al-temporary-table-safety.md +373 -0
  345. package/embedded-knowledge/domains/seth-security/samples/api-permission-model.md +308 -0
  346. package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +79 -0
  347. package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +78 -0
  348. package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +81 -0
  349. package/embedded-knowledge/indexes/bc-version-matrix.json +188 -0
  350. package/embedded-knowledge/indexes/domain-catalog.json +106 -0
  351. package/embedded-knowledge/indexes/tags/abbreviations.json +1 -0
  352. package/embedded-knowledge/indexes/tags/abstraction.json +1 -0
  353. package/embedded-knowledge/indexes/tags/access-control.json +1 -0
  354. package/embedded-knowledge/indexes/tags/accessibility.json +1 -0
  355. package/embedded-knowledge/indexes/tags/actions.json +1 -0
  356. package/embedded-knowledge/indexes/tags/advanced-patterns.json +1 -0
  357. package/embedded-knowledge/indexes/tags/advanced.json +1 -0
  358. package/embedded-knowledge/indexes/tags/al-extension.json +1 -0
  359. package/embedded-knowledge/indexes/tags/al-generics.json +1 -0
  360. package/embedded-knowledge/indexes/tags/al-objects.json +1 -0
  361. package/embedded-knowledge/indexes/tags/al-syntax.json +1 -0
  362. package/embedded-knowledge/indexes/tags/algorithm-structure.json +1 -0
  363. package/embedded-knowledge/indexes/tags/alternatives.json +1 -0
  364. package/embedded-knowledge/indexes/tags/analytics.json +1 -0
  365. package/embedded-knowledge/indexes/tags/api-delegates.json +1 -0
  366. package/embedded-knowledge/indexes/tags/api-design.json +1 -0
  367. package/embedded-knowledge/indexes/tags/api-documentation.json +1 -0
  368. package/embedded-knowledge/indexes/tags/api-endpoints.json +1 -0
  369. package/embedded-knowledge/indexes/tags/api-extensibility.json +1 -0
  370. package/embedded-knowledge/indexes/tags/api-fieldsets.json +1 -0
  371. package/embedded-knowledge/indexes/tags/api-integration.json +1 -0
  372. package/embedded-knowledge/indexes/tags/api-interfaces.json +1 -0
  373. package/embedded-knowledge/indexes/tags/api-optimization.json +1 -0
  374. package/embedded-knowledge/indexes/tags/api-pages.json +1 -0
  375. package/embedded-knowledge/indexes/tags/api-patterns.json +1 -0
  376. package/embedded-knowledge/indexes/tags/api-permissions.json +1 -0
  377. package/embedded-knowledge/indexes/tags/api-responses.json +1 -0
  378. package/embedded-knowledge/indexes/tags/api-simplification.json +1 -0
  379. package/embedded-knowledge/indexes/tags/api.json +1 -0
  380. package/embedded-knowledge/indexes/tags/architecture.json +1 -0
  381. package/embedded-knowledge/indexes/tags/async-patterns.json +1 -0
  382. package/embedded-knowledge/indexes/tags/async-processing.json +1 -0
  383. package/embedded-knowledge/indexes/tags/automatic-registration.json +1 -0
  384. package/embedded-knowledge/indexes/tags/batch-operations.json +1 -0
  385. package/embedded-knowledge/indexes/tags/bc24-migration.json +1 -0
  386. package/embedded-knowledge/indexes/tags/begin-blocks.json +1 -0
  387. package/embedded-knowledge/indexes/tags/begin-end.json +1 -0
  388. package/embedded-knowledge/indexes/tags/behavioral-patterns.json +1 -0
  389. package/embedded-knowledge/indexes/tags/best-practices.json +1 -0
  390. package/embedded-knowledge/indexes/tags/binding.json +1 -0
  391. package/embedded-knowledge/indexes/tags/block-structure.json +1 -0
  392. package/embedded-knowledge/indexes/tags/blocks.json +1 -0
  393. package/embedded-knowledge/indexes/tags/boolean-expressions.json +1 -0
  394. package/embedded-knowledge/indexes/tags/branching.json +1 -0
  395. package/embedded-knowledge/indexes/tags/breaking-changes.json +1 -0
  396. package/embedded-knowledge/indexes/tags/breakpoints.json +1 -0
  397. package/embedded-knowledge/indexes/tags/business-foundation.json +1 -0
  398. package/embedded-knowledge/indexes/tags/business-infrastructure.json +1 -0
  399. package/embedded-knowledge/indexes/tags/business-process.json +1 -0
  400. package/embedded-knowledge/indexes/tags/business-rules.json +1 -0
  401. package/embedded-knowledge/indexes/tags/caching.json +1 -0
  402. package/embedded-knowledge/indexes/tags/case-statements.json +1 -0
  403. package/embedded-knowledge/indexes/tags/case.json +1 -0
  404. package/embedded-knowledge/indexes/tags/code-analysis.json +1 -0
  405. package/embedded-knowledge/indexes/tags/code-clarity.json +1 -0
  406. package/embedded-knowledge/indexes/tags/code-comprehension.json +1 -0
  407. package/embedded-knowledge/indexes/tags/code-conversion.json +1 -0
  408. package/embedded-knowledge/indexes/tags/code-formatting.json +1 -0
  409. package/embedded-knowledge/indexes/tags/code-organization.json +1 -0
  410. package/embedded-knowledge/indexes/tags/code-patterns.json +1 -0
  411. package/embedded-knowledge/indexes/tags/code-quality.json +1 -0
  412. package/embedded-knowledge/indexes/tags/code-reuse.json +1 -0
  413. package/embedded-knowledge/indexes/tags/code-simplification.json +1 -0
  414. package/embedded-knowledge/indexes/tags/code-standards.json +1 -0
  415. package/embedded-knowledge/indexes/tags/code-structure.json +1 -0
  416. package/embedded-knowledge/indexes/tags/code-style.json +1 -0
  417. package/embedded-knowledge/indexes/tags/codeunit-design.json +1 -0
  418. package/embedded-knowledge/indexes/tags/command-queue.json +1 -0
  419. package/embedded-knowledge/indexes/tags/comments.json +1 -0
  420. package/embedded-knowledge/indexes/tags/compile-time-validation.json +1 -0
  421. package/embedded-knowledge/indexes/tags/complex-facade.json +1 -0
  422. package/embedded-knowledge/indexes/tags/complexity-hiding.json +1 -0
  423. package/embedded-knowledge/indexes/tags/complexity-management.json +1 -0
  424. package/embedded-knowledge/indexes/tags/compound-statements.json +1 -0
  425. package/embedded-knowledge/indexes/tags/concurrency.json +1 -0
  426. package/embedded-knowledge/indexes/tags/conditional-logic.json +1 -0
  427. package/embedded-knowledge/indexes/tags/conditional.json +1 -0
  428. package/embedded-knowledge/indexes/tags/conflict-resolution.json +1 -0
  429. package/embedded-knowledge/indexes/tags/consistency.json +1 -0
  430. package/embedded-knowledge/indexes/tags/contract-design.json +1 -0
  431. package/embedded-knowledge/indexes/tags/control-flow.json +1 -0
  432. package/embedded-knowledge/indexes/tags/conversion-guide.json +1 -0
  433. package/embedded-knowledge/indexes/tags/correlation.json +1 -0
  434. package/embedded-knowledge/indexes/tags/custom-messages.json +1 -0
  435. package/embedded-knowledge/indexes/tags/data-access.json +1 -0
  436. package/embedded-knowledge/indexes/tags/data-exposure.json +1 -0
  437. package/embedded-knowledge/indexes/tags/data-integrity.json +1 -0
  438. package/embedded-knowledge/indexes/tags/data-loading.json +1 -0
  439. package/embedded-knowledge/indexes/tags/data-manipulation.json +1 -0
  440. package/embedded-knowledge/indexes/tags/data-modeling.json +1 -0
  441. package/embedded-knowledge/indexes/tags/data-patterns.json +1 -0
  442. package/embedded-knowledge/indexes/tags/data-protection.json +1 -0
  443. package/embedded-knowledge/indexes/tags/data-validation.json +1 -0
  444. package/embedded-knowledge/indexes/tags/database.json +1 -0
  445. package/embedded-knowledge/indexes/tags/debugging.json +1 -0
  446. package/embedded-knowledge/indexes/tags/decision-making.json +1 -0
  447. package/embedded-knowledge/indexes/tags/declaration.json +1 -0
  448. package/embedded-knowledge/indexes/tags/default-messages.json +1 -0
  449. package/embedded-knowledge/indexes/tags/defensive-programming.json +1 -0
  450. package/embedded-knowledge/indexes/tags/deleteall.json +1 -0
  451. package/embedded-knowledge/indexes/tags/dependencies.json +1 -0
  452. package/embedded-knowledge/indexes/tags/deployment.json +1 -0
  453. package/embedded-knowledge/indexes/tags/developer-productivity.json +1 -0
  454. package/embedded-knowledge/indexes/tags/development-workflow.json +1 -0
  455. package/embedded-knowledge/indexes/tags/diagnostics.json +1 -0
  456. package/embedded-knowledge/indexes/tags/dimensions.json +1 -0
  457. package/embedded-knowledge/indexes/tags/documentation.json +1 -0
  458. package/embedded-knowledge/indexes/tags/early-exit.json +1 -0
  459. package/embedded-knowledge/indexes/tags/else-clauses.json +1 -0
  460. package/embedded-knowledge/indexes/tags/end-statements.json +1 -0
  461. package/embedded-knowledge/indexes/tags/enterprise-patterns.json +1 -0
  462. package/embedded-knowledge/indexes/tags/entity-relationships.json +1 -0
  463. package/embedded-knowledge/indexes/tags/error-handling.json +1 -0
  464. package/embedded-knowledge/indexes/tags/error-messages.json +1 -0
  465. package/embedded-knowledge/indexes/tags/error-prevention.json +1 -0
  466. package/embedded-knowledge/indexes/tags/error-text.json +1 -0
  467. package/embedded-knowledge/indexes/tags/etag.json +1 -0
  468. package/embedded-knowledge/indexes/tags/event-bridge.json +1 -0
  469. package/embedded-knowledge/indexes/tags/event-payload.json +1 -0
  470. package/embedded-knowledge/indexes/tags/event-routing.json +1 -0
  471. package/embedded-knowledge/indexes/tags/events.json +1 -0
  472. package/embedded-knowledge/indexes/tags/execution-flow.json +1 -0
  473. package/embedded-knowledge/indexes/tags/expressions.json +1 -0
  474. package/embedded-knowledge/indexes/tags/extensibility.json +1 -0
  475. package/embedded-knowledge/indexes/tags/extensions.json +1 -0
  476. package/embedded-knowledge/indexes/tags/facade-composition.json +1 -0
  477. package/embedded-knowledge/indexes/tags/facade-pattern.json +1 -0
  478. package/embedded-knowledge/indexes/tags/field-control.json +1 -0
  479. package/embedded-knowledge/indexes/tags/field-exclusion.json +1 -0
  480. package/embedded-knowledge/indexes/tags/field-registration.json +1 -0
  481. package/embedded-knowledge/indexes/tags/field-state.json +1 -0
  482. package/embedded-knowledge/indexes/tags/field-validation.json +1 -0
  483. package/embedded-knowledge/indexes/tags/fielderror.json +1 -0
  484. package/embedded-knowledge/indexes/tags/fields.json +1 -0
  485. package/embedded-knowledge/indexes/tags/filtering.json +1 -0
  486. package/embedded-knowledge/indexes/tags/filters.json +1 -0
  487. package/embedded-knowledge/indexes/tags/formatting.json +1 -0
  488. package/embedded-knowledge/indexes/tags/generic-methods.json +1 -0
  489. package/embedded-knowledge/indexes/tags/http-status.json +1 -0
  490. package/embedded-knowledge/indexes/tags/if-statements.json +1 -0
  491. package/embedded-knowledge/indexes/tags/implementation.json +1 -0
  492. package/embedded-knowledge/indexes/tags/indentation.json +1 -0
  493. package/embedded-knowledge/indexes/tags/index-summary.json +277 -0
  494. package/embedded-knowledge/indexes/tags/indexing.json +1 -0
  495. package/embedded-knowledge/indexes/tags/inheritance.json +1 -0
  496. package/embedded-knowledge/indexes/tags/integration.json +1 -0
  497. package/embedded-knowledge/indexes/tags/integrity-checking.json +1 -0
  498. package/embedded-knowledge/indexes/tags/intellisense.json +1 -0
  499. package/embedded-knowledge/indexes/tags/interface-design.json +1 -0
  500. package/embedded-knowledge/indexes/tags/interface-segregation.json +1 -0
  501. package/embedded-knowledge/indexes/tags/isolation.json +1 -0
  502. package/embedded-knowledge/indexes/tags/job-processing.json +1 -0
  503. package/embedded-knowledge/indexes/tags/keyboard-navigation.json +1 -0
  504. package/embedded-knowledge/indexes/tags/keywords.json +1 -0
  505. package/embedded-knowledge/indexes/tags/legacy-modernization.json +1 -0
  506. package/embedded-knowledge/indexes/tags/line-breaks.json +1 -0
  507. package/embedded-knowledge/indexes/tags/line-organization.json +1 -0
  508. package/embedded-knowledge/indexes/tags/line-positioning.json +1 -0
  509. package/embedded-knowledge/indexes/tags/localization.json +1 -0
  510. package/embedded-knowledge/indexes/tags/logging.json +1 -0
  511. package/embedded-knowledge/indexes/tags/loose-coupling.json +1 -0
  512. package/embedded-knowledge/indexes/tags/maintainability.json +1 -0
  513. package/embedded-knowledge/indexes/tags/memory-management.json +1 -0
  514. package/embedded-knowledge/indexes/tags/memory-optimization.json +1 -0
  515. package/embedded-knowledge/indexes/tags/memory.json +1 -0
  516. package/embedded-knowledge/indexes/tags/message-design.json +1 -0
  517. package/embedded-knowledge/indexes/tags/message-formatting.json +1 -0
  518. package/embedded-knowledge/indexes/tags/message-patterns.json +1 -0
  519. package/embedded-knowledge/indexes/tags/metadata-driven.json +1 -0
  520. package/embedded-knowledge/indexes/tags/method-comparison.json +1 -0
  521. package/embedded-knowledge/indexes/tags/module-architecture.json +1 -0
  522. package/embedded-knowledge/indexes/tags/module-validation.json +1 -0
  523. package/embedded-knowledge/indexes/tags/monitoring.json +1 -0
  524. package/embedded-knowledge/indexes/tags/multi-layer-facade.json +1 -0
  525. package/embedded-knowledge/indexes/tags/multi-tenancy.json +1 -0
  526. package/embedded-knowledge/indexes/tags/multiple-values.json +1 -0
  527. package/embedded-knowledge/indexes/tags/naming-conventions.json +1 -0
  528. package/embedded-knowledge/indexes/tags/naming.json +1 -0
  529. package/embedded-knowledge/indexes/tags/navigation.json +1 -0
  530. package/embedded-knowledge/indexes/tags/nested-statements.json +1 -0
  531. package/embedded-knowledge/indexes/tags/no-series-conversion.json +1 -0
  532. package/embedded-knowledge/indexes/tags/no-series-validation.json +1 -0
  533. package/embedded-knowledge/indexes/tags/no-series.json +1 -0
  534. package/embedded-knowledge/indexes/tags/number-generation.json +1 -0
  535. package/embedded-knowledge/indexes/tags/object-documentation.json +1 -0
  536. package/embedded-knowledge/indexes/tags/odata.json +1 -0
  537. package/embedded-knowledge/indexes/tags/ondelete.json +1 -0
  538. package/embedded-knowledge/indexes/tags/onvalidate.json +1 -0
  539. package/embedded-knowledge/indexes/tags/operation-delegation.json +1 -0
  540. package/embedded-knowledge/indexes/tags/operation-safety.json +1 -0
  541. package/embedded-knowledge/indexes/tags/operators.json +1 -0
  542. package/embedded-knowledge/indexes/tags/optimization.json +1 -0
  543. package/embedded-knowledge/indexes/tags/order.json +1 -0
  544. package/embedded-knowledge/indexes/tags/organization.json +1 -0
  545. package/embedded-knowledge/indexes/tags/pages.json +1 -0
  546. package/embedded-knowledge/indexes/tags/parameters.json +1 -0
  547. package/embedded-knowledge/indexes/tags/patterns.json +1 -0
  548. package/embedded-knowledge/indexes/tags/performance-optimization.json +1 -0
  549. package/embedded-knowledge/indexes/tags/performance.json +1 -0
  550. package/embedded-knowledge/indexes/tags/placement.json +1 -0
  551. package/embedded-knowledge/indexes/tags/posting-codeunits.json +1 -0
  552. package/embedded-knowledge/indexes/tags/posting.json +1 -0
  553. package/embedded-knowledge/indexes/tags/preconditions.json +1 -0
  554. package/embedded-knowledge/indexes/tags/primary-key.json +1 -0
  555. package/embedded-knowledge/indexes/tags/privacy.json +1 -0
  556. package/embedded-knowledge/indexes/tags/process-automation.json +1 -0
  557. package/embedded-knowledge/indexes/tags/production.json +1 -0
  558. package/embedded-knowledge/indexes/tags/productivity.json +1 -0
  559. package/embedded-knowledge/indexes/tags/query-performance.json +1 -0
  560. package/embedded-knowledge/indexes/tags/queue-management.json +1 -0
  561. package/embedded-knowledge/indexes/tags/ranges.json +1 -0
  562. package/embedded-knowledge/indexes/tags/readability.json +1 -0
  563. package/embedded-knowledge/indexes/tags/record-access.json +1 -0
  564. package/embedded-knowledge/indexes/tags/record-methods.json +1 -0
  565. package/embedded-knowledge/indexes/tags/refactoring.json +1 -0
  566. package/embedded-knowledge/indexes/tags/reference.json +1 -0
  567. package/embedded-knowledge/indexes/tags/repeat-loops.json +1 -0
  568. package/embedded-knowledge/indexes/tags/repeat-statement.json +1 -0
  569. package/embedded-knowledge/indexes/tags/runtime-errors.json +1 -0
  570. package/embedded-knowledge/indexes/tags/runtime.json +1 -0
  571. package/embedded-knowledge/indexes/tags/safeguards.json +1 -0
  572. package/embedded-knowledge/indexes/tags/security.json +1 -0
  573. package/embedded-knowledge/indexes/tags/sequence-management.json +1 -0
  574. package/embedded-knowledge/indexes/tags/serialization.json +1 -0
  575. package/embedded-knowledge/indexes/tags/session-logmessage.json +1 -0
  576. package/embedded-knowledge/indexes/tags/session.json +1 -0
  577. package/embedded-knowledge/indexes/tags/setloadfields.json +1 -0
  578. package/embedded-knowledge/indexes/tags/shortcuts.json +1 -0
  579. package/embedded-knowledge/indexes/tags/sift.json +1 -0
  580. package/embedded-knowledge/indexes/tags/singleinstance.json +1 -0
  581. package/embedded-knowledge/indexes/tags/spacing.json +1 -0
  582. package/embedded-knowledge/indexes/tags/sql-translation.json +1 -0
  583. package/embedded-knowledge/indexes/tags/standards.json +1 -0
  584. package/embedded-knowledge/indexes/tags/statements.json +1 -0
  585. package/embedded-knowledge/indexes/tags/streaming.json +1 -0
  586. package/embedded-knowledge/indexes/tags/strong-typing.json +1 -0
  587. package/embedded-knowledge/indexes/tags/structural-patterns.json +1 -0
  588. package/embedded-knowledge/indexes/tags/structure.json +1 -0
  589. package/embedded-knowledge/indexes/tags/subscribers.json +1 -0
  590. package/embedded-knowledge/indexes/tags/switch.json +1 -0
  591. package/embedded-knowledge/indexes/tags/symbol-search.json +1 -0
  592. package/embedded-knowledge/indexes/tags/syntax.json +1 -0
  593. package/embedded-knowledge/indexes/tags/systemid.json +1 -0
  594. package/embedded-knowledge/indexes/tags/table-configuration.json +1 -0
  595. package/embedded-knowledge/indexes/tags/table-events.json +1 -0
  596. package/embedded-knowledge/indexes/tags/table-keys.json +1 -0
  597. package/embedded-knowledge/indexes/tags/table-safety.json +1 -0
  598. package/embedded-knowledge/indexes/tags/task-scheduler.json +1 -0
  599. package/embedded-knowledge/indexes/tags/telemetry.json +1 -0
  600. package/embedded-knowledge/indexes/tags/template-method.json +1 -0
  601. package/embedded-knowledge/indexes/tags/temporary-tables.json +1 -0
  602. package/embedded-knowledge/indexes/tags/testfield.json +1 -0
  603. package/embedded-knowledge/indexes/tags/tradeoffs.json +1 -0
  604. package/embedded-knowledge/indexes/tags/triggers.json +1 -0
  605. package/embedded-knowledge/indexes/tags/troubleshooting.json +1 -0
  606. package/embedded-knowledge/indexes/tags/type-safety.json +1 -0
  607. package/embedded-knowledge/indexes/tags/url-structure.json +1 -0
  608. package/embedded-knowledge/indexes/tags/user-experience.json +1 -0
  609. package/embedded-knowledge/indexes/tags/user-feedback.json +1 -0
  610. package/embedded-knowledge/indexes/tags/user-interface.json +1 -0
  611. package/embedded-knowledge/indexes/tags/validation-feedback.json +1 -0
  612. package/embedded-knowledge/indexes/tags/validation.json +1 -0
  613. package/embedded-knowledge/indexes/tags/variables.json +1 -0
  614. package/embedded-knowledge/indexes/tags/verbosity.json +1 -0
  615. package/embedded-knowledge/indexes/tags/vs-code.json +1 -0
  616. package/embedded-knowledge/indexes/tags/web-services.json +1 -0
  617. package/embedded-knowledge/indexes/tags/workflow-management.json +1 -0
  618. package/embedded-knowledge/indexes/tags/workflow-optimization.json +1 -0
  619. package/embedded-knowledge/indexes/tags/workflow-templates.json +1 -0
  620. package/embedded-knowledge/indexes/tags/workspace.json +1 -0
  621. package/embedded-knowledge/indexes/tags/xml-documentation.json +1 -0
  622. package/embedded-knowledge/indexes/topic-relationships.json +128 -0
  623. package/embedded-knowledge/methodologies/index.json +81 -0
  624. package/embedded-knowledge/methodologies/phases/analysis-full.md +208 -0
  625. package/embedded-knowledge/methodologies/phases/analysis-quick.md +44 -0
  626. package/embedded-knowledge/methodologies/phases/analysis.md +182 -0
  627. package/embedded-knowledge/methodologies/phases/execution-validation-full.md +174 -0
  628. package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +31 -0
  629. package/embedded-knowledge/methodologies/phases/execution-validation.md +174 -0
  630. package/embedded-knowledge/methodologies/phases/performance-full.md +211 -0
  631. package/embedded-knowledge/methodologies/phases/performance-quick.md +32 -0
  632. package/embedded-knowledge/methodologies/phases/performance.md +211 -0
  633. package/embedded-knowledge/methodologies/phases/verification-full.md +162 -0
  634. package/embedded-knowledge/methodologies/phases/verification-quick.md +48 -0
  635. package/embedded-knowledge/methodologies/phases/verification.md +146 -0
  636. package/embedded-knowledge/methodologies/workflow-enforcement.md +142 -0
  637. package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +99 -0
  638. package/package.json +74 -0
@@ -0,0 +1,79 @@
1
+ ---
2
+ title: "API Page Source Table Key Requirements"
3
+ domain: "dean-debug"
4
+ difficulty: "advanced"
5
+ bc_versions: "14+"
6
+ tags: ["api-pages", "table-keys", "performance"]
7
+ samples: "samples/table-key-requirements.md"
8
+ ---
9
+ # API Page Source Table Key Requirements
10
+
11
+ ## Overview
12
+
13
+ API Pages require specific table key configurations to ensure optimal OData query performance and proper data access patterns. Understanding these requirements is critical for high-performance API implementations that scale effectively under production loads.
14
+
15
+ The BC platform automatically generates OData endpoints based on table key structures, making key design decisions directly impact API query performance. Poor key design can result in full table scans and timeout errors in API consumers.
16
+
17
+ ## Primary Key Requirements
18
+
19
+ API Pages must have a well-defined primary key that serves as the unique identifier for OData operations. The primary key becomes the basis for individual record retrieval operations through the API endpoint.
20
+
21
+ Single-field primary keys perform better than composite keys for API operations. The SystemId field, when available, provides optimal performance as it's a GUID field with guaranteed uniqueness and efficient indexing characteristics.
22
+
23
+ Composite primary keys require careful consideration of field ordering to ensure the most selective fields appear first in the key definition. This ordering directly impacts query performance when API consumers filter on subset of key fields.
24
+
25
+ ## Secondary Key Performance Impact
26
+
27
+ Secondary keys on API Page source tables significantly impact OData query performance. Each secondary key becomes a potential filter path for API consumers, and poorly designed keys can create performance bottlenecks.
28
+
29
+ Keys supporting common API query patterns should be prioritized. Consider the typical filtering, sorting, and grouping requirements of API consumers when designing secondary keys for optimal query execution.
30
+
31
+ The BC platform may automatically select keys for query execution based on OData filter parameters. Understanding this selection logic helps predict and optimize actual query performance under different usage patterns.
32
+
33
+ ## Key Field Selection Criteria
34
+
35
+ Choose key fields based on query selectivity and data distribution. Fields with high cardinality and even distribution provide better performance than fields with skewed data patterns or low selectivity.
36
+
37
+ Avoid including large text fields or blob fields in key definitions as these impact both storage requirements and query performance. Keys should focus on efficient identifier and categorization fields.
38
+
39
+ Consider the impact of key fields on data modification operations. Fields that change frequently should be avoided in secondary keys as this requires key maintenance overhead during data updates.
40
+
41
+ ## OData Query Optimization
42
+
43
+ API Page key design directly influences OData query compilation and execution. The BC platform analyzes available keys when translating OData filters into SQL query patterns.
44
+
45
+ Complex OData queries may require specific key combinations to avoid performance issues. Understanding common API consumer query patterns helps identify required key structures during design phase.
46
+
47
+ Query performance monitoring should include analysis of key usage patterns to identify optimization opportunities. Unused keys consume storage and maintenance overhead without providing performance benefits.
48
+
49
+ ## Multi-Tenancy Considerations
50
+
51
+ In multi-tenant environments, key design must consider tenant isolation requirements. Keys may need to include tenant-specific fields to ensure proper data segregation and performance isolation.
52
+
53
+ DataPerCompany table property affects key performance characteristics. Tables with DataPerCompany = false require additional consideration for key design to maintain performance across tenant boundaries.
54
+
55
+ Global tables require careful key design to prevent cross-tenant data access issues while maintaining query performance for legitimate multi-tenant scenarios.
56
+
57
+ ## Performance Monitoring
58
+
59
+ Monitor API Page query performance through BC telemetry and database performance metrics. Key performance indicators include query execution time, index usage patterns, and resource consumption.
60
+
61
+ Identify queries that result in table scans or inefficient key usage. These represent optimization opportunities through key design improvements or query pattern adjustments.
62
+
63
+ Regular performance analysis should include review of key effectiveness and identification of missing key requirements based on actual usage patterns.
64
+
65
+ ## Common Implementation Issues
66
+
67
+ Missing or inappropriate primary keys result in poor OData query performance and potential data consistency issues. Ensure every API Page source table has an appropriate primary key definition.
68
+
69
+ Excessive secondary keys can impact data modification performance without providing corresponding query benefits. Focus key design on actual API consumer requirements rather than theoretical optimization.
70
+
71
+ Key field data type mismatches between related tables can prevent efficient join operations in complex OData queries. Maintain consistent data types across related table key fields.
72
+
73
+ ## Best Practices
74
+
75
+ Design keys based on actual API consumer requirements rather than generic optimization principles. Understanding real-world usage patterns drives effective key design decisions.
76
+
77
+ Balance query performance requirements with data modification overhead. Keys provide query benefits but incur maintenance costs during data updates.
78
+
79
+ Document key design decisions and performance assumptions for future optimization efforts. This documentation helps maintain design consistency and supports performance troubleshooting.
@@ -0,0 +1,78 @@
1
+ ---
2
+ title: "Telemetry Error Correlation"
3
+ domain: "dean-debug"
4
+ difficulty: "intermediate"
5
+ bc_versions: "14+"
6
+ tags: ["telemetry", "debugging", "correlation", "troubleshooting"]
7
+ prerequisites: ["bc-session-logmessage-methods"]
8
+ samples: "samples/error-correlation.md"
9
+ ---
10
+ # Telemetry Error Correlation
11
+
12
+ ## Overview
13
+
14
+ Error correlation links related telemetry events across different system components to provide complete context for troubleshooting. Effective correlation enables rapid root cause analysis by connecting error symptoms with underlying causes across complex business processes.
15
+
16
+ Business Central's telemetry correlation mechanisms support both automatic session-based correlation and custom correlation identifiers that span multiple sessions or system boundaries.
17
+
18
+ ## Correlation Mechanisms
19
+
20
+ ### Session-Based Correlation
21
+ Business Central automatically correlates telemetry events within the same user session using system-generated session identifiers. This automatic correlation links events from the same user interaction across different codeunits and operations.
22
+
23
+ Session correlation works effectively for single-user operations but has limitations for background processes, integration scenarios, or operations that span multiple sessions.
24
+
25
+ ### Custom Correlation Identifiers
26
+ Custom correlation identifiers enable linking related events across session boundaries. These identifiers can represent business processes, document workflows, or integration operations that span multiple system interactions.
27
+
28
+ Implement custom correlation using consistent identifier generation and inclusion in custom dimensions across all related telemetry events. Choose correlation identifiers that meaningfully represent business processes or technical operations.
29
+
30
+ ### Operation Context Correlation
31
+ Operation-level correlation links events within specific business operations like document posting, report generation, or integration processing. This correlation level bridges the gap between session correlation and business process correlation.
32
+
33
+ ## Implementation Patterns
34
+
35
+ ### Error Event Design
36
+ Structure error telemetry events to include comprehensive context for troubleshooting. Include business context (document numbers, customer identifiers), technical context (component names, operation types), and correlation context (session, operation, process identifiers).
37
+
38
+ Design error events to capture both immediate error conditions and related context that supports root cause analysis. Consider including preceding events or system state information that helps explain error conditions.
39
+
40
+ ### Correlation Propagation
41
+ Propagate correlation identifiers consistently across all components involved in business processes. Ensure correlation identifiers flow through integration boundaries, background job execution, and external system interactions.
42
+
43
+ Use parameter passing, global variables, or context objects to maintain correlation identifiers throughout business process execution. Design correlation propagation to be resilient to error conditions and system boundaries.
44
+
45
+ ### Multi-Level Correlation
46
+ Implement multiple correlation levels to support different troubleshooting scenarios. Combine session-level, operation-level, and business process-level correlation to enable both detailed technical analysis and high-level business impact assessment.
47
+
48
+ ## Troubleshooting Applications
49
+
50
+ ### Root Cause Analysis
51
+ Use correlation identifiers to trace error conditions back to their originating causes. Link error symptoms visible to users with underlying technical issues across multiple system components.
52
+
53
+ Correlation enables analysis of error cascades where initial problems trigger subsequent failures across related components or business processes.
54
+
55
+ ### Integration Debugging
56
+ Correlation is essential for debugging integration scenarios where errors may occur in external systems but manifest as Business Central issues. Link Business Central telemetry with external system logs using shared correlation identifiers.
57
+
58
+ ### Performance Issue Investigation
59
+ Use correlation to link performance symptoms with underlying causes. Correlate user-reported performance issues with system resource utilization, database performance, or integration latency across multiple components.
60
+
61
+ ## Advanced Correlation Patterns
62
+
63
+ ### Hierarchical Correlation
64
+ Implement hierarchical correlation structures that represent complex business processes with multiple sub-operations. Use parent-child correlation relationships to organize telemetry events into logical groupings.
65
+
66
+ ### Cross-System Correlation
67
+ Extend correlation across system boundaries to link Business Central events with external system activities. Include shared correlation identifiers in integration messages and API calls to enable comprehensive troubleshooting.
68
+
69
+ ### Temporal Correlation
70
+ Consider time-based correlation patterns that link events occurring within specific time windows. This approach helps identify related issues that may not share explicit correlation identifiers.
71
+
72
+ ## Analysis and Tooling
73
+
74
+ ### Correlation Queries
75
+ Design Application Insights queries that leverage correlation identifiers for effective troubleshooting analysis. Create saved queries and dashboards that utilize correlation patterns for routine troubleshooting tasks.
76
+
77
+ ### Automated Correlation Analysis
78
+ Consider implementing automated analysis that identifies correlation patterns and potential root causes. Use correlation data to build troubleshooting decision trees and diagnostic workflows.
@@ -0,0 +1,83 @@
1
+ ---
2
+ title: "Telemetry Performance Considerations"
3
+ domain: "dean-debug"
4
+ difficulty: "advanced"
5
+ bc_versions: "14+"
6
+ tags: ["telemetry", "performance", "optimization", "monitoring"]
7
+ prerequisites: ["bc-session-logmessage-methods", "custom-dimensions-best-practices"]
8
+ samples: "samples/telemetry-performance.md"
9
+ ---
10
+ # Telemetry Performance Considerations
11
+
12
+ ## Overview
13
+
14
+ Telemetry implementation significantly impacts system performance through CPU utilization, memory consumption, and network overhead. Understanding these performance characteristics enables effective telemetry design that balances diagnostic capability with system efficiency.
15
+
16
+ Telemetry overhead scales with event frequency, custom dimension complexity, and verbosity levels. High-volume telemetry scenarios require careful optimization to prevent performance degradation in production environments.
17
+
18
+ ## CPU Performance Impact
19
+
20
+ ### Message Formatting Overhead
21
+ LogMessage calls incur CPU overhead for message string formatting regardless of verbosity filtering. Complex message formatting with string concatenation or expensive calculations impacts performance even when events are ultimately filtered.
22
+
23
+ Optimize message formatting by using simple string operations and pre-calculating expensive values. Consider lazy evaluation patterns for complex message content that may not be needed in all scenarios.
24
+
25
+ ### Custom Dimension Processing
26
+ Custom dimension serialization consumes CPU resources proportional to dimension count and value complexity. Large dimension collections or complex dimension values can significantly impact telemetry performance.
27
+
28
+ Minimize dimension processing overhead by pre-formatting dimension values, reusing dimension collections, and avoiding expensive calculations within dimension generation code.
29
+
30
+ ### Frequency Impact
31
+ Telemetry performance impact scales directly with event frequency. High-frequency telemetry in performance-critical code paths can measurably impact overall system performance.
32
+
33
+ Consider telemetry frequency when implementing logging in loops, frequent business operations, or real-time processing scenarios. Use sampling strategies to reduce event volume while preserving analytical value.
34
+
35
+ ## Memory Utilization
36
+
37
+ ### Event Buffering
38
+ The telemetry system buffers events before transmission, consuming memory proportional to event volume and buffering duration. High-volume telemetry can increase memory pressure, particularly in memory-constrained environments.
39
+
40
+ Monitor telemetry memory utilization and consider event volume in memory capacity planning. Implement backpressure mechanisms if telemetry volume threatens system memory stability.
41
+
42
+ ### Custom Dimension Storage
43
+ Custom dimensions consume memory for key-value pair storage and serialization. Large dimension collections or string-heavy dimension values can contribute significantly to overall memory utilization.
44
+
45
+ Optimize dimension memory usage by using efficient data types, minimizing string allocations, and reusing dimension objects where possible.
46
+
47
+ ### Correlation Data
48
+ Correlation mechanisms may maintain in-memory state to link related telemetry events across time. Long-running correlations or high-cardinality correlation scenarios can impact memory utilization.
49
+
50
+ ## Network and I/O Considerations
51
+
52
+ ### Transmission Overhead
53
+ Telemetry events consume network bandwidth for transmission to monitoring systems. High-volume telemetry can impact network performance, particularly in bandwidth-constrained environments.
54
+
55
+ Consider telemetry network impact in overall network capacity planning. Implement local buffering and batch transmission strategies to optimize network utilization efficiency.
56
+
57
+ ### Monitoring System Impact
58
+ Large telemetry volumes can overwhelm monitoring systems and impact query performance in Application Insights or other telemetry backends. Consider backend capacity when designing telemetry volume strategies.
59
+
60
+ ### Storage and Retention
61
+ Telemetry events consume storage space in monitoring systems with associated cost implications. Balance diagnostic capability with storage costs and retention requirements.
62
+
63
+ ## Optimization Strategies
64
+
65
+ ### Strategic Verbosity Management
66
+ Use verbosity levels strategically to control telemetry volume in production environments. Filter high-verbosity events in production while maintaining essential diagnostic capability.
67
+
68
+ ### Sampling Implementation
69
+ Implement telemetry sampling for high-volume scenarios to reduce data volume while preserving statistical significance. Consider business-aware sampling that maintains critical event capture.
70
+
71
+ ### Conditional Telemetry
72
+ Implement conditional telemetry patterns that enable detailed logging during specific scenarios without permanent performance overhead. Use feature flags or configuration settings to control telemetry behavior.
73
+
74
+ ### Batch Processing
75
+ Group telemetry events into batches where possible to optimize transmission efficiency and reduce per-event overhead. Balance batching benefits with real-time monitoring requirements.
76
+
77
+ ## Performance Monitoring
78
+
79
+ ### Telemetry System Monitoring
80
+ Monitor telemetry system performance including event volume, processing latency, and resource utilization. Telemetry overhead should be measured and tracked as part of overall system performance.
81
+
82
+ ### Impact Analysis
83
+ Regularly analyze telemetry performance impact through load testing and production monitoring. Understand telemetry overhead trends and optimize configurations based on actual impact measurements.
@@ -0,0 +1,76 @@
1
+ ---
2
+ title: "Telemetry Verbosity Strategy"
3
+ domain: "dean-debug"
4
+ difficulty: "beginner"
5
+ bc_versions: "14+"
6
+ tags: ["telemetry", "verbosity", "production", "diagnostics"]
7
+ prerequisites: ["bc-session-logmessage-methods"]
8
+ samples: "samples/verbosity-strategy.md"
9
+ ---
10
+ # Telemetry Verbosity Strategy
11
+
12
+ ## Overview
13
+
14
+ Telemetry verbosity controls determine which events are captured and transmitted to monitoring systems. Effective verbosity strategy balances diagnostic capability with system performance and storage costs.
15
+
16
+ Business Central provides five verbosity levels from Critical (1) to Verbose (5). Production environments typically filter higher verbosity levels to reduce telemetry volume while preserving essential diagnostic information.
17
+
18
+ ## Verbosity Levels
19
+
20
+ ### Critical (Level 1)
21
+ Critical events indicate system failures or conditions that prevent normal operation. These events should always be captured and typically trigger immediate alerting in production environments.
22
+
23
+ Use Critical verbosity for unrecoverable errors, system component failures, and conditions that impact business continuity. Critical events warrant immediate attention and investigation.
24
+
25
+ ### Error (Level 2)
26
+ Error events indicate recoverable problems that impact specific operations but don't prevent overall system function. These events should be captured in production for troubleshooting and trend analysis.
27
+
28
+ Use Error verbosity for operation failures, data validation issues, and integration problems that affect individual transactions or users.
29
+
30
+ ### Warning (Level 3)
31
+ Warning events indicate potential problems or unusual conditions that don't immediately impact operations. These events help identify emerging issues before they become critical problems.
32
+
33
+ Use Warning verbosity for performance degradation, configuration issues, and deprecated functionality usage that may require attention.
34
+
35
+ ### Normal (Level 4)
36
+ Normal events capture significant business operations and system activities for operational monitoring and business intelligence. These events provide insight into system usage and business process execution.
37
+
38
+ Use Normal verbosity for successful business transactions, user actions, and integration activities that support operational analysis.
39
+
40
+ ### Verbose (Level 5)
41
+ Verbose events provide detailed diagnostic information for troubleshooting and development scenarios. These events are typically filtered in production environments due to volume considerations.
42
+
43
+ Use Verbose verbosity for detailed execution traces, debugging information, and granular operational details needed for development and testing scenarios.
44
+
45
+ ## Production Strategy
46
+
47
+ ### Baseline Configuration
48
+ Establish production verbosity baselines that capture essential diagnostic information without overwhelming monitoring systems. Typical production configurations capture Critical through Normal levels.
49
+
50
+ Consider business requirements, troubleshooting needs, and storage capacity when establishing baseline verbosity levels. Adjust baselines based on operational experience and incident analysis needs.
51
+
52
+ ### Dynamic Adjustment
53
+ Implement capabilities to adjust verbosity levels dynamically during incident investigation or troubleshooting scenarios. Temporary verbosity increases can provide additional diagnostic information without permanent overhead.
54
+
55
+ Consider implementing verbosity level controls that can be adjusted per component or business process to focus additional telemetry on specific problem areas.
56
+
57
+ ## Development Strategy
58
+
59
+ ### Testing and Development
60
+ Use higher verbosity levels during development and testing to capture detailed execution information. Verbose telemetry supports debugging, performance analysis, and integration testing scenarios.
61
+
62
+ Consider separate verbosity configurations for different environments to optimize telemetry capture for each environment's specific needs.
63
+
64
+ ### Performance Testing
65
+ Include telemetry verbosity impact in performance testing scenarios. High verbosity levels can significantly impact system performance and should be considered in capacity planning.
66
+
67
+ ## Implementation Considerations
68
+
69
+ ### Performance Impact
70
+ Higher verbosity levels increase CPU, memory, and network utilization for telemetry processing and transmission. Consider telemetry overhead in overall system performance planning.
71
+
72
+ ### Storage and Cost Management
73
+ Telemetry volume directly impacts monitoring system storage requirements and costs. Balance diagnostic capability with storage capacity and cost constraints.
74
+
75
+ ### Filtering and Sampling
76
+ Consider implementing telemetry sampling strategies for high-volume scenarios to reduce data volume while preserving statistical significance for analysis.
@@ -0,0 +1,104 @@
1
+ ---
2
+ title: "TestField Performance Optimization"
3
+ domain: "dean-debug"
4
+ difficulty: "intermediate"
5
+ bc_versions: "14+"
6
+ tags: ["performance", "validation", "optimization", "best-practices"]
7
+ prerequisites: ["testfield-basic-syntax", "performance-fundamentals"]
8
+ ---
9
+ # TestField Performance Optimization
10
+
11
+ ## Overview
12
+
13
+ TestField operations are lightweight but can impact performance when used extensively in loops or batch processing. Understanding TestField performance characteristics enables optimal validation strategies for high-volume scenarios.
14
+
15
+ **Performance Principle**: TestField has minimal overhead for individual calls but cumulative impact in high-volume operations requires optimization strategies.
16
+
17
+ ## Performance Characteristics
18
+
19
+ ### Individual Call Performance
20
+ Single TestField calls have negligible performance impact. The method performs simple null/empty checks without database operations.
21
+
22
+ ### Batch Processing Impact
23
+ In loops processing hundreds or thousands of records, cumulative TestField overhead becomes measurable and should be optimized.
24
+
25
+ ### Error Handling Overhead
26
+ TestField errors trigger exception handling mechanisms. In scenarios with frequent validation failures, this overhead can be significant.
27
+
28
+ ## Optimization Strategies
29
+
30
+ ### Conditional Validation
31
+ Apply validation intensity based on processing context. Critical validations always execute while optional validations run only when required, reducing overhead in performance-sensitive scenarios.
32
+
33
+ ### Early Exit Patterns
34
+ Perform lightweight data checks before expensive TestField calls. Exit processing early when data fails simple validation tests, avoiding unnecessary validation overhead.
35
+
36
+ ### Grouped Validation
37
+ Pre-validate multiple fields using simple checks before calling TestField. Only invoke TestField for final validation with proper error messages after confirming basic data validity.
38
+
39
+ ## High-Volume Scenarios
40
+
41
+ ### Batch Import Optimization
42
+ Combine pre-validation checks with TryFunction patterns to handle validation failures gracefully in batch processing. Prevents single validation failures from terminating entire batch operations.
43
+
44
+ ### Loop Processing Optimization
45
+ Use record filters to exclude obviously invalid records before processing loops. Combine with TryFunction patterns to track processing success rates and continue batch processing despite individual record failures.
46
+
47
+ ## Memory and Resource Considerations
48
+
49
+ ### Temporary Record Usage
50
+ Use temporary records for batch validation scenarios to minimize database locks and improve overall performance.
51
+
52
+ ### SetRange Before Validation
53
+ Apply appropriate filters before validation loops to reduce record set size and improve processing efficiency.
54
+
55
+ ### Transaction Management
56
+ Group validation operations within appropriate transaction boundaries to minimize database round trips.
57
+
58
+ ## Performance Testing Patterns
59
+
60
+ ### Baseline Measurement
61
+ ```al
62
+ procedure MeasureValidationPerformance(RecordCount: Integer)
63
+ var
64
+ Customer: Record Customer;
65
+ StartTime: Time;
66
+ EndTime: Time;
67
+ Duration: Duration;
68
+ begin
69
+ StartTime := Time();
70
+
71
+ if Customer.FindSet() then
72
+ repeat
73
+ Customer.Name.TestField();
74
+ Customer."Customer Posting Group".TestField();
75
+ until (Customer.Next() = 0) or (Customer.Count >= RecordCount);
76
+
77
+ EndTime := Time();
78
+ Duration := EndTime - StartTime;
79
+ Message('Validation time for %1 records: %2', RecordCount, Duration);
80
+ end;
81
+ ```
82
+
83
+ ### Comparative Analysis
84
+ Compare TestField performance against manual validation approaches to identify optimal patterns for specific scenarios.
85
+
86
+ ## Integration with Other Performance Patterns
87
+
88
+ ### SIFT Integration
89
+ TestField validation combined with SIFT-optimized queries provides efficient data validation patterns.
90
+
91
+ ### Caching Strategies
92
+ Cache frequently validated lookup data to minimize database access during intensive validation scenarios.
93
+
94
+ ### Parallel Processing
95
+ Consider parallel processing patterns for independent record validation in high-volume scenarios.
96
+
97
+ ## Monitoring and Diagnostics
98
+
99
+ ### Performance Counter Integration
100
+ Monitor TestField usage patterns in production environments to identify performance bottlenecks.
101
+
102
+ ### Error Rate Analysis
103
+ Track validation error rates to optimize validation logic and improve user experience.
104
+
@@ -0,0 +1,145 @@
1
+ ---
2
+ title: "FieldError Default Message Logic"
3
+ domain: "eva-errors"
4
+ difficulty: "intermediate"
5
+ bc_versions: "14+"
6
+ tags: ["fielderror", "default-messages", "field-state", "error-text"]
7
+ samples: "samples/fielderror-default-messages.md"
8
+ ---
9
+ # FieldError Default Message Logic
10
+
11
+ ## Overview
12
+
13
+ When FieldError is called without the MsgText parameter, Business Central automatically generates contextual error messages based on field state and metadata. This default message logic provides consistent, informative error reporting with minimal code.
14
+
15
+ **Key Advantage**: Automatic message generation reduces code maintenance while providing rich contextual information.
16
+
17
+ ## Default Message Construction
18
+
19
+ ### Message Components
20
+ Business Central constructs default error messages using five key components:
21
+ 1. **Field Caption**: From table field definition
22
+ 2. **Current Value**: Field content (if not empty)
23
+ 3. **Standard Text**: Context-appropriate default message
24
+ 4. **Record Context**: Primary key fields for record identification
25
+ 5. **Table Name**: Source table identification
26
+
27
+ ### Field State Detection
28
+
29
+ #### Empty Field Messages
30
+ For empty fields, BC generates "must have a value" or "must be filled in" messages depending on field type. Code and Text fields use "must have a value" while Date fields use "must be filled in".
31
+
32
+ #### Non-Empty Field Messages
33
+ For fields containing data, BC generates "is not valid" messages that include the current field value, helping users identify exactly what data caused the validation failure.
34
+
35
+ #### Record Context Inclusion
36
+ All FieldError messages automatically include primary key field values to provide complete record identification, enabling users to locate the specific record causing the error.
37
+
38
+ ## Default Message Patterns
39
+
40
+ ### Standard Empty Field Pattern
41
+ Structure follows: "[Field Caption] must have a value in [Table Name] [Record Key]"
42
+ - **Use Case**: Required field validation
43
+ - **Common Scenario**: Setup tables, document headers, required configuration
44
+
45
+ ### Standard Value Conflict Pattern
46
+ Structure follows: "[Field Caption] [Current Value] already exists in [Table Name] [Record Key]"
47
+ - **Use Case**: Uniqueness violations, duplicate detection
48
+ - **Common Scenario**: Primary key conflicts, unique index violations
49
+
50
+ ### Context-Specific Patterns
51
+ Business Central applies different default messages based on:
52
+ - Field data type and properties
53
+ - Table relationships and constraints
54
+ - Current field state and validation context
55
+
56
+ ## Strategic Decision Matrix
57
+
58
+ ### Use Default Messages When
59
+ - **Standard validation scenarios**: Common empty/duplicate field errors
60
+ - **Consistent user experience desired**: Uniform error message formatting
61
+ - **Minimal maintenance required**: Automatic message updates with metadata changes
62
+ - **Field caption changes**: Messages automatically reflect caption updates
63
+
64
+ ### Use Custom Messages When
65
+ - **Business rule violations**: Complex validation logic requiring explanation
66
+ - **Specific guidance needed**: Error messages should guide user resolution
67
+ - **Context-sensitive information**: Additional fields or calculations referenced
68
+ - **User experience optimization**: Tailored messages for specific user workflows
69
+
70
+ ## Implementation Examples
71
+
72
+ ### Leveraging Default Messages
73
+ Setup validation scenarios benefit from default messaging where standard "must have a value" text provides adequate user guidance without additional context.
74
+
75
+ ### Mixed Default and Custom Messages
76
+ Combining default empty field detection with custom business logic provides optimal balance between consistency and specificity in error reporting.
77
+
78
+ ### Record State-Aware Validation
79
+ Different validation approaches based on record state allow for appropriate use of default messages for standard scenarios while applying custom messages for complex business rules.
80
+
81
+ ## Best Practices
82
+
83
+ ### Default Message Optimization
84
+ - **Field captions**: Ensure field captions are user-friendly and descriptive
85
+ - **Table design**: Structure primary keys to provide meaningful record context
86
+ - **Consistent patterns**: Use default messages for standard validation scenarios
87
+ - **Message testing**: Verify default messages provide adequate user guidance
88
+
89
+ ### Custom vs Default Decision Process
90
+ 1. **Evaluate standard patterns**: Does default message adequately describe the problem?
91
+ 2. **Consider user guidance**: Do users need additional context or resolution steps?
92
+ 3. **Assess business rules**: Does the error involve complex business logic?
93
+ 4. **Plan for maintenance**: Will custom messages require ongoing updates?
94
+
95
+ ### Performance Considerations
96
+ - **Default message efficiency**: BC generates default messages efficiently
97
+ - **Custom message overhead**: Complex custom messages may impact performance
98
+ - **Field access patterns**: Default messages access field metadata, not additional data
99
+ - **Localization support**: Default messages automatically support multiple languages
100
+
101
+ ## Message Quality Assessment
102
+
103
+ ### Effective Default Messages
104
+ - **Clear field identification**: Field caption clearly identifies the problematic field
105
+ - **Sufficient context**: Record key provides adequate record identification
106
+ - **Consistent formatting**: Uniform message structure across application
107
+ - **Automatic updates**: Messages reflect metadata changes without code updates
108
+
109
+ ### When Defaults Fall Short
110
+ - **Insufficient business context**: Generic messages don't explain business rules
111
+ - **Poor field captions**: Technical field names don't guide users effectively
112
+ - **Complex relationships**: Multi-field or cross-table validation scenarios
113
+ - **Specific user workflows**: Messages don't align with user task patterns
114
+
115
+ ## Localization and Maintenance
116
+
117
+ ### Automatic Benefits
118
+ - **Language support**: Default messages automatically support BC language packs
119
+ - **Metadata synchronization**: Messages update when field captions change
120
+ - **Consistent terminology**: Standard message patterns across entire application
121
+ - **Reduced translation overhead**: No custom message translation required
122
+
123
+ ### Maintenance Advantages
124
+ - **Code simplification**: Fewer message strings to maintain
125
+ - **Automatic updates**: Metadata changes propagate to error messages
126
+ - **Quality consistency**: Standard message quality across all validation scenarios
127
+ - **Development efficiency**: Faster implementation of standard validation patterns
128
+
129
+ ## Advanced Default Message Behavior
130
+
131
+ ### Field Type Variations
132
+ Different field types generate contextually appropriate default messages. Boolean fields show "Yes/No" states, DateTime fields include full timestamp information, and GUID fields display the complete identifier.
133
+
134
+ ### Multi-Language Considerations
135
+ Default messages automatically adapt to user language settings without requiring additional translation effort, making them ideal for international deployments.
136
+
137
+ ### Record Key Complexity
138
+ Tables with complex primary keys automatically include all key fields in error context, providing comprehensive record identification regardless of table structure complexity.
139
+
140
+ ## Implementation Guidelines
141
+
142
+ Default message logic works most effectively when field captions accurately represent user-facing terminology and primary key structures provide meaningful record identification. Strategic use of default messages reduces maintenance overhead while maintaining user experience quality.
143
+
144
+ For detailed implementation examples and working code samples demonstrating default message behavior across various field types and scenarios, see the companion AL code file.
145
+