bc-code-intelligence-mcp 1.3.3 → 1.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (548) hide show
  1. package/dist/config/test-enhanced-layer-service.js +10 -10
  2. package/dist/config/test-enhanced-layer-service.js.map +1 -1
  3. package/dist/dev/hot-reload.d.ts +2 -2
  4. package/dist/dev/hot-reload.d.ts.map +1 -1
  5. package/dist/dev/hot-reload.js.map +1 -1
  6. package/dist/index.d.ts +0 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +34 -38
  9. package/dist/index.js.map +1 -1
  10. package/dist/layers/index.d.ts +1 -1
  11. package/dist/layers/index.d.ts.map +1 -1
  12. package/dist/layers/index.js +1 -1
  13. package/dist/layers/index.js.map +1 -1
  14. package/dist/services/code-analysis-service.d.ts.map +1 -1
  15. package/dist/services/code-analysis-service.js +4 -0
  16. package/dist/services/code-analysis-service.js.map +1 -1
  17. package/dist/services/knowledge-service.d.ts +21 -10
  18. package/dist/services/knowledge-service.d.ts.map +1 -1
  19. package/dist/services/knowledge-service.js +71 -54
  20. package/dist/services/knowledge-service.js.map +1 -1
  21. package/dist/services/multi-content-layer-service.d.ts +90 -0
  22. package/dist/services/multi-content-layer-service.d.ts.map +1 -1
  23. package/dist/services/multi-content-layer-service.js +380 -0
  24. package/dist/services/multi-content-layer-service.js.map +1 -1
  25. package/dist/services/workflow-service.d.ts +11 -3
  26. package/dist/services/workflow-service.d.ts.map +1 -1
  27. package/dist/services/workflow-service.js +119 -78
  28. package/dist/services/workflow-service.js.map +1 -1
  29. package/dist/streamlined-handlers.d.ts +31 -2
  30. package/dist/streamlined-handlers.d.ts.map +1 -1
  31. package/dist/streamlined-handlers.js +151 -109
  32. package/dist/streamlined-handlers.js.map +1 -1
  33. package/dist/streamlined-tools.d.ts +12 -0
  34. package/dist/streamlined-tools.d.ts.map +1 -1
  35. package/dist/streamlined-tools.js +11 -6
  36. package/dist/streamlined-tools.js.map +1 -1
  37. package/package.json +13 -4
  38. package/embedded-knowledge/.github/ISSUE_TEMPLATE/bug-report.md +0 -24
  39. package/embedded-knowledge/.github/ISSUE_TEMPLATE/content-improvement.md +0 -24
  40. package/embedded-knowledge/.github/ISSUE_TEMPLATE/knowledge-request.md +0 -30
  41. package/embedded-knowledge/AGENTS.md +0 -178
  42. package/embedded-knowledge/CONTRIBUTING.md +0 -58
  43. package/embedded-knowledge/LICENSE +0 -21
  44. package/embedded-knowledge/README.md +0 -32
  45. package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +0 -90
  46. package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +0 -113
  47. package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +0 -101
  48. package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +0 -87
  49. package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +0 -155
  50. package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +0 -138
  51. package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +0 -79
  52. package/embedded-knowledge/domains/alex-architect/samples/api-delegate-operation.md +0 -280
  53. package/embedded-knowledge/domains/alex-architect/samples/api-fieldset-registration.md +0 -200
  54. package/embedded-knowledge/domains/alex-architect/samples/api-interface-design.md +0 -565
  55. package/embedded-knowledge/domains/alex-architect/samples/api-page-implementation.md +0 -665
  56. package/embedded-knowledge/domains/alex-architect/samples/complex-facade-patterns.md +0 -325
  57. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern-al.md +0 -696
  58. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern.md +0 -320
  59. package/embedded-knowledge/domains/alex-architect/samples/subscriber-organization.md +0 -102
  60. package/embedded-knowledge/domains/alex-architect/samples/systemid-integration.md +0 -433
  61. package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +0 -66
  62. package/embedded-knowledge/domains/alex-architect/systemid-integration.md +0 -115
  63. package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +0 -360
  64. package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +0 -86
  65. package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +0 -96
  66. package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +0 -70
  67. package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +0 -84
  68. package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +0 -93
  69. package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +0 -73
  70. package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +0 -78
  71. package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +0 -79
  72. package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +0 -87
  73. package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +0 -209
  74. package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +0 -246
  75. package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +0 -107
  76. package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +0 -105
  77. package/embedded-knowledge/domains/dean-debug/samples/bc24-no-series-conversion.md +0 -186
  78. package/embedded-knowledge/domains/dean-debug/samples/case-performance-optimization.md +0 -60
  79. package/embedded-knowledge/domains/dean-debug/samples/compound-statements-debugging.md +0 -139
  80. package/embedded-knowledge/domains/dean-debug/samples/custom-dimensions.md +0 -190
  81. package/embedded-knowledge/domains/dean-debug/samples/custom-telemetry.md +0 -516
  82. package/embedded-knowledge/domains/dean-debug/samples/deleteall-performance.md +0 -298
  83. package/embedded-knowledge/domains/dean-debug/samples/error-correlation.md +0 -324
  84. package/embedded-knowledge/domains/dean-debug/samples/extension-isolation.md +0 -344
  85. package/embedded-knowledge/domains/dean-debug/samples/logmessage-methods.md +0 -137
  86. package/embedded-knowledge/domains/dean-debug/samples/maintainsiftindex-examples.md +0 -340
  87. package/embedded-knowledge/domains/dean-debug/samples/no-series-implementation.md +0 -810
  88. package/embedded-knowledge/domains/dean-debug/samples/no-series-module-bc24.md +0 -86
  89. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation-module-bc24.md +0 -110
  90. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation.md +0 -758
  91. package/embedded-knowledge/domains/dean-debug/samples/odata-query-optimization.md +0 -665
  92. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-case.md +0 -316
  93. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-filters.md +0 -223
  94. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-filter-exclusion.md +0 -149
  95. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-optimization.md +0 -412
  96. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-performance.md +0 -211
  97. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-primary-key.md +0 -155
  98. package/embedded-knowledge/domains/dean-debug/samples/sift-technology-fundamentals.md +0 -475
  99. package/embedded-knowledge/domains/dean-debug/samples/singleinstance-subscribers.md +0 -238
  100. package/embedded-knowledge/domains/dean-debug/samples/table-event-batching.md +0 -97
  101. package/embedded-knowledge/domains/dean-debug/samples/table-key-requirements.md +0 -666
  102. package/embedded-knowledge/domains/dean-debug/samples/telemetry-performance.md +0 -319
  103. package/embedded-knowledge/domains/dean-debug/samples/verbosity-strategy.md +0 -236
  104. package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +0 -59
  105. package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +0 -67
  106. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +0 -70
  107. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +0 -90
  108. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +0 -87
  109. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +0 -70
  110. package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +0 -74
  111. package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +0 -81
  112. package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +0 -56
  113. package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +0 -66
  114. package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +0 -79
  115. package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +0 -78
  116. package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +0 -83
  117. package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +0 -76
  118. package/embedded-knowledge/domains/dean-debug/testfield-performance.md +0 -104
  119. package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +0 -145
  120. package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +0 -104
  121. package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +0 -114
  122. package/embedded-knowledge/domains/eva-errors/samples/fielderror-default-messages.md +0 -356
  123. package/embedded-knowledge/domains/eva-errors/samples/fielderror-syntax.md +0 -256
  124. package/embedded-knowledge/domains/eva-errors/samples/table-safety-validation-patterns.md +0 -101
  125. package/embedded-knowledge/domains/eva-errors/samples/testfield-error-handling.md +0 -108
  126. package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +0 -80
  127. package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +0 -98
  128. package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +0 -123
  129. package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +0 -96
  130. package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +0 -115
  131. package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +0 -115
  132. package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +0 -114
  133. package/embedded-knowledge/domains/jordan-bridge/samples/al-event-subscriber-architecture.md +0 -395
  134. package/embedded-knowledge/domains/jordan-bridge/samples/api-error-responses.md +0 -479
  135. package/embedded-knowledge/domains/jordan-bridge/samples/api-field-control.md +0 -548
  136. package/embedded-knowledge/domains/jordan-bridge/samples/api-url-naming.md +0 -287
  137. package/embedded-knowledge/domains/jordan-bridge/samples/business-process-templates.md +0 -434
  138. package/embedded-knowledge/domains/jordan-bridge/samples/etag-implementation.md +0 -508
  139. package/embedded-knowledge/domains/jordan-bridge/samples/task-scheduler-pattern.md +0 -615
  140. package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +0 -144
  141. package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +0 -96
  142. package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +0 -124
  143. package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +0 -84
  144. package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +0 -75
  145. package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +0 -96
  146. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-multiple-conditions.md +0 -385
  147. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-syntax-structure.md +0 -72
  148. package/embedded-knowledge/domains/maya-mentor/samples/fielderror-syntax-usage.md +0 -48
  149. package/embedded-knowledge/domains/maya-mentor/samples/testfield-basic-syntax.md +0 -49
  150. package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +0 -67
  151. package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +0 -119
  152. package/embedded-knowledge/domains/quinn-tester/rule-execution.md +0 -123
  153. package/embedded-knowledge/domains/quinn-tester/samples/case-error-handling.md +0 -64
  154. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-message-construction.md +0 -60
  155. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-validation-patterns.md +0 -83
  156. package/embedded-knowledge/domains/quinn-tester/samples/rule-execution.md +0 -716
  157. package/embedded-knowledge/domains/quinn-tester/samples/table-safety-validation-patterns.md +0 -101
  158. package/embedded-knowledge/domains/quinn-tester/samples/temporary-table-operation-validation.md +0 -91
  159. package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +0 -79
  160. package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +0 -79
  161. package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +0 -89
  162. package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +0 -76
  163. package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +0 -76
  164. package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +0 -76
  165. package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +0 -81
  166. package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +0 -76
  167. package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +0 -75
  168. package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +0 -76
  169. package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +0 -76
  170. package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +0 -76
  171. package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +0 -96
  172. package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +0 -76
  173. package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +0 -86
  174. package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +0 -90
  175. package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +0 -82
  176. package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +0 -78
  177. package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +0 -76
  178. package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +0 -78
  179. package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +0 -100
  180. package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +0 -115
  181. package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +0 -124
  182. package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +0 -110
  183. package/embedded-knowledge/domains/roger-reviewer/samples/al-begin-end-blocks.md +0 -438
  184. package/embedded-knowledge/domains/roger-reviewer/samples/al-binary-operator-spacing.md +0 -255
  185. package/embedded-knowledge/domains/roger-reviewer/samples/al-comment-spacing-standards.md +0 -209
  186. package/embedded-knowledge/domains/roger-reviewer/samples/al-keyword-indentation-rules.md +0 -218
  187. package/embedded-knowledge/domains/roger-reviewer/samples/al-line-start-keyword-positioning.md +0 -218
  188. package/embedded-knowledge/domains/roger-reviewer/samples/al-separate-if-else-formatting.md +0 -280
  189. package/embedded-knowledge/domains/roger-reviewer/samples/al-statement-per-line-rule.md +0 -188
  190. package/embedded-knowledge/domains/roger-reviewer/samples/al-unnecessary-else-elimination.md +0 -245
  191. package/embedded-knowledge/domains/roger-reviewer/samples/al-variable-declaration-order.md +0 -244
  192. package/embedded-knowledge/domains/roger-reviewer/samples/begin-end-positioning.md +0 -278
  193. package/embedded-knowledge/domains/roger-reviewer/samples/boolean-simplification-examples.md +0 -484
  194. package/embedded-knowledge/domains/roger-reviewer/samples/case-error-handling.md +0 -64
  195. package/embedded-knowledge/domains/roger-reviewer/samples/compound-statement-readability.md +0 -107
  196. package/embedded-knowledge/domains/roger-reviewer/samples/lonely-repeat-examples.md +0 -280
  197. package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +0 -75
  198. package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +0 -67
  199. package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +0 -76
  200. package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +0 -98
  201. package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +0 -128
  202. package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +0 -75
  203. package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +0 -95
  204. package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +0 -141
  205. package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +0 -91
  206. package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +0 -118
  207. package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +0 -111
  208. package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +0 -113
  209. package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +0 -127
  210. package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +0 -141
  211. package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +0 -66
  212. package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +0 -96
  213. package/embedded-knowledge/domains/sam-coder/samples/al-blank-line-organization.md +0 -161
  214. package/embedded-knowledge/domains/sam-coder/samples/al-case-action-formatting.md +0 -177
  215. package/embedded-knowledge/domains/sam-coder/samples/al-lonely-repeat-pattern.md +0 -239
  216. package/embedded-knowledge/domains/sam-coder/samples/al-named-parameter-pattern.md +0 -346
  217. package/embedded-knowledge/domains/sam-coder/samples/al-record-find-early-exit.md +0 -298
  218. package/embedded-knowledge/domains/sam-coder/samples/command-queue-pattern.md +0 -677
  219. package/embedded-knowledge/domains/sam-coder/samples/deleteall-alternative-implementation.md +0 -117
  220. package/embedded-knowledge/domains/sam-coder/samples/deleteall-triggers.md +0 -75
  221. package/embedded-knowledge/domains/sam-coder/samples/deleteall-usage.md +0 -169
  222. package/embedded-knowledge/domains/sam-coder/samples/event-bridge-pattern.md +0 -399
  223. package/embedded-knowledge/domains/sam-coder/samples/event-payload-design.md +0 -356
  224. package/embedded-knowledge/domains/sam-coder/samples/generic-method-patterns.md +0 -889
  225. package/embedded-knowledge/domains/sam-coder/samples/manual-binding.md +0 -84
  226. package/embedded-knowledge/domains/sam-coder/samples/nested-compound-best-practices.md +0 -127
  227. package/embedded-knowledge/domains/sam-coder/samples/single-to-compound-conversion.md +0 -89
  228. package/embedded-knowledge/domains/sam-coder/samples/template-method-pattern.md +0 -516
  229. package/embedded-knowledge/domains/sam-coder/samples/testfield-patterns.md +0 -61
  230. package/embedded-knowledge/domains/sam-coder/samples/type-safe-operations.md +0 -427
  231. package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +0 -122
  232. package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +0 -96
  233. package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +0 -101
  234. package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +0 -149
  235. package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +0 -107
  236. package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +0 -95
  237. package/embedded-knowledge/domains/seth-security/api-permission-model.md +0 -115
  238. package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +0 -78
  239. package/embedded-knowledge/domains/seth-security/samples/al-temporary-table-safety.md +0 -373
  240. package/embedded-knowledge/domains/seth-security/samples/api-permission-model.md +0 -308
  241. package/embedded-knowledge/domains/shared/al-file-naming-conventions.md +0 -146
  242. package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +0 -79
  243. package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +0 -78
  244. package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +0 -81
  245. package/embedded-knowledge/indexes/bc-version-matrix.json +0 -188
  246. package/embedded-knowledge/indexes/domain-catalog.json +0 -106
  247. package/embedded-knowledge/indexes/tags/abbreviations.json +0 -1
  248. package/embedded-knowledge/indexes/tags/abstraction.json +0 -1
  249. package/embedded-knowledge/indexes/tags/access-control.json +0 -1
  250. package/embedded-knowledge/indexes/tags/accessibility.json +0 -1
  251. package/embedded-knowledge/indexes/tags/actions.json +0 -1
  252. package/embedded-knowledge/indexes/tags/advanced-patterns.json +0 -1
  253. package/embedded-knowledge/indexes/tags/advanced.json +0 -1
  254. package/embedded-knowledge/indexes/tags/al-extension.json +0 -1
  255. package/embedded-knowledge/indexes/tags/al-generics.json +0 -1
  256. package/embedded-knowledge/indexes/tags/al-objects.json +0 -1
  257. package/embedded-knowledge/indexes/tags/al-syntax.json +0 -1
  258. package/embedded-knowledge/indexes/tags/algorithm-structure.json +0 -1
  259. package/embedded-knowledge/indexes/tags/alternatives.json +0 -1
  260. package/embedded-knowledge/indexes/tags/analytics.json +0 -1
  261. package/embedded-knowledge/indexes/tags/api-delegates.json +0 -1
  262. package/embedded-knowledge/indexes/tags/api-design.json +0 -1
  263. package/embedded-knowledge/indexes/tags/api-documentation.json +0 -1
  264. package/embedded-knowledge/indexes/tags/api-endpoints.json +0 -1
  265. package/embedded-knowledge/indexes/tags/api-extensibility.json +0 -1
  266. package/embedded-knowledge/indexes/tags/api-fieldsets.json +0 -1
  267. package/embedded-knowledge/indexes/tags/api-integration.json +0 -1
  268. package/embedded-knowledge/indexes/tags/api-interfaces.json +0 -1
  269. package/embedded-knowledge/indexes/tags/api-optimization.json +0 -1
  270. package/embedded-knowledge/indexes/tags/api-pages.json +0 -1
  271. package/embedded-knowledge/indexes/tags/api-patterns.json +0 -1
  272. package/embedded-knowledge/indexes/tags/api-permissions.json +0 -1
  273. package/embedded-knowledge/indexes/tags/api-responses.json +0 -1
  274. package/embedded-knowledge/indexes/tags/api-simplification.json +0 -1
  275. package/embedded-knowledge/indexes/tags/api.json +0 -1
  276. package/embedded-knowledge/indexes/tags/architecture.json +0 -1
  277. package/embedded-knowledge/indexes/tags/async-patterns.json +0 -1
  278. package/embedded-knowledge/indexes/tags/async-processing.json +0 -1
  279. package/embedded-knowledge/indexes/tags/automatic-registration.json +0 -1
  280. package/embedded-knowledge/indexes/tags/batch-operations.json +0 -1
  281. package/embedded-knowledge/indexes/tags/bc24-migration.json +0 -1
  282. package/embedded-knowledge/indexes/tags/begin-blocks.json +0 -1
  283. package/embedded-knowledge/indexes/tags/begin-end.json +0 -1
  284. package/embedded-knowledge/indexes/tags/behavioral-patterns.json +0 -1
  285. package/embedded-knowledge/indexes/tags/best-practices.json +0 -1
  286. package/embedded-knowledge/indexes/tags/binding.json +0 -1
  287. package/embedded-knowledge/indexes/tags/block-structure.json +0 -1
  288. package/embedded-knowledge/indexes/tags/blocks.json +0 -1
  289. package/embedded-knowledge/indexes/tags/boolean-expressions.json +0 -1
  290. package/embedded-knowledge/indexes/tags/branching.json +0 -1
  291. package/embedded-knowledge/indexes/tags/breaking-changes.json +0 -1
  292. package/embedded-knowledge/indexes/tags/breakpoints.json +0 -1
  293. package/embedded-knowledge/indexes/tags/business-foundation.json +0 -1
  294. package/embedded-knowledge/indexes/tags/business-infrastructure.json +0 -1
  295. package/embedded-knowledge/indexes/tags/business-process.json +0 -1
  296. package/embedded-knowledge/indexes/tags/business-rules.json +0 -1
  297. package/embedded-knowledge/indexes/tags/caching.json +0 -1
  298. package/embedded-knowledge/indexes/tags/case-statements.json +0 -1
  299. package/embedded-knowledge/indexes/tags/case.json +0 -1
  300. package/embedded-knowledge/indexes/tags/code-analysis.json +0 -1
  301. package/embedded-knowledge/indexes/tags/code-clarity.json +0 -1
  302. package/embedded-knowledge/indexes/tags/code-comprehension.json +0 -1
  303. package/embedded-knowledge/indexes/tags/code-conversion.json +0 -1
  304. package/embedded-knowledge/indexes/tags/code-formatting.json +0 -1
  305. package/embedded-knowledge/indexes/tags/code-organization.json +0 -1
  306. package/embedded-knowledge/indexes/tags/code-patterns.json +0 -1
  307. package/embedded-knowledge/indexes/tags/code-quality.json +0 -1
  308. package/embedded-knowledge/indexes/tags/code-reuse.json +0 -1
  309. package/embedded-knowledge/indexes/tags/code-simplification.json +0 -1
  310. package/embedded-knowledge/indexes/tags/code-standards.json +0 -1
  311. package/embedded-knowledge/indexes/tags/code-structure.json +0 -1
  312. package/embedded-knowledge/indexes/tags/code-style.json +0 -1
  313. package/embedded-knowledge/indexes/tags/codeunit-design.json +0 -1
  314. package/embedded-knowledge/indexes/tags/command-queue.json +0 -1
  315. package/embedded-knowledge/indexes/tags/comments.json +0 -1
  316. package/embedded-knowledge/indexes/tags/compile-time-validation.json +0 -1
  317. package/embedded-knowledge/indexes/tags/complex-facade.json +0 -1
  318. package/embedded-knowledge/indexes/tags/complexity-hiding.json +0 -1
  319. package/embedded-knowledge/indexes/tags/complexity-management.json +0 -1
  320. package/embedded-knowledge/indexes/tags/compound-statements.json +0 -1
  321. package/embedded-knowledge/indexes/tags/concurrency.json +0 -1
  322. package/embedded-knowledge/indexes/tags/conditional-logic.json +0 -1
  323. package/embedded-knowledge/indexes/tags/conditional.json +0 -1
  324. package/embedded-knowledge/indexes/tags/conflict-resolution.json +0 -1
  325. package/embedded-knowledge/indexes/tags/consistency.json +0 -1
  326. package/embedded-knowledge/indexes/tags/contract-design.json +0 -1
  327. package/embedded-knowledge/indexes/tags/control-flow.json +0 -1
  328. package/embedded-knowledge/indexes/tags/conversion-guide.json +0 -1
  329. package/embedded-knowledge/indexes/tags/correlation.json +0 -1
  330. package/embedded-knowledge/indexes/tags/custom-messages.json +0 -1
  331. package/embedded-knowledge/indexes/tags/data-access.json +0 -1
  332. package/embedded-knowledge/indexes/tags/data-exposure.json +0 -1
  333. package/embedded-knowledge/indexes/tags/data-integrity.json +0 -1
  334. package/embedded-knowledge/indexes/tags/data-loading.json +0 -1
  335. package/embedded-knowledge/indexes/tags/data-manipulation.json +0 -1
  336. package/embedded-knowledge/indexes/tags/data-modeling.json +0 -1
  337. package/embedded-knowledge/indexes/tags/data-patterns.json +0 -1
  338. package/embedded-knowledge/indexes/tags/data-protection.json +0 -1
  339. package/embedded-knowledge/indexes/tags/data-validation.json +0 -1
  340. package/embedded-knowledge/indexes/tags/database.json +0 -1
  341. package/embedded-knowledge/indexes/tags/debugging.json +0 -1
  342. package/embedded-knowledge/indexes/tags/decision-making.json +0 -1
  343. package/embedded-knowledge/indexes/tags/declaration.json +0 -1
  344. package/embedded-knowledge/indexes/tags/default-messages.json +0 -1
  345. package/embedded-knowledge/indexes/tags/defensive-programming.json +0 -1
  346. package/embedded-knowledge/indexes/tags/deleteall.json +0 -1
  347. package/embedded-knowledge/indexes/tags/dependencies.json +0 -1
  348. package/embedded-knowledge/indexes/tags/deployment.json +0 -1
  349. package/embedded-knowledge/indexes/tags/developer-productivity.json +0 -1
  350. package/embedded-knowledge/indexes/tags/development-workflow.json +0 -1
  351. package/embedded-knowledge/indexes/tags/diagnostics.json +0 -1
  352. package/embedded-knowledge/indexes/tags/dimensions.json +0 -1
  353. package/embedded-knowledge/indexes/tags/documentation.json +0 -1
  354. package/embedded-knowledge/indexes/tags/early-exit.json +0 -1
  355. package/embedded-knowledge/indexes/tags/else-clauses.json +0 -1
  356. package/embedded-knowledge/indexes/tags/end-statements.json +0 -1
  357. package/embedded-knowledge/indexes/tags/enterprise-patterns.json +0 -1
  358. package/embedded-knowledge/indexes/tags/entity-relationships.json +0 -1
  359. package/embedded-knowledge/indexes/tags/error-handling.json +0 -1
  360. package/embedded-knowledge/indexes/tags/error-messages.json +0 -1
  361. package/embedded-knowledge/indexes/tags/error-prevention.json +0 -1
  362. package/embedded-knowledge/indexes/tags/error-text.json +0 -1
  363. package/embedded-knowledge/indexes/tags/etag.json +0 -1
  364. package/embedded-knowledge/indexes/tags/event-bridge.json +0 -1
  365. package/embedded-knowledge/indexes/tags/event-payload.json +0 -1
  366. package/embedded-knowledge/indexes/tags/event-routing.json +0 -1
  367. package/embedded-knowledge/indexes/tags/events.json +0 -1
  368. package/embedded-knowledge/indexes/tags/execution-flow.json +0 -1
  369. package/embedded-knowledge/indexes/tags/expressions.json +0 -1
  370. package/embedded-knowledge/indexes/tags/extensibility.json +0 -1
  371. package/embedded-knowledge/indexes/tags/extensions.json +0 -1
  372. package/embedded-knowledge/indexes/tags/facade-composition.json +0 -1
  373. package/embedded-knowledge/indexes/tags/facade-pattern.json +0 -1
  374. package/embedded-knowledge/indexes/tags/field-control.json +0 -1
  375. package/embedded-knowledge/indexes/tags/field-exclusion.json +0 -1
  376. package/embedded-knowledge/indexes/tags/field-registration.json +0 -1
  377. package/embedded-knowledge/indexes/tags/field-state.json +0 -1
  378. package/embedded-knowledge/indexes/tags/field-validation.json +0 -1
  379. package/embedded-knowledge/indexes/tags/fielderror.json +0 -1
  380. package/embedded-knowledge/indexes/tags/fields.json +0 -1
  381. package/embedded-knowledge/indexes/tags/filtering.json +0 -1
  382. package/embedded-knowledge/indexes/tags/filters.json +0 -1
  383. package/embedded-knowledge/indexes/tags/formatting.json +0 -1
  384. package/embedded-knowledge/indexes/tags/generic-methods.json +0 -1
  385. package/embedded-knowledge/indexes/tags/http-status.json +0 -1
  386. package/embedded-knowledge/indexes/tags/if-statements.json +0 -1
  387. package/embedded-knowledge/indexes/tags/implementation.json +0 -1
  388. package/embedded-knowledge/indexes/tags/indentation.json +0 -1
  389. package/embedded-knowledge/indexes/tags/index-summary.json +0 -277
  390. package/embedded-knowledge/indexes/tags/indexing.json +0 -1
  391. package/embedded-knowledge/indexes/tags/inheritance.json +0 -1
  392. package/embedded-knowledge/indexes/tags/integration.json +0 -1
  393. package/embedded-knowledge/indexes/tags/integrity-checking.json +0 -1
  394. package/embedded-knowledge/indexes/tags/intellisense.json +0 -1
  395. package/embedded-knowledge/indexes/tags/interface-design.json +0 -1
  396. package/embedded-knowledge/indexes/tags/interface-segregation.json +0 -1
  397. package/embedded-knowledge/indexes/tags/isolation.json +0 -1
  398. package/embedded-knowledge/indexes/tags/job-processing.json +0 -1
  399. package/embedded-knowledge/indexes/tags/keyboard-navigation.json +0 -1
  400. package/embedded-knowledge/indexes/tags/keywords.json +0 -1
  401. package/embedded-knowledge/indexes/tags/legacy-modernization.json +0 -1
  402. package/embedded-knowledge/indexes/tags/line-breaks.json +0 -1
  403. package/embedded-knowledge/indexes/tags/line-organization.json +0 -1
  404. package/embedded-knowledge/indexes/tags/line-positioning.json +0 -1
  405. package/embedded-knowledge/indexes/tags/localization.json +0 -1
  406. package/embedded-knowledge/indexes/tags/logging.json +0 -1
  407. package/embedded-knowledge/indexes/tags/loose-coupling.json +0 -1
  408. package/embedded-knowledge/indexes/tags/maintainability.json +0 -1
  409. package/embedded-knowledge/indexes/tags/memory-management.json +0 -1
  410. package/embedded-knowledge/indexes/tags/memory-optimization.json +0 -1
  411. package/embedded-knowledge/indexes/tags/memory.json +0 -1
  412. package/embedded-knowledge/indexes/tags/message-design.json +0 -1
  413. package/embedded-knowledge/indexes/tags/message-formatting.json +0 -1
  414. package/embedded-knowledge/indexes/tags/message-patterns.json +0 -1
  415. package/embedded-knowledge/indexes/tags/metadata-driven.json +0 -1
  416. package/embedded-knowledge/indexes/tags/method-comparison.json +0 -1
  417. package/embedded-knowledge/indexes/tags/module-architecture.json +0 -1
  418. package/embedded-knowledge/indexes/tags/module-validation.json +0 -1
  419. package/embedded-knowledge/indexes/tags/monitoring.json +0 -1
  420. package/embedded-knowledge/indexes/tags/multi-layer-facade.json +0 -1
  421. package/embedded-knowledge/indexes/tags/multi-tenancy.json +0 -1
  422. package/embedded-knowledge/indexes/tags/multiple-values.json +0 -1
  423. package/embedded-knowledge/indexes/tags/naming-conventions.json +0 -1
  424. package/embedded-knowledge/indexes/tags/naming.json +0 -1
  425. package/embedded-knowledge/indexes/tags/navigation.json +0 -1
  426. package/embedded-knowledge/indexes/tags/nested-statements.json +0 -1
  427. package/embedded-knowledge/indexes/tags/no-series-conversion.json +0 -1
  428. package/embedded-knowledge/indexes/tags/no-series-validation.json +0 -1
  429. package/embedded-knowledge/indexes/tags/no-series.json +0 -1
  430. package/embedded-knowledge/indexes/tags/number-generation.json +0 -1
  431. package/embedded-knowledge/indexes/tags/object-documentation.json +0 -1
  432. package/embedded-knowledge/indexes/tags/odata.json +0 -1
  433. package/embedded-knowledge/indexes/tags/ondelete.json +0 -1
  434. package/embedded-knowledge/indexes/tags/onvalidate.json +0 -1
  435. package/embedded-knowledge/indexes/tags/operation-delegation.json +0 -1
  436. package/embedded-knowledge/indexes/tags/operation-safety.json +0 -1
  437. package/embedded-knowledge/indexes/tags/operators.json +0 -1
  438. package/embedded-knowledge/indexes/tags/optimization.json +0 -1
  439. package/embedded-knowledge/indexes/tags/order.json +0 -1
  440. package/embedded-knowledge/indexes/tags/organization.json +0 -1
  441. package/embedded-knowledge/indexes/tags/pages.json +0 -1
  442. package/embedded-knowledge/indexes/tags/parameters.json +0 -1
  443. package/embedded-knowledge/indexes/tags/patterns.json +0 -1
  444. package/embedded-knowledge/indexes/tags/performance-optimization.json +0 -1
  445. package/embedded-knowledge/indexes/tags/performance.json +0 -1
  446. package/embedded-knowledge/indexes/tags/placement.json +0 -1
  447. package/embedded-knowledge/indexes/tags/posting-codeunits.json +0 -1
  448. package/embedded-knowledge/indexes/tags/posting.json +0 -1
  449. package/embedded-knowledge/indexes/tags/preconditions.json +0 -1
  450. package/embedded-knowledge/indexes/tags/primary-key.json +0 -1
  451. package/embedded-knowledge/indexes/tags/privacy.json +0 -1
  452. package/embedded-knowledge/indexes/tags/process-automation.json +0 -1
  453. package/embedded-knowledge/indexes/tags/production.json +0 -1
  454. package/embedded-knowledge/indexes/tags/productivity.json +0 -1
  455. package/embedded-knowledge/indexes/tags/query-performance.json +0 -1
  456. package/embedded-knowledge/indexes/tags/queue-management.json +0 -1
  457. package/embedded-knowledge/indexes/tags/ranges.json +0 -1
  458. package/embedded-knowledge/indexes/tags/readability.json +0 -1
  459. package/embedded-knowledge/indexes/tags/record-access.json +0 -1
  460. package/embedded-knowledge/indexes/tags/record-methods.json +0 -1
  461. package/embedded-knowledge/indexes/tags/refactoring.json +0 -1
  462. package/embedded-knowledge/indexes/tags/reference.json +0 -1
  463. package/embedded-knowledge/indexes/tags/repeat-loops.json +0 -1
  464. package/embedded-knowledge/indexes/tags/repeat-statement.json +0 -1
  465. package/embedded-knowledge/indexes/tags/runtime-errors.json +0 -1
  466. package/embedded-knowledge/indexes/tags/runtime.json +0 -1
  467. package/embedded-knowledge/indexes/tags/safeguards.json +0 -1
  468. package/embedded-knowledge/indexes/tags/security.json +0 -1
  469. package/embedded-knowledge/indexes/tags/sequence-management.json +0 -1
  470. package/embedded-knowledge/indexes/tags/serialization.json +0 -1
  471. package/embedded-knowledge/indexes/tags/session-logmessage.json +0 -1
  472. package/embedded-knowledge/indexes/tags/session.json +0 -1
  473. package/embedded-knowledge/indexes/tags/setloadfields.json +0 -1
  474. package/embedded-knowledge/indexes/tags/shortcuts.json +0 -1
  475. package/embedded-knowledge/indexes/tags/sift.json +0 -1
  476. package/embedded-knowledge/indexes/tags/singleinstance.json +0 -1
  477. package/embedded-knowledge/indexes/tags/spacing.json +0 -1
  478. package/embedded-knowledge/indexes/tags/sql-translation.json +0 -1
  479. package/embedded-knowledge/indexes/tags/standards.json +0 -1
  480. package/embedded-knowledge/indexes/tags/statements.json +0 -1
  481. package/embedded-knowledge/indexes/tags/streaming.json +0 -1
  482. package/embedded-knowledge/indexes/tags/strong-typing.json +0 -1
  483. package/embedded-knowledge/indexes/tags/structural-patterns.json +0 -1
  484. package/embedded-knowledge/indexes/tags/structure.json +0 -1
  485. package/embedded-knowledge/indexes/tags/subscribers.json +0 -1
  486. package/embedded-knowledge/indexes/tags/switch.json +0 -1
  487. package/embedded-knowledge/indexes/tags/symbol-search.json +0 -1
  488. package/embedded-knowledge/indexes/tags/syntax.json +0 -1
  489. package/embedded-knowledge/indexes/tags/systemid.json +0 -1
  490. package/embedded-knowledge/indexes/tags/table-configuration.json +0 -1
  491. package/embedded-knowledge/indexes/tags/table-events.json +0 -1
  492. package/embedded-knowledge/indexes/tags/table-keys.json +0 -1
  493. package/embedded-knowledge/indexes/tags/table-safety.json +0 -1
  494. package/embedded-knowledge/indexes/tags/task-scheduler.json +0 -1
  495. package/embedded-knowledge/indexes/tags/telemetry.json +0 -1
  496. package/embedded-knowledge/indexes/tags/template-method.json +0 -1
  497. package/embedded-knowledge/indexes/tags/temporary-tables.json +0 -1
  498. package/embedded-knowledge/indexes/tags/testfield.json +0 -1
  499. package/embedded-knowledge/indexes/tags/tradeoffs.json +0 -1
  500. package/embedded-knowledge/indexes/tags/triggers.json +0 -1
  501. package/embedded-knowledge/indexes/tags/troubleshooting.json +0 -1
  502. package/embedded-knowledge/indexes/tags/type-safety.json +0 -1
  503. package/embedded-knowledge/indexes/tags/url-structure.json +0 -1
  504. package/embedded-knowledge/indexes/tags/user-experience.json +0 -1
  505. package/embedded-knowledge/indexes/tags/user-feedback.json +0 -1
  506. package/embedded-knowledge/indexes/tags/user-interface.json +0 -1
  507. package/embedded-knowledge/indexes/tags/validation-feedback.json +0 -1
  508. package/embedded-knowledge/indexes/tags/validation.json +0 -1
  509. package/embedded-knowledge/indexes/tags/variables.json +0 -1
  510. package/embedded-knowledge/indexes/tags/verbosity.json +0 -1
  511. package/embedded-knowledge/indexes/tags/vs-code.json +0 -1
  512. package/embedded-knowledge/indexes/tags/web-services.json +0 -1
  513. package/embedded-knowledge/indexes/tags/workflow-management.json +0 -1
  514. package/embedded-knowledge/indexes/tags/workflow-optimization.json +0 -1
  515. package/embedded-knowledge/indexes/tags/workflow-templates.json +0 -1
  516. package/embedded-knowledge/indexes/tags/workspace.json +0 -1
  517. package/embedded-knowledge/indexes/tags/xml-documentation.json +0 -1
  518. package/embedded-knowledge/indexes/topic-relationships.json +0 -128
  519. package/embedded-knowledge/methodologies/index.json +0 -81
  520. package/embedded-knowledge/methodologies/phases/analysis-full.md +0 -208
  521. package/embedded-knowledge/methodologies/phases/analysis-quick.md +0 -44
  522. package/embedded-knowledge/methodologies/phases/analysis.md +0 -182
  523. package/embedded-knowledge/methodologies/phases/execution-validation-full.md +0 -174
  524. package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +0 -31
  525. package/embedded-knowledge/methodologies/phases/execution-validation.md +0 -174
  526. package/embedded-knowledge/methodologies/phases/performance-full.md +0 -211
  527. package/embedded-knowledge/methodologies/phases/performance-quick.md +0 -32
  528. package/embedded-knowledge/methodologies/phases/performance.md +0 -211
  529. package/embedded-knowledge/methodologies/phases/verification-full.md +0 -162
  530. package/embedded-knowledge/methodologies/phases/verification-quick.md +0 -48
  531. package/embedded-knowledge/methodologies/phases/verification.md +0 -146
  532. package/embedded-knowledge/methodologies/workflow-enforcement.md +0 -142
  533. package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +0 -99
  534. package/embedded-knowledge/specialists/alex-architect.md +0 -216
  535. package/embedded-knowledge/specialists/casey-copilot.md +0 -226
  536. package/embedded-knowledge/specialists/chris-config.md +0 -267
  537. package/embedded-knowledge/specialists/dean-debug.md +0 -222
  538. package/embedded-knowledge/specialists/eva-errors.md +0 -235
  539. package/embedded-knowledge/specialists/jordan-bridge.md +0 -235
  540. package/embedded-knowledge/specialists/logan-legacy.md +0 -209
  541. package/embedded-knowledge/specialists/maya-mentor.md +0 -211
  542. package/embedded-knowledge/specialists/morgan-market.md +0 -226
  543. package/embedded-knowledge/specialists/quinn-tester.md +0 -235
  544. package/embedded-knowledge/specialists/roger-reviewer.md +0 -234
  545. package/embedded-knowledge/specialists/sam-coder.md +0 -359
  546. package/embedded-knowledge/specialists/seth-security.md +0 -235
  547. package/embedded-knowledge/specialists/taylor-docs.md +0 -257
  548. package/embedded-knowledge/specialists/uma-ux.md +0 -235
@@ -1,209 +0,0 @@
1
- ---
2
- title: "No. Series Module Patterns (BC24+)"
3
- domain: "dean-debug"
4
- difficulty: "intermediate"
5
- bc_versions: "24+"
6
- tags: ["no-series", "number-generation", "business-foundation", "module-architecture", "bc24-migration"]
7
- prerequisites: ["table-design", "no-series-basics", "business-logic-patterns"]
8
- samples: "samples/no-series-module-bc24.md"
9
- related_topics: ["no-series-validation-module-bc24", "no-series-implementation-patterns", "bc24-migration-patterns"]
10
- ---
11
-
12
- # No. Series Module Patterns (BC24+)
13
-
14
- ## Overview
15
-
16
- Business Central 2024 Wave 1 introduced the new No. Series module as part of the Business Foundation layer, replacing the legacy NoSeriesManagement approach. This modular architecture provides more focused, granular methods for number generation with improved performance and maintainability.
17
-
18
- **Key Benefit**: Leverages the new Business Foundation module architecture for cleaner, more maintainable number series implementation with improved performance and better separation of concerns.
19
-
20
- ## New Module Architecture
21
-
22
- ### Business Foundation Integration
23
- The new No. Series module (Codeunit 310) is part of the Business Foundation layer, providing a modern, modular approach to number generation.
24
-
25
- ### Focused Codeunit Design
26
- Replace monolithic NoSeriesManagement with specialized codeunits:
27
- - **No. Series (Codeunit 310)**: Core number generation operations
28
- - **NoSeriesBatch**: Batch-related number series operations
29
- - **Related series operations**: Dedicated methods for series relationships
30
-
31
- ### Simplified Method Structure
32
- New methods provide clearer intent and reduced parameter complexity compared to legacy InitSeries approach.
33
-
34
- ## Essential Migration Patterns
35
-
36
- ### Basic Number Generation
37
- **Legacy Pattern (BC14-23)**:
38
- ```al
39
- NoSeriesMgt.InitSeries(NoSeriesCode, xRec."No. Series", 0D, "No.", "No. Series");
40
- ```
41
-
42
- **New Pattern (BC24+)**:
43
- ```al
44
- if "No." = '' then
45
- "No." := NoSeries.GetNextNo("No. Series", WorkDate());
46
- ```
47
-
48
- ### Manual Number Testing
49
- **Legacy Pattern**:
50
- ```al
51
- NoSeriesMgt.TestManual("No. Series");
52
- NoSeriesMgt.ManualNoAllowed("No. Series");
53
- ```
54
-
55
- **New Pattern**:
56
- ```al
57
- NoSeries.TestManual("No. Series");
58
- ```
59
-
60
- ### Number Generation with Peek
61
- **Legacy Pattern**:
62
- ```al
63
- NextNo := NoSeriesMgt.GetNextNo("No. Series", WorkDate(), false);
64
- ```
65
-
66
- **New Pattern**:
67
- ```al
68
- NextNo := NoSeries.PeekNextNo("No. Series", WorkDate());
69
- // Or for actual allocation:
70
- NextNo := NoSeries.GetNextNo("No. Series", WorkDate());
71
- ```
72
-
73
- ### Series Selection/Lookup
74
- **Legacy Pattern**:
75
- ```al
76
- NoSeriesMgt.SelectSeries("No. Series", xRec."No. Series", "No. Series");
77
- ```
78
-
79
- **New Pattern**:
80
- ```al
81
- NoSeries.LookupRelatedNoSeries("No. Series", "No. Series");
82
- ```
83
-
84
- ### Series Relationship Handling
85
- **New Pattern (BC24+)**:
86
- ```al
87
- if NoSeries.AreRelated("No. Series", xRec."No. Series") then
88
- "No." := NoSeries.GetNextNo("No. Series", WorkDate());
89
- ```
90
-
91
- ## Advanced Module Integration
92
-
93
- ### Batch Operations
94
- Utilize NoSeriesBatch for scenarios requiring multiple number allocations:
95
- ```al
96
- // Batch allocation for multiple documents
97
- NoSeriesBatch.GetNextNos("No. Series", WorkDate(), DocumentCount);
98
- ```
99
-
100
- ### Date-Aware Generation
101
- Leverage improved date handling in the new module:
102
- ```al
103
- "No." := NoSeries.GetNextNo("No. Series", "Posting Date");
104
- ```
105
-
106
- ### Series Validation Integration
107
- ```al
108
- if not NoSeries.IsValidNo("No.", "No. Series") then
109
- Error('Invalid number format for series %1', "No. Series");
110
- ```
111
-
112
- ## Microsoft Official Migration Strategy
113
-
114
- ### Obsoleted Objects (BC24.0)
115
- **Obsolete Codeunit**: NoSeriesManagement (Codeunit 396) - Complete replacement required
116
-
117
- **Obsolete Methods** (require immediate attention):
118
- - `InitSeries()` → Use `GetNextNo()` in No. Series codeunit
119
- - `GetNextNo()` → Use `GetNextNo()` or `PeekNextNo()` in No. Series codeunit
120
- - `TestManual()` → Use `TestManual()` in No. Series codeunit
121
- - `ManualNoAllowed()` → Use `TestManual()` in No. Series codeunit
122
- - `SelectSeries()` → Use `LookupRelatedNoSeries()` in No. Series codeunit
123
-
124
- **Breaking Changes**:
125
- - Sales and Purchase specific No. Series tables merged into generic No. Series Line table
126
- - Some events completely removed without alternatives
127
- - Certain methods have no direct replacement
128
-
129
- ### Migration Implementation Strategy
130
-
131
- ### Phase 1: Identify Legacy Usage
132
- Systematically locate all NoSeriesManagement references:
133
- - Search for `NoSeriesMgt` variable declarations
134
- - Find obsolete method calls (`InitSeries`, `GetNextNo3`, `TestManual`, etc.)
135
- - Identify custom extensions of NoSeriesManagement
136
- - Review event subscriptions to obsolete events
137
-
138
- ### Phase 2: Update Core Patterns
139
- Replace obsolete patterns with new module equivalents:
140
- - Basic number generation and initialization
141
- - Manual number testing and validation
142
- - Series relationship checking and lookup
143
- - Event handling migration (where alternatives exist)
144
-
145
- ### Phase 3: Enhanced Functionality
146
- Leverage new capabilities not available in legacy approach:
147
- - Improved batch operations via NoSeriesBatch
148
- - Enhanced date handling and validation
149
- - Better series relationship management
150
-
151
- ## Performance Improvements
152
-
153
- ### Reduced Object Coupling
154
- The modular approach reduces dependencies between number generation and other system components.
155
-
156
- ### Optimized Database Access
157
- New module provides more efficient database access patterns for number generation operations.
158
-
159
- ### Better Concurrency Handling
160
- Improved locking mechanisms in the new module reduce contention in high-concurrency scenarios.
161
-
162
- ## Migration Validation
163
-
164
- ### Functional Testing
165
- - Verify number generation produces expected results
166
- - Test series relationship functionality
167
- - Validate date-based number generation
168
-
169
- ### Performance Testing
170
- - Compare number generation performance before/after migration
171
- - Test high-concurrency scenarios
172
- - Validate batch operation efficiency
173
-
174
- ### Regression Prevention
175
- - Ensure existing number sequences remain unaffected
176
- - Verify custom number generation logic still functions
177
- - Test integration with existing business processes
178
-
179
- ## Best Practices
180
-
181
- ### Code Organization
182
- - Group related number series operations in dedicated procedures
183
- - Use meaningful variable names reflecting the new module structure
184
- - Document migration changes for team knowledge sharing
185
-
186
- ### Error Handling
187
- - Implement proper error handling for new module methods
188
- - Provide clear error messages referencing the new architecture
189
- - Handle potential exceptions from improved validation
190
-
191
- ### Future-Proofing
192
- - Follow Microsoft's guidance for Business Foundation patterns
193
- - Prepare for additional enhancements in future releases
194
- - Design code to leverage evolving module capabilities
195
-
196
- ## Common Migration Pitfalls
197
-
198
- ### Incomplete Method Replacement
199
- Ensure all NoSeriesManagement method calls are properly replaced with equivalent new module methods.
200
-
201
- ### Parameter Mapping Issues
202
- Carefully map parameters between old and new method signatures to maintain functional equivalence.
203
-
204
- ### Testing Coverage Gaps
205
- Thoroughly test all number generation scenarios, especially edge cases that may behave differently.
206
-
207
- *Complete BC24+ implementation examples: samples/no-series-module-bc24.md*
208
- *Legacy migration guide: bc24-no-series-conversion-guide.md*
209
- *New validation patterns: no-series-validation-module-bc24.md*
@@ -1,246 +0,0 @@
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*
@@ -1,107 +0,0 @@
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*
@@ -1,105 +0,0 @@
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.