bc-code-intelligence-mcp 1.3.2 → 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 (567) hide show
  1. package/README.md +1 -0
  2. package/dist/config/test-enhanced-layer-service.js +10 -10
  3. package/dist/config/test-enhanced-layer-service.js.map +1 -1
  4. package/dist/dev/hot-reload.d.ts +2 -2
  5. package/dist/dev/hot-reload.d.ts.map +1 -1
  6. package/dist/dev/hot-reload.js.map +1 -1
  7. package/dist/index.d.ts +0 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +43 -41
  10. package/dist/index.js.map +1 -1
  11. package/dist/layers/index.d.ts +1 -1
  12. package/dist/layers/index.d.ts.map +1 -1
  13. package/dist/layers/index.js +1 -1
  14. package/dist/layers/index.js.map +1 -1
  15. package/dist/layers/layer-service.d.ts.map +1 -1
  16. package/dist/layers/layer-service.js +4 -1
  17. package/dist/layers/layer-service.js.map +1 -1
  18. package/dist/search/intelligent-search.d.ts.map +1 -1
  19. package/dist/search/intelligent-search.js +5 -2
  20. package/dist/search/intelligent-search.js.map +1 -1
  21. package/dist/services/code-analysis-service.d.ts.map +1 -1
  22. package/dist/services/code-analysis-service.js +8 -1
  23. package/dist/services/code-analysis-service.js.map +1 -1
  24. package/dist/services/knowledge-service.d.ts +21 -10
  25. package/dist/services/knowledge-service.d.ts.map +1 -1
  26. package/dist/services/knowledge-service.js +82 -59
  27. package/dist/services/knowledge-service.js.map +1 -1
  28. package/dist/services/multi-content-layer-service.d.ts +90 -0
  29. package/dist/services/multi-content-layer-service.d.ts.map +1 -1
  30. package/dist/services/multi-content-layer-service.js +380 -0
  31. package/dist/services/multi-content-layer-service.js.map +1 -1
  32. package/dist/services/roleplay-engine.d.ts +1 -1
  33. package/dist/services/roleplay-engine.d.ts.map +1 -1
  34. package/dist/services/roleplay-engine.js +40 -12
  35. package/dist/services/roleplay-engine.js.map +1 -1
  36. package/dist/services/workflow-service.d.ts +11 -3
  37. package/dist/services/workflow-service.d.ts.map +1 -1
  38. package/dist/services/workflow-service.js +119 -78
  39. package/dist/services/workflow-service.js.map +1 -1
  40. package/dist/streamlined-handlers.d.ts +31 -2
  41. package/dist/streamlined-handlers.d.ts.map +1 -1
  42. package/dist/streamlined-handlers.js +152 -110
  43. package/dist/streamlined-handlers.js.map +1 -1
  44. package/dist/streamlined-tools.d.ts +12 -0
  45. package/dist/streamlined-tools.d.ts.map +1 -1
  46. package/dist/streamlined-tools.js +11 -6
  47. package/dist/streamlined-tools.js.map +1 -1
  48. package/dist/tools/specialist-tools.d.ts.map +1 -1
  49. package/dist/tools/specialist-tools.js +23 -13
  50. package/dist/tools/specialist-tools.js.map +1 -1
  51. package/dist/types/bc-knowledge.d.ts +10 -7
  52. package/dist/types/bc-knowledge.d.ts.map +1 -1
  53. package/dist/types/bc-knowledge.js +23 -1
  54. package/dist/types/bc-knowledge.js.map +1 -1
  55. package/dist/types/roleplay-types.d.ts +1 -0
  56. package/dist/types/roleplay-types.d.ts.map +1 -1
  57. package/package.json +13 -4
  58. package/embedded-knowledge/.github/ISSUE_TEMPLATE/bug-report.md +0 -24
  59. package/embedded-knowledge/.github/ISSUE_TEMPLATE/content-improvement.md +0 -24
  60. package/embedded-knowledge/.github/ISSUE_TEMPLATE/knowledge-request.md +0 -30
  61. package/embedded-knowledge/AGENTS.md +0 -178
  62. package/embedded-knowledge/CONTRIBUTING.md +0 -58
  63. package/embedded-knowledge/LICENSE +0 -21
  64. package/embedded-knowledge/README.md +0 -32
  65. package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +0 -90
  66. package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +0 -113
  67. package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +0 -101
  68. package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +0 -87
  69. package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +0 -155
  70. package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +0 -138
  71. package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +0 -79
  72. package/embedded-knowledge/domains/alex-architect/samples/api-delegate-operation.md +0 -280
  73. package/embedded-knowledge/domains/alex-architect/samples/api-fieldset-registration.md +0 -200
  74. package/embedded-knowledge/domains/alex-architect/samples/api-interface-design.md +0 -565
  75. package/embedded-knowledge/domains/alex-architect/samples/api-page-implementation.md +0 -665
  76. package/embedded-knowledge/domains/alex-architect/samples/complex-facade-patterns.md +0 -325
  77. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern-al.md +0 -696
  78. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern.md +0 -320
  79. package/embedded-knowledge/domains/alex-architect/samples/subscriber-organization.md +0 -102
  80. package/embedded-knowledge/domains/alex-architect/samples/systemid-integration.md +0 -433
  81. package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +0 -66
  82. package/embedded-knowledge/domains/alex-architect/systemid-integration.md +0 -115
  83. package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +0 -295
  84. package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +0 -86
  85. package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +0 -96
  86. package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +0 -70
  87. package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +0 -84
  88. package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +0 -93
  89. package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +0 -73
  90. package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +0 -78
  91. package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +0 -79
  92. package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +0 -87
  93. package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +0 -209
  94. package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +0 -246
  95. package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +0 -107
  96. package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +0 -105
  97. package/embedded-knowledge/domains/dean-debug/samples/bc24-no-series-conversion.md +0 -186
  98. package/embedded-knowledge/domains/dean-debug/samples/case-performance-optimization.md +0 -60
  99. package/embedded-knowledge/domains/dean-debug/samples/compound-statements-debugging.md +0 -139
  100. package/embedded-knowledge/domains/dean-debug/samples/custom-dimensions.md +0 -190
  101. package/embedded-knowledge/domains/dean-debug/samples/custom-telemetry.md +0 -516
  102. package/embedded-knowledge/domains/dean-debug/samples/deleteall-performance.md +0 -298
  103. package/embedded-knowledge/domains/dean-debug/samples/error-correlation.md +0 -324
  104. package/embedded-knowledge/domains/dean-debug/samples/extension-isolation.md +0 -344
  105. package/embedded-knowledge/domains/dean-debug/samples/logmessage-methods.md +0 -137
  106. package/embedded-knowledge/domains/dean-debug/samples/maintainsiftindex-examples.md +0 -340
  107. package/embedded-knowledge/domains/dean-debug/samples/no-series-implementation.md +0 -810
  108. package/embedded-knowledge/domains/dean-debug/samples/no-series-module-bc24.md +0 -86
  109. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation-module-bc24.md +0 -110
  110. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation.md +0 -758
  111. package/embedded-knowledge/domains/dean-debug/samples/odata-query-optimization.md +0 -665
  112. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-case.md +0 -316
  113. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-filters.md +0 -223
  114. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-filter-exclusion.md +0 -149
  115. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-optimization.md +0 -412
  116. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-performance.md +0 -211
  117. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-primary-key.md +0 -155
  118. package/embedded-knowledge/domains/dean-debug/samples/sift-technology-fundamentals.md +0 -475
  119. package/embedded-knowledge/domains/dean-debug/samples/singleinstance-subscribers.md +0 -238
  120. package/embedded-knowledge/domains/dean-debug/samples/table-event-batching.md +0 -97
  121. package/embedded-knowledge/domains/dean-debug/samples/table-key-requirements.md +0 -666
  122. package/embedded-knowledge/domains/dean-debug/samples/telemetry-performance.md +0 -319
  123. package/embedded-knowledge/domains/dean-debug/samples/verbosity-strategy.md +0 -236
  124. package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +0 -59
  125. package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +0 -67
  126. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +0 -70
  127. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +0 -90
  128. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +0 -87
  129. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +0 -70
  130. package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +0 -74
  131. package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +0 -81
  132. package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +0 -56
  133. package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +0 -66
  134. package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +0 -79
  135. package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +0 -78
  136. package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +0 -83
  137. package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +0 -76
  138. package/embedded-knowledge/domains/dean-debug/testfield-performance.md +0 -104
  139. package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +0 -145
  140. package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +0 -104
  141. package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +0 -114
  142. package/embedded-knowledge/domains/eva-errors/samples/fielderror-default-messages.md +0 -356
  143. package/embedded-knowledge/domains/eva-errors/samples/fielderror-syntax.md +0 -256
  144. package/embedded-knowledge/domains/eva-errors/samples/table-safety-validation-patterns.md +0 -101
  145. package/embedded-knowledge/domains/eva-errors/samples/testfield-error-handling.md +0 -108
  146. package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +0 -80
  147. package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +0 -98
  148. package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +0 -123
  149. package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +0 -96
  150. package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +0 -115
  151. package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +0 -115
  152. package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +0 -114
  153. package/embedded-knowledge/domains/jordan-bridge/samples/al-event-subscriber-architecture.md +0 -395
  154. package/embedded-knowledge/domains/jordan-bridge/samples/api-error-responses.md +0 -479
  155. package/embedded-knowledge/domains/jordan-bridge/samples/api-field-control.md +0 -548
  156. package/embedded-knowledge/domains/jordan-bridge/samples/api-url-naming.md +0 -287
  157. package/embedded-knowledge/domains/jordan-bridge/samples/business-process-templates.md +0 -434
  158. package/embedded-knowledge/domains/jordan-bridge/samples/etag-implementation.md +0 -508
  159. package/embedded-knowledge/domains/jordan-bridge/samples/task-scheduler-pattern.md +0 -615
  160. package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +0 -144
  161. package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +0 -96
  162. package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +0 -124
  163. package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +0 -84
  164. package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +0 -75
  165. package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +0 -96
  166. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-multiple-conditions.md +0 -385
  167. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-syntax-structure.md +0 -72
  168. package/embedded-knowledge/domains/maya-mentor/samples/fielderror-syntax-usage.md +0 -48
  169. package/embedded-knowledge/domains/maya-mentor/samples/testfield-basic-syntax.md +0 -49
  170. package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +0 -67
  171. package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +0 -119
  172. package/embedded-knowledge/domains/quinn-tester/rule-execution.md +0 -123
  173. package/embedded-knowledge/domains/quinn-tester/samples/case-error-handling.md +0 -64
  174. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-message-construction.md +0 -60
  175. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-validation-patterns.md +0 -83
  176. package/embedded-knowledge/domains/quinn-tester/samples/rule-execution.md +0 -716
  177. package/embedded-knowledge/domains/quinn-tester/samples/table-safety-validation-patterns.md +0 -101
  178. package/embedded-knowledge/domains/quinn-tester/samples/temporary-table-operation-validation.md +0 -91
  179. package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +0 -79
  180. package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +0 -79
  181. package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +0 -89
  182. package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +0 -76
  183. package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +0 -76
  184. package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +0 -76
  185. package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +0 -81
  186. package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +0 -76
  187. package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +0 -75
  188. package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +0 -76
  189. package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +0 -76
  190. package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +0 -76
  191. package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +0 -96
  192. package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +0 -76
  193. package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +0 -86
  194. package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +0 -90
  195. package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +0 -82
  196. package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +0 -78
  197. package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +0 -76
  198. package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +0 -78
  199. package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +0 -100
  200. package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +0 -115
  201. package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +0 -124
  202. package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +0 -110
  203. package/embedded-knowledge/domains/roger-reviewer/samples/al-begin-end-blocks.md +0 -438
  204. package/embedded-knowledge/domains/roger-reviewer/samples/al-binary-operator-spacing.md +0 -255
  205. package/embedded-knowledge/domains/roger-reviewer/samples/al-comment-spacing-standards.md +0 -209
  206. package/embedded-knowledge/domains/roger-reviewer/samples/al-keyword-indentation-rules.md +0 -218
  207. package/embedded-knowledge/domains/roger-reviewer/samples/al-line-start-keyword-positioning.md +0 -218
  208. package/embedded-knowledge/domains/roger-reviewer/samples/al-separate-if-else-formatting.md +0 -280
  209. package/embedded-knowledge/domains/roger-reviewer/samples/al-statement-per-line-rule.md +0 -188
  210. package/embedded-knowledge/domains/roger-reviewer/samples/al-unnecessary-else-elimination.md +0 -245
  211. package/embedded-knowledge/domains/roger-reviewer/samples/al-variable-declaration-order.md +0 -244
  212. package/embedded-knowledge/domains/roger-reviewer/samples/begin-end-positioning.md +0 -278
  213. package/embedded-knowledge/domains/roger-reviewer/samples/boolean-simplification-examples.md +0 -484
  214. package/embedded-knowledge/domains/roger-reviewer/samples/case-error-handling.md +0 -64
  215. package/embedded-knowledge/domains/roger-reviewer/samples/compound-statement-readability.md +0 -107
  216. package/embedded-knowledge/domains/roger-reviewer/samples/lonely-repeat-examples.md +0 -280
  217. package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +0 -75
  218. package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +0 -67
  219. package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +0 -76
  220. package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +0 -98
  221. package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +0 -128
  222. package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +0 -75
  223. package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +0 -95
  224. package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +0 -141
  225. package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +0 -91
  226. package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +0 -118
  227. package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +0 -111
  228. package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +0 -113
  229. package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +0 -127
  230. package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +0 -141
  231. package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +0 -66
  232. package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +0 -96
  233. package/embedded-knowledge/domains/sam-coder/samples/al-blank-line-organization.md +0 -161
  234. package/embedded-knowledge/domains/sam-coder/samples/al-case-action-formatting.md +0 -177
  235. package/embedded-knowledge/domains/sam-coder/samples/al-lonely-repeat-pattern.md +0 -239
  236. package/embedded-knowledge/domains/sam-coder/samples/al-named-parameter-pattern.md +0 -346
  237. package/embedded-knowledge/domains/sam-coder/samples/al-record-find-early-exit.md +0 -298
  238. package/embedded-knowledge/domains/sam-coder/samples/command-queue-pattern.md +0 -677
  239. package/embedded-knowledge/domains/sam-coder/samples/deleteall-alternative-implementation.md +0 -117
  240. package/embedded-knowledge/domains/sam-coder/samples/deleteall-triggers.md +0 -75
  241. package/embedded-knowledge/domains/sam-coder/samples/deleteall-usage.md +0 -169
  242. package/embedded-knowledge/domains/sam-coder/samples/event-bridge-pattern.md +0 -399
  243. package/embedded-knowledge/domains/sam-coder/samples/event-payload-design.md +0 -356
  244. package/embedded-knowledge/domains/sam-coder/samples/generic-method-patterns.md +0 -889
  245. package/embedded-knowledge/domains/sam-coder/samples/manual-binding.md +0 -84
  246. package/embedded-knowledge/domains/sam-coder/samples/nested-compound-best-practices.md +0 -127
  247. package/embedded-knowledge/domains/sam-coder/samples/single-to-compound-conversion.md +0 -89
  248. package/embedded-knowledge/domains/sam-coder/samples/template-method-pattern.md +0 -516
  249. package/embedded-knowledge/domains/sam-coder/samples/testfield-patterns.md +0 -61
  250. package/embedded-knowledge/domains/sam-coder/samples/type-safe-operations.md +0 -427
  251. package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +0 -122
  252. package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +0 -96
  253. package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +0 -101
  254. package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +0 -149
  255. package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +0 -107
  256. package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +0 -95
  257. package/embedded-knowledge/domains/seth-security/api-permission-model.md +0 -115
  258. package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +0 -78
  259. package/embedded-knowledge/domains/seth-security/samples/al-temporary-table-safety.md +0 -373
  260. package/embedded-knowledge/domains/seth-security/samples/api-permission-model.md +0 -308
  261. package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +0 -79
  262. package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +0 -78
  263. package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +0 -81
  264. package/embedded-knowledge/indexes/bc-version-matrix.json +0 -188
  265. package/embedded-knowledge/indexes/domain-catalog.json +0 -106
  266. package/embedded-knowledge/indexes/tags/abbreviations.json +0 -1
  267. package/embedded-knowledge/indexes/tags/abstraction.json +0 -1
  268. package/embedded-knowledge/indexes/tags/access-control.json +0 -1
  269. package/embedded-knowledge/indexes/tags/accessibility.json +0 -1
  270. package/embedded-knowledge/indexes/tags/actions.json +0 -1
  271. package/embedded-knowledge/indexes/tags/advanced-patterns.json +0 -1
  272. package/embedded-knowledge/indexes/tags/advanced.json +0 -1
  273. package/embedded-knowledge/indexes/tags/al-extension.json +0 -1
  274. package/embedded-knowledge/indexes/tags/al-generics.json +0 -1
  275. package/embedded-knowledge/indexes/tags/al-objects.json +0 -1
  276. package/embedded-knowledge/indexes/tags/al-syntax.json +0 -1
  277. package/embedded-knowledge/indexes/tags/algorithm-structure.json +0 -1
  278. package/embedded-knowledge/indexes/tags/alternatives.json +0 -1
  279. package/embedded-knowledge/indexes/tags/analytics.json +0 -1
  280. package/embedded-knowledge/indexes/tags/api-delegates.json +0 -1
  281. package/embedded-knowledge/indexes/tags/api-design.json +0 -1
  282. package/embedded-knowledge/indexes/tags/api-documentation.json +0 -1
  283. package/embedded-knowledge/indexes/tags/api-endpoints.json +0 -1
  284. package/embedded-knowledge/indexes/tags/api-extensibility.json +0 -1
  285. package/embedded-knowledge/indexes/tags/api-fieldsets.json +0 -1
  286. package/embedded-knowledge/indexes/tags/api-integration.json +0 -1
  287. package/embedded-knowledge/indexes/tags/api-interfaces.json +0 -1
  288. package/embedded-knowledge/indexes/tags/api-optimization.json +0 -1
  289. package/embedded-knowledge/indexes/tags/api-pages.json +0 -1
  290. package/embedded-knowledge/indexes/tags/api-patterns.json +0 -1
  291. package/embedded-knowledge/indexes/tags/api-permissions.json +0 -1
  292. package/embedded-knowledge/indexes/tags/api-responses.json +0 -1
  293. package/embedded-knowledge/indexes/tags/api-simplification.json +0 -1
  294. package/embedded-knowledge/indexes/tags/api.json +0 -1
  295. package/embedded-knowledge/indexes/tags/architecture.json +0 -1
  296. package/embedded-knowledge/indexes/tags/async-patterns.json +0 -1
  297. package/embedded-knowledge/indexes/tags/async-processing.json +0 -1
  298. package/embedded-knowledge/indexes/tags/automatic-registration.json +0 -1
  299. package/embedded-knowledge/indexes/tags/batch-operations.json +0 -1
  300. package/embedded-knowledge/indexes/tags/bc24-migration.json +0 -1
  301. package/embedded-knowledge/indexes/tags/begin-blocks.json +0 -1
  302. package/embedded-knowledge/indexes/tags/begin-end.json +0 -1
  303. package/embedded-knowledge/indexes/tags/behavioral-patterns.json +0 -1
  304. package/embedded-knowledge/indexes/tags/best-practices.json +0 -1
  305. package/embedded-knowledge/indexes/tags/binding.json +0 -1
  306. package/embedded-knowledge/indexes/tags/block-structure.json +0 -1
  307. package/embedded-knowledge/indexes/tags/blocks.json +0 -1
  308. package/embedded-knowledge/indexes/tags/boolean-expressions.json +0 -1
  309. package/embedded-knowledge/indexes/tags/branching.json +0 -1
  310. package/embedded-knowledge/indexes/tags/breaking-changes.json +0 -1
  311. package/embedded-knowledge/indexes/tags/breakpoints.json +0 -1
  312. package/embedded-knowledge/indexes/tags/business-foundation.json +0 -1
  313. package/embedded-knowledge/indexes/tags/business-infrastructure.json +0 -1
  314. package/embedded-knowledge/indexes/tags/business-process.json +0 -1
  315. package/embedded-knowledge/indexes/tags/business-rules.json +0 -1
  316. package/embedded-knowledge/indexes/tags/caching.json +0 -1
  317. package/embedded-knowledge/indexes/tags/case-statements.json +0 -1
  318. package/embedded-knowledge/indexes/tags/case.json +0 -1
  319. package/embedded-knowledge/indexes/tags/code-analysis.json +0 -1
  320. package/embedded-knowledge/indexes/tags/code-clarity.json +0 -1
  321. package/embedded-knowledge/indexes/tags/code-comprehension.json +0 -1
  322. package/embedded-knowledge/indexes/tags/code-conversion.json +0 -1
  323. package/embedded-knowledge/indexes/tags/code-formatting.json +0 -1
  324. package/embedded-knowledge/indexes/tags/code-organization.json +0 -1
  325. package/embedded-knowledge/indexes/tags/code-patterns.json +0 -1
  326. package/embedded-knowledge/indexes/tags/code-quality.json +0 -1
  327. package/embedded-knowledge/indexes/tags/code-reuse.json +0 -1
  328. package/embedded-knowledge/indexes/tags/code-simplification.json +0 -1
  329. package/embedded-knowledge/indexes/tags/code-standards.json +0 -1
  330. package/embedded-knowledge/indexes/tags/code-structure.json +0 -1
  331. package/embedded-knowledge/indexes/tags/code-style.json +0 -1
  332. package/embedded-knowledge/indexes/tags/codeunit-design.json +0 -1
  333. package/embedded-knowledge/indexes/tags/command-queue.json +0 -1
  334. package/embedded-knowledge/indexes/tags/comments.json +0 -1
  335. package/embedded-knowledge/indexes/tags/compile-time-validation.json +0 -1
  336. package/embedded-knowledge/indexes/tags/complex-facade.json +0 -1
  337. package/embedded-knowledge/indexes/tags/complexity-hiding.json +0 -1
  338. package/embedded-knowledge/indexes/tags/complexity-management.json +0 -1
  339. package/embedded-knowledge/indexes/tags/compound-statements.json +0 -1
  340. package/embedded-knowledge/indexes/tags/concurrency.json +0 -1
  341. package/embedded-knowledge/indexes/tags/conditional-logic.json +0 -1
  342. package/embedded-knowledge/indexes/tags/conditional.json +0 -1
  343. package/embedded-knowledge/indexes/tags/conflict-resolution.json +0 -1
  344. package/embedded-knowledge/indexes/tags/consistency.json +0 -1
  345. package/embedded-knowledge/indexes/tags/contract-design.json +0 -1
  346. package/embedded-knowledge/indexes/tags/control-flow.json +0 -1
  347. package/embedded-knowledge/indexes/tags/conversion-guide.json +0 -1
  348. package/embedded-knowledge/indexes/tags/correlation.json +0 -1
  349. package/embedded-knowledge/indexes/tags/custom-messages.json +0 -1
  350. package/embedded-knowledge/indexes/tags/data-access.json +0 -1
  351. package/embedded-knowledge/indexes/tags/data-exposure.json +0 -1
  352. package/embedded-knowledge/indexes/tags/data-integrity.json +0 -1
  353. package/embedded-knowledge/indexes/tags/data-loading.json +0 -1
  354. package/embedded-knowledge/indexes/tags/data-manipulation.json +0 -1
  355. package/embedded-knowledge/indexes/tags/data-modeling.json +0 -1
  356. package/embedded-knowledge/indexes/tags/data-patterns.json +0 -1
  357. package/embedded-knowledge/indexes/tags/data-protection.json +0 -1
  358. package/embedded-knowledge/indexes/tags/data-validation.json +0 -1
  359. package/embedded-knowledge/indexes/tags/database.json +0 -1
  360. package/embedded-knowledge/indexes/tags/debugging.json +0 -1
  361. package/embedded-knowledge/indexes/tags/decision-making.json +0 -1
  362. package/embedded-knowledge/indexes/tags/declaration.json +0 -1
  363. package/embedded-knowledge/indexes/tags/default-messages.json +0 -1
  364. package/embedded-knowledge/indexes/tags/defensive-programming.json +0 -1
  365. package/embedded-knowledge/indexes/tags/deleteall.json +0 -1
  366. package/embedded-knowledge/indexes/tags/dependencies.json +0 -1
  367. package/embedded-knowledge/indexes/tags/deployment.json +0 -1
  368. package/embedded-knowledge/indexes/tags/developer-productivity.json +0 -1
  369. package/embedded-knowledge/indexes/tags/development-workflow.json +0 -1
  370. package/embedded-knowledge/indexes/tags/diagnostics.json +0 -1
  371. package/embedded-knowledge/indexes/tags/dimensions.json +0 -1
  372. package/embedded-knowledge/indexes/tags/documentation.json +0 -1
  373. package/embedded-knowledge/indexes/tags/early-exit.json +0 -1
  374. package/embedded-knowledge/indexes/tags/else-clauses.json +0 -1
  375. package/embedded-knowledge/indexes/tags/end-statements.json +0 -1
  376. package/embedded-knowledge/indexes/tags/enterprise-patterns.json +0 -1
  377. package/embedded-knowledge/indexes/tags/entity-relationships.json +0 -1
  378. package/embedded-knowledge/indexes/tags/error-handling.json +0 -1
  379. package/embedded-knowledge/indexes/tags/error-messages.json +0 -1
  380. package/embedded-knowledge/indexes/tags/error-prevention.json +0 -1
  381. package/embedded-knowledge/indexes/tags/error-text.json +0 -1
  382. package/embedded-knowledge/indexes/tags/etag.json +0 -1
  383. package/embedded-knowledge/indexes/tags/event-bridge.json +0 -1
  384. package/embedded-knowledge/indexes/tags/event-payload.json +0 -1
  385. package/embedded-knowledge/indexes/tags/event-routing.json +0 -1
  386. package/embedded-knowledge/indexes/tags/events.json +0 -1
  387. package/embedded-knowledge/indexes/tags/execution-flow.json +0 -1
  388. package/embedded-knowledge/indexes/tags/expressions.json +0 -1
  389. package/embedded-knowledge/indexes/tags/extensibility.json +0 -1
  390. package/embedded-knowledge/indexes/tags/extensions.json +0 -1
  391. package/embedded-knowledge/indexes/tags/facade-composition.json +0 -1
  392. package/embedded-knowledge/indexes/tags/facade-pattern.json +0 -1
  393. package/embedded-knowledge/indexes/tags/field-control.json +0 -1
  394. package/embedded-knowledge/indexes/tags/field-exclusion.json +0 -1
  395. package/embedded-knowledge/indexes/tags/field-registration.json +0 -1
  396. package/embedded-knowledge/indexes/tags/field-state.json +0 -1
  397. package/embedded-knowledge/indexes/tags/field-validation.json +0 -1
  398. package/embedded-knowledge/indexes/tags/fielderror.json +0 -1
  399. package/embedded-knowledge/indexes/tags/fields.json +0 -1
  400. package/embedded-knowledge/indexes/tags/filtering.json +0 -1
  401. package/embedded-knowledge/indexes/tags/filters.json +0 -1
  402. package/embedded-knowledge/indexes/tags/formatting.json +0 -1
  403. package/embedded-knowledge/indexes/tags/generic-methods.json +0 -1
  404. package/embedded-knowledge/indexes/tags/http-status.json +0 -1
  405. package/embedded-knowledge/indexes/tags/if-statements.json +0 -1
  406. package/embedded-knowledge/indexes/tags/implementation.json +0 -1
  407. package/embedded-knowledge/indexes/tags/indentation.json +0 -1
  408. package/embedded-knowledge/indexes/tags/index-summary.json +0 -277
  409. package/embedded-knowledge/indexes/tags/indexing.json +0 -1
  410. package/embedded-knowledge/indexes/tags/inheritance.json +0 -1
  411. package/embedded-knowledge/indexes/tags/integration.json +0 -1
  412. package/embedded-knowledge/indexes/tags/integrity-checking.json +0 -1
  413. package/embedded-knowledge/indexes/tags/intellisense.json +0 -1
  414. package/embedded-knowledge/indexes/tags/interface-design.json +0 -1
  415. package/embedded-knowledge/indexes/tags/interface-segregation.json +0 -1
  416. package/embedded-knowledge/indexes/tags/isolation.json +0 -1
  417. package/embedded-knowledge/indexes/tags/job-processing.json +0 -1
  418. package/embedded-knowledge/indexes/tags/keyboard-navigation.json +0 -1
  419. package/embedded-knowledge/indexes/tags/keywords.json +0 -1
  420. package/embedded-knowledge/indexes/tags/legacy-modernization.json +0 -1
  421. package/embedded-knowledge/indexes/tags/line-breaks.json +0 -1
  422. package/embedded-knowledge/indexes/tags/line-organization.json +0 -1
  423. package/embedded-knowledge/indexes/tags/line-positioning.json +0 -1
  424. package/embedded-knowledge/indexes/tags/localization.json +0 -1
  425. package/embedded-knowledge/indexes/tags/logging.json +0 -1
  426. package/embedded-knowledge/indexes/tags/loose-coupling.json +0 -1
  427. package/embedded-knowledge/indexes/tags/maintainability.json +0 -1
  428. package/embedded-knowledge/indexes/tags/memory-management.json +0 -1
  429. package/embedded-knowledge/indexes/tags/memory-optimization.json +0 -1
  430. package/embedded-knowledge/indexes/tags/memory.json +0 -1
  431. package/embedded-knowledge/indexes/tags/message-design.json +0 -1
  432. package/embedded-knowledge/indexes/tags/message-formatting.json +0 -1
  433. package/embedded-knowledge/indexes/tags/message-patterns.json +0 -1
  434. package/embedded-knowledge/indexes/tags/metadata-driven.json +0 -1
  435. package/embedded-knowledge/indexes/tags/method-comparison.json +0 -1
  436. package/embedded-knowledge/indexes/tags/module-architecture.json +0 -1
  437. package/embedded-knowledge/indexes/tags/module-validation.json +0 -1
  438. package/embedded-knowledge/indexes/tags/monitoring.json +0 -1
  439. package/embedded-knowledge/indexes/tags/multi-layer-facade.json +0 -1
  440. package/embedded-knowledge/indexes/tags/multi-tenancy.json +0 -1
  441. package/embedded-knowledge/indexes/tags/multiple-values.json +0 -1
  442. package/embedded-knowledge/indexes/tags/naming-conventions.json +0 -1
  443. package/embedded-knowledge/indexes/tags/naming.json +0 -1
  444. package/embedded-knowledge/indexes/tags/navigation.json +0 -1
  445. package/embedded-knowledge/indexes/tags/nested-statements.json +0 -1
  446. package/embedded-knowledge/indexes/tags/no-series-conversion.json +0 -1
  447. package/embedded-knowledge/indexes/tags/no-series-validation.json +0 -1
  448. package/embedded-knowledge/indexes/tags/no-series.json +0 -1
  449. package/embedded-knowledge/indexes/tags/number-generation.json +0 -1
  450. package/embedded-knowledge/indexes/tags/object-documentation.json +0 -1
  451. package/embedded-knowledge/indexes/tags/odata.json +0 -1
  452. package/embedded-knowledge/indexes/tags/ondelete.json +0 -1
  453. package/embedded-knowledge/indexes/tags/onvalidate.json +0 -1
  454. package/embedded-knowledge/indexes/tags/operation-delegation.json +0 -1
  455. package/embedded-knowledge/indexes/tags/operation-safety.json +0 -1
  456. package/embedded-knowledge/indexes/tags/operators.json +0 -1
  457. package/embedded-knowledge/indexes/tags/optimization.json +0 -1
  458. package/embedded-knowledge/indexes/tags/order.json +0 -1
  459. package/embedded-knowledge/indexes/tags/organization.json +0 -1
  460. package/embedded-knowledge/indexes/tags/pages.json +0 -1
  461. package/embedded-knowledge/indexes/tags/parameters.json +0 -1
  462. package/embedded-knowledge/indexes/tags/patterns.json +0 -1
  463. package/embedded-knowledge/indexes/tags/performance-optimization.json +0 -1
  464. package/embedded-knowledge/indexes/tags/performance.json +0 -1
  465. package/embedded-knowledge/indexes/tags/placement.json +0 -1
  466. package/embedded-knowledge/indexes/tags/posting-codeunits.json +0 -1
  467. package/embedded-knowledge/indexes/tags/posting.json +0 -1
  468. package/embedded-knowledge/indexes/tags/preconditions.json +0 -1
  469. package/embedded-knowledge/indexes/tags/primary-key.json +0 -1
  470. package/embedded-knowledge/indexes/tags/privacy.json +0 -1
  471. package/embedded-knowledge/indexes/tags/process-automation.json +0 -1
  472. package/embedded-knowledge/indexes/tags/production.json +0 -1
  473. package/embedded-knowledge/indexes/tags/productivity.json +0 -1
  474. package/embedded-knowledge/indexes/tags/query-performance.json +0 -1
  475. package/embedded-knowledge/indexes/tags/queue-management.json +0 -1
  476. package/embedded-knowledge/indexes/tags/ranges.json +0 -1
  477. package/embedded-knowledge/indexes/tags/readability.json +0 -1
  478. package/embedded-knowledge/indexes/tags/record-access.json +0 -1
  479. package/embedded-knowledge/indexes/tags/record-methods.json +0 -1
  480. package/embedded-knowledge/indexes/tags/refactoring.json +0 -1
  481. package/embedded-knowledge/indexes/tags/reference.json +0 -1
  482. package/embedded-knowledge/indexes/tags/repeat-loops.json +0 -1
  483. package/embedded-knowledge/indexes/tags/repeat-statement.json +0 -1
  484. package/embedded-knowledge/indexes/tags/runtime-errors.json +0 -1
  485. package/embedded-knowledge/indexes/tags/runtime.json +0 -1
  486. package/embedded-knowledge/indexes/tags/safeguards.json +0 -1
  487. package/embedded-knowledge/indexes/tags/security.json +0 -1
  488. package/embedded-knowledge/indexes/tags/sequence-management.json +0 -1
  489. package/embedded-knowledge/indexes/tags/serialization.json +0 -1
  490. package/embedded-knowledge/indexes/tags/session-logmessage.json +0 -1
  491. package/embedded-knowledge/indexes/tags/session.json +0 -1
  492. package/embedded-knowledge/indexes/tags/setloadfields.json +0 -1
  493. package/embedded-knowledge/indexes/tags/shortcuts.json +0 -1
  494. package/embedded-knowledge/indexes/tags/sift.json +0 -1
  495. package/embedded-knowledge/indexes/tags/singleinstance.json +0 -1
  496. package/embedded-knowledge/indexes/tags/spacing.json +0 -1
  497. package/embedded-knowledge/indexes/tags/sql-translation.json +0 -1
  498. package/embedded-knowledge/indexes/tags/standards.json +0 -1
  499. package/embedded-knowledge/indexes/tags/statements.json +0 -1
  500. package/embedded-knowledge/indexes/tags/streaming.json +0 -1
  501. package/embedded-knowledge/indexes/tags/strong-typing.json +0 -1
  502. package/embedded-knowledge/indexes/tags/structural-patterns.json +0 -1
  503. package/embedded-knowledge/indexes/tags/structure.json +0 -1
  504. package/embedded-knowledge/indexes/tags/subscribers.json +0 -1
  505. package/embedded-knowledge/indexes/tags/switch.json +0 -1
  506. package/embedded-knowledge/indexes/tags/symbol-search.json +0 -1
  507. package/embedded-knowledge/indexes/tags/syntax.json +0 -1
  508. package/embedded-knowledge/indexes/tags/systemid.json +0 -1
  509. package/embedded-knowledge/indexes/tags/table-configuration.json +0 -1
  510. package/embedded-knowledge/indexes/tags/table-events.json +0 -1
  511. package/embedded-knowledge/indexes/tags/table-keys.json +0 -1
  512. package/embedded-knowledge/indexes/tags/table-safety.json +0 -1
  513. package/embedded-knowledge/indexes/tags/task-scheduler.json +0 -1
  514. package/embedded-knowledge/indexes/tags/telemetry.json +0 -1
  515. package/embedded-knowledge/indexes/tags/template-method.json +0 -1
  516. package/embedded-knowledge/indexes/tags/temporary-tables.json +0 -1
  517. package/embedded-knowledge/indexes/tags/testfield.json +0 -1
  518. package/embedded-knowledge/indexes/tags/tradeoffs.json +0 -1
  519. package/embedded-knowledge/indexes/tags/triggers.json +0 -1
  520. package/embedded-knowledge/indexes/tags/troubleshooting.json +0 -1
  521. package/embedded-knowledge/indexes/tags/type-safety.json +0 -1
  522. package/embedded-knowledge/indexes/tags/url-structure.json +0 -1
  523. package/embedded-knowledge/indexes/tags/user-experience.json +0 -1
  524. package/embedded-knowledge/indexes/tags/user-feedback.json +0 -1
  525. package/embedded-knowledge/indexes/tags/user-interface.json +0 -1
  526. package/embedded-knowledge/indexes/tags/validation-feedback.json +0 -1
  527. package/embedded-knowledge/indexes/tags/validation.json +0 -1
  528. package/embedded-knowledge/indexes/tags/variables.json +0 -1
  529. package/embedded-knowledge/indexes/tags/verbosity.json +0 -1
  530. package/embedded-knowledge/indexes/tags/vs-code.json +0 -1
  531. package/embedded-knowledge/indexes/tags/web-services.json +0 -1
  532. package/embedded-knowledge/indexes/tags/workflow-management.json +0 -1
  533. package/embedded-knowledge/indexes/tags/workflow-optimization.json +0 -1
  534. package/embedded-knowledge/indexes/tags/workflow-templates.json +0 -1
  535. package/embedded-knowledge/indexes/tags/workspace.json +0 -1
  536. package/embedded-knowledge/indexes/tags/xml-documentation.json +0 -1
  537. package/embedded-knowledge/indexes/topic-relationships.json +0 -128
  538. package/embedded-knowledge/methodologies/index.json +0 -81
  539. package/embedded-knowledge/methodologies/phases/analysis-full.md +0 -208
  540. package/embedded-knowledge/methodologies/phases/analysis-quick.md +0 -44
  541. package/embedded-knowledge/methodologies/phases/analysis.md +0 -182
  542. package/embedded-knowledge/methodologies/phases/execution-validation-full.md +0 -174
  543. package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +0 -31
  544. package/embedded-knowledge/methodologies/phases/execution-validation.md +0 -174
  545. package/embedded-knowledge/methodologies/phases/performance-full.md +0 -211
  546. package/embedded-knowledge/methodologies/phases/performance-quick.md +0 -32
  547. package/embedded-knowledge/methodologies/phases/performance.md +0 -211
  548. package/embedded-knowledge/methodologies/phases/verification-full.md +0 -162
  549. package/embedded-knowledge/methodologies/phases/verification-quick.md +0 -48
  550. package/embedded-knowledge/methodologies/phases/verification.md +0 -146
  551. package/embedded-knowledge/methodologies/workflow-enforcement.md +0 -142
  552. package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +0 -99
  553. package/embedded-knowledge/specialists/alex-architect.md +0 -216
  554. package/embedded-knowledge/specialists/casey-copilot.md +0 -226
  555. package/embedded-knowledge/specialists/chris-config.md +0 -267
  556. package/embedded-knowledge/specialists/dean-debug.md +0 -222
  557. package/embedded-knowledge/specialists/eva-errors.md +0 -235
  558. package/embedded-knowledge/specialists/jordan-bridge.md +0 -235
  559. package/embedded-knowledge/specialists/logan-legacy.md +0 -209
  560. package/embedded-knowledge/specialists/maya-mentor.md +0 -211
  561. package/embedded-knowledge/specialists/morgan-market.md +0 -226
  562. package/embedded-knowledge/specialists/quinn-tester.md +0 -235
  563. package/embedded-knowledge/specialists/roger-reviewer.md +0 -234
  564. package/embedded-knowledge/specialists/sam-coder.md +0 -359
  565. package/embedded-knowledge/specialists/seth-security.md +0 -235
  566. package/embedded-knowledge/specialists/taylor-docs.md +0 -257
  567. package/embedded-knowledge/specialists/uma-ux.md +0 -235
@@ -1,320 +0,0 @@
1
- # AL Facade Pattern for External API Integration - Examples
2
-
3
- ## Basic Facade Structure
4
-
5
- ```al
6
- // Facade Pattern: External API Integration Manager
7
- // Provides simplified interface for complex external API operations
8
- // Centralizes authentication, error handling, and business logic
9
- codeunit 50300 "External API Manager"
10
- {
11
- // Public business methods - simplified interface for consumers
12
- procedure GetCustomerData(CustomerNo: Code[20]; var CustomerData: Record "Customer"): Boolean
13
- var
14
- JsonResponse: JsonObject;
15
- begin
16
- // Business-focused method signature - hides API complexity
17
- if not CallCustomerAPI(CustomerNo, JsonResponse) then
18
- exit(false);
19
-
20
- exit(ParseCustomerResponse(JsonResponse, CustomerData));
21
- end;
22
-
23
- procedure SyncOrderStatus(SalesOrderNo: Code[20]): Boolean
24
- var
25
- JsonResponse: JsonObject;
26
- OrderStatus: Text;
27
- begin
28
- // Single method for complex order synchronization process
29
- if not CallOrderStatusAPI(SalesOrderNo, JsonResponse) then
30
- exit(false);
31
-
32
- if not ExtractOrderStatus(JsonResponse, OrderStatus) then
33
- exit(false);
34
-
35
- exit(UpdateLocalOrderStatus(SalesOrderNo, OrderStatus));
36
- end;
37
-
38
- procedure ValidateProductCatalog(ItemNo: Code[20]; var IsValid: Boolean; var ErrorMessage: Text): Boolean
39
- var
40
- JsonResponse: JsonObject;
41
- begin
42
- // Centralized validation with business-friendly error messages
43
- if not CallProductValidationAPI(ItemNo, JsonResponse) then begin
44
- ErrorMessage := 'Unable to validate product with external system';
45
- IsValid := false;
46
- exit(false);
47
- end;
48
-
49
- exit(ProcessValidationResponse(JsonResponse, IsValid, ErrorMessage));
50
- end;
51
-
52
- // Private implementation methods - hidden complexity
53
- local procedure CallCustomerAPI(CustomerNo: Code[20]; var JsonResponse: JsonObject): Boolean
54
- var
55
- HttpClient: HttpClient;
56
- RequestMessage: HttpRequestMessage;
57
- ResponseMessage: HttpResponseMessage;
58
- ApiUrl: Text;
59
- begin
60
- // Handle authentication automatically
61
- if not EnsureAuthenticated() then
62
- exit(false);
63
-
64
- // Construct API endpoint with proper formatting
65
- ApiUrl := StrSubstNo('%1/customers/%2', GetBaseApiUrl(), CustomerNo);
66
-
67
- // Configure authenticated request
68
- if not PrepareAuthenticatedRequest(RequestMessage, 'GET', ApiUrl) then
69
- exit(false);
70
-
71
- // Execute with retry logic and error handling
72
- if not ExecuteApiCall(HttpClient, RequestMessage, ResponseMessage) then
73
- exit(false);
74
-
75
- exit(ParseJsonResponse(ResponseMessage, JsonResponse));
76
- end;
77
- }
78
- ```
79
-
80
- ## API Call Abstraction
81
-
82
- ```al
83
- // Private methods handling technical API details
84
- codeunit 50301 "API Technical Layer"
85
- {
86
- var
87
- AuthToken: Text;
88
- BaseApiUrl: Text;
89
- LastAuthTime: DateTime;
90
- TokenExpiryMinutes: Integer;
91
-
92
- // Authentication management - hidden from business logic
93
- local procedure EnsureAuthenticated(): Boolean
94
- var
95
- CurrentTime: DateTime;
96
- MinutesSinceAuth: Integer;
97
- begin
98
- CurrentTime := CurrentDateTime;
99
- MinutesSinceAuth := (CurrentTime - LastAuthTime) / 60000;
100
-
101
- // Token refresh logic
102
- if (AuthToken = '') or (MinutesSinceAuth >= TokenExpiryMinutes) then
103
- exit(RefreshAuthToken());
104
-
105
- exit(AuthToken <> '');
106
- end;
107
-
108
- local procedure RefreshAuthToken(): Boolean
109
- var
110
- HttpClient: HttpClient;
111
- RequestMessage: HttpRequestMessage;
112
- ResponseMessage: HttpResponseMessage;
113
- AuthEndpoint: Text;
114
- RequestBody: Text;
115
- Content: HttpContent;
116
- JsonResponse: JsonObject;
117
- TokenValue: JsonToken;
118
- Headers: HttpHeaders;
119
- begin
120
- AuthEndpoint := GetBaseApiUrl() + '/auth/token';
121
- RequestBody := StrSubstNo('{"client_id": "%1", "client_secret": "%2", "grant_type": "client_credentials"}',
122
- GetClientId(), GetClientSecret());
123
-
124
- Content.WriteFrom(RequestBody);
125
- Content.GetHeaders(Headers);
126
- Headers.Clear();
127
- Headers.Add('Content-Type', 'application/json');
128
-
129
- RequestMessage.Method := 'POST';
130
- RequestMessage.SetRequestUri(AuthEndpoint);
131
- RequestMessage.Content := Content;
132
-
133
- if not HttpClient.Send(RequestMessage, ResponseMessage) then begin
134
- LogError('Authentication request failed');
135
- exit(false);
136
- end;
137
-
138
- if not ResponseMessage.IsSuccessStatusCode() then begin
139
- LogError(StrSubstNo('Authentication failed with status: %1', ResponseMessage.HttpStatusCode()));
140
- exit(false);
141
- end;
142
-
143
- if not ParseJsonResponse(ResponseMessage, JsonResponse) then
144
- exit(false);
145
-
146
- if JsonResponse.Get('access_token', TokenValue) then begin
147
- AuthToken := TokenValue.AsValue().AsText();
148
- LastAuthTime := CurrentDateTime;
149
- TokenExpiryMinutes := 55; // Refresh before 60-minute expiry
150
- exit(true);
151
- end;
152
-
153
- LogError('Access token not found in authentication response');
154
- exit(false);
155
- end;
156
-
157
- // Generic API call execution with retry logic
158
- local procedure ExecuteApiCall(var HttpClient: HttpClient; RequestMessage: HttpRequestMessage; var ResponseMessage: HttpResponseMessage): Boolean
159
- var
160
- RetryCount: Integer;
161
- MaxRetries: Integer;
162
- Success: Boolean;
163
- StatusCode: Integer;
164
- begin
165
- MaxRetries := 3;
166
- RetryCount := 0;
167
-
168
- repeat
169
- Success := HttpClient.Send(RequestMessage, ResponseMessage);
170
-
171
- if Success then begin
172
- StatusCode := ResponseMessage.HttpStatusCode();
173
-
174
- // Success status codes
175
- if (StatusCode >= 200) and (StatusCode < 300) then
176
- exit(true);
177
-
178
- // Retryable status codes (temporary failures)
179
- if (StatusCode = 429) or (StatusCode >= 500) then begin
180
- RetryCount += 1;
181
- if RetryCount < MaxRetries then begin
182
- Sleep(RetryCount * 2000); // Exponential backoff: 2s, 4s, 6s
183
- continue;
184
- end;
185
- end;
186
- end;
187
-
188
- RetryCount += 1;
189
- if RetryCount < MaxRetries then
190
- Sleep(RetryCount * 2000);
191
-
192
- until RetryCount >= MaxRetries;
193
-
194
- LogError(StrSubstNo('API call failed after %1 retries', MaxRetries));
195
- exit(false);
196
- end;
197
- }
198
- ```
199
-
200
- ## Error Handling and Authentication
201
-
202
- ```al
203
- // Centralized error handling with business-friendly messages
204
- codeunit 50302 "API Error Handler"
205
- {
206
- // Business-friendly error handling
207
- procedure HandleApiError(var ErrorMessage: Text; HttpStatusCode: Integer; ApiResponse: Text): Boolean
208
- var
209
- JsonResponse: JsonObject;
210
- ErrorToken: JsonToken;
211
- ErrorCode: Text;
212
- DetailedMessage: Text;
213
- begin
214
- // Parse error response if JSON
215
- if JsonResponse.ReadFrom(ApiResponse) then begin
216
- if JsonResponse.Get('error_code', ErrorToken) then
217
- ErrorCode := ErrorToken.AsValue().AsText();
218
-
219
- if JsonResponse.Get('message', ErrorToken) then
220
- DetailedMessage := ErrorToken.AsValue().AsText();
221
- end;
222
-
223
- // Convert technical errors to business messages
224
- case HttpStatusCode of
225
- 400:
226
- ErrorMessage := GetBusinessErrorMessage('INVALID_REQUEST', ErrorCode, DetailedMessage);
227
- 401:
228
- ErrorMessage := 'Authentication failed. Please check system configuration.';
229
- 403:
230
- ErrorMessage := 'Access denied. Insufficient permissions for this operation.';
231
- 404:
232
- ErrorMessage := 'The requested resource was not found in the external system.';
233
- 409:
234
- ErrorMessage := 'Data conflict detected. The record may have been modified by another user.';
235
- 422:
236
- ErrorMessage := GetBusinessErrorMessage('VALIDATION_FAILED', ErrorCode, DetailedMessage);
237
- 429:
238
- ErrorMessage := 'External system is busy. Please try again in a few minutes.';
239
- 500, 502, 503:
240
- ErrorMessage := 'External system is temporarily unavailable. Please try again later.';
241
- else
242
- ErrorMessage := StrSubstNo('Unexpected error occurred (Code: %1). Please contact your administrator.', HttpStatusCode);
243
- end;
244
-
245
- // Log technical details for troubleshooting (not shown to user)
246
- LogTechnicalError(HttpStatusCode, ApiResponse);
247
-
248
- exit(false); // Always return false for error conditions
249
- end;
250
- }
251
- ```
252
-
253
- ## Anti-Pattern: Direct API Calls
254
-
255
- ```al
256
- // ANTI-PATTERN: What NOT to do - Scattered API calls throughout codebase
257
- // Problems: Code duplication, inconsistent error handling, tight coupling
258
-
259
- // BAD EXAMPLE: Direct API calls in business logic
260
- codeunit 50400 "Sales Order Processing" // DON'T DO THIS
261
- {
262
- procedure ProcessSalesOrder(var SalesHeader: Record "Sales Header")
263
- var
264
- HttpClient: HttpClient;
265
- RequestMessage: HttpRequestMessage;
266
- ResponseMessage: HttpResponseMessage;
267
- CustomerNo: Code[20];
268
- AuthToken: Text;
269
- ApiUrl: Text;
270
- begin
271
- CustomerNo := SalesHeader."Sell-to Customer No.";
272
-
273
- // PROBLEM: Authentication logic scattered everywhere
274
- AuthToken := GetAuthTokenSomehow(); // Duplicated in multiple places
275
-
276
- // PROBLEM: URL construction repeated in many methods
277
- ApiUrl := 'https://api.external.com/customers/' + CustomerNo;
278
-
279
- RequestMessage.Method := 'GET';
280
- RequestMessage.SetRequestUri(ApiUrl);
281
-
282
- // PROBLEM: No standardized error handling
283
- if not HttpClient.Send(RequestMessage, ResponseMessage) then
284
- Error('Something went wrong'); // Unhelpful error message
285
-
286
- // Business logic mixed with technical concerns
287
- ProcessCustomerData(ResponseMessage);
288
- end;
289
- }
290
-
291
- /*
292
- PROBLEMS WITH ANTI-PATTERN APPROACH:
293
-
294
- 1. Code Duplication:
295
- - Authentication logic repeated in every method
296
- - URL construction patterns scattered throughout
297
- - Response parsing duplicated everywhere
298
-
299
- 2. Maintenance Nightmare:
300
- - Changes to API authentication require updates in multiple places
301
- - URL changes affect many different files
302
- - Error handling improvements need to be replicated everywhere
303
-
304
- 3. Poor Separation of Concerns:
305
- - Business logic mixed with technical HTTP details
306
- - UI components directly calling APIs
307
- - Reports tightly coupled to external systems
308
-
309
- 4. Testing Difficulties:
310
- - Cannot easily mock external API calls
311
- - Business logic testing requires network setup
312
- - Integration tests become complex and brittle
313
-
314
- CORRECT APPROACH: Use the Facade Pattern shown above
315
- - Centralized API management
316
- - Consistent error handling
317
- - Separated concerns
318
- - Testable components
319
- */
320
- ```
@@ -1,102 +0,0 @@
1
- # Subscriber Codeunit Size Optimization - AL Code Samples
2
-
3
- ## Anti-Pattern: Monolithic Subscriber
4
-
5
- ```al
6
- codeunit 50500 "Monolithic Event Subscriber"
7
- {
8
- // ANTI-PATTERN: All subscribers in one large codeunit
9
-
10
- [EventSubscriber(ObjectType::Table, Database::Customer, 'OnBeforeInsertEvent', '', false, false)]
11
- local procedure OnBeforeCustomerInsert(var Rec: Record Customer; RunTrigger: Boolean)
12
- begin
13
- ValidateCustomerData(Rec);
14
- CheckCustomerCreditLimit(Rec);
15
- UpdateCustomerStatistics(Rec);
16
- LogCustomerCreation(Rec);
17
- // Many more operations creating a massive procedure
18
- end;
19
-
20
- [EventSubscriber(ObjectType::Table, Database::Item, 'OnBeforeInsertEvent', '', false, false)]
21
- local procedure OnBeforeItemInsert(var Rec: Record Item; RunTrigger: Boolean)
22
- begin
23
- ValidateItemData(Rec);
24
- SetupItemDefaults(Rec);
25
- CheckItemInventory(Rec);
26
- // Many more operations
27
- end;
28
- }
29
- ```
30
-
31
- ## Optimized Pattern: Focused Subscribers
32
-
33
- ```al
34
- codeunit 50501 "Customer Event Subscriber"
35
- {
36
- // Single responsibility: Handle only customer-related events
37
-
38
- [EventSubscriber(ObjectType::Table, Database::Customer, 'OnBeforeInsertEvent', '', false, false)]
39
- local procedure OnBeforeCustomerInsert(var Rec: Record Customer; RunTrigger: Boolean)
40
- begin
41
- if not RunTrigger then exit;
42
-
43
- CustomerValidationHandler.ValidateNewCustomer(Rec);
44
- CustomerSetupHandler.ApplyDefaultSettings(Rec);
45
- CustomerNotificationHandler.NotifyNewCustomer(Rec);
46
- end;
47
-
48
- var
49
- CustomerValidationHandler: Codeunit "Customer Validation Handler";
50
- CustomerSetupHandler: Codeunit "Customer Setup Handler";
51
- CustomerNotificationHandler: Codeunit "Customer Notification Handler";
52
- }
53
-
54
- codeunit 50502 "Item Event Subscriber"
55
- {
56
- // Single responsibility: Handle only item-related events
57
-
58
- [EventSubscriber(ObjectType::Table, Database::Item, 'OnBeforeInsertEvent', '', false, false)]
59
- local procedure OnBeforeItemInsert(var Rec: Record Item; RunTrigger: Boolean)
60
- begin
61
- if not RunTrigger then exit;
62
-
63
- ItemValidationHandler.ValidateNewItem(Rec);
64
- ItemSetupHandler.ApplyDefaultSettings(Rec);
65
- end;
66
-
67
- var
68
- ItemValidationHandler: Codeunit "Item Validation Handler";
69
- ItemSetupHandler: Codeunit "Item Setup Handler";
70
- }
71
- ```
72
-
73
- ## Specialized Handler Pattern
74
-
75
- ```al
76
- codeunit 50510 "Customer Validation Handler"
77
- {
78
- // Focused on customer validation logic only
79
-
80
- procedure ValidateNewCustomer(var Customer: Record Customer)
81
- begin
82
- ValidateRequiredFields(Customer);
83
- ValidateBusinessRules(Customer);
84
- ValidateDataIntegrity(Customer);
85
- end;
86
-
87
- local procedure ValidateRequiredFields(var Customer: Record Customer)
88
- begin
89
- if Customer.Name = '' then
90
- Error('Customer name is required');
91
-
92
- if Customer."Country/Region Code" = '' then
93
- Error('Country/Region Code is required');
94
- end;
95
-
96
- local procedure ValidateBusinessRules(var Customer: Record Customer)
97
- begin
98
- if (Customer."Credit Limit (LCY)" > 100000) and (Customer."Payment Terms Code" = '') then
99
- Error('Payment terms required for customers with credit limit over 100,000');
100
- end;
101
- }
102
- ```