@jwikman/bc-code-intelligence-mcp 1.5.7-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (753) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +165 -0
  3. package/dist/cache/cache-manager.d.ts +95 -0
  4. package/dist/cache/cache-manager.d.ts.map +1 -0
  5. package/dist/cache/cache-manager.js +328 -0
  6. package/dist/cache/cache-manager.js.map +1 -0
  7. package/dist/cli/bc-code-intel-cli.d.ts +9 -0
  8. package/dist/cli/bc-code-intel-cli.d.ts.map +1 -0
  9. package/dist/cli/bc-code-intel-cli.js +440 -0
  10. package/dist/cli/bc-code-intel-cli.js.map +1 -0
  11. package/dist/config/config-loader.d.ts +28 -0
  12. package/dist/config/config-loader.d.ts.map +1 -0
  13. package/dist/config/config-loader.js +497 -0
  14. package/dist/config/config-loader.js.map +1 -0
  15. package/dist/config/config-validator.d.ts +84 -0
  16. package/dist/config/config-validator.d.ts.map +1 -0
  17. package/dist/config/config-validator.js +608 -0
  18. package/dist/config/config-validator.js.map +1 -0
  19. package/dist/config/test-config-loader.d.ts +10 -0
  20. package/dist/config/test-config-loader.d.ts.map +1 -0
  21. package/dist/config/test-config-loader.js +135 -0
  22. package/dist/config/test-config-loader.js.map +1 -0
  23. package/dist/config/test-enhanced-layer-service.d.ts +7 -0
  24. package/dist/config/test-enhanced-layer-service.d.ts.map +1 -0
  25. package/dist/config/test-enhanced-layer-service.js +104 -0
  26. package/dist/config/test-enhanced-layer-service.js.map +1 -0
  27. package/dist/config/test-git-layer.d.ts +7 -0
  28. package/dist/config/test-git-layer.d.ts.map +1 -0
  29. package/dist/config/test-git-layer.js +68 -0
  30. package/dist/config/test-git-layer.js.map +1 -0
  31. package/dist/dev/hot-reload.d.ts +91 -0
  32. package/dist/dev/hot-reload.d.ts.map +1 -0
  33. package/dist/dev/hot-reload.js +358 -0
  34. package/dist/dev/hot-reload.js.map +1 -0
  35. package/dist/index.d.ts +82 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +1211 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/layers/base-layer.d.ts +133 -0
  40. package/dist/layers/base-layer.d.ts.map +1 -0
  41. package/dist/layers/base-layer.js +290 -0
  42. package/dist/layers/base-layer.js.map +1 -0
  43. package/dist/layers/embedded-layer.d.ts +130 -0
  44. package/dist/layers/embedded-layer.d.ts.map +1 -0
  45. package/dist/layers/embedded-layer.js +612 -0
  46. package/dist/layers/embedded-layer.js.map +1 -0
  47. package/dist/layers/git-layer.d.ts +77 -0
  48. package/dist/layers/git-layer.d.ts.map +1 -0
  49. package/dist/layers/git-layer.js +529 -0
  50. package/dist/layers/git-layer.js.map +1 -0
  51. package/dist/layers/index.d.ts +12 -0
  52. package/dist/layers/index.d.ts.map +1 -0
  53. package/dist/layers/index.js +11 -0
  54. package/dist/layers/index.js.map +1 -0
  55. package/dist/layers/layer-service.d.ts +135 -0
  56. package/dist/layers/layer-service.d.ts.map +1 -0
  57. package/dist/layers/layer-service.js +586 -0
  58. package/dist/layers/layer-service.js.map +1 -0
  59. package/dist/layers/project-layer.d.ts +58 -0
  60. package/dist/layers/project-layer.d.ts.map +1 -0
  61. package/dist/layers/project-layer.js +286 -0
  62. package/dist/layers/project-layer.js.map +1 -0
  63. package/dist/monitoring/production-monitor.d.ts +148 -0
  64. package/dist/monitoring/production-monitor.d.ts.map +1 -0
  65. package/dist/monitoring/production-monitor.js +463 -0
  66. package/dist/monitoring/production-monitor.js.map +1 -0
  67. package/dist/performance/performance-monitor.d.ts +99 -0
  68. package/dist/performance/performance-monitor.d.ts.map +1 -0
  69. package/dist/performance/performance-monitor.js +253 -0
  70. package/dist/performance/performance-monitor.js.map +1 -0
  71. package/dist/sdk/bc-code-intel-client.d.ts +175 -0
  72. package/dist/sdk/bc-code-intel-client.d.ts.map +1 -0
  73. package/dist/sdk/bc-code-intel-client.js +380 -0
  74. package/dist/sdk/bc-code-intel-client.js.map +1 -0
  75. package/dist/search/intelligent-search.d.ts +97 -0
  76. package/dist/search/intelligent-search.d.ts.map +1 -0
  77. package/dist/search/intelligent-search.js +358 -0
  78. package/dist/search/intelligent-search.js.map +1 -0
  79. package/dist/security/access-control.d.ts +110 -0
  80. package/dist/security/access-control.d.ts.map +1 -0
  81. package/dist/security/access-control.js +353 -0
  82. package/dist/security/access-control.js.map +1 -0
  83. package/dist/services/code-analysis-service.d.ts +72 -0
  84. package/dist/services/code-analysis-service.d.ts.map +1 -0
  85. package/dist/services/code-analysis-service.js +818 -0
  86. package/dist/services/code-analysis-service.js.map +1 -0
  87. package/dist/services/enhanced-prompt-service.d.ts +56 -0
  88. package/dist/services/enhanced-prompt-service.d.ts.map +1 -0
  89. package/dist/services/enhanced-prompt-service.js +165 -0
  90. package/dist/services/enhanced-prompt-service.js.map +1 -0
  91. package/dist/services/knowledge-service.d.ts +90 -0
  92. package/dist/services/knowledge-service.d.ts.map +1 -0
  93. package/dist/services/knowledge-service.js +342 -0
  94. package/dist/services/knowledge-service.js.map +1 -0
  95. package/dist/services/methodology-service.d.ts +91 -0
  96. package/dist/services/methodology-service.d.ts.map +1 -0
  97. package/dist/services/methodology-service.js +423 -0
  98. package/dist/services/methodology-service.js.map +1 -0
  99. package/dist/services/multi-content-layer-service.d.ts +198 -0
  100. package/dist/services/multi-content-layer-service.d.ts.map +1 -0
  101. package/dist/services/multi-content-layer-service.js +991 -0
  102. package/dist/services/multi-content-layer-service.js.map +1 -0
  103. package/dist/services/roleplay-engine.d.ts +161 -0
  104. package/dist/services/roleplay-engine.d.ts.map +1 -0
  105. package/dist/services/roleplay-engine.js +994 -0
  106. package/dist/services/roleplay-engine.js.map +1 -0
  107. package/dist/services/session-storage/file-storage.d.ts +30 -0
  108. package/dist/services/session-storage/file-storage.d.ts.map +1 -0
  109. package/dist/services/session-storage/file-storage.js +229 -0
  110. package/dist/services/session-storage/file-storage.js.map +1 -0
  111. package/dist/services/session-storage/in-memory-storage.d.ts +31 -0
  112. package/dist/services/session-storage/in-memory-storage.d.ts.map +1 -0
  113. package/dist/services/session-storage/in-memory-storage.js +142 -0
  114. package/dist/services/session-storage/in-memory-storage.js.map +1 -0
  115. package/dist/services/specialist-discovery.d.ts +98 -0
  116. package/dist/services/specialist-discovery.d.ts.map +1 -0
  117. package/dist/services/specialist-discovery.js +387 -0
  118. package/dist/services/specialist-discovery.js.map +1 -0
  119. package/dist/services/specialist-loader.d.ts +101 -0
  120. package/dist/services/specialist-loader.d.ts.map +1 -0
  121. package/dist/services/specialist-loader.js +256 -0
  122. package/dist/services/specialist-loader.js.map +1 -0
  123. package/dist/services/specialist-session-manager.d.ts +76 -0
  124. package/dist/services/specialist-session-manager.d.ts.map +1 -0
  125. package/dist/services/specialist-session-manager.js +255 -0
  126. package/dist/services/specialist-session-manager.js.map +1 -0
  127. package/dist/services/workflow-service.d.ts +146 -0
  128. package/dist/services/workflow-service.d.ts.map +1 -0
  129. package/dist/services/workflow-service.js +409 -0
  130. package/dist/services/workflow-service.js.map +1 -0
  131. package/dist/setup/post-install.d.ts +12 -0
  132. package/dist/setup/post-install.d.ts.map +1 -0
  133. package/dist/setup/post-install.js +81 -0
  134. package/dist/setup/post-install.js.map +1 -0
  135. package/dist/streamlined-handlers.d.ts +94 -0
  136. package/dist/streamlined-handlers.d.ts.map +1 -0
  137. package/dist/streamlined-handlers.js +665 -0
  138. package/dist/streamlined-handlers.js.map +1 -0
  139. package/dist/test-enhanced-mcp-server.d.ts +7 -0
  140. package/dist/test-enhanced-mcp-server.d.ts.map +1 -0
  141. package/dist/test-enhanced-mcp-server.js +177 -0
  142. package/dist/test-enhanced-mcp-server.js.map +1 -0
  143. package/dist/tools/config-diagnostic-tools.d.ts +234 -0
  144. package/dist/tools/config-diagnostic-tools.d.ts.map +1 -0
  145. package/dist/tools/config-diagnostic-tools.js +887 -0
  146. package/dist/tools/config-diagnostic-tools.js.map +1 -0
  147. package/dist/tools/core-tools.d.ts +26 -0
  148. package/dist/tools/core-tools.d.ts.map +1 -0
  149. package/dist/tools/core-tools.js +241 -0
  150. package/dist/tools/core-tools.js.map +1 -0
  151. package/dist/tools/handoff-tools.d.ts +37 -0
  152. package/dist/tools/handoff-tools.d.ts.map +1 -0
  153. package/dist/tools/handoff-tools.js +265 -0
  154. package/dist/tools/handoff-tools.js.map +1 -0
  155. package/dist/tools/index.d.ts +61 -0
  156. package/dist/tools/index.d.ts.map +1 -0
  157. package/dist/tools/index.js +75 -0
  158. package/dist/tools/index.js.map +1 -0
  159. package/dist/tools/onboarding-tools.d.ts +43 -0
  160. package/dist/tools/onboarding-tools.d.ts.map +1 -0
  161. package/dist/tools/onboarding-tools.js +353 -0
  162. package/dist/tools/onboarding-tools.js.map +1 -0
  163. package/dist/tools/specialist-discovery-tools.d.ts +27 -0
  164. package/dist/tools/specialist-discovery-tools.d.ts.map +1 -0
  165. package/dist/tools/specialist-discovery-tools.js +275 -0
  166. package/dist/tools/specialist-discovery-tools.js.map +1 -0
  167. package/dist/tools/specialist-tools.d.ts +43 -0
  168. package/dist/tools/specialist-tools.d.ts.map +1 -0
  169. package/dist/tools/specialist-tools.js +372 -0
  170. package/dist/tools/specialist-tools.js.map +1 -0
  171. package/dist/tools/workspace-tools.d.ts +96 -0
  172. package/dist/tools/workspace-tools.d.ts.map +1 -0
  173. package/dist/tools/workspace-tools.js +188 -0
  174. package/dist/tools/workspace-tools.js.map +1 -0
  175. package/dist/types/bc-knowledge.d.ts +303 -0
  176. package/dist/types/bc-knowledge.d.ts.map +1 -0
  177. package/dist/types/bc-knowledge.js +69 -0
  178. package/dist/types/bc-knowledge.js.map +1 -0
  179. package/dist/types/config-types.d.ts +186 -0
  180. package/dist/types/config-types.d.ts.map +1 -0
  181. package/dist/types/config-types.js +109 -0
  182. package/dist/types/config-types.js.map +1 -0
  183. package/dist/types/enhanced-layer-types.d.ts +193 -0
  184. package/dist/types/enhanced-layer-types.d.ts.map +1 -0
  185. package/dist/types/enhanced-layer-types.js +9 -0
  186. package/dist/types/enhanced-layer-types.js.map +1 -0
  187. package/dist/types/index.d.ts +5 -0
  188. package/dist/types/index.d.ts.map +1 -0
  189. package/dist/types/index.js +7 -0
  190. package/dist/types/index.js.map +1 -0
  191. package/dist/types/layer-types.d.ts +173 -0
  192. package/dist/types/layer-types.d.ts.map +1 -0
  193. package/dist/types/layer-types.js +27 -0
  194. package/dist/types/layer-types.js.map +1 -0
  195. package/dist/types/roleplay-types.d.ts +156 -0
  196. package/dist/types/roleplay-types.d.ts.map +1 -0
  197. package/dist/types/roleplay-types.js +8 -0
  198. package/dist/types/roleplay-types.js.map +1 -0
  199. package/dist/types/session-types.d.ts +127 -0
  200. package/dist/types/session-types.d.ts.map +1 -0
  201. package/dist/types/session-types.js +8 -0
  202. package/dist/types/session-types.js.map +1 -0
  203. package/dist/utils/path-utils.d.ts +5 -0
  204. package/dist/utils/path-utils.d.ts.map +1 -0
  205. package/dist/utils/path-utils.js +14 -0
  206. package/dist/utils/path-utils.js.map +1 -0
  207. package/dist/workflows/domain-workflows.d.ts +8 -0
  208. package/dist/workflows/domain-workflows.d.ts.map +1 -0
  209. package/dist/workflows/domain-workflows.js +360 -0
  210. package/dist/workflows/domain-workflows.js.map +1 -0
  211. package/embedded-knowledge/.github/ISSUE_TEMPLATE/bug-report.md +24 -0
  212. package/embedded-knowledge/.github/ISSUE_TEMPLATE/content-improvement.md +24 -0
  213. package/embedded-knowledge/.github/ISSUE_TEMPLATE/knowledge-request.md +30 -0
  214. package/embedded-knowledge/AGENTS.md +178 -0
  215. package/embedded-knowledge/CONTRIBUTING.md +58 -0
  216. package/embedded-knowledge/LICENSE +21 -0
  217. package/embedded-knowledge/README.md +32 -0
  218. package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +90 -0
  219. package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +113 -0
  220. package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +101 -0
  221. package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +87 -0
  222. package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +155 -0
  223. package/embedded-knowledge/domains/alex-architect/delegating-to-github-copilot-agents.md +371 -0
  224. package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +138 -0
  225. package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +79 -0
  226. package/embedded-knowledge/domains/alex-architect/object-id-ninja-integration.md +281 -0
  227. package/embedded-knowledge/domains/alex-architect/recommend-object-id-ninja.md +248 -0
  228. package/embedded-knowledge/domains/alex-architect/samples/api-delegate-operation.md +280 -0
  229. package/embedded-knowledge/domains/alex-architect/samples/api-fieldset-registration.md +200 -0
  230. package/embedded-knowledge/domains/alex-architect/samples/api-interface-design.md +565 -0
  231. package/embedded-knowledge/domains/alex-architect/samples/api-page-implementation.md +665 -0
  232. package/embedded-knowledge/domains/alex-architect/samples/complex-facade-patterns.md +325 -0
  233. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern-al.md +696 -0
  234. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern.md +320 -0
  235. package/embedded-knowledge/domains/alex-architect/samples/subscriber-organization.md +102 -0
  236. package/embedded-knowledge/domains/alex-architect/samples/systemid-integration.md +433 -0
  237. package/embedded-knowledge/domains/alex-architect/samples/testability-design-patterns.md +223 -0
  238. package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +66 -0
  239. package/embedded-knowledge/domains/alex-architect/systemid-integration.md +115 -0
  240. package/embedded-knowledge/domains/alex-architect/testability-design-patterns.md +77 -0
  241. package/embedded-knowledge/domains/casey-copilot/long-running-session-instructions.md +263 -0
  242. package/embedded-knowledge/domains/casey-copilot/samples/long-running-session-instructions.md +323 -0
  243. package/embedded-knowledge/domains/chris-config/configuration-file-discovery.md +846 -0
  244. package/embedded-knowledge/domains/chris-config/configuration-file-formats.md +595 -0
  245. package/embedded-knowledge/domains/chris-config/content-types-structure.md +421 -0
  246. package/embedded-knowledge/domains/chris-config/knowledge-content-creation.md +437 -0
  247. package/embedded-knowledge/domains/chris-config/layer-system-fundamentals.md +257 -0
  248. package/embedded-knowledge/domains/chris-config/multi-team-layer-configuration.md +302 -0
  249. package/embedded-knowledge/domains/chris-config/workspace-detection-solutions.md +336 -0
  250. package/embedded-knowledge/domains/dean-debug/bc-telemetry-buddy-integration.md +453 -0
  251. package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +360 -0
  252. package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +86 -0
  253. package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +96 -0
  254. package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +70 -0
  255. package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +84 -0
  256. package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +93 -0
  257. package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +73 -0
  258. package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +78 -0
  259. package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +79 -0
  260. package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +87 -0
  261. package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +209 -0
  262. package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +246 -0
  263. package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +107 -0
  264. package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +105 -0
  265. package/embedded-knowledge/domains/dean-debug/recommend-bc-telemetry-buddy.md +160 -0
  266. package/embedded-knowledge/domains/dean-debug/samples/bc24-no-series-conversion.md +186 -0
  267. package/embedded-knowledge/domains/dean-debug/samples/case-performance-optimization.md +60 -0
  268. package/embedded-knowledge/domains/dean-debug/samples/compound-statements-debugging.md +139 -0
  269. package/embedded-knowledge/domains/dean-debug/samples/custom-dimensions.md +190 -0
  270. package/embedded-knowledge/domains/dean-debug/samples/custom-telemetry.md +516 -0
  271. package/embedded-knowledge/domains/dean-debug/samples/deleteall-performance.md +298 -0
  272. package/embedded-knowledge/domains/dean-debug/samples/error-correlation.md +324 -0
  273. package/embedded-knowledge/domains/dean-debug/samples/extension-isolation.md +344 -0
  274. package/embedded-knowledge/domains/dean-debug/samples/logmessage-methods.md +137 -0
  275. package/embedded-knowledge/domains/dean-debug/samples/maintainsiftindex-examples.md +340 -0
  276. package/embedded-knowledge/domains/dean-debug/samples/no-series-implementation.md +810 -0
  277. package/embedded-knowledge/domains/dean-debug/samples/no-series-module-bc24.md +86 -0
  278. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation-module-bc24.md +110 -0
  279. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation.md +758 -0
  280. package/embedded-knowledge/domains/dean-debug/samples/odata-query-optimization.md +665 -0
  281. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-case.md +316 -0
  282. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-filters.md +223 -0
  283. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-filter-exclusion.md +149 -0
  284. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-optimization.md +412 -0
  285. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-performance.md +211 -0
  286. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-primary-key.md +155 -0
  287. package/embedded-knowledge/domains/dean-debug/samples/sift-technology-fundamentals.md +475 -0
  288. package/embedded-knowledge/domains/dean-debug/samples/singleinstance-subscribers.md +238 -0
  289. package/embedded-knowledge/domains/dean-debug/samples/table-event-batching.md +97 -0
  290. package/embedded-knowledge/domains/dean-debug/samples/table-key-requirements.md +666 -0
  291. package/embedded-knowledge/domains/dean-debug/samples/telemetry-performance.md +319 -0
  292. package/embedded-knowledge/domains/dean-debug/samples/verbosity-strategy.md +236 -0
  293. package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +59 -0
  294. package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +67 -0
  295. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +70 -0
  296. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +90 -0
  297. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +87 -0
  298. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +70 -0
  299. package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +74 -0
  300. package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +81 -0
  301. package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +56 -0
  302. package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +66 -0
  303. package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +79 -0
  304. package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +78 -0
  305. package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +83 -0
  306. package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +76 -0
  307. package/embedded-knowledge/domains/dean-debug/testfield-performance.md +104 -0
  308. package/embedded-knowledge/domains/eva-errors/codeunit-run-pattern.md +159 -0
  309. package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +145 -0
  310. package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +104 -0
  311. package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +114 -0
  312. package/embedded-knowledge/domains/eva-errors/samples/codeunit-run-pattern.md +239 -0
  313. package/embedded-knowledge/domains/eva-errors/samples/fielderror-default-messages.md +356 -0
  314. package/embedded-knowledge/domains/eva-errors/samples/fielderror-syntax.md +256 -0
  315. package/embedded-knowledge/domains/eva-errors/samples/table-safety-validation-patterns.md +101 -0
  316. package/embedded-knowledge/domains/eva-errors/samples/testfield-error-handling.md +108 -0
  317. package/embedded-knowledge/domains/eva-errors/samples/try-function-usage.md +195 -0
  318. package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +80 -0
  319. package/embedded-knowledge/domains/eva-errors/try-function-usage.md +129 -0
  320. package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +98 -0
  321. package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +123 -0
  322. package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +96 -0
  323. package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +115 -0
  324. package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +115 -0
  325. package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +114 -0
  326. package/embedded-knowledge/domains/jordan-bridge/samples/al-event-subscriber-architecture.md +395 -0
  327. package/embedded-knowledge/domains/jordan-bridge/samples/api-error-responses.md +479 -0
  328. package/embedded-knowledge/domains/jordan-bridge/samples/api-field-control.md +548 -0
  329. package/embedded-knowledge/domains/jordan-bridge/samples/api-url-naming.md +287 -0
  330. package/embedded-knowledge/domains/jordan-bridge/samples/business-process-templates.md +434 -0
  331. package/embedded-knowledge/domains/jordan-bridge/samples/etag-implementation.md +508 -0
  332. package/embedded-knowledge/domains/jordan-bridge/samples/task-scheduler-pattern.md +615 -0
  333. package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +144 -0
  334. package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +96 -0
  335. package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +124 -0
  336. package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +84 -0
  337. package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +75 -0
  338. package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +96 -0
  339. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-multiple-conditions.md +385 -0
  340. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-syntax-structure.md +72 -0
  341. package/embedded-knowledge/domains/maya-mentor/samples/fielderror-syntax-usage.md +48 -0
  342. package/embedded-knowledge/domains/maya-mentor/samples/testfield-basic-syntax.md +49 -0
  343. package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +67 -0
  344. package/embedded-knowledge/domains/morgan-market/partner-readiness-analysis.md +201 -0
  345. package/embedded-knowledge/domains/morgan-market/samples/partner-readiness-checklist.md +288 -0
  346. package/embedded-knowledge/domains/parker-pragmatic/README.md +39 -0
  347. package/embedded-knowledge/domains/parker-pragmatic/proposal-workflows/creating-effective-proposals.md +583 -0
  348. package/embedded-knowledge/domains/parker-pragmatic/trust-building/working-with-ai-skeptics.md +587 -0
  349. package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +119 -0
  350. package/embedded-knowledge/domains/quinn-tester/isolation-testing-patterns.md +82 -0
  351. package/embedded-knowledge/domains/quinn-tester/rule-execution.md +123 -0
  352. package/embedded-knowledge/domains/quinn-tester/samples/case-error-handling.md +64 -0
  353. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-message-construction.md +60 -0
  354. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-validation-patterns.md +83 -0
  355. package/embedded-knowledge/domains/quinn-tester/samples/isolation-testing-patterns.md +424 -0
  356. package/embedded-knowledge/domains/quinn-tester/samples/rule-execution.md +716 -0
  357. package/embedded-knowledge/domains/quinn-tester/samples/table-safety-validation-patterns.md +101 -0
  358. package/embedded-knowledge/domains/quinn-tester/samples/temporary-table-operation-validation.md +91 -0
  359. package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +79 -0
  360. package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +79 -0
  361. package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +89 -0
  362. package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +76 -0
  363. package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +76 -0
  364. package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +76 -0
  365. package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +81 -0
  366. package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +76 -0
  367. package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +75 -0
  368. package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +76 -0
  369. package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +76 -0
  370. package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +76 -0
  371. package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +96 -0
  372. package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +76 -0
  373. package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +86 -0
  374. package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +90 -0
  375. package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +82 -0
  376. package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +78 -0
  377. package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +76 -0
  378. package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +78 -0
  379. package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +100 -0
  380. package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +115 -0
  381. package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +124 -0
  382. package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +110 -0
  383. package/embedded-knowledge/domains/roger-reviewer/samples/al-begin-end-blocks.md +438 -0
  384. package/embedded-knowledge/domains/roger-reviewer/samples/al-binary-operator-spacing.md +255 -0
  385. package/embedded-knowledge/domains/roger-reviewer/samples/al-comment-spacing-standards.md +209 -0
  386. package/embedded-knowledge/domains/roger-reviewer/samples/al-keyword-indentation-rules.md +218 -0
  387. package/embedded-knowledge/domains/roger-reviewer/samples/al-line-start-keyword-positioning.md +218 -0
  388. package/embedded-knowledge/domains/roger-reviewer/samples/al-separate-if-else-formatting.md +280 -0
  389. package/embedded-knowledge/domains/roger-reviewer/samples/al-statement-per-line-rule.md +188 -0
  390. package/embedded-knowledge/domains/roger-reviewer/samples/al-unnecessary-else-elimination.md +245 -0
  391. package/embedded-knowledge/domains/roger-reviewer/samples/al-variable-declaration-order.md +244 -0
  392. package/embedded-knowledge/domains/roger-reviewer/samples/begin-end-positioning.md +278 -0
  393. package/embedded-knowledge/domains/roger-reviewer/samples/boolean-simplification-examples.md +484 -0
  394. package/embedded-knowledge/domains/roger-reviewer/samples/case-error-handling.md +64 -0
  395. package/embedded-knowledge/domains/roger-reviewer/samples/compound-statement-readability.md +107 -0
  396. package/embedded-knowledge/domains/roger-reviewer/samples/lonely-repeat-examples.md +280 -0
  397. package/embedded-knowledge/domains/roger-reviewer/samples/testability-code-smells.md +256 -0
  398. package/embedded-knowledge/domains/roger-reviewer/testability-code-smells.md +67 -0
  399. package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +75 -0
  400. package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +67 -0
  401. package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +76 -0
  402. package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +98 -0
  403. package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +128 -0
  404. package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +75 -0
  405. package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +95 -0
  406. package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +141 -0
  407. package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +91 -0
  408. package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +118 -0
  409. package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +111 -0
  410. package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +113 -0
  411. package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +127 -0
  412. package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +141 -0
  413. package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +66 -0
  414. package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +96 -0
  415. package/embedded-knowledge/domains/sam-coder/samples/al-blank-line-organization.md +161 -0
  416. package/embedded-knowledge/domains/sam-coder/samples/al-case-action-formatting.md +177 -0
  417. package/embedded-knowledge/domains/sam-coder/samples/al-lonely-repeat-pattern.md +239 -0
  418. package/embedded-knowledge/domains/sam-coder/samples/al-named-parameter-pattern.md +346 -0
  419. package/embedded-knowledge/domains/sam-coder/samples/al-record-find-early-exit.md +298 -0
  420. package/embedded-knowledge/domains/sam-coder/samples/command-queue-pattern.md +677 -0
  421. package/embedded-knowledge/domains/sam-coder/samples/deleteall-alternative-implementation.md +117 -0
  422. package/embedded-knowledge/domains/sam-coder/samples/deleteall-triggers.md +75 -0
  423. package/embedded-knowledge/domains/sam-coder/samples/deleteall-usage.md +169 -0
  424. package/embedded-knowledge/domains/sam-coder/samples/event-bridge-pattern.md +399 -0
  425. package/embedded-knowledge/domains/sam-coder/samples/event-payload-design.md +356 -0
  426. package/embedded-knowledge/domains/sam-coder/samples/generic-method-patterns.md +889 -0
  427. package/embedded-knowledge/domains/sam-coder/samples/manual-binding.md +84 -0
  428. package/embedded-knowledge/domains/sam-coder/samples/nested-compound-best-practices.md +127 -0
  429. package/embedded-knowledge/domains/sam-coder/samples/single-to-compound-conversion.md +89 -0
  430. package/embedded-knowledge/domains/sam-coder/samples/template-method-pattern.md +516 -0
  431. package/embedded-knowledge/domains/sam-coder/samples/testfield-patterns.md +61 -0
  432. package/embedded-knowledge/domains/sam-coder/samples/type-safe-operations.md +427 -0
  433. package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +122 -0
  434. package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +96 -0
  435. package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +101 -0
  436. package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +149 -0
  437. package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +107 -0
  438. package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +95 -0
  439. package/embedded-knowledge/domains/seth-security/api-permission-model.md +115 -0
  440. package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +78 -0
  441. package/embedded-knowledge/domains/seth-security/samples/al-temporary-table-safety.md +373 -0
  442. package/embedded-knowledge/domains/seth-security/samples/api-permission-model.md +308 -0
  443. package/embedded-knowledge/domains/shared/al-file-naming-conventions.md +146 -0
  444. package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +79 -0
  445. package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +78 -0
  446. package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +81 -0
  447. package/embedded-knowledge/indexes/bc-version-matrix.json +188 -0
  448. package/embedded-knowledge/indexes/domain-catalog.json +106 -0
  449. package/embedded-knowledge/indexes/tags/abbreviations.json +1 -0
  450. package/embedded-knowledge/indexes/tags/abstraction.json +1 -0
  451. package/embedded-knowledge/indexes/tags/access-control.json +1 -0
  452. package/embedded-knowledge/indexes/tags/accessibility.json +1 -0
  453. package/embedded-knowledge/indexes/tags/actions.json +1 -0
  454. package/embedded-knowledge/indexes/tags/advanced-patterns.json +1 -0
  455. package/embedded-knowledge/indexes/tags/advanced.json +1 -0
  456. package/embedded-knowledge/indexes/tags/al-extension.json +1 -0
  457. package/embedded-knowledge/indexes/tags/al-generics.json +1 -0
  458. package/embedded-knowledge/indexes/tags/al-objects.json +1 -0
  459. package/embedded-knowledge/indexes/tags/al-syntax.json +1 -0
  460. package/embedded-knowledge/indexes/tags/algorithm-structure.json +1 -0
  461. package/embedded-knowledge/indexes/tags/alternatives.json +1 -0
  462. package/embedded-knowledge/indexes/tags/analytics.json +1 -0
  463. package/embedded-knowledge/indexes/tags/api-delegates.json +1 -0
  464. package/embedded-knowledge/indexes/tags/api-design.json +1 -0
  465. package/embedded-knowledge/indexes/tags/api-documentation.json +1 -0
  466. package/embedded-knowledge/indexes/tags/api-endpoints.json +1 -0
  467. package/embedded-knowledge/indexes/tags/api-extensibility.json +1 -0
  468. package/embedded-knowledge/indexes/tags/api-fieldsets.json +1 -0
  469. package/embedded-knowledge/indexes/tags/api-integration.json +1 -0
  470. package/embedded-knowledge/indexes/tags/api-interfaces.json +1 -0
  471. package/embedded-knowledge/indexes/tags/api-optimization.json +1 -0
  472. package/embedded-knowledge/indexes/tags/api-pages.json +1 -0
  473. package/embedded-knowledge/indexes/tags/api-patterns.json +1 -0
  474. package/embedded-knowledge/indexes/tags/api-permissions.json +1 -0
  475. package/embedded-knowledge/indexes/tags/api-responses.json +1 -0
  476. package/embedded-knowledge/indexes/tags/api-simplification.json +1 -0
  477. package/embedded-knowledge/indexes/tags/api.json +1 -0
  478. package/embedded-knowledge/indexes/tags/architecture.json +1 -0
  479. package/embedded-knowledge/indexes/tags/async-patterns.json +1 -0
  480. package/embedded-knowledge/indexes/tags/async-processing.json +1 -0
  481. package/embedded-knowledge/indexes/tags/automatic-registration.json +1 -0
  482. package/embedded-knowledge/indexes/tags/batch-operations.json +1 -0
  483. package/embedded-knowledge/indexes/tags/bc24-migration.json +1 -0
  484. package/embedded-knowledge/indexes/tags/begin-blocks.json +1 -0
  485. package/embedded-knowledge/indexes/tags/begin-end.json +1 -0
  486. package/embedded-knowledge/indexes/tags/behavioral-patterns.json +1 -0
  487. package/embedded-knowledge/indexes/tags/best-practices.json +1 -0
  488. package/embedded-knowledge/indexes/tags/binding.json +1 -0
  489. package/embedded-knowledge/indexes/tags/block-structure.json +1 -0
  490. package/embedded-knowledge/indexes/tags/blocks.json +1 -0
  491. package/embedded-knowledge/indexes/tags/boolean-expressions.json +1 -0
  492. package/embedded-knowledge/indexes/tags/branching.json +1 -0
  493. package/embedded-knowledge/indexes/tags/breaking-changes.json +1 -0
  494. package/embedded-knowledge/indexes/tags/breakpoints.json +1 -0
  495. package/embedded-knowledge/indexes/tags/business-foundation.json +1 -0
  496. package/embedded-knowledge/indexes/tags/business-infrastructure.json +1 -0
  497. package/embedded-knowledge/indexes/tags/business-process.json +1 -0
  498. package/embedded-knowledge/indexes/tags/business-rules.json +1 -0
  499. package/embedded-knowledge/indexes/tags/caching.json +1 -0
  500. package/embedded-knowledge/indexes/tags/case-statements.json +1 -0
  501. package/embedded-knowledge/indexes/tags/case.json +1 -0
  502. package/embedded-knowledge/indexes/tags/code-analysis.json +1 -0
  503. package/embedded-knowledge/indexes/tags/code-clarity.json +1 -0
  504. package/embedded-knowledge/indexes/tags/code-comprehension.json +1 -0
  505. package/embedded-knowledge/indexes/tags/code-conversion.json +1 -0
  506. package/embedded-knowledge/indexes/tags/code-formatting.json +1 -0
  507. package/embedded-knowledge/indexes/tags/code-organization.json +1 -0
  508. package/embedded-knowledge/indexes/tags/code-patterns.json +1 -0
  509. package/embedded-knowledge/indexes/tags/code-quality.json +1 -0
  510. package/embedded-knowledge/indexes/tags/code-reuse.json +1 -0
  511. package/embedded-knowledge/indexes/tags/code-simplification.json +1 -0
  512. package/embedded-knowledge/indexes/tags/code-standards.json +1 -0
  513. package/embedded-knowledge/indexes/tags/code-structure.json +1 -0
  514. package/embedded-knowledge/indexes/tags/code-style.json +1 -0
  515. package/embedded-knowledge/indexes/tags/codeunit-design.json +1 -0
  516. package/embedded-knowledge/indexes/tags/command-queue.json +1 -0
  517. package/embedded-knowledge/indexes/tags/comments.json +1 -0
  518. package/embedded-knowledge/indexes/tags/compile-time-validation.json +1 -0
  519. package/embedded-knowledge/indexes/tags/complex-facade.json +1 -0
  520. package/embedded-knowledge/indexes/tags/complexity-hiding.json +1 -0
  521. package/embedded-knowledge/indexes/tags/complexity-management.json +1 -0
  522. package/embedded-knowledge/indexes/tags/compound-statements.json +1 -0
  523. package/embedded-knowledge/indexes/tags/concurrency.json +1 -0
  524. package/embedded-knowledge/indexes/tags/conditional-logic.json +1 -0
  525. package/embedded-knowledge/indexes/tags/conditional.json +1 -0
  526. package/embedded-knowledge/indexes/tags/conflict-resolution.json +1 -0
  527. package/embedded-knowledge/indexes/tags/consistency.json +1 -0
  528. package/embedded-knowledge/indexes/tags/contract-design.json +1 -0
  529. package/embedded-knowledge/indexes/tags/control-flow.json +1 -0
  530. package/embedded-knowledge/indexes/tags/conversion-guide.json +1 -0
  531. package/embedded-knowledge/indexes/tags/correlation.json +1 -0
  532. package/embedded-knowledge/indexes/tags/custom-messages.json +1 -0
  533. package/embedded-knowledge/indexes/tags/data-access.json +1 -0
  534. package/embedded-knowledge/indexes/tags/data-exposure.json +1 -0
  535. package/embedded-knowledge/indexes/tags/data-integrity.json +1 -0
  536. package/embedded-knowledge/indexes/tags/data-loading.json +1 -0
  537. package/embedded-knowledge/indexes/tags/data-manipulation.json +1 -0
  538. package/embedded-knowledge/indexes/tags/data-modeling.json +1 -0
  539. package/embedded-knowledge/indexes/tags/data-patterns.json +1 -0
  540. package/embedded-knowledge/indexes/tags/data-protection.json +1 -0
  541. package/embedded-knowledge/indexes/tags/data-validation.json +1 -0
  542. package/embedded-knowledge/indexes/tags/database.json +1 -0
  543. package/embedded-knowledge/indexes/tags/debugging.json +1 -0
  544. package/embedded-knowledge/indexes/tags/decision-making.json +1 -0
  545. package/embedded-knowledge/indexes/tags/declaration.json +1 -0
  546. package/embedded-knowledge/indexes/tags/default-messages.json +1 -0
  547. package/embedded-knowledge/indexes/tags/defensive-programming.json +1 -0
  548. package/embedded-knowledge/indexes/tags/deleteall.json +1 -0
  549. package/embedded-knowledge/indexes/tags/dependencies.json +1 -0
  550. package/embedded-knowledge/indexes/tags/deployment.json +1 -0
  551. package/embedded-knowledge/indexes/tags/developer-productivity.json +1 -0
  552. package/embedded-knowledge/indexes/tags/development-workflow.json +1 -0
  553. package/embedded-knowledge/indexes/tags/diagnostics.json +1 -0
  554. package/embedded-knowledge/indexes/tags/dimensions.json +1 -0
  555. package/embedded-knowledge/indexes/tags/documentation.json +1 -0
  556. package/embedded-knowledge/indexes/tags/early-exit.json +1 -0
  557. package/embedded-knowledge/indexes/tags/else-clauses.json +1 -0
  558. package/embedded-knowledge/indexes/tags/end-statements.json +1 -0
  559. package/embedded-knowledge/indexes/tags/enterprise-patterns.json +1 -0
  560. package/embedded-knowledge/indexes/tags/entity-relationships.json +1 -0
  561. package/embedded-knowledge/indexes/tags/error-handling.json +1 -0
  562. package/embedded-knowledge/indexes/tags/error-messages.json +1 -0
  563. package/embedded-knowledge/indexes/tags/error-prevention.json +1 -0
  564. package/embedded-knowledge/indexes/tags/error-text.json +1 -0
  565. package/embedded-knowledge/indexes/tags/etag.json +1 -0
  566. package/embedded-knowledge/indexes/tags/event-bridge.json +1 -0
  567. package/embedded-knowledge/indexes/tags/event-payload.json +1 -0
  568. package/embedded-knowledge/indexes/tags/event-routing.json +1 -0
  569. package/embedded-knowledge/indexes/tags/events.json +1 -0
  570. package/embedded-knowledge/indexes/tags/execution-flow.json +1 -0
  571. package/embedded-knowledge/indexes/tags/expressions.json +1 -0
  572. package/embedded-knowledge/indexes/tags/extensibility.json +1 -0
  573. package/embedded-knowledge/indexes/tags/extensions.json +1 -0
  574. package/embedded-knowledge/indexes/tags/facade-composition.json +1 -0
  575. package/embedded-knowledge/indexes/tags/facade-pattern.json +1 -0
  576. package/embedded-knowledge/indexes/tags/field-control.json +1 -0
  577. package/embedded-knowledge/indexes/tags/field-exclusion.json +1 -0
  578. package/embedded-knowledge/indexes/tags/field-registration.json +1 -0
  579. package/embedded-knowledge/indexes/tags/field-state.json +1 -0
  580. package/embedded-knowledge/indexes/tags/field-validation.json +1 -0
  581. package/embedded-knowledge/indexes/tags/fielderror.json +1 -0
  582. package/embedded-knowledge/indexes/tags/fields.json +1 -0
  583. package/embedded-knowledge/indexes/tags/filtering.json +1 -0
  584. package/embedded-knowledge/indexes/tags/filters.json +1 -0
  585. package/embedded-knowledge/indexes/tags/formatting.json +1 -0
  586. package/embedded-knowledge/indexes/tags/generic-methods.json +1 -0
  587. package/embedded-knowledge/indexes/tags/http-status.json +1 -0
  588. package/embedded-knowledge/indexes/tags/if-statements.json +1 -0
  589. package/embedded-knowledge/indexes/tags/implementation.json +1 -0
  590. package/embedded-knowledge/indexes/tags/indentation.json +1 -0
  591. package/embedded-knowledge/indexes/tags/index-summary.json +277 -0
  592. package/embedded-knowledge/indexes/tags/indexing.json +1 -0
  593. package/embedded-knowledge/indexes/tags/inheritance.json +1 -0
  594. package/embedded-knowledge/indexes/tags/integration.json +1 -0
  595. package/embedded-knowledge/indexes/tags/integrity-checking.json +1 -0
  596. package/embedded-knowledge/indexes/tags/intellisense.json +1 -0
  597. package/embedded-knowledge/indexes/tags/interface-design.json +1 -0
  598. package/embedded-knowledge/indexes/tags/interface-segregation.json +1 -0
  599. package/embedded-knowledge/indexes/tags/isolation.json +1 -0
  600. package/embedded-knowledge/indexes/tags/job-processing.json +1 -0
  601. package/embedded-knowledge/indexes/tags/keyboard-navigation.json +1 -0
  602. package/embedded-knowledge/indexes/tags/keywords.json +1 -0
  603. package/embedded-knowledge/indexes/tags/legacy-modernization.json +1 -0
  604. package/embedded-knowledge/indexes/tags/line-breaks.json +1 -0
  605. package/embedded-knowledge/indexes/tags/line-organization.json +1 -0
  606. package/embedded-knowledge/indexes/tags/line-positioning.json +1 -0
  607. package/embedded-knowledge/indexes/tags/localization.json +1 -0
  608. package/embedded-knowledge/indexes/tags/logging.json +1 -0
  609. package/embedded-knowledge/indexes/tags/loose-coupling.json +1 -0
  610. package/embedded-knowledge/indexes/tags/maintainability.json +1 -0
  611. package/embedded-knowledge/indexes/tags/memory-management.json +1 -0
  612. package/embedded-knowledge/indexes/tags/memory-optimization.json +1 -0
  613. package/embedded-knowledge/indexes/tags/memory.json +1 -0
  614. package/embedded-knowledge/indexes/tags/message-design.json +1 -0
  615. package/embedded-knowledge/indexes/tags/message-formatting.json +1 -0
  616. package/embedded-knowledge/indexes/tags/message-patterns.json +1 -0
  617. package/embedded-knowledge/indexes/tags/metadata-driven.json +1 -0
  618. package/embedded-knowledge/indexes/tags/method-comparison.json +1 -0
  619. package/embedded-knowledge/indexes/tags/module-architecture.json +1 -0
  620. package/embedded-knowledge/indexes/tags/module-validation.json +1 -0
  621. package/embedded-knowledge/indexes/tags/monitoring.json +1 -0
  622. package/embedded-knowledge/indexes/tags/multi-layer-facade.json +1 -0
  623. package/embedded-knowledge/indexes/tags/multi-tenancy.json +1 -0
  624. package/embedded-knowledge/indexes/tags/multiple-values.json +1 -0
  625. package/embedded-knowledge/indexes/tags/naming-conventions.json +1 -0
  626. package/embedded-knowledge/indexes/tags/naming.json +1 -0
  627. package/embedded-knowledge/indexes/tags/navigation.json +1 -0
  628. package/embedded-knowledge/indexes/tags/nested-statements.json +1 -0
  629. package/embedded-knowledge/indexes/tags/no-series-conversion.json +1 -0
  630. package/embedded-knowledge/indexes/tags/no-series-validation.json +1 -0
  631. package/embedded-knowledge/indexes/tags/no-series.json +1 -0
  632. package/embedded-knowledge/indexes/tags/number-generation.json +1 -0
  633. package/embedded-knowledge/indexes/tags/object-documentation.json +1 -0
  634. package/embedded-knowledge/indexes/tags/odata.json +1 -0
  635. package/embedded-knowledge/indexes/tags/ondelete.json +1 -0
  636. package/embedded-knowledge/indexes/tags/onvalidate.json +1 -0
  637. package/embedded-knowledge/indexes/tags/operation-delegation.json +1 -0
  638. package/embedded-knowledge/indexes/tags/operation-safety.json +1 -0
  639. package/embedded-knowledge/indexes/tags/operators.json +1 -0
  640. package/embedded-knowledge/indexes/tags/optimization.json +1 -0
  641. package/embedded-knowledge/indexes/tags/order.json +1 -0
  642. package/embedded-knowledge/indexes/tags/organization.json +1 -0
  643. package/embedded-knowledge/indexes/tags/pages.json +1 -0
  644. package/embedded-knowledge/indexes/tags/parameters.json +1 -0
  645. package/embedded-knowledge/indexes/tags/patterns.json +1 -0
  646. package/embedded-knowledge/indexes/tags/performance-optimization.json +1 -0
  647. package/embedded-knowledge/indexes/tags/performance.json +1 -0
  648. package/embedded-knowledge/indexes/tags/placement.json +1 -0
  649. package/embedded-knowledge/indexes/tags/posting-codeunits.json +1 -0
  650. package/embedded-knowledge/indexes/tags/posting.json +1 -0
  651. package/embedded-knowledge/indexes/tags/preconditions.json +1 -0
  652. package/embedded-knowledge/indexes/tags/primary-key.json +1 -0
  653. package/embedded-knowledge/indexes/tags/privacy.json +1 -0
  654. package/embedded-knowledge/indexes/tags/process-automation.json +1 -0
  655. package/embedded-knowledge/indexes/tags/production.json +1 -0
  656. package/embedded-knowledge/indexes/tags/productivity.json +1 -0
  657. package/embedded-knowledge/indexes/tags/query-performance.json +1 -0
  658. package/embedded-knowledge/indexes/tags/queue-management.json +1 -0
  659. package/embedded-knowledge/indexes/tags/ranges.json +1 -0
  660. package/embedded-knowledge/indexes/tags/readability.json +1 -0
  661. package/embedded-knowledge/indexes/tags/record-access.json +1 -0
  662. package/embedded-knowledge/indexes/tags/record-methods.json +1 -0
  663. package/embedded-knowledge/indexes/tags/refactoring.json +1 -0
  664. package/embedded-knowledge/indexes/tags/reference.json +1 -0
  665. package/embedded-knowledge/indexes/tags/repeat-loops.json +1 -0
  666. package/embedded-knowledge/indexes/tags/repeat-statement.json +1 -0
  667. package/embedded-knowledge/indexes/tags/runtime-errors.json +1 -0
  668. package/embedded-knowledge/indexes/tags/runtime.json +1 -0
  669. package/embedded-knowledge/indexes/tags/safeguards.json +1 -0
  670. package/embedded-knowledge/indexes/tags/security.json +1 -0
  671. package/embedded-knowledge/indexes/tags/sequence-management.json +1 -0
  672. package/embedded-knowledge/indexes/tags/serialization.json +1 -0
  673. package/embedded-knowledge/indexes/tags/session-logmessage.json +1 -0
  674. package/embedded-knowledge/indexes/tags/session.json +1 -0
  675. package/embedded-knowledge/indexes/tags/setloadfields.json +1 -0
  676. package/embedded-knowledge/indexes/tags/shortcuts.json +1 -0
  677. package/embedded-knowledge/indexes/tags/sift.json +1 -0
  678. package/embedded-knowledge/indexes/tags/singleinstance.json +1 -0
  679. package/embedded-knowledge/indexes/tags/spacing.json +1 -0
  680. package/embedded-knowledge/indexes/tags/sql-translation.json +1 -0
  681. package/embedded-knowledge/indexes/tags/standards.json +1 -0
  682. package/embedded-knowledge/indexes/tags/statements.json +1 -0
  683. package/embedded-knowledge/indexes/tags/streaming.json +1 -0
  684. package/embedded-knowledge/indexes/tags/strong-typing.json +1 -0
  685. package/embedded-knowledge/indexes/tags/structural-patterns.json +1 -0
  686. package/embedded-knowledge/indexes/tags/structure.json +1 -0
  687. package/embedded-knowledge/indexes/tags/subscribers.json +1 -0
  688. package/embedded-knowledge/indexes/tags/switch.json +1 -0
  689. package/embedded-knowledge/indexes/tags/symbol-search.json +1 -0
  690. package/embedded-knowledge/indexes/tags/syntax.json +1 -0
  691. package/embedded-knowledge/indexes/tags/systemid.json +1 -0
  692. package/embedded-knowledge/indexes/tags/table-configuration.json +1 -0
  693. package/embedded-knowledge/indexes/tags/table-events.json +1 -0
  694. package/embedded-knowledge/indexes/tags/table-keys.json +1 -0
  695. package/embedded-knowledge/indexes/tags/table-safety.json +1 -0
  696. package/embedded-knowledge/indexes/tags/task-scheduler.json +1 -0
  697. package/embedded-knowledge/indexes/tags/telemetry.json +1 -0
  698. package/embedded-knowledge/indexes/tags/template-method.json +1 -0
  699. package/embedded-knowledge/indexes/tags/temporary-tables.json +1 -0
  700. package/embedded-knowledge/indexes/tags/testfield.json +1 -0
  701. package/embedded-knowledge/indexes/tags/tradeoffs.json +1 -0
  702. package/embedded-knowledge/indexes/tags/triggers.json +1 -0
  703. package/embedded-knowledge/indexes/tags/troubleshooting.json +1 -0
  704. package/embedded-knowledge/indexes/tags/type-safety.json +1 -0
  705. package/embedded-knowledge/indexes/tags/url-structure.json +1 -0
  706. package/embedded-knowledge/indexes/tags/user-experience.json +1 -0
  707. package/embedded-knowledge/indexes/tags/user-feedback.json +1 -0
  708. package/embedded-knowledge/indexes/tags/user-interface.json +1 -0
  709. package/embedded-knowledge/indexes/tags/validation-feedback.json +1 -0
  710. package/embedded-knowledge/indexes/tags/validation.json +1 -0
  711. package/embedded-knowledge/indexes/tags/variables.json +1 -0
  712. package/embedded-knowledge/indexes/tags/verbosity.json +1 -0
  713. package/embedded-knowledge/indexes/tags/vs-code.json +1 -0
  714. package/embedded-knowledge/indexes/tags/web-services.json +1 -0
  715. package/embedded-knowledge/indexes/tags/workflow-management.json +1 -0
  716. package/embedded-knowledge/indexes/tags/workflow-optimization.json +1 -0
  717. package/embedded-knowledge/indexes/tags/workflow-templates.json +1 -0
  718. package/embedded-knowledge/indexes/tags/workspace.json +1 -0
  719. package/embedded-knowledge/indexes/tags/xml-documentation.json +1 -0
  720. package/embedded-knowledge/indexes/topic-relationships.json +128 -0
  721. package/embedded-knowledge/methodologies/index.json +81 -0
  722. package/embedded-knowledge/methodologies/phases/analysis-full.md +208 -0
  723. package/embedded-knowledge/methodologies/phases/analysis-quick.md +44 -0
  724. package/embedded-knowledge/methodologies/phases/analysis.md +182 -0
  725. package/embedded-knowledge/methodologies/phases/execution-validation-full.md +174 -0
  726. package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +31 -0
  727. package/embedded-knowledge/methodologies/phases/execution-validation.md +174 -0
  728. package/embedded-knowledge/methodologies/phases/performance-full.md +211 -0
  729. package/embedded-knowledge/methodologies/phases/performance-quick.md +32 -0
  730. package/embedded-knowledge/methodologies/phases/performance.md +211 -0
  731. package/embedded-knowledge/methodologies/phases/verification-full.md +162 -0
  732. package/embedded-knowledge/methodologies/phases/verification-quick.md +48 -0
  733. package/embedded-knowledge/methodologies/phases/verification.md +146 -0
  734. package/embedded-knowledge/methodologies/workflow-enforcement.md +142 -0
  735. package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +99 -0
  736. package/embedded-knowledge/methodologies/workflows/proposal-review-workflow.md +535 -0
  737. package/embedded-knowledge/specialists/alex-architect.md +305 -0
  738. package/embedded-knowledge/specialists/casey-copilot.md +314 -0
  739. package/embedded-knowledge/specialists/chris-config.md +226 -0
  740. package/embedded-knowledge/specialists/dean-debug.md +365 -0
  741. package/embedded-knowledge/specialists/eva-errors.md +291 -0
  742. package/embedded-knowledge/specialists/jordan-bridge.md +291 -0
  743. package/embedded-knowledge/specialists/logan-legacy.md +265 -0
  744. package/embedded-knowledge/specialists/maya-mentor.md +299 -0
  745. package/embedded-knowledge/specialists/morgan-market.md +281 -0
  746. package/embedded-knowledge/specialists/parker-pragmatic.md +564 -0
  747. package/embedded-knowledge/specialists/quinn-tester.md +323 -0
  748. package/embedded-knowledge/specialists/roger-reviewer.md +317 -0
  749. package/embedded-knowledge/specialists/sam-coder.md +342 -0
  750. package/embedded-knowledge/specialists/seth-security.md +290 -0
  751. package/embedded-knowledge/specialists/taylor-docs.md +312 -0
  752. package/embedded-knowledge/specialists/uma-ux.md +291 -0
  753. package/package.json +82 -0
@@ -0,0 +1,98 @@
1
+ ---
2
+ title: "AL Event Subscriber Architecture"
3
+ domain: "jordan-bridge"
4
+ difficulty: "advanced"
5
+ bc_versions: "14+"
6
+ tags: ["events", "subscribers", "integration", "extensibility"]
7
+ type: "improvement-pattern"
8
+ category: "architecture"
9
+ pattern_type: "good"
10
+ severity: "high"
11
+ impact_level: "high"
12
+ improvement_suggestion: "Design event subscriber architecture for maintainable, performant integration solutions"
13
+ implementation_steps: ["design-subscriber-structure", "implement-loose-coupling", "validate-performance"]
14
+ validation_criteria: ["maintained-loose-coupling", "acceptable-performance-impact"]
15
+ technical_areas: ["al-code", "integration"]
16
+ samples: "samples/al-event-subscriber-architecture.md"
17
+ ---
18
+
19
+ # AL Event Subscriber Architecture
20
+
21
+ ## Overview
22
+
23
+ Event subscriber architecture in AL enables loosely coupled integration patterns that extend base functionality without modifying existing code. Proper subscriber design ensures maintainable, performant, and scalable integration solutions.
24
+
25
+ **Key Principle**: Event subscribers should maintain loose coupling, minimize performance impact, and provide clear integration contracts.
26
+
27
+ ## Strategic Framework
28
+
29
+ ### Subscriber Design Patterns
30
+ **Single Responsibility**: Each subscriber handles one specific integration concern
31
+ **Loose Coupling**: Subscribers depend only on event contracts, not implementation details
32
+ **Error Isolation**: Subscriber failures don't impact publisher or other subscribers
33
+ **Performance Conscious**: Minimal processing overhead in subscriber implementations
34
+
35
+ ### Integration Architecture
36
+ Events enable clean separation between core business logic and integration concerns, supporting modular application design and third-party extensions.
37
+
38
+ ### Extensibility Framework
39
+ Subscribers provide extension points for customization without code modification, supporting ISV and customer enhancement scenarios.
40
+
41
+ ## Architecture Focus
42
+
43
+ ### Decoupling Benefits
44
+ **Module Independence**: Publishers and subscribers can evolve independently
45
+ **Extension Points**: Well-defined integration points for custom functionality
46
+ **Testing Isolation**: Subscribers can be tested independently of publishers
47
+ **Deployment Flexibility**: Subscribers can be deployed separately from base functionality
48
+
49
+ ### Performance Considerations
50
+ **Event Overhead**: Each subscriber adds processing overhead to publisher execution
51
+ **Synchronous Execution**: Subscribers execute synchronously unless using background sessions
52
+ **Error Propagation**: Subscriber errors can impact publisher performance and reliability
53
+ **Memory Impact**: Multiple subscribers increase memory usage during event processing
54
+
55
+ ### Integration Patterns
56
+ - **Data Transformation**: Transform data between systems during business processes
57
+ - **Audit Logging**: Capture business events for compliance and monitoring
58
+ - **External Integration**: Trigger external system calls based on BC events
59
+ - **Custom Validation**: Add business-specific validation to standard processes
60
+
61
+ ## Best Practices
62
+
63
+ ### Subscriber Implementation
64
+ - **Minimal Processing**: Keep subscriber logic lightweight and focused
65
+ - **Error Handling**: Implement robust error handling to prevent publisher disruption
66
+ - **Conditional Execution**: Use appropriate conditions to avoid unnecessary processing
67
+ - **Clear Contracts**: Design clear interfaces between publishers and subscribers
68
+
69
+ ### Performance Optimization
70
+ - **Efficient Filtering**: Apply early filtering to avoid unnecessary subscriber execution
71
+ - **Background Processing**: Use background sessions for time-intensive operations
72
+ - **Bulk Operations**: Design subscribers to handle bulk scenarios efficiently
73
+ - **Resource Management**: Monitor memory and database usage in subscribers
74
+
75
+ ### Architecture Design
76
+ - **Codeunit Organization**: Group related subscribers in dedicated codeunits by functional area
77
+ - **Event Contract Stability**: Design event parameters for long-term stability
78
+ - **Documentation**: Document event contracts and subscriber responsibilities clearly
79
+ - **Version Management**: Plan for event contract evolution without breaking subscribers
80
+
81
+ ### Error Handling Strategy
82
+ - **Graceful Degradation**: Handle subscriber failures without impacting core functionality
83
+ - **Logging and Monitoring**: Implement comprehensive logging for troubleshooting
84
+ - **Retry Mechanisms**: Design appropriate retry logic for transient failures
85
+ - **Circuit Breaker**: Implement circuit breaker patterns for failing external integrations
86
+
87
+ ## Anti-Patterns
88
+
89
+ ### Avoid These Approaches
90
+ - **Tight Coupling Issues**: Subscribers that depend on publisher implementation details
91
+ - **Direct Data Access**: Bypassing event parameters to access publisher data directly
92
+ - **Circular Dependencies**: Publishers depending on subscriber functionality
93
+ - **Version Coupling**: Subscribers tied to specific publisher versions
94
+
95
+ Poor subscriber design can compromise system reliability and create maintenance burdens that outweigh the benefits of event-driven architecture.
96
+
97
+ *Related patterns: al-event-publishers.md, al-integration-patterns.md*
98
+ *Implementation examples: see samples/al-event-subscriber-architecture.md*
@@ -0,0 +1,123 @@
1
+ ---
2
+ title: "API Page Automatic Web Service Registration"
3
+ domain: "jordan-bridge"
4
+ difficulty: "intermediate"
5
+ bc_versions: "14+"
6
+ tags: ["web-services", "automatic-registration", "deployment"]
7
+ samples: "samples/automatic-registration.md"
8
+ ---
9
+ # API Page Automatic Web Service Registration
10
+
11
+ ## Overview
12
+
13
+ API Pages in Business Central automatically register as web services when published, eliminating manual configuration steps required for traditional page-based web services. Understanding this automatic registration process is essential for proper API deployment and management.
14
+
15
+ Automatic registration simplifies API deployment workflows by removing manual web service configuration tasks. This reduces deployment complexity and potential configuration errors that could prevent API functionality.
16
+
17
+ The automatic registration process creates standardized web service endpoints that follow OData conventions, ensuring consistent API behavior and integration patterns across different API implementations.
18
+
19
+ ## Registration Process Flow
20
+
21
+ When API Pages are published through extension deployment, BC automatically creates corresponding web service entries in the system. This registration occurs during the extension installation or upgrade process.
22
+
23
+ The registration process validates API Page configuration and creates appropriate metadata for OData endpoint generation. Invalid configurations prevent successful registration and require correction before deployment.
24
+
25
+ Automatic registration includes creation of necessary service metadata, endpoint configurations, and integration with the BC web service management system.
26
+
27
+ ## Web Service Naming Conventions
28
+
29
+ BC generates web service names based on API Page object names and namespace configurations. Understanding these naming patterns helps predict endpoint URLs and manage service discovery.
30
+
31
+ Service names follow consistent patterns that include publisher information, API version, and entity names. This standardization supports automated tooling and integration development.
32
+
33
+ Consider naming implications during API Page design to ensure generated web service names align with organizational standards and integration requirements.
34
+
35
+ ## Endpoint URL Structure
36
+
37
+ Automatic registration creates predictable endpoint URLs that follow standard OData URL conventions. These URLs include tenant information, API version, and entity identifiers for complete resource addressing.
38
+
39
+ URL structure includes base service endpoints, entity collections, and individual resource paths that support standard OData operations including queries, creation, modification, and deletion.
40
+
41
+ Understanding URL patterns helps with API documentation, client development, and integration testing scenarios that require direct endpoint access.
42
+
43
+ ## Service Discovery and Metadata
44
+
45
+ Automatically registered API Pages appear in BC web service management interfaces, providing visibility into published services and their configuration status.
46
+
47
+ Service metadata includes OData schema information that describes available entities, operations, and data structures. This metadata supports automated client generation and integration tooling.
48
+
49
+ Consider metadata quality and completeness during API Page design to ensure generated service descriptions provide adequate information for client development.
50
+
51
+ ## Version Management Integration
52
+
53
+ Automatic registration integrates with API versioning mechanisms, creating separate service registrations for different API versions while maintaining consistent endpoint patterns.
54
+
55
+ Version-specific registrations enable gradual migration scenarios where multiple API versions remain available during transition periods.
56
+
57
+ Plan version management strategies that leverage automatic registration capabilities while meeting business requirements for API lifecycle management.
58
+
59
+ ## Security Integration
60
+
61
+ Automatically registered API Pages inherit security configurations from BC authentication and authorization systems. No additional security configuration is required during the registration process.
62
+
63
+ Security integration includes authentication mechanism configuration, permission validation, and integration with BC role-based access control systems.
64
+
65
+ Consider security implications during API Page design to ensure automatic registration results in appropriate security posture for intended usage scenarios.
66
+
67
+ ## Monitoring and Management
68
+
69
+ Automatically registered services appear in standard BC web service monitoring and management interfaces, providing visibility into service status, usage patterns, and performance metrics.
70
+
71
+ Management capabilities include service enablement/disablement, configuration review, and integration with BC telemetry systems for operational monitoring.
72
+
73
+ Establish monitoring practices that leverage automatic registration integration with BC management systems for effective API operational support.
74
+
75
+ ## Deployment Automation Benefits
76
+
77
+ Automatic registration eliminates manual deployment steps, reducing deployment time and potential for configuration errors in automated deployment pipelines.
78
+
79
+ Integration with BC extension deployment processes ensures API availability coincides with application deployment, supporting continuous integration and delivery practices.
80
+
81
+ Automated registration supports infrastructure-as-code approaches where API configurations are managed through source control and deployment automation.
82
+
83
+ ## Troubleshooting Registration Issues
84
+
85
+ Registration failures typically indicate API Page configuration errors or conflicts with existing services. BC provides diagnostic information to identify and resolve registration problems.
86
+
87
+ Common issues include naming conflicts, security configuration problems, or API Page definition errors that prevent successful service creation.
88
+
89
+ Implement validation processes during development to identify potential registration issues before deployment to production environments.
90
+
91
+ ## Multi-Environment Considerations
92
+
93
+ Automatic registration behaves consistently across development, test, and production environments, ensuring consistent API availability and configuration across deployment stages.
94
+
95
+ Environment-specific considerations include tenant configuration, security settings, and integration with environment-specific infrastructure components.
96
+
97
+ Plan deployment processes that account for environment differences while leveraging automatic registration consistency for reliable API availability.
98
+
99
+ ## Performance Impact
100
+
101
+ Automatic registration has minimal performance impact on BC systems, as registration occurs during deployment processes rather than during normal system operation.
102
+
103
+ Runtime performance is not affected by automatic registration mechanisms, as generated services operate with the same efficiency as manually configured web services.
104
+
105
+ Monitor deployment performance to ensure automatic registration processes don't negatively impact deployment timelines or system availability during updates.
106
+
107
+ ## Integration with DevOps
108
+
109
+ Automatic registration integrates seamlessly with DevOps practices including automated testing, deployment validation, and continuous integration workflows.
110
+
111
+ DevOps tooling can leverage automatic registration consistency to implement automated API testing and validation processes that verify correct service availability after deployment.
112
+
113
+ Consider DevOps integration requirements during API Page design to ensure automatic registration supports required deployment and testing automation scenarios.
114
+
115
+ ## Best Practices
116
+
117
+ Design API Pages with automatic registration in mind, ensuring object names and configurations result in appropriate web service registrations that meet integration requirements.
118
+
119
+ Implement deployment validation processes that verify successful automatic registration and correct service availability after extension deployment.
120
+
121
+ Document automatic registration behavior for API implementations to ensure deployment teams understand expected service availability and configuration.
122
+
123
+ Plan for automatic registration consistency across environments while accounting for environment-specific configuration requirements that may affect service behavior.
@@ -0,0 +1,96 @@
1
+ ---
2
+ title: "Business Process Template Patterns"
3
+ domain: "jordan-bridge"
4
+ difficulty: "advanced"
5
+ bc_versions: "14+"
6
+ tags: ["business-process", "workflow-templates", "process-automation", "business-rules"]
7
+ prerequisites: ["template-method-pattern-al", "business-process-design", "workflow-patterns"]
8
+ samples: "samples/business-process-templates.md"
9
+ related_topics: ["template-method-pattern-al", "workflow-automation-patterns"]
10
+ ---
11
+
12
+ # Business Process Template Patterns
13
+
14
+ ## Overview
15
+
16
+ Business Process Template Patterns provide structured frameworks for implementing consistent, configurable business processes in Business Central. These patterns enable standardization of complex business workflows while maintaining flexibility for customization and adaptation to different business requirements.
17
+
18
+ **Key Benefit**: Enables consistent business process execution across different scenarios while providing configuration points for business-specific adaptations.
19
+
20
+ ## Core Process Template Architecture
21
+
22
+ ### Process Flow Definition
23
+ Define standardized process flows that capture the essential steps, decision points, and business rules common across similar business scenarios.
24
+
25
+ ### Configuration-Driven Customization
26
+ Implement configuration mechanisms that allow business processes to be adapted without code changes through setup tables and business rules.
27
+
28
+ ### State Management Framework
29
+ Design state management systems that track process progress, handle state transitions, and manage process data throughout execution.
30
+
31
+ ## Essential Process Patterns
32
+
33
+ ### Approval Workflow Templates
34
+ Create standardized approval workflow templates that can be configured for different approval scenarios while maintaining consistent approval logic.
35
+
36
+ ### Document Processing Templates
37
+ Implement document processing templates that standardize document lifecycle management (creation, validation, posting, archiving).
38
+
39
+ ### Integration Process Templates
40
+ Design integration templates that provide consistent patterns for data exchange with external systems while supporting different integration scenarios.
41
+
42
+ ## Advanced Template Features
43
+
44
+ ### Multi-Path Process Templates
45
+ Design templates that support conditional branching and parallel execution paths based on business rules and process data.
46
+
47
+ ### Hierarchical Process Composition
48
+ Implement process templates that can compose multiple sub-processes, enabling complex business scenarios through template combination.
49
+
50
+ ### Event-Driven Process Coordination
51
+ Integrate process templates with event-driven architectures to enable reactive process execution and cross-process coordination.
52
+
53
+ ## Configuration and Customization
54
+
55
+ ### Business Rule Integration
56
+ - Integrate process templates with business rule engines for dynamic behavior configuration
57
+ - Support runtime rule evaluation and process adaptation
58
+ - Enable business users to configure process behavior through setup interfaces
59
+ - Provide rule validation and testing capabilities
60
+
61
+ ### Parameter-Driven Configuration
62
+ Design processes that adapt behavior through configuration parameters, supporting process variations and A/B testing.
63
+
64
+ ## Core Implementation
65
+
66
+ ### State Management
67
+ Implement state tracking, persistence strategies, and concurrent process handling for reliable execution.
68
+
69
+ ### Error Handling
70
+ Design recovery templates, compensation patterns, and escalation paths for process failures.
71
+
72
+ ### Performance Optimization
73
+ Optimize templates for scalability with efficient queuing, batching, and load balancing.
74
+
75
+ ## Advanced Integration
76
+
77
+ ### System Integration
78
+ Design templates that standardize integration with external systems and cloud services while supporting cross-module coordination.
79
+
80
+ ### Monitoring & Analytics
81
+ Implement metrics collection, business intelligence integration, and real-time monitoring for process execution.
82
+
83
+ ### Compliance & Testing
84
+ Provide audit trail capture, compliance framework integration, and comprehensive testing strategies for process variations.
85
+
86
+ ## Best Practices
87
+
88
+ Keep templates focused, design for configuration-driven customization, implement comprehensive error handling, and provide clear documentation and monitoring capabilities.
89
+
90
+ ## Common Pitfalls
91
+
92
+ Avoid over-generalization, excessive configuration complexity, performance degradation, and state corruption through proper design and testing.
93
+
94
+ *Complete process template examples: samples/business-process-templates.md*
95
+ *Template method patterns: template-method-pattern-al.md*
96
+ *Workflow automation: workflow-automation-patterns.md*
@@ -0,0 +1,115 @@
1
+ ---
2
+ title: "Business Central API Error Response Patterns"
3
+ domain: "jordan-bridge"
4
+ difficulty: "intermediate"
5
+ bc_versions: "14+"
6
+ tags: ["error-handling", "http-status", "api-responses"]
7
+ samples: "samples/api-error-responses.md"
8
+ ---
9
+ # Business Central API Error Response Patterns
10
+
11
+ ## Overview
12
+
13
+ Business Central API error responses follow OData standards while providing BC-specific error context. Understanding these patterns is crucial for building robust integrations that can gracefully handle various error scenarios.
14
+
15
+ Proper error response design helps API consumers implement appropriate retry logic, user messaging, and debugging capabilities, directly impacting integration reliability and maintainability.
16
+
17
+ ## Standard Error Response Structure
18
+
19
+ ### OData Error Format
20
+ BC APIs return errors in standard OData format with error code, message, and additional context. This consistency enables generic error handling patterns across different BC APIs.
21
+
22
+ ### Error Code Categories
23
+ BC uses specific error code patterns to categorize different error types, allowing consuming applications to implement targeted handling strategies based on error classification.
24
+
25
+ ### Message Localization
26
+ Error messages are returned in the user's language context when possible, though integration scenarios typically require language-neutral error handling approaches.
27
+
28
+ ## HTTP Status Code Patterns
29
+
30
+ ### 400 Bad Request Usage
31
+ Returned for malformed requests, invalid field values, or business rule violations. Indicates client-side issues that require request modification before retry.
32
+
33
+ ### 401 Unauthorized Scenarios
34
+ Authentication failures and expired tokens trigger 401 responses. Consuming applications should implement token refresh logic for sustainable integration.
35
+
36
+ ### 403 Forbidden Applications
37
+ Permission-related errors where authentication succeeds but access is denied. Requires administrative intervention rather than programmatic resolution.
38
+
39
+ ### 404 Not Found Contexts
40
+ Resource not found scenarios including deleted records, invalid entity references, or incorrect URL patterns requiring client-side validation enhancement.
41
+
42
+ ### 409 Conflict Situations
43
+ Concurrency conflicts and business rule violations that prevent operation completion. Often includes ETag-related conflicts requiring client retry with updated data.
44
+
45
+ ### 500 Internal Server Error
46
+ System-level errors indicating BC platform issues. Consuming applications should implement exponential backoff retry patterns for transient failures.
47
+
48
+ ## Business Rule Error Handling
49
+
50
+ ### Validation Error Responses
51
+ Field validation failures include specific field references and violation descriptions, enabling targeted user interface feedback in consuming applications.
52
+
53
+ ### Cross-Field Validation Errors
54
+ Business rules spanning multiple fields return comprehensive error descriptions with context about all affected fields and their relationships.
55
+
56
+ ### Custom Validation Integration
57
+ Custom AL validation code integrates seamlessly with standard error response patterns, maintaining consistency across built-in and custom business rules.
58
+
59
+ ## Concurrency and ETag Errors
60
+
61
+ ### Optimistic Concurrency Failures
62
+ ETag mismatches result in 409 Conflict responses with details about the current record state, enabling intelligent conflict resolution in consuming applications.
63
+
64
+ ### Concurrent Modification Detection
65
+ BC detects concurrent modifications and provides detailed information about conflicting changes to support merge conflict resolution strategies.
66
+
67
+ ### Recovery Pattern Guidance
68
+ Error responses include sufficient context for implementing automatic recovery patterns like refresh-and-retry for simple concurrency conflicts.
69
+
70
+ ## Permission and Security Errors
71
+
72
+ ### Insufficient Permission Context
73
+ Permission errors specify the required permission level and affected resource, helping administrators diagnose and resolve access issues efficiently.
74
+
75
+ ### License Limitation Errors
76
+ BC license limitations generate specific error patterns that consuming applications can use to provide appropriate user guidance about feature availability.
77
+
78
+ ### Security Policy Violations
79
+ Data access policy violations include context about the specific security constraint that prevented operation completion.
80
+
81
+ ## Integration-Specific Error Patterns
82
+
83
+ ### Webhook Delivery Failures
84
+ Webhook scenarios generate specific error patterns for subscription management, delivery failures, and endpoint validation issues.
85
+
86
+ ### Batch Operation Errors
87
+ Multi-record operations return detailed error information for each failed item while maintaining overall operation context and partial success indicators.
88
+
89
+ ### Cross-Company Access Errors
90
+ Multi-company API scenarios generate specific error patterns for company selection, cross-company permission, and data isolation violations.
91
+
92
+ ## Error Recovery Strategies
93
+
94
+ ### Transient Error Identification
95
+ BC error responses include indicators for transient vs permanent failures, enabling appropriate retry logic implementation in consuming applications.
96
+
97
+ ### Retry-After Guidance
98
+ Rate limiting and throttling scenarios include Retry-After headers with specific timing guidance for sustainable integration patterns.
99
+
100
+ ### Diagnostic Information
101
+ Error responses include sufficient diagnostic context for troubleshooting without exposing sensitive system information or security details.
102
+
103
+ ## Best Practices for Error Handling
104
+
105
+ ### Client-Side Error Processing
106
+ Implement structured error processing that leverages BC error code patterns for automated categorization and appropriate response strategies.
107
+
108
+ ### Logging and Monitoring
109
+ Capture error patterns for monitoring integration health and identifying systemic issues requiring attention from BC administrators.
110
+
111
+ ### User Experience Considerations
112
+ Transform technical error responses into user-friendly messages while preserving technical details for support and debugging scenarios.
113
+
114
+ ### Graceful Degradation
115
+ Design integration flows to gracefully handle various error scenarios without causing complete system failures or data inconsistency issues.
@@ -0,0 +1,115 @@
1
+ ---
2
+ title: "ETag Implementation for Optimistic Concurrency"
3
+ domain: "jordan-bridge"
4
+ difficulty: "advanced"
5
+ bc_versions: "14+"
6
+ tags: ["etag", "concurrency", "conflict-resolution"]
7
+ samples: "samples/etag-implementation.md"
8
+ ---
9
+ # ETag Implementation for Optimistic Concurrency
10
+
11
+ ## Overview
12
+
13
+ ETag implementation in Business Central API Pages provides optimistic concurrency control to prevent data conflicts in multi-user scenarios. Understanding ETag patterns enables robust API implementations that handle concurrent access gracefully while maintaining data integrity.
14
+
15
+ ETags are HTTP headers that represent the current version of a resource, allowing clients to perform conditional operations based on resource state. BC automatically generates ETags for API Pages based on record modification information.
16
+
17
+ Proper ETag implementation prevents lost updates, enables conflict detection, and supports distributed API scenarios where multiple clients may simultaneously access the same data resources.
18
+
19
+ ## ETag Generation Mechanisms
20
+
21
+ Business Central automatically generates ETag values for API Page records based on internal record versioning information. These values change whenever the underlying record is modified through any mechanism.
22
+
23
+ ETag values are typically based on timestamp information, system version numbers, or hash calculations that uniquely represent the current state of the record. The specific implementation depends on table configuration and BC version.
24
+
25
+ ETag generation is transparent to API implementations but understanding the underlying mechanisms helps design effective concurrency control strategies for specific business scenarios.
26
+
27
+ ## HTTP Conditional Operations
28
+
29
+ ETag values enable HTTP conditional operations through If-Match and If-None-Match headers. These headers allow clients to specify conditions for request processing based on resource state.
30
+
31
+ If-Match headers ensure operations only proceed if the resource hasn't changed since the client last retrieved it. This prevents overwriting changes made by other clients during the same time period.
32
+
33
+ If-None-Match headers enable efficient caching scenarios where clients only retrieve resources that have changed since their last request, reducing bandwidth and processing overhead.
34
+
35
+ ## Client-Side Implementation Patterns
36
+
37
+ API clients should retrieve and store ETag values when reading resources through API Pages. These values must be included in subsequent modification requests to enable proper concurrency control.
38
+
39
+ Implement proper error handling for ETag conflicts, including retry mechanisms and user notification strategies that provide appropriate feedback when concurrent modification conflicts occur.
40
+
41
+ Consider client-side caching strategies that leverage ETag values to minimize unnecessary API requests and improve overall application performance.
42
+
43
+ ## Conflict Detection and Resolution
44
+
45
+ ETag mismatches indicate concurrent modification conflicts that require resolution before proceeding with requested operations. BC returns appropriate HTTP status codes to indicate conflict situations.
46
+
47
+ Implement proper conflict resolution strategies including automatic retry with fresh data, user-prompted conflict resolution, or last-writer-wins approaches based on business requirements.
48
+
49
+ Consider the user experience implications of conflict resolution, providing clear feedback and options when conflicts occur in interactive API scenarios.
50
+
51
+ ## Performance Implications
52
+
53
+ ETag validation adds minimal overhead to API operations while providing significant benefits for data integrity and conflict prevention. The performance impact is typically negligible compared to conflict resolution costs.
54
+
55
+ Proper ETag implementation can improve overall system performance by preventing unnecessary data processing when resources haven't changed since last access.
56
+
57
+ Monitor ETag-related performance metrics to ensure concurrency control mechanisms don't negatively impact overall API performance under high-load scenarios.
58
+
59
+ ## Multi-User Scenario Handling
60
+
61
+ ETag implementation becomes critical in multi-user scenarios where multiple clients may simultaneously modify the same data resources. Without proper concurrency control, data corruption or lost updates can occur.
62
+
63
+ Design API workflows that account for concurrent access patterns, implementing appropriate retry mechanisms and user feedback for conflict situations.
64
+
65
+ Consider the business impact of concurrent modification scenarios and design appropriate resolution strategies that align with business requirements and user expectations.
66
+
67
+ ## Integration with Business Logic
68
+
69
+ ETag validation occurs before business logic execution, preventing unnecessary processing when concurrent modification conflicts exist. This provides efficient conflict detection with minimal resource consumption.
70
+
71
+ Business logic implementations should consider ETag behavior and design operations that work effectively with optimistic concurrency control patterns.
72
+
73
+ Complex business operations involving multiple records may require advanced concurrency strategies beyond simple ETag validation to ensure complete transaction consistency.
74
+
75
+ ## Error Handling Strategies
76
+
77
+ Implement comprehensive error handling for ETag-related scenarios including missing ETags, invalid ETag formats, and concurrency conflict situations.
78
+
79
+ Provide meaningful error messages that help API clients understand and respond appropriately to concurrency-related issues without exposing sensitive system information.
80
+
81
+ Consider automated retry strategies for transient concurrency conflicts while avoiding infinite retry loops that could impact system performance.
82
+
83
+ ## Testing Concurrency Scenarios
84
+
85
+ Implement thorough testing for concurrent access scenarios including simultaneous modification attempts by multiple clients. These scenarios can be difficult to reproduce consistently but are critical for robust API implementations.
86
+
87
+ Use automated testing tools to simulate concurrent access patterns and validate ETag behavior under realistic load conditions and timing scenarios.
88
+
89
+ Test edge cases including rapid successive modifications, network delays affecting ETag delivery, and client-side caching interactions with ETag validation.
90
+
91
+ ## Advanced ETag Patterns
92
+
93
+ Consider weak versus strong ETag implementations for different business scenarios. Weak ETags provide flexibility for semantically equivalent representations while strong ETags ensure byte-level consistency.
94
+
95
+ Implement custom ETag generation strategies for complex business scenarios that require specific versioning behavior or integration with external versioning systems.
96
+
97
+ Advanced scenarios may require ETag integration with distributed caching systems or complex business workflow patterns that span multiple API operations.
98
+
99
+ ## Security Considerations
100
+
101
+ ETag values should not expose sensitive information about internal system state or business data. Ensure ETag generation mechanisms maintain appropriate security boundaries.
102
+
103
+ Consider the security implications of ETag-based caching scenarios, ensuring cached resources don't bypass appropriate security controls or expose unauthorized data.
104
+
105
+ Monitor for potential security issues related to ETag manipulation or exploitation that could affect system security or data integrity.
106
+
107
+ ## Best Practices
108
+
109
+ Always implement ETag support for API Pages that support modification operations. The concurrency control benefits significantly outweigh the minimal implementation overhead.
110
+
111
+ Design client applications to properly handle ETag workflows including storage, transmission, and conflict resolution scenarios for robust API integration.
112
+
113
+ Document ETag behavior and requirements for API consumers, providing clear guidance on proper implementation patterns and conflict resolution strategies.
114
+
115
+ Monitor and analyze ETag conflict patterns to identify potential optimization opportunities in business processes or API design that could reduce concurrent modification scenarios.
@@ -0,0 +1,114 @@
1
+ ---
2
+ title: "API Page Field Control Selection Strategy"
3
+ domain: "jordan-bridge"
4
+ difficulty: "intermediate"
5
+ bc_versions: "14+"
6
+ tags: ["field-control", "api-design", "data-exposure"]
7
+ samples: "samples/api-field-control.md"
8
+ ---
9
+ # API Page Field Control Selection Strategy
10
+
11
+ ## Overview
12
+
13
+ Field control selection in API pages determines which table fields are exposed through the API endpoint and how they behave during data operations. This strategic decision directly impacts API performance, security, and integration complexity.
14
+
15
+ Proper field selection balances data accessibility with system performance, ensuring APIs provide necessary business data without exposing sensitive information or creating unnecessary computational overhead.
16
+
17
+ ## Field Selection Principles
18
+
19
+ ### Business Value Assessment
20
+ Include fields that provide direct business value to API consumers. Avoid exposing internal system fields unless they serve specific integration requirements.
21
+
22
+ ### Performance Impact Evaluation
23
+ Each exposed field adds to API response size and processing overhead. Evaluate whether field inclusion justifies the performance cost, especially for high-volume integrations.
24
+
25
+ ### Security and Privacy Considerations
26
+ Exclude fields containing sensitive data unless explicit business requirements justify exposure. Consider data classification and regulatory compliance requirements.
27
+
28
+ ## Control Type Strategy
29
+
30
+ ### Editable Field Controls
31
+ Use for fields that external systems should be able to modify through POST and PATCH operations. Carefully consider business rule implications of allowing external modifications.
32
+
33
+ ### Read-Only Field Exposures
34
+ Expose calculated fields, system-generated values, and reference data as read-only to provide context without allowing external modification that could compromise data integrity.
35
+
36
+ ### Conditional Field Visibility
37
+ Implement field visibility based on user permissions or business context when APIs need to serve multiple consumer types with different data access requirements.
38
+
39
+ ## Advanced Field Control Patterns
40
+
41
+ ### Related Table Field Exposure
42
+ When exposing fields from related tables, consider whether to include them directly or provide navigation properties for more flexible data access patterns.
43
+
44
+ ### Calculated Field Implementation
45
+ Include calculated fields that provide business value but ensure calculations are efficient enough for API response time requirements.
46
+
47
+ ### System Field Selective Exposure
48
+ Selectively expose system fields like SystemId, SystemCreatedAt when they provide integration value, but avoid exposing internal audit fields unnecessarily.
49
+
50
+ ## Field Selection Impact Analysis
51
+
52
+ ### API Response Size Optimization
53
+ Monitor API response sizes with different field combinations to optimize for common usage patterns while maintaining necessary data completeness.
54
+
55
+ ### Integration Complexity Assessment
56
+ Evaluate how field selection affects client implementation complexity. Too few fields require multiple API calls, too many create unnecessary data transfer.
57
+
58
+ ### Maintenance Overhead Considerations
59
+ Consider long-term maintenance implications of field exposure decisions, including how business changes might affect API contracts.
60
+
61
+ ## Data Type and Format Considerations
62
+
63
+ ### Date and Time Field Handling
64
+ Ensure date/time fields are exposed with appropriate formatting and timezone considerations for global integration scenarios.
65
+
66
+ ### Decimal Precision Management
67
+ Configure decimal fields with appropriate precision for business requirements while considering JSON serialization limitations.
68
+
69
+ ### Text Field Length Optimization
70
+ Balance text field length exposure with API performance, especially for fields that may contain large amounts of data.
71
+
72
+ ## Security-First Field Selection
73
+
74
+ ### Sensitive Data Protection
75
+ Identify and exclude personally identifiable information (PII) and other sensitive data unless explicit business requirements and proper security controls exist.
76
+
77
+ ### Permission-Based Field Exposure
78
+ Align field visibility with BC permission structures to maintain consistent security models between UI and API access.
79
+
80
+ ### Data Classification Compliance
81
+ Ensure field exposure decisions comply with organizational data classification policies and regulatory requirements.
82
+
83
+ ## Performance Optimization Techniques
84
+
85
+ ### Lazy Loading Strategies
86
+ Consider whether large text fields or blob data should be excluded from default responses and provided through separate endpoints for performance optimization.
87
+
88
+ ### Selective Field Loading
89
+ Design APIs to support field selection parameters allowing clients to request only required fields for optimal performance.
90
+
91
+ ### Caching Considerations
92
+ Evaluate how field selection affects caching strategies and whether certain field combinations are more cache-friendly than others.
93
+
94
+ ## Validation and Testing
95
+
96
+ ### Field Exposure Testing
97
+ Systematically test that exposed fields behave correctly across all supported HTTP operations (GET, POST, PATCH, DELETE).
98
+
99
+ ### Performance Impact Validation
100
+ Measure API response times and payload sizes with different field configurations to validate performance assumptions.
101
+
102
+ ### Security Verification
103
+ Verify that field exposure decisions maintain appropriate security boundaries and don't inadvertently expose sensitive information.
104
+
105
+ ## Best Practices
106
+
107
+ ### Documentation Standards
108
+ Document field selection rationale to aid future maintenance decisions and help API consumers understand available data.
109
+
110
+ ### Evolutionary Design
111
+ Plan field selection to accommodate future business requirements while maintaining backward compatibility with existing integrations.
112
+
113
+ ### Consumer-Driven Selection
114
+ Engage with API consumers to understand their data requirements and optimize field selection for actual usage patterns rather than theoretical completeness.