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,433 +0,0 @@
1
- # SystemId Integration in API Pages - AL Code Sample
2
-
3
- ## Basic SystemId Usage as Primary Key
4
-
5
- ```al
6
- page 50200 "Customer SystemId API"
7
- {
8
- PageType = API;
9
- APIPublisher = 'contoso';
10
- APIGroup = 'customers';
11
- APIVersion = 'v1.0';
12
- EntityName = 'customer';
13
- EntitySetName = 'customers';
14
- SourceTable = Customer;
15
- DelayedInsert = true;
16
- ODataKeyFields = SystemId; // Use SystemId as primary OData key
17
-
18
- layout
19
- {
20
- area(Content)
21
- {
22
- repeater(GroupName)
23
- {
24
- // SystemId exposed as 'id' for REST conventions
25
- field(id; Rec.SystemId)
26
- {
27
- Caption = 'Id';
28
- Editable = false; // SystemId is system-generated
29
- }
30
- field(number; Rec."No.")
31
- {
32
- Caption = 'Number';
33
- // Business key still available for reference
34
- }
35
- field(displayName; Rec.Name)
36
- {
37
- Caption = 'Display Name';
38
- }
39
- field(lastModifiedDateTime; Rec.SystemModifiedAt)
40
- {
41
- Caption = 'Last Modified Date Time';
42
- Editable = false;
43
- }
44
- }
45
- }
46
- }
47
-
48
- // SystemId automatically handled by BC platform
49
- // No custom triggers needed for SystemId generation
50
- }
51
- ```
52
-
53
- ## SystemId with Related Records Navigation
54
-
55
- ```al
56
- page 50201 "Sales Order SystemId API"
57
- {
58
- PageType = API;
59
- APIPublisher = 'contoso';
60
- APIGroup = 'sales';
61
- APIVersion = 'v1.0';
62
- EntityName = 'salesOrder';
63
- EntitySetName = 'salesOrders';
64
- SourceTable = "Sales Header";
65
- DelayedInsert = true;
66
- ODataKeyFields = SystemId;
67
-
68
- layout
69
- {
70
- area(Content)
71
- {
72
- repeater(GroupName)
73
- {
74
- field(id; Rec.SystemId)
75
- {
76
- Caption = 'Id';
77
- Editable = false;
78
- }
79
- field(number; Rec."No.")
80
- {
81
- Caption = 'Number';
82
- }
83
- field(customerId; CustomerSystemId)
84
- {
85
- Caption = 'Customer Id';
86
- // Link to customer using SystemId instead of business key
87
- }
88
- field(customerNumber; Rec."Sell-to Customer No.")
89
- {
90
- Caption = 'Customer Number';
91
- // Keep business key for backward compatibility
92
- }
93
- field(orderDate; Rec."Order Date")
94
- {
95
- Caption = 'Order Date';
96
- }
97
- field(totalAmount; TotalAmount)
98
- {
99
- Caption = 'Total Amount';
100
- }
101
- }
102
- }
103
- }
104
-
105
- var
106
- CustomerSystemId: Guid;
107
- TotalAmount: Decimal;
108
-
109
- trigger OnAfterGetRecord()
110
- var
111
- Customer: Record Customer;
112
- begin
113
- // Resolve customer SystemId from business key
114
- if Customer.Get(Rec."Sell-to Customer No.") then
115
- CustomerSystemId := Customer.SystemId
116
- else
117
- Clear(CustomerSystemId);
118
-
119
- // Calculate total amount
120
- Rec.CalcFields("Amount Including VAT");
121
- TotalAmount := Rec."Amount Including VAT";
122
- end;
123
-
124
- trigger OnModifyRecord(): Boolean
125
- var
126
- Customer: Record Customer;
127
- begin
128
- // Handle customer assignment via SystemId
129
- if not IsNullGuid(CustomerSystemId) then begin
130
- Customer.SetRange(SystemId, CustomerSystemId);
131
- if Customer.FindFirst() then
132
- Rec.Validate("Sell-to Customer No.", Customer."No.");
133
- end;
134
- exit(true);
135
- end;
136
- }
137
- ```
138
-
139
- ## SystemId Cross-Reference Implementation
140
-
141
- ```al
142
- // Helper codeunit for SystemId operations
143
- codeunit 50200 "SystemId Helper"
144
- {
145
- // Find record by SystemId across different tables
146
- procedure FindRecordBySystemId(TableID: Integer; SystemIdValue: Guid; var RecRef: RecordRef): Boolean
147
- var
148
- SystemIdFieldRef: FieldRef;
149
- begin
150
- RecRef.Open(TableID);
151
- SystemIdFieldRef := RecRef.Field(RecRef.SystemIdNo);
152
- SystemIdFieldRef.SetRange(SystemIdValue);
153
- exit(RecRef.FindFirst());
154
- end;
155
-
156
- // Get SystemId from business key
157
- procedure GetSystemIdFromBusinessKey(TableID: Integer; KeyFieldNo: Integer; KeyValue: Variant): Guid
158
- var
159
- RecRef: RecordRef;
160
- KeyFieldRef: FieldRef;
161
- SystemIdFieldRef: FieldRef;
162
- begin
163
- RecRef.Open(TableID);
164
- KeyFieldRef := RecRef.Field(KeyFieldNo);
165
- KeyFieldRef.SetRange(KeyValue);
166
- if RecRef.FindFirst() then begin
167
- SystemIdFieldRef := RecRef.Field(RecRef.SystemIdNo);
168
- exit(SystemIdFieldRef.Value);
169
- end;
170
- exit(CreateGuid()); // Return empty GUID if not found
171
- end;
172
-
173
- // Validate SystemId exists in target table
174
- procedure ValidateSystemIdExists(TableID: Integer; SystemIdValue: Guid): Boolean
175
- var
176
- RecRef: RecordRef;
177
- begin
178
- exit(FindRecordBySystemId(TableID, SystemIdValue, RecRef));
179
- end;
180
- }
181
-
182
- // API page demonstrating SystemId cross-references
183
- page 50202 "Purchase Order Line API"
184
- {
185
- PageType = API;
186
- APIPublisher = 'contoso';
187
- APIGroup = 'purchasing';
188
- APIVersion = 'v1.0';
189
- EntityName = 'purchaseOrderLine';
190
- EntitySetName = 'purchaseOrderLines';
191
- SourceTable = "Purchase Line";
192
- DelayedInsert = true;
193
- ODataKeyFields = SystemId;
194
-
195
- layout
196
- {
197
- area(Content)
198
- {
199
- repeater(GroupName)
200
- {
201
- field(id; Rec.SystemId)
202
- {
203
- Caption = 'Id';
204
- Editable = false;
205
- }
206
- field(documentId; DocumentSystemId)
207
- {
208
- Caption = 'Document Id';
209
- // Reference to purchase header via SystemId
210
- }
211
- field(itemId; ItemSystemId)
212
- {
213
- Caption = 'Item Id';
214
- // Reference to item via SystemId
215
- }
216
- field(lineNumber; Rec."Line No.")
217
- {
218
- Caption = 'Line Number';
219
- }
220
- field(quantity; Rec.Quantity)
221
- {
222
- Caption = 'Quantity';
223
- }
224
- field(unitCost; Rec."Unit Cost")
225
- {
226
- Caption = 'Unit Cost';
227
- }
228
- }
229
- }
230
- }
231
-
232
- var
233
- DocumentSystemId: Guid;
234
- ItemSystemId: Guid;
235
- SystemIdHelper: Codeunit "SystemId Helper";
236
-
237
- trigger OnAfterGetRecord()
238
- var
239
- PurchaseHeader: Record "Purchase Header";
240
- Item: Record Item;
241
- begin
242
- // Get document SystemId
243
- if PurchaseHeader.Get(Rec."Document Type", Rec."Document No.") then
244
- DocumentSystemId := PurchaseHeader.SystemId;
245
-
246
- // Get item SystemId
247
- if Item.Get(Rec."No.") then
248
- ItemSystemId := Item.SystemId;
249
- end;
250
-
251
- trigger OnModifyRecord(): Boolean
252
- var
253
- PurchaseHeader: Record "Purchase Header";
254
- Item: Record Item;
255
- begin
256
- // Validate and set document reference
257
- if not IsNullGuid(DocumentSystemId) then begin
258
- PurchaseHeader.SetRange(SystemId, DocumentSystemId);
259
- if PurchaseHeader.FindFirst() then begin
260
- Rec.Validate("Document Type", PurchaseHeader."Document Type");
261
- Rec.Validate("Document No.", PurchaseHeader."No.");
262
- end else
263
- Error('Purchase document with SystemId %1 not found', DocumentSystemId);
264
- end;
265
-
266
- // Validate and set item reference
267
- if not IsNullGuid(ItemSystemId) then begin
268
- Item.SetRange(SystemId, ItemSystemId);
269
- if Item.FindFirst() then
270
- Rec.Validate("No.", Item."No.")
271
- else
272
- Error('Item with SystemId %1 not found', ItemSystemId);
273
- end;
274
-
275
- exit(true);
276
- end;
277
- }
278
- ```
279
-
280
- ## SystemId URL Navigation Patterns
281
-
282
- ```al
283
- // API page with SystemId-based navigation URLs
284
- page 50203 "Enhanced Customer API"
285
- {
286
- PageType = API;
287
- APIPublisher = 'contoso';
288
- APIGroup = 'customers';
289
- APIVersion = 'v1.0';
290
- EntityName = 'customer';
291
- EntitySetName = 'customers';
292
- SourceTable = Customer;
293
- DelayedInsert = true;
294
- ODataKeyFields = SystemId;
295
-
296
- layout
297
- {
298
- area(Content)
299
- {
300
- repeater(GroupName)
301
- {
302
- field(id; Rec.SystemId)
303
- {
304
- Caption = 'Id';
305
- Editable = false;
306
- }
307
- field(number; Rec."No.")
308
- {
309
- Caption = 'Number';
310
- }
311
- field(displayName; Rec.Name)
312
- {
313
- Caption = 'Display Name';
314
- }
315
- field(salesOrdersUrl; SalesOrdersNavigationUrl)
316
- {
317
- Caption = 'Sales Orders URL';
318
- Editable = false;
319
- // Navigation URL using SystemId
320
- }
321
- field(paymentsUrl; PaymentsNavigationUrl)
322
- {
323
- Caption = 'Payments URL';
324
- Editable = false;
325
- }
326
- }
327
- }
328
- }
329
-
330
- var
331
- SalesOrdersNavigationUrl: Text;
332
- PaymentsNavigationUrl: Text;
333
-
334
- trigger OnAfterGetRecord()
335
- begin
336
- // Build navigation URLs using SystemId
337
- SalesOrdersNavigationUrl := BuildNavigationUrl('salesOrders', Rec.SystemId);
338
- PaymentsNavigationUrl := BuildNavigationUrl('customerPayments', Rec.SystemId);
339
- end;
340
-
341
- local procedure BuildNavigationUrl(EntitySet: Text; RelatedSystemId: Guid): Text
342
- var
343
- BaseUrl: Text;
344
- CompanyName: Text;
345
- begin
346
- // Get base API URL from current request context
347
- BaseUrl := GetUrl(ClientType::ODataV4, CompanyName(), ObjectType::Page, 0);
348
-
349
- // Build related entity URL with SystemId filter
350
- exit(StrSubstNo('%1/%2?$filter=customerId eq %3',
351
- BaseUrl, EntitySet, RelatedSystemId));
352
- end;
353
- }
354
-
355
- // Related sales orders API filtered by customer SystemId
356
- page 50204 "Customer Sales Orders API"
357
- {
358
- PageType = API;
359
- APIPublisher = 'contoso';
360
- APIGroup = 'sales';
361
- APIVersion = 'v1.0';
362
- EntityName = 'customerSalesOrder';
363
- EntitySetName = 'customerSalesOrders';
364
- SourceTable = "Sales Header";
365
- DelayedInsert = true;
366
- ODataKeyFields = SystemId;
367
- SourceTableView = WHERE("Document Type" = CONST(Order));
368
-
369
- layout
370
- {
371
- area(Content)
372
- {
373
- repeater(GroupName)
374
- {
375
- field(id; Rec.SystemId)
376
- {
377
- Caption = 'Id';
378
- Editable = false;
379
- }
380
- field(customerId; CustomerSystemId)
381
- {
382
- Caption = 'Customer Id';
383
- Editable = false;
384
- }
385
- field(orderNumber; Rec."No.")
386
- {
387
- Caption = 'Order Number';
388
- }
389
- field(orderDate; Rec."Order Date")
390
- {
391
- Caption = 'Order Date';
392
- }
393
- }
394
- }
395
- }
396
-
397
- var
398
- CustomerSystemId: Guid;
399
-
400
- trigger OnAfterGetRecord()
401
- var
402
- Customer: Record Customer;
403
- begin
404
- // Resolve customer SystemId
405
- if Customer.Get(Rec."Sell-to Customer No.") then
406
- CustomerSystemId := Customer.SystemId;
407
- end;
408
- }
409
- ```
410
-
411
- ## Implementation Notes
412
-
413
- **SystemId Integration Best Practices:**
414
-
415
- 1. **Primary Key Strategy:**
416
- - Always use SystemId as ODataKeyFields for API pages
417
- - Expose SystemId as 'id' field following REST conventions
418
- - Keep business keys available for backward compatibility
419
-
420
- 2. **Cross-Reference Management:**
421
- - Use SystemId for all entity relationships in APIs
422
- - Implement validation for SystemId references before updates
423
- - Provide helper functions for SystemId to business key conversion
424
-
425
- 3. **Navigation Patterns:**
426
- - Build related entity URLs using SystemId parameters
427
- - Implement consistent URL structures across API endpoints
428
- - Use SystemId filtering for efficient related data queries
429
-
430
- 4. **Performance Considerations:**
431
- - SystemId fields are automatically indexed by BC platform
432
- - Use SystemId for faster record lookups in large tables
433
- - Cache SystemId mappings for frequently accessed relationships
@@ -1,66 +0,0 @@
1
- ---
2
- title: "Subscriber Codeunit Size and Organization"
3
- domain: "alex-architect"
4
- difficulty: "intermediate"
5
- bc_versions: "14+"
6
- tags: ["codeunit-design", "organization", "maintainability", "performance"]
7
- prerequisites: ["codeunit-basics", "event-subscriber-patterns"]
8
- samples: "samples/subscriber-organization.md"
9
- ---
10
- # Subscriber Codeunit Size and Organization
11
-
12
- ## Overview
13
-
14
- Subscriber codeunit size and organization significantly impact maintainability, performance, and development workflow. Proper subscriber architecture balances functional cohesion with practical constraints around codeunit compilation, deployment, and runtime performance.
15
-
16
- Large monolithic subscriber codeunits create maintenance challenges and compilation overhead, while excessive fragmentation leads to deployment complexity and runtime inefficiencies. Optimal subscriber organization requires understanding both technical constraints and business domain boundaries.
17
-
18
- The architectural decisions around subscriber codeunit size affect development team productivity, system performance, and long-term maintainability. Strategic organization patterns prevent common pitfalls while enabling scalable event-driven architectures.
19
-
20
- ## Size Impact on Development
21
-
22
- Large subscriber codeunits slow development cycles through increased compilation time and complex merge conflict resolution. When multiple developers work on the same subscriber codeunit, coordination overhead increases significantly.
23
-
24
- Oversized codeunits make specific subscriber logic harder to locate and modify, reducing development velocity. Navigation through hundreds of procedures to find specific event handling logic creates unnecessary friction.
25
-
26
- Version control systems struggle with large files, making code review processes more difficult and increasing the likelihood of merge conflicts during parallel development efforts.
27
-
28
- ## Functional Cohesion Principles
29
-
30
- Subscriber codeunits should group related event handling logic based on business domain or functional area rather than purely technical organization. Domain-driven organization improves maintainability and understanding.
31
-
32
- Event subscribers addressing the same business process or data entity naturally belong together, enabling shared utility functions and consistent business rule implementation across related events.
33
-
34
- Cross-cutting concerns like logging, audit trails, or security enforcement may warrant separate subscriber codeunits despite spanning multiple business domains, maintaining clean separation of concerns.
35
-
36
- ## Performance Considerations
37
-
38
- Codeunit initialization overhead affects performance when subscribers are distributed across many small codeunits. Each codeunit requires separate loading and initialization, creating cumulative startup costs.
39
-
40
- Memory usage patterns differ between large consolidated codeunits and distributed smaller ones. SingleInstance subscribers particularly benefit from consolidation to minimize per-instance memory overhead.
41
-
42
- Runtime performance characteristics vary based on subscriber organization, with consolidated codeunits providing better CPU cache locality while distributed codeunits enable more granular memory management.
43
-
44
- ## Deployment and Versioning
45
-
46
- Subscriber codeunit organization affects deployment granularity and rollback capabilities. Smaller codeunits enable more precise deployment control but increase deployment complexity and coordination requirements.
47
-
48
- Version management becomes more complex with highly distributed subscriber architectures, requiring careful dependency tracking and coordinated updates across multiple related codeunits.
49
-
50
- Extension development scenarios benefit from smaller, focused subscriber codeunits that minimize conflicts with base application changes and other extensions.
51
-
52
- ## Maintenance Strategies
53
-
54
- Subscriber codeunits require regular refactoring to maintain optimal size as functionality grows. Established size thresholds and refactoring triggers prevent architectural degradation over time.
55
-
56
- Documentation and naming conventions become increasingly important as subscriber codeunit count grows. Clear organization patterns enable developers to quickly locate relevant event handling logic.
57
-
58
- Code analysis tools and metrics help monitor subscriber codeunit size and complexity trends, providing objective data for refactoring decisions and architectural improvements.
59
-
60
- ## Organization Patterns
61
-
62
- Domain-based organization groups subscribers by business functionality, creating natural boundaries for related event handling logic and shared business rules implementation.
63
-
64
- Layer-based organization separates subscribers by architectural concerns such as data validation, business logic, and integration logic, providing clear separation of responsibilities.
65
-
66
- Hybrid organization combines domain and layer approaches, grouping related business functionality while maintaining separation between different types of event processing logic.
@@ -1,115 +0,0 @@
1
- ---
2
- title: "SystemId Integration in API Pages"
3
- domain: "alex-architect"
4
- difficulty: "intermediate"
5
- bc_versions: "14+"
6
- tags: ["systemid", "data-modeling", "entity-relationships"]
7
- samples: "samples/systemid-integration.md"
8
- ---
9
- # SystemId Integration in API Pages
10
-
11
- ## Overview
12
-
13
- SystemId provides a universal unique identifier for records in Business Central tables, offering significant advantages for API Page implementations. Understanding SystemId integration patterns enables robust API designs that support efficient data synchronization and external system integration.
14
-
15
- SystemId is a GUID field automatically maintained by the BC platform for most tables. This field provides stable, unique identification that remains consistent across system operations, making it ideal for external system references and API operations.
16
-
17
- Proper SystemId integration supports advanced API scenarios including optimistic concurrency control, efficient data synchronization, and reliable external system integration patterns.
18
-
19
- ## SystemId Characteristics
20
-
21
- SystemId values are automatically generated and maintained by the BC platform, ensuring uniqueness across all records in the database. These values remain stable throughout the record lifecycle unless explicitly regenerated.
22
-
23
- The SystemId field is of type GUID, providing 128-bit unique identifiers that are virtually guaranteed to be unique across systems and time. This makes SystemId ideal for distributed system integration scenarios.
24
-
25
- SystemId values are immutable under normal circumstances, providing reliable external references that don't change due to business data modifications or system operations.
26
-
27
- ## API Page Integration Patterns
28
-
29
- Use SystemId as the primary key or unique identifier for API Page implementations when stable external references are required. This provides consistent identification for API consumers regardless of business key changes.
30
-
31
- SystemId enables efficient OData query operations through unique record identification. API consumers can reliably reference specific records using SystemId values without depending on complex business key combinations.
32
-
33
- Consider exposing SystemId alongside business keys to provide flexible identification options for different API consumer scenarios and integration requirements.
34
-
35
- ## External System Integration
36
-
37
- SystemId provides excellent external system reference capabilities, allowing external systems to maintain stable references to BC records without depending on business data that might change.
38
-
39
- External systems can store SystemId values as foreign keys or reference identifiers, enabling reliable record lookups and data synchronization operations across system boundaries.
40
-
41
- SystemId-based integration patterns support incremental synchronization scenarios where external systems need to track changes to specific BC records over time.
42
-
43
- ## Data Synchronization Benefits
44
-
45
- SystemId enables efficient change tracking and synchronization operations by providing stable record identification that persists across data modifications and system operations.
46
-
47
- Synchronization processes can use SystemId values to identify specific records for update operations, avoiding complex business key matching logic that may be unreliable or inefficient.
48
-
49
- Consider implementing timestamp fields alongside SystemId for efficient change detection and synchronization optimization in high-volume scenarios.
50
-
51
- ## Relationship Modeling
52
-
53
- SystemId can be used in related table structures to create stable relationships that don't depend on business key values. This provides more robust relationship models for complex data structures.
54
-
55
- Foreign key relationships using SystemId values remain valid even when business keys change, reducing the complexity of maintaining referential integrity across related tables.
56
-
57
- Consider the performance implications of SystemId-based relationships, as GUID comparisons may have different performance characteristics compared to integer-based keys.
58
-
59
- ## Query Performance Considerations
60
-
61
- SystemId is typically indexed by the BC platform, providing efficient query performance for unique record lookups and equality comparisons in API operations.
62
-
63
- GUID-based queries may have different performance characteristics compared to integer or string-based queries. Consider these differences when designing high-performance API implementations.
64
-
65
- Range queries or sorting operations on SystemId fields may be less efficient than similar operations on business keys with more meaningful sort orders.
66
-
67
- ## OData Integration Patterns
68
-
69
- SystemId integrates seamlessly with OData operations, providing reliable record identification for GET, PATCH, PUT, and DELETE operations through API Pages.
70
-
71
- Use SystemId in OData key segments to enable efficient record access patterns that don't depend on complex business key combinations or field ordering requirements.
72
-
73
- SystemId values work well with OData expansion operations, providing stable relationship navigation that remains consistent across API requests and system operations.
74
-
75
- ## Concurrency Control Integration
76
-
77
- SystemId can be combined with ETag implementations to provide robust optimistic concurrency control in API scenarios. This combination enables reliable conflict detection and resolution.
78
-
79
- The stability of SystemId values supports long-running API operations where record identification must remain consistent across extended time periods or multiple API interactions.
80
-
81
- Consider using SystemId in combination with timestamp fields for advanced concurrency control scenarios that require both unique identification and change detection.
82
-
83
- ## Migration and Data Import Scenarios
84
-
85
- SystemId values can be preserved during data migration operations, maintaining external system references and integration consistency across system transitions.
86
-
87
- Data import processes should consider SystemId handling requirements, especially when maintaining references from external systems or preserving integration relationships.
88
-
89
- Plan for SystemId regeneration scenarios that might be required during major system upgrades or data restructuring operations that affect external system integration.
90
-
91
- ## Security and Access Control
92
-
93
- SystemId values are generally safe to expose through API interfaces as they don't reveal sensitive business information while providing unique identification capabilities.
94
-
95
- Consider SystemId exposure in security models, as these values provide persistent record identification that could be used in unauthorized access attempts over extended time periods.
96
-
97
- SystemId-based access control patterns can provide more granular security implementations compared to business key-based approaches, especially in multi-tenant scenarios.
98
-
99
- ## Testing and Validation
100
-
101
- Implement proper testing for SystemId-based API operations, including validation of unique identification, relationship consistency, and external system integration scenarios.
102
-
103
- Test SystemId behavior across different BC operations including record creation, modification, deletion, and restoration to ensure consistent integration behavior.
104
-
105
- Validate SystemId performance characteristics under realistic data volumes and query patterns to ensure scalable API implementations.
106
-
107
- ## Best Practices
108
-
109
- Use SystemId for external system integration scenarios where stable, unique identification is required across system boundaries and extended time periods.
110
-
111
- Consider combining SystemId with business keys to provide flexible identification options that support different API consumer requirements and usage patterns.
112
-
113
- Document SystemId integration decisions and patterns for API implementations to ensure consistent approaches and support ongoing maintenance requirements.
114
-
115
- Plan for SystemId lifecycle management in scenarios involving data archiving, system migrations, or major structural changes that might affect external system integration.