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,246 @@
1
+ ---
2
+ title: "No. Series Validation Module Patterns (BC24+)"
3
+ domain: "dean-debug"
4
+ difficulty: "intermediate"
5
+ bc_versions: "24+"
6
+ tags: ["no-series-validation", "business-foundation", "module-validation", "bc24-migration", "data-integrity"]
7
+ prerequisites: ["no-series-module-patterns-bc24", "validation-frameworks", "business-foundation-architecture"]
8
+ samples: "samples/no-series-validation-module-bc24.md"
9
+ related_topics: ["no-series-module-patterns-bc24", "no-series-validation-patterns", "bc24-migration-patterns"]
10
+ ---
11
+
12
+ # No. Series Validation Module Patterns (BC24+)
13
+
14
+ ## Overview
15
+
16
+ The new No. Series module in BC24+ provides enhanced validation capabilities through the Business Foundation layer. These patterns leverage the improved validation methods and modular architecture to ensure number sequence integrity with better performance and clearer error handling.
17
+
18
+ **Key Benefit**: Utilizes the new No. Series module's built-in validation capabilities for more reliable and maintainable number sequence validation with enhanced error reporting.
19
+
20
+ ## New Validation Architecture
21
+
22
+ ### Business Foundation Integration
23
+ The No. Series module provides native validation methods that integrate seamlessly with the Business Foundation layer's error handling and logging systems.
24
+
25
+ ### Enhanced Validation Methods
26
+ New dedicated validation methods replace complex custom validation logic:
27
+ - Built-in format validation
28
+ - Automatic relationship validation
29
+ - Improved error messaging and diagnostics
30
+
31
+ ### Modular Validation Design
32
+ Validation is now distributed across focused codeunits rather than centralized in legacy NoSeriesManagement.
33
+
34
+ ## Essential Validation Patterns
35
+
36
+ ### Number Format Validation
37
+ **Legacy Pattern (BC14-23)**:
38
+ ```al
39
+ // Custom validation logic required
40
+ if not NoSeriesMgt.CheckFormat("No.", "No. Series") then
41
+ Error('Invalid format');
42
+ ```
43
+
44
+ **New Pattern (BC24+)**:
45
+ ```al
46
+ if not NoSeries.IsValidNo("No.", "No. Series") then
47
+ Error('Number %1 is not valid for series %2', "No.", "No. Series");
48
+ ```
49
+
50
+ ### Series Existence Validation
51
+ **New Pattern (BC24+)**:
52
+ ```al
53
+ NoSeries.VerifySeriesExists("No. Series");
54
+ ```
55
+
56
+ ### Manual Number Validation
57
+ **Legacy Pattern**:
58
+ ```al
59
+ NoSeriesMgt.TestManual("No. Series");
60
+ if not NoSeriesMgt.ManualNoAllowed("No. Series") then
61
+ Error('Manual numbers not allowed');
62
+ ```
63
+
64
+ **New Pattern**:
65
+ ```al
66
+ NoSeries.TestManual("No. Series");
67
+ // Built-in error handling provides clear messaging
68
+ ```
69
+
70
+ ### Series Relationship Validation
71
+ **New Pattern (BC24+)**:
72
+ ```al
73
+ if not NoSeries.AreRelated(CurrentSeries, NewSeries) then
74
+ Error('Series %1 and %2 are not related', CurrentSeries, NewSeries);
75
+ ```
76
+
77
+ ## Advanced Validation Integration
78
+
79
+ ### Batch Validation
80
+ Utilize NoSeriesBatch for validating multiple number allocations:
81
+ ```al
82
+ // Validate batch allocation feasibility
83
+ if not NoSeriesBatch.CanAllocateNumbers("No. Series", RequiredCount) then
84
+ Error('Cannot allocate %1 numbers from series %2', RequiredCount, "No. Series");
85
+ ```
86
+
87
+ ### Date-Based Validation
88
+ Leverage enhanced date validation in the new module:
89
+ ```al
90
+ if not NoSeries.IsValidForDate("No. Series", "Posting Date") then
91
+ Error('Series %1 is not valid for date %2', "No. Series", "Posting Date");
92
+ ```
93
+
94
+ ### Cross-Series Validation
95
+ ```al
96
+ // Validate consistency across related series
97
+ NoSeries.ValidateRelatedSeries("Primary Series", "Related Series");
98
+ ```
99
+
100
+ ## Migration from Legacy Validation
101
+
102
+ ### Obsolete Validation Patterns
103
+ **Remove Legacy Patterns**:
104
+ - Custom format checking logic
105
+ - Manual series relationship validation
106
+ - Complex date range validation
107
+ - Direct table validation queries
108
+
109
+ **Replace with Module Methods**:
110
+ - Use built-in `IsValidNo()` for format validation
111
+ - Use `AreRelated()` for relationship checking
112
+ - Use `TestManual()` for manual number validation
113
+ - Use `VerifySeriesExists()` for existence checking
114
+
115
+ ### Event Migration Strategy
116
+ **Obsolete Events** (no direct replacement):
117
+ - OnBeforeGetNextNo events
118
+ - OnAfterGetNextNo events
119
+ - Custom validation events in NoSeriesManagement
120
+
121
+ **New Approach**:
122
+ ```al
123
+ // Implement validation through direct method calls
124
+ // Use error handling for validation failures
125
+ // Leverage module's built-in logging capabilities
126
+ ```
127
+
128
+ ## Enhanced Error Handling
129
+
130
+ ### Improved Error Messages
131
+ The new module provides more descriptive error messages with context:
132
+ ```al
133
+ // Automatic error context from module
134
+ NoSeries.GetNextNo("No. Series", WorkDate());
135
+ // Provides detailed error if series is invalid, exhausted, or misconfigured
136
+ ```
137
+
138
+ ### Structured Exception Handling
139
+ ```al
140
+ if not NoSeries.TryGetNextNo(NextNo, "No. Series", WorkDate()) then begin
141
+ // Handle specific validation failure scenarios
142
+ HandleNumberGenerationError("No. Series");
143
+ end;
144
+ ```
145
+
146
+ ### Validation Result Processing
147
+ ```al
148
+ ValidationResult := NoSeries.ValidateSeriesConfiguration("No. Series");
149
+ if not ValidationResult.Success then
150
+ ProcessValidationErrors(ValidationResult);
151
+ ```
152
+
153
+ ## Performance-Optimized Validation
154
+
155
+ ### Reduced Database Queries
156
+ The new module optimizes validation with fewer database round-trips:
157
+ ```al
158
+ // Single call validates multiple aspects
159
+ if NoSeries.IsReadyForGeneration("No. Series", WorkDate()) then
160
+ ProcessNumberGeneration();
161
+ ```
162
+
163
+ ### Cached Validation Results
164
+ ```al
165
+ // Module handles caching internally
166
+ // Repeated validation calls are optimized
167
+ for i := 1 to DocumentCount do
168
+ NoSeries.GetNextNo("No. Series", WorkDate()); // Cached validation
169
+ ```
170
+
171
+ ### Batch Validation Optimization
172
+ ```al
173
+ // Validate entire batch before processing
174
+ ValidationResults := NoSeriesBatch.ValidateBatchAllocation("No. Series", BatchSize);
175
+ if ValidationResults.AllValid then
176
+ ProcessBatch();
177
+ ```
178
+
179
+ ## Integration with Business Processes
180
+
181
+ ### Transaction Validation
182
+ ```al
183
+ // Validate number series within transaction context
184
+ NoSeries.ValidateForTransaction("No. Series", TransactionDate);
185
+ ```
186
+
187
+ ### Multi-Company Validation
188
+ ```al
189
+ // Enhanced support for multi-company scenarios
190
+ NoSeries.ValidateAcrossCompanies("No. Series", CompanyList);
191
+ ```
192
+
193
+ ### Audit Trail Integration
194
+ ```al
195
+ // Built-in audit trail support
196
+ NoSeries.LogValidationActivity("No. Series", ValidationAction::Validate);
197
+ ```
198
+
199
+ ## Best Practices for BC24+
200
+
201
+ ### Leverage Built-In Validation
202
+ - Use module's native validation methods instead of custom logic
203
+ - Trust the module's error handling and messaging
204
+ - Utilize built-in logging and audit capabilities
205
+
206
+ ### Simplify Validation Logic
207
+ - Remove complex custom validation patterns
208
+ - Focus on business-specific validation requirements
209
+ - Let the module handle technical validation aspects
210
+
211
+ ### Error Handling Strategy
212
+ - Implement graceful degradation for validation failures
213
+ - Provide business-friendly error messages
214
+ - Use try-methods for scenarios where validation failure is expected
215
+
216
+ ## Common Migration Pitfalls
217
+
218
+ ### Over-Validation
219
+ Avoid duplicating validation that the new module already performs internally.
220
+
221
+ ### Event Dependency
222
+ Don't rely on obsolete events - redesign validation logic using direct method calls.
223
+
224
+ ### Custom Table Access
225
+ Avoid direct table manipulation - use module methods for all series operations.
226
+
227
+ ## Testing Validation Migration
228
+
229
+ ### Functional Validation Testing
230
+ - Verify all validation scenarios work with new module methods
231
+ - Test error handling and messaging improvements
232
+ - Validate performance improvements in validation-heavy scenarios
233
+
234
+ ### Integration Testing
235
+ - Test validation integration with existing business processes
236
+ - Verify compatibility with custom validation requirements
237
+ - Test cross-series validation scenarios
238
+
239
+ ### Regression Testing
240
+ - Ensure existing validation behavior is preserved
241
+ - Test edge cases and error conditions
242
+ - Validate performance under load
243
+
244
+ *Complete BC24+ validation examples: samples/no-series-validation-module-bc24.md*
245
+ *Core module patterns: no-series-module-patterns-bc24.md*
246
+ *Migration guidance: bc24-no-series-conversion-guide.md*
@@ -0,0 +1,107 @@
1
+ ---
2
+ title: "No Series Validation Patterns"
3
+ domain: "dean-debug"
4
+ difficulty: "intermediate"
5
+ bc_versions: "14..23"
6
+ tags: ["no-series-validation", "data-validation", "integrity-checking", "error-prevention"]
7
+ prerequisites: ["no-series-implementation-patterns", "validation-frameworks", "error-handling"]
8
+ samples: "samples/no-series-validation.md"
9
+ related_topics: ["no-series-implementation-patterns", "data-integrity-patterns"]
10
+ ---
11
+
12
+ # No Series Validation Patterns
13
+
14
+ ## Overview
15
+
16
+ No Series Validation Patterns provide comprehensive approaches for validating number sequences, ensuring data integrity, and preventing common numbering issues in Business Central applications. These patterns help maintain sequence integrity and compliance with business rules.
17
+
18
+ **Key Benefit**: Ensures number sequence integrity and compliance through systematic validation that prevents data corruption and maintains business rule adherence.
19
+
20
+ ## Core Validation Architecture
21
+
22
+ ### Multi-Layer Validation Strategy
23
+ Implement validation at multiple layers including input validation, business rule validation, and integrity validation to ensure comprehensive coverage.
24
+
25
+ ### Real-Time vs. Batch Validation
26
+ Design validation strategies that balance real-time validation for immediate feedback with batch validation for comprehensive integrity checking.
27
+
28
+ ### Validation Result Management
29
+ Create systems for managing validation results, tracking issues, and coordinating resolution efforts across different validation scenarios.
30
+
31
+ ## Essential Validation Patterns
32
+
33
+ ### Format Validation
34
+ Implement validation patterns that ensure generated numbers conform to expected formats, character sets, and length requirements.
35
+
36
+ ### Uniqueness Validation
37
+ Design uniqueness checking that can efficiently validate number uniqueness across large datasets while maintaining performance.
38
+
39
+ ### Sequence Integrity Validation
40
+ Create validation patterns that check for sequence continuity, gap detection, and sequence corruption issues.
41
+
42
+ ## Advanced Validation Techniques
43
+
44
+ ### Cross-Reference Validation
45
+ Implement validation that checks number consistency across related tables and ensures referential integrity in number usage.
46
+
47
+ ### Business Rule Validation
48
+ Design validation patterns that ensure number generation and usage comply with specific business rules and policies.
49
+
50
+ ### Historical Validation
51
+ Create validation capabilities that can check historical number usage and detect retroactive integrity issues.
52
+
53
+ ## Validation Framework Architecture
54
+
55
+ ### Configurable Validation Rules
56
+ - Design validation frameworks that support configurable rules for different numbering scenarios
57
+ - Enable business users to configure validation criteria through setup interfaces
58
+ - Support dynamic validation rule changes without code modification
59
+ - Provide validation rule testing and simulation capabilities
60
+
61
+ ### Validation Pipeline
62
+ Implement sequential validation checks with conditional execution and performance monitoring.
63
+
64
+ ## Core Implementation
65
+
66
+ ### Error Detection & Reporting
67
+ Categorize errors by severity, provide detailed reports, and implement automated issue detection.
68
+
69
+ ### Performance Optimization
70
+ Design efficient algorithms, incremental validation, and intelligent caching for optimal performance.
71
+
72
+ ### Business Process Integration
73
+ Integrate with workflows, support transaction validation, and provide real-time feedback.
74
+
75
+ ## Advanced Capabilities
76
+
77
+ ### Monitoring & Compliance
78
+ Implement metrics collection, health monitoring, and audit trail validation to ensure system reliability and regulatory compliance.
79
+
80
+ ### Regulatory Compliance
81
+ Design validation that supports regulatory compliance requirements for number sequence management and documentation.
82
+
83
+ ### Compliance Reporting
84
+ Create reporting capabilities that demonstrate compliance with numbering policies and regulatory requirements.
85
+
86
+ ## Recovery and Remediation
87
+
88
+ ### Validation Failure Recovery
89
+ Design recovery procedures for scenarios where validation failures indicate data integrity issues requiring correction.
90
+
91
+ ### Automated Remediation
92
+ Implement automated remediation capabilities for common validation issues that can be safely resolved automatically.
93
+
94
+ ### Manual Intervention Support
95
+ Provide tools and procedures for manual intervention in complex validation scenarios requiring human judgment.
96
+
97
+ ## Implementation Guidelines
98
+
99
+ ### Testing & Best Practices
100
+ Design comprehensive testing strategies, implement early validation, provide actionable feedback, and maintain clear documentation.
101
+
102
+ ### Common Pitfalls
103
+ Avoid over-validation, validation gaps, and false positives through balanced design and comprehensive coverage.
104
+
105
+ *Complete validation implementation examples: samples/no-series-validation.md*
106
+ *No series implementation: no-series-implementation-patterns.md*
107
+ *Data integrity frameworks: data-integrity-patterns.md*
@@ -0,0 +1,105 @@
1
+ ---
2
+ title: "OData Query Performance Optimization"
3
+ domain: "dean-debug"
4
+ difficulty: "advanced"
5
+ bc_versions: "14+"
6
+ tags: ["odata", "query-performance", "api-optimization"]
7
+ samples: "samples/odata-query-optimization.md"
8
+ ---
9
+ # OData Query Performance Optimization
10
+
11
+ ## Overview
12
+
13
+ OData query performance in BC API Pages requires understanding how OData expressions translate to SQL queries and how table structure affects execution performance. Proper optimization techniques can dramatically improve API response times and reduce resource consumption.
14
+
15
+ The BC platform automatically translates OData queries into SQL operations against the underlying database. Understanding this translation process helps identify optimization opportunities and avoid performance anti-patterns in API implementations.
16
+
17
+ Query performance varies significantly based on data volume, table structure, indexing strategy, and query complexity. Systematic optimization approaches address these factors to achieve predictable performance characteristics.
18
+
19
+ ## Query Translation Mechanisms
20
+
21
+ OData filter expressions map to SQL WHERE clauses with varying efficiency depending on filter complexity and available table keys. Simple equality filters on indexed fields provide optimal performance.
22
+
23
+ Complex filter expressions involving multiple fields, functions, or nested conditions may result in less efficient SQL queries. Understanding the translation patterns helps structure OData queries for optimal database execution.
24
+
25
+ The BC platform may choose different execution strategies based on available indexes and query complexity. Monitoring actual SQL execution provides insight into optimization opportunities.
26
+
27
+ ## Filter Optimization Strategies
28
+
29
+ Structure OData filters to leverage available table keys and indexes. Leading filter conditions should target the most selective indexed fields to minimize result set size early in query execution.
30
+
31
+ Avoid complex expressions in filter conditions that prevent index usage. Simple comparisons perform better than function calls or complex logical combinations that cannot be optimized by the query engine.
32
+
33
+ Consider the order of filter conditions in complex expressions. The BC query optimizer may not reorder conditions for optimal performance, making condition ordering an important performance factor.
34
+
35
+ ## Projection and Field Selection
36
+
37
+ Use OData $select queries to limit returned fields to only those required by the API consumer. This reduces network transfer overhead and can improve query performance by avoiding unnecessary field retrieval.
38
+
39
+ Avoid selecting large text fields, BLOB fields, or complex calculated fields unless specifically required. These field types consume significant resources and can dramatically impact query performance.
40
+
41
+ Strategic field selection can sometimes influence query execution plans by reducing the data volume processed during query execution and result set construction.
42
+
43
+ ## Sorting and Pagination Performance
44
+
45
+ OData $orderby operations require careful optimization to avoid performance issues with large result sets. Ensure sort fields have appropriate indexes or are part of existing table key structures.
46
+
47
+ Implement proper pagination using $skip and $top parameters to limit result set size. Large result sets without pagination can cause timeout issues and resource exhaustion in both BC and API consumers.
48
+
49
+ Consider the impact of sort operations on temporary storage requirements. Complex sorts on large datasets may require significant temporary storage allocation during query execution.
50
+
51
+ ## Aggregation Query Optimization
52
+
53
+ OData aggregation queries using $apply operations require special consideration for performance optimization. These queries can be particularly resource-intensive and may benefit from specialized indexing strategies.
54
+
55
+ Consider using SIFT technology for frequently executed aggregation operations. SIFT provides pre-calculated aggregations that can dramatically improve performance for common aggregation patterns.
56
+
57
+ Monitor aggregation query performance closely as these operations can consume significant CPU and memory resources, especially with large datasets and complex grouping requirements.
58
+
59
+ ## Expansion and Navigation Performance
60
+
61
+ OData $expand operations that traverse table relationships require optimization to prevent performance issues. Each expansion level adds complexity and resource requirements to query execution.
62
+
63
+ Limit expansion depth and scope to only required related data. Deep expansions across multiple table relationships can result in cartesian product scenarios that consume excessive resources.
64
+
65
+ Consider the performance impact of expanding one-to-many relationships which can dramatically increase result set size and processing requirements.
66
+
67
+ ## Caching and Performance Patterns
68
+
69
+ Understand BC platform caching behavior for API queries to optimize for cache effectiveness. Repeated queries with identical parameters may benefit from platform-level caching mechanisms.
70
+
71
+ Design API query patterns that align with BC caching strategies. This may involve structuring queries to maximize cache hit ratios and minimize cache invalidation scenarios.
72
+
73
+ Consider implementing application-level caching for expensive queries that don't require real-time data. This can significantly reduce database load and improve overall system performance.
74
+
75
+ ## Resource Management
76
+
77
+ Monitor resource consumption for API queries including CPU utilization, memory usage, and database connection requirements. High-resource queries can impact overall system performance.
78
+
79
+ Implement appropriate timeout settings for API queries to prevent resource exhaustion from long-running operations. Balance timeout values with legitimate query execution requirements.
80
+
81
+ Consider connection pooling and resource allocation strategies for high-volume API scenarios. Resource contention can significantly impact query performance under load.
82
+
83
+ ## Performance Testing and Validation
84
+
85
+ Establish performance baselines for critical API queries under realistic data volumes. Performance characteristics often change dramatically as data volumes increase.
86
+
87
+ Test query performance with production-like data distributions and volumes. Development environment testing may not reveal performance issues that occur with production data characteristics.
88
+
89
+ Implement automated performance monitoring for critical API endpoints to detect performance degradation early and enable proactive optimization efforts.
90
+
91
+ ## Troubleshooting Performance Issues
92
+
93
+ Use BC telemetry and database performance monitoring tools to identify slow-performing queries and understand root cause performance issues.
94
+
95
+ Analyze actual SQL query execution plans generated from OData queries to identify optimization opportunities and understand query execution characteristics.
96
+
97
+ Monitor for common performance anti-patterns including table scans, excessive temporary storage usage, and resource contention issues that impact query execution.
98
+
99
+ ## Best Practices
100
+
101
+ Design OData query patterns based on available table structures and indexing strategies rather than generic OData capabilities. Align query design with underlying database optimization principles.
102
+
103
+ Balance query functionality with performance requirements. Complex OData queries provide flexibility but may sacrifice performance compared to simpler, more targeted query approaches.
104
+
105
+ Document performance assumptions and optimization decisions for critical API endpoints. This documentation supports ongoing performance management and troubleshooting efforts.
@@ -0,0 +1,186 @@
1
+ # BC24 No. Series Conversion Examples
2
+
3
+ ## Complete Conversion Examples
4
+
5
+ ### Sales Document Conversion
6
+ ```al
7
+ // BEFORE (BC14-23): Legacy NoSeriesManagement approach
8
+ table 50100 "Sales Document"
9
+ {
10
+ trigger OnInsert()
11
+ var
12
+ NoSeriesMgt: Codeunit NoSeriesManagement;
13
+ begin
14
+ if "No." = '' then
15
+ NoSeriesMgt.InitSeries(GetNoSeriesCode(), xRec."No. Series", 0D, "No.", "No. Series");
16
+ end;
17
+
18
+ procedure GetNoSeriesCode(): Code[20]
19
+ begin
20
+ exit('SALES-DOC');
21
+ end;
22
+ }
23
+
24
+ // AFTER (BC24+): New No. Series module approach
25
+ table 50100 "Sales Document"
26
+ {
27
+ trigger OnInsert()
28
+ var
29
+ NoSeries: Codeunit "No. Series";
30
+ begin
31
+ if "No." = '' then
32
+ "No." := NoSeries.GetNextNo("No. Series", WorkDate());
33
+ end;
34
+
35
+ procedure GetNoSeriesCode(): Code[20]
36
+ begin
37
+ exit('SALES-DOC');
38
+ end;
39
+ }
40
+ ```
41
+
42
+ ### Manual Number Testing Conversion
43
+ ```al
44
+ // BEFORE (BC14-23): Multiple method calls for manual testing
45
+ procedure ValidateManualEntry()
46
+ var
47
+ NoSeriesMgt: Codeunit NoSeriesManagement;
48
+ begin
49
+ NoSeriesMgt.TestManual("No. Series");
50
+ if not NoSeriesMgt.ManualNoAllowed("No. Series") then
51
+ Error('Manual numbers not allowed for series %1', "No. Series");
52
+ end;
53
+
54
+ // AFTER (BC24+): Single method with built-in logic
55
+ procedure ValidateManualEntry()
56
+ var
57
+ NoSeries: Codeunit "No. Series";
58
+ begin
59
+ NoSeries.TestManual("No. Series");
60
+ // Built-in error handling provides comprehensive validation
61
+ end;
62
+ ```
63
+
64
+ ### Number Peek vs Allocation Conversion
65
+ ```al
66
+ // BEFORE (BC14-23): Boolean parameter controls behavior
67
+ procedure GetNumberPreview(): Code[20]
68
+ var
69
+ NoSeriesMgt: Codeunit NoSeriesManagement;
70
+ begin
71
+ exit(NoSeriesMgt.GetNextNo("No. Series", WorkDate(), false)); // Peek only
72
+ end;
73
+
74
+ procedure AllocateNumber(): Code[20]
75
+ var
76
+ NoSeriesMgt: Codeunit NoSeriesManagement;
77
+ begin
78
+ exit(NoSeriesMgt.GetNextNo("No. Series", WorkDate(), true)); // Allocate
79
+ end;
80
+
81
+ // AFTER (BC24+): Explicit method names for clear intent
82
+ procedure GetNumberPreview(): Code[20]
83
+ var
84
+ NoSeries: Codeunit "No. Series";
85
+ begin
86
+ exit(NoSeries.PeekNextNo("No. Series", WorkDate())); // Explicit peek
87
+ end;
88
+
89
+ procedure AllocateNumber(): Code[20]
90
+ var
91
+ NoSeries: Codeunit "No. Series";
92
+ begin
93
+ exit(NoSeries.GetNextNo("No. Series", WorkDate())); // Explicit allocation
94
+ end;
95
+ ```
96
+
97
+ ## Event Migration Examples
98
+
99
+ ### Replacing Obsolete Events
100
+ ```al
101
+ // BEFORE (BC14-23): Event subscriber approach
102
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::NoSeriesManagement, 'OnBeforeGetNextNo', '', true, true)]
103
+ local procedure OnBeforeGetNextNo(NoSeriesCode: Code[20]; var NoSeriesLine: Record "No. Series Line"; var IsHandled: Boolean)
104
+ begin
105
+ // Custom logic before number generation
106
+ if NoSeriesCode = 'SPECIAL-SERIES' then begin
107
+ PerformCustomValidation(NoSeriesCode);
108
+ IsHandled := true;
109
+ end;
110
+ end;
111
+
112
+ // AFTER (BC24+): Direct method call with wrapper
113
+ procedure GetNextNoWithCustomLogic(SeriesCode: Code[20]): Code[20]
114
+ var
115
+ NoSeries: Codeunit "No. Series";
116
+ begin
117
+ // Pre-processing logic (replaces OnBeforeGetNextNo)
118
+ if SeriesCode = 'SPECIAL-SERIES' then
119
+ PerformCustomValidation(SeriesCode);
120
+
121
+ // Get number using new module
122
+ exit(NoSeries.GetNextNo(SeriesCode, WorkDate()));
123
+ end;
124
+ ```
125
+
126
+ ### Complex Event Replacement
127
+ ```al
128
+ // BEFORE (BC14-23): Multiple event subscriptions
129
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::NoSeriesManagement, 'OnAfterGetNextNo', '', true, true)]
130
+ local procedure OnAfterGetNextNo(NoSeriesCode: Code[20]; NextNo: Code[20])
131
+ begin
132
+ LogNumberAllocation(NoSeriesCode, NextNo);
133
+ UpdateRelatedSeries(NoSeriesCode, NextNo);
134
+ end;
135
+
136
+ // AFTER (BC24+): Integrated procedure with post-processing
137
+ procedure AllocateNumberWithLogging(SeriesCode: Code[20]): Code[20]
138
+ var
139
+ NoSeries: Codeunit "No. Series";
140
+ AllocatedNumber: Code[20];
141
+ begin
142
+ // Allocate number
143
+ AllocatedNumber := NoSeries.GetNextNo(SeriesCode, WorkDate());
144
+
145
+ // Post-processing logic (replaces OnAfterGetNextNo)
146
+ LogNumberAllocation(SeriesCode, AllocatedNumber);
147
+ UpdateRelatedSeries(SeriesCode, AllocatedNumber);
148
+
149
+ exit(AllocatedNumber);
150
+ end;
151
+ ```
152
+
153
+ ## Complete Migration Checklist
154
+
155
+ ### Step 1: Variable Declaration Updates
156
+ ```al
157
+ // Remove these legacy declarations
158
+ var
159
+ NoSeriesMgt: Codeunit NoSeriesManagement;
160
+
161
+ // Replace with new module references
162
+ var
163
+ NoSeries: Codeunit "No. Series";
164
+ NoSeriesBatch: Codeunit "No. Series - Batch";
165
+ ```
166
+
167
+ ### Step 2: Method Call Replacements
168
+ ```al
169
+ // Replace all instances of these patterns:
170
+ NoSeriesMgt.InitSeries(...) → NoSeries.GetNextNo(...)
171
+ NoSeriesMgt.TestManual(...) → NoSeries.TestManual(...)
172
+ NoSeriesMgt.SelectSeries(...) → NoSeries.LookupRelatedNoSeries(...)
173
+ NoSeriesMgt.GetNextNo(..., false) → NoSeries.PeekNextNo(...)
174
+ NoSeriesMgt.GetNextNo(..., true) → NoSeries.GetNextNo(...)
175
+ ```
176
+
177
+ ### Step 3: Error Handling Migration
178
+ ```al
179
+ // BEFORE: Custom error handling required
180
+ if not NoSeriesMgt.TryFunction(...) then
181
+ Error('Custom error message');
182
+
183
+ // AFTER: Built-in error handling with try methods
184
+ if not NoSeries.TryGetNextNo(ResultNo, SeriesCode, WorkDate()) then
185
+ HandleSpecificFailureScenario();
186
+ ```