@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.
- package/LICENSE +21 -0
- package/README.md +165 -0
- package/dist/cache/cache-manager.d.ts +95 -0
- package/dist/cache/cache-manager.d.ts.map +1 -0
- package/dist/cache/cache-manager.js +328 -0
- package/dist/cache/cache-manager.js.map +1 -0
- package/dist/cli/bc-code-intel-cli.d.ts +9 -0
- package/dist/cli/bc-code-intel-cli.d.ts.map +1 -0
- package/dist/cli/bc-code-intel-cli.js +440 -0
- package/dist/cli/bc-code-intel-cli.js.map +1 -0
- package/dist/config/config-loader.d.ts +28 -0
- package/dist/config/config-loader.d.ts.map +1 -0
- package/dist/config/config-loader.js +497 -0
- package/dist/config/config-loader.js.map +1 -0
- package/dist/config/config-validator.d.ts +84 -0
- package/dist/config/config-validator.d.ts.map +1 -0
- package/dist/config/config-validator.js +608 -0
- package/dist/config/config-validator.js.map +1 -0
- package/dist/config/test-config-loader.d.ts +10 -0
- package/dist/config/test-config-loader.d.ts.map +1 -0
- package/dist/config/test-config-loader.js +135 -0
- package/dist/config/test-config-loader.js.map +1 -0
- package/dist/config/test-enhanced-layer-service.d.ts +7 -0
- package/dist/config/test-enhanced-layer-service.d.ts.map +1 -0
- package/dist/config/test-enhanced-layer-service.js +104 -0
- package/dist/config/test-enhanced-layer-service.js.map +1 -0
- package/dist/config/test-git-layer.d.ts +7 -0
- package/dist/config/test-git-layer.d.ts.map +1 -0
- package/dist/config/test-git-layer.js +68 -0
- package/dist/config/test-git-layer.js.map +1 -0
- package/dist/dev/hot-reload.d.ts +91 -0
- package/dist/dev/hot-reload.d.ts.map +1 -0
- package/dist/dev/hot-reload.js +358 -0
- package/dist/dev/hot-reload.js.map +1 -0
- package/dist/index.d.ts +82 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1211 -0
- package/dist/index.js.map +1 -0
- package/dist/layers/base-layer.d.ts +133 -0
- package/dist/layers/base-layer.d.ts.map +1 -0
- package/dist/layers/base-layer.js +290 -0
- package/dist/layers/base-layer.js.map +1 -0
- package/dist/layers/embedded-layer.d.ts +130 -0
- package/dist/layers/embedded-layer.d.ts.map +1 -0
- package/dist/layers/embedded-layer.js +612 -0
- package/dist/layers/embedded-layer.js.map +1 -0
- package/dist/layers/git-layer.d.ts +77 -0
- package/dist/layers/git-layer.d.ts.map +1 -0
- package/dist/layers/git-layer.js +529 -0
- package/dist/layers/git-layer.js.map +1 -0
- package/dist/layers/index.d.ts +12 -0
- package/dist/layers/index.d.ts.map +1 -0
- package/dist/layers/index.js +11 -0
- package/dist/layers/index.js.map +1 -0
- package/dist/layers/layer-service.d.ts +135 -0
- package/dist/layers/layer-service.d.ts.map +1 -0
- package/dist/layers/layer-service.js +586 -0
- package/dist/layers/layer-service.js.map +1 -0
- package/dist/layers/project-layer.d.ts +58 -0
- package/dist/layers/project-layer.d.ts.map +1 -0
- package/dist/layers/project-layer.js +286 -0
- package/dist/layers/project-layer.js.map +1 -0
- package/dist/monitoring/production-monitor.d.ts +148 -0
- package/dist/monitoring/production-monitor.d.ts.map +1 -0
- package/dist/monitoring/production-monitor.js +463 -0
- package/dist/monitoring/production-monitor.js.map +1 -0
- package/dist/performance/performance-monitor.d.ts +99 -0
- package/dist/performance/performance-monitor.d.ts.map +1 -0
- package/dist/performance/performance-monitor.js +253 -0
- package/dist/performance/performance-monitor.js.map +1 -0
- package/dist/sdk/bc-code-intel-client.d.ts +175 -0
- package/dist/sdk/bc-code-intel-client.d.ts.map +1 -0
- package/dist/sdk/bc-code-intel-client.js +380 -0
- package/dist/sdk/bc-code-intel-client.js.map +1 -0
- package/dist/search/intelligent-search.d.ts +97 -0
- package/dist/search/intelligent-search.d.ts.map +1 -0
- package/dist/search/intelligent-search.js +358 -0
- package/dist/search/intelligent-search.js.map +1 -0
- package/dist/security/access-control.d.ts +110 -0
- package/dist/security/access-control.d.ts.map +1 -0
- package/dist/security/access-control.js +353 -0
- package/dist/security/access-control.js.map +1 -0
- package/dist/services/code-analysis-service.d.ts +72 -0
- package/dist/services/code-analysis-service.d.ts.map +1 -0
- package/dist/services/code-analysis-service.js +818 -0
- package/dist/services/code-analysis-service.js.map +1 -0
- package/dist/services/enhanced-prompt-service.d.ts +56 -0
- package/dist/services/enhanced-prompt-service.d.ts.map +1 -0
- package/dist/services/enhanced-prompt-service.js +165 -0
- package/dist/services/enhanced-prompt-service.js.map +1 -0
- package/dist/services/knowledge-service.d.ts +90 -0
- package/dist/services/knowledge-service.d.ts.map +1 -0
- package/dist/services/knowledge-service.js +342 -0
- package/dist/services/knowledge-service.js.map +1 -0
- package/dist/services/methodology-service.d.ts +91 -0
- package/dist/services/methodology-service.d.ts.map +1 -0
- package/dist/services/methodology-service.js +423 -0
- package/dist/services/methodology-service.js.map +1 -0
- package/dist/services/multi-content-layer-service.d.ts +198 -0
- package/dist/services/multi-content-layer-service.d.ts.map +1 -0
- package/dist/services/multi-content-layer-service.js +991 -0
- package/dist/services/multi-content-layer-service.js.map +1 -0
- package/dist/services/roleplay-engine.d.ts +161 -0
- package/dist/services/roleplay-engine.d.ts.map +1 -0
- package/dist/services/roleplay-engine.js +994 -0
- package/dist/services/roleplay-engine.js.map +1 -0
- package/dist/services/session-storage/file-storage.d.ts +30 -0
- package/dist/services/session-storage/file-storage.d.ts.map +1 -0
- package/dist/services/session-storage/file-storage.js +229 -0
- package/dist/services/session-storage/file-storage.js.map +1 -0
- package/dist/services/session-storage/in-memory-storage.d.ts +31 -0
- package/dist/services/session-storage/in-memory-storage.d.ts.map +1 -0
- package/dist/services/session-storage/in-memory-storage.js +142 -0
- package/dist/services/session-storage/in-memory-storage.js.map +1 -0
- package/dist/services/specialist-discovery.d.ts +98 -0
- package/dist/services/specialist-discovery.d.ts.map +1 -0
- package/dist/services/specialist-discovery.js +387 -0
- package/dist/services/specialist-discovery.js.map +1 -0
- package/dist/services/specialist-loader.d.ts +101 -0
- package/dist/services/specialist-loader.d.ts.map +1 -0
- package/dist/services/specialist-loader.js +256 -0
- package/dist/services/specialist-loader.js.map +1 -0
- package/dist/services/specialist-session-manager.d.ts +76 -0
- package/dist/services/specialist-session-manager.d.ts.map +1 -0
- package/dist/services/specialist-session-manager.js +255 -0
- package/dist/services/specialist-session-manager.js.map +1 -0
- package/dist/services/workflow-service.d.ts +146 -0
- package/dist/services/workflow-service.d.ts.map +1 -0
- package/dist/services/workflow-service.js +409 -0
- package/dist/services/workflow-service.js.map +1 -0
- package/dist/setup/post-install.d.ts +12 -0
- package/dist/setup/post-install.d.ts.map +1 -0
- package/dist/setup/post-install.js +81 -0
- package/dist/setup/post-install.js.map +1 -0
- package/dist/streamlined-handlers.d.ts +94 -0
- package/dist/streamlined-handlers.d.ts.map +1 -0
- package/dist/streamlined-handlers.js +665 -0
- package/dist/streamlined-handlers.js.map +1 -0
- package/dist/test-enhanced-mcp-server.d.ts +7 -0
- package/dist/test-enhanced-mcp-server.d.ts.map +1 -0
- package/dist/test-enhanced-mcp-server.js +177 -0
- package/dist/test-enhanced-mcp-server.js.map +1 -0
- package/dist/tools/config-diagnostic-tools.d.ts +234 -0
- package/dist/tools/config-diagnostic-tools.d.ts.map +1 -0
- package/dist/tools/config-diagnostic-tools.js +887 -0
- package/dist/tools/config-diagnostic-tools.js.map +1 -0
- package/dist/tools/core-tools.d.ts +26 -0
- package/dist/tools/core-tools.d.ts.map +1 -0
- package/dist/tools/core-tools.js +241 -0
- package/dist/tools/core-tools.js.map +1 -0
- package/dist/tools/handoff-tools.d.ts +37 -0
- package/dist/tools/handoff-tools.d.ts.map +1 -0
- package/dist/tools/handoff-tools.js +265 -0
- package/dist/tools/handoff-tools.js.map +1 -0
- package/dist/tools/index.d.ts +61 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +75 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/onboarding-tools.d.ts +43 -0
- package/dist/tools/onboarding-tools.d.ts.map +1 -0
- package/dist/tools/onboarding-tools.js +353 -0
- package/dist/tools/onboarding-tools.js.map +1 -0
- package/dist/tools/specialist-discovery-tools.d.ts +27 -0
- package/dist/tools/specialist-discovery-tools.d.ts.map +1 -0
- package/dist/tools/specialist-discovery-tools.js +275 -0
- package/dist/tools/specialist-discovery-tools.js.map +1 -0
- package/dist/tools/specialist-tools.d.ts +43 -0
- package/dist/tools/specialist-tools.d.ts.map +1 -0
- package/dist/tools/specialist-tools.js +372 -0
- package/dist/tools/specialist-tools.js.map +1 -0
- package/dist/tools/workspace-tools.d.ts +96 -0
- package/dist/tools/workspace-tools.d.ts.map +1 -0
- package/dist/tools/workspace-tools.js +188 -0
- package/dist/tools/workspace-tools.js.map +1 -0
- package/dist/types/bc-knowledge.d.ts +303 -0
- package/dist/types/bc-knowledge.d.ts.map +1 -0
- package/dist/types/bc-knowledge.js +69 -0
- package/dist/types/bc-knowledge.js.map +1 -0
- package/dist/types/config-types.d.ts +186 -0
- package/dist/types/config-types.d.ts.map +1 -0
- package/dist/types/config-types.js +109 -0
- package/dist/types/config-types.js.map +1 -0
- package/dist/types/enhanced-layer-types.d.ts +193 -0
- package/dist/types/enhanced-layer-types.d.ts.map +1 -0
- package/dist/types/enhanced-layer-types.js +9 -0
- package/dist/types/enhanced-layer-types.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/layer-types.d.ts +173 -0
- package/dist/types/layer-types.d.ts.map +1 -0
- package/dist/types/layer-types.js +27 -0
- package/dist/types/layer-types.js.map +1 -0
- package/dist/types/roleplay-types.d.ts +156 -0
- package/dist/types/roleplay-types.d.ts.map +1 -0
- package/dist/types/roleplay-types.js +8 -0
- package/dist/types/roleplay-types.js.map +1 -0
- package/dist/types/session-types.d.ts +127 -0
- package/dist/types/session-types.d.ts.map +1 -0
- package/dist/types/session-types.js +8 -0
- package/dist/types/session-types.js.map +1 -0
- package/dist/utils/path-utils.d.ts +5 -0
- package/dist/utils/path-utils.d.ts.map +1 -0
- package/dist/utils/path-utils.js +14 -0
- package/dist/utils/path-utils.js.map +1 -0
- package/dist/workflows/domain-workflows.d.ts +8 -0
- package/dist/workflows/domain-workflows.d.ts.map +1 -0
- package/dist/workflows/domain-workflows.js +360 -0
- package/dist/workflows/domain-workflows.js.map +1 -0
- package/embedded-knowledge/.github/ISSUE_TEMPLATE/bug-report.md +24 -0
- package/embedded-knowledge/.github/ISSUE_TEMPLATE/content-improvement.md +24 -0
- package/embedded-knowledge/.github/ISSUE_TEMPLATE/knowledge-request.md +30 -0
- package/embedded-knowledge/AGENTS.md +178 -0
- package/embedded-knowledge/CONTRIBUTING.md +58 -0
- package/embedded-knowledge/LICENSE +21 -0
- package/embedded-knowledge/README.md +32 -0
- package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +90 -0
- package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +113 -0
- package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +101 -0
- package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +87 -0
- package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +155 -0
- package/embedded-knowledge/domains/alex-architect/delegating-to-github-copilot-agents.md +371 -0
- package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +138 -0
- package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +79 -0
- package/embedded-knowledge/domains/alex-architect/object-id-ninja-integration.md +281 -0
- package/embedded-knowledge/domains/alex-architect/recommend-object-id-ninja.md +248 -0
- package/embedded-knowledge/domains/alex-architect/samples/api-delegate-operation.md +280 -0
- package/embedded-knowledge/domains/alex-architect/samples/api-fieldset-registration.md +200 -0
- package/embedded-knowledge/domains/alex-architect/samples/api-interface-design.md +565 -0
- package/embedded-knowledge/domains/alex-architect/samples/api-page-implementation.md +665 -0
- package/embedded-knowledge/domains/alex-architect/samples/complex-facade-patterns.md +325 -0
- package/embedded-knowledge/domains/alex-architect/samples/facade-pattern-al.md +696 -0
- package/embedded-knowledge/domains/alex-architect/samples/facade-pattern.md +320 -0
- package/embedded-knowledge/domains/alex-architect/samples/subscriber-organization.md +102 -0
- package/embedded-knowledge/domains/alex-architect/samples/systemid-integration.md +433 -0
- package/embedded-knowledge/domains/alex-architect/samples/testability-design-patterns.md +223 -0
- package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +66 -0
- package/embedded-knowledge/domains/alex-architect/systemid-integration.md +115 -0
- package/embedded-knowledge/domains/alex-architect/testability-design-patterns.md +77 -0
- package/embedded-knowledge/domains/casey-copilot/long-running-session-instructions.md +263 -0
- package/embedded-knowledge/domains/casey-copilot/samples/long-running-session-instructions.md +323 -0
- package/embedded-knowledge/domains/chris-config/configuration-file-discovery.md +846 -0
- package/embedded-knowledge/domains/chris-config/configuration-file-formats.md +595 -0
- package/embedded-knowledge/domains/chris-config/content-types-structure.md +421 -0
- package/embedded-knowledge/domains/chris-config/knowledge-content-creation.md +437 -0
- package/embedded-knowledge/domains/chris-config/layer-system-fundamentals.md +257 -0
- package/embedded-knowledge/domains/chris-config/multi-team-layer-configuration.md +302 -0
- package/embedded-knowledge/domains/chris-config/workspace-detection-solutions.md +336 -0
- package/embedded-knowledge/domains/dean-debug/bc-telemetry-buddy-integration.md +453 -0
- package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +360 -0
- package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +86 -0
- package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +96 -0
- package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +70 -0
- package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +84 -0
- package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +93 -0
- package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +73 -0
- package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +78 -0
- package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +79 -0
- package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +87 -0
- package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +209 -0
- package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +246 -0
- package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +107 -0
- package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +105 -0
- package/embedded-knowledge/domains/dean-debug/recommend-bc-telemetry-buddy.md +160 -0
- package/embedded-knowledge/domains/dean-debug/samples/bc24-no-series-conversion.md +186 -0
- package/embedded-knowledge/domains/dean-debug/samples/case-performance-optimization.md +60 -0
- package/embedded-knowledge/domains/dean-debug/samples/compound-statements-debugging.md +139 -0
- package/embedded-knowledge/domains/dean-debug/samples/custom-dimensions.md +190 -0
- package/embedded-knowledge/domains/dean-debug/samples/custom-telemetry.md +516 -0
- package/embedded-knowledge/domains/dean-debug/samples/deleteall-performance.md +298 -0
- package/embedded-knowledge/domains/dean-debug/samples/error-correlation.md +324 -0
- package/embedded-knowledge/domains/dean-debug/samples/extension-isolation.md +344 -0
- package/embedded-knowledge/domains/dean-debug/samples/logmessage-methods.md +137 -0
- package/embedded-knowledge/domains/dean-debug/samples/maintainsiftindex-examples.md +340 -0
- package/embedded-knowledge/domains/dean-debug/samples/no-series-implementation.md +810 -0
- package/embedded-knowledge/domains/dean-debug/samples/no-series-module-bc24.md +86 -0
- package/embedded-knowledge/domains/dean-debug/samples/no-series-validation-module-bc24.md +110 -0
- package/embedded-knowledge/domains/dean-debug/samples/no-series-validation.md +758 -0
- package/embedded-knowledge/domains/dean-debug/samples/odata-query-optimization.md +665 -0
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-case.md +316 -0
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-filters.md +223 -0
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-filter-exclusion.md +149 -0
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-optimization.md +412 -0
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-performance.md +211 -0
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-primary-key.md +155 -0
- package/embedded-knowledge/domains/dean-debug/samples/sift-technology-fundamentals.md +475 -0
- package/embedded-knowledge/domains/dean-debug/samples/singleinstance-subscribers.md +238 -0
- package/embedded-knowledge/domains/dean-debug/samples/table-event-batching.md +97 -0
- package/embedded-knowledge/domains/dean-debug/samples/table-key-requirements.md +666 -0
- package/embedded-knowledge/domains/dean-debug/samples/telemetry-performance.md +319 -0
- package/embedded-knowledge/domains/dean-debug/samples/verbosity-strategy.md +236 -0
- package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +59 -0
- package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +67 -0
- package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +70 -0
- package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +90 -0
- package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +87 -0
- package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +70 -0
- package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +74 -0
- package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +81 -0
- package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +56 -0
- package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +66 -0
- package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +79 -0
- package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +78 -0
- package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +83 -0
- package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +76 -0
- package/embedded-knowledge/domains/dean-debug/testfield-performance.md +104 -0
- package/embedded-knowledge/domains/eva-errors/codeunit-run-pattern.md +159 -0
- package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +145 -0
- package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +104 -0
- package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +114 -0
- package/embedded-knowledge/domains/eva-errors/samples/codeunit-run-pattern.md +239 -0
- package/embedded-knowledge/domains/eva-errors/samples/fielderror-default-messages.md +356 -0
- package/embedded-knowledge/domains/eva-errors/samples/fielderror-syntax.md +256 -0
- package/embedded-knowledge/domains/eva-errors/samples/table-safety-validation-patterns.md +101 -0
- package/embedded-knowledge/domains/eva-errors/samples/testfield-error-handling.md +108 -0
- package/embedded-knowledge/domains/eva-errors/samples/try-function-usage.md +195 -0
- package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +80 -0
- package/embedded-knowledge/domains/eva-errors/try-function-usage.md +129 -0
- package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +98 -0
- package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +123 -0
- package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +96 -0
- package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +115 -0
- package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +115 -0
- package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +114 -0
- package/embedded-knowledge/domains/jordan-bridge/samples/al-event-subscriber-architecture.md +395 -0
- package/embedded-knowledge/domains/jordan-bridge/samples/api-error-responses.md +479 -0
- package/embedded-knowledge/domains/jordan-bridge/samples/api-field-control.md +548 -0
- package/embedded-knowledge/domains/jordan-bridge/samples/api-url-naming.md +287 -0
- package/embedded-knowledge/domains/jordan-bridge/samples/business-process-templates.md +434 -0
- package/embedded-knowledge/domains/jordan-bridge/samples/etag-implementation.md +508 -0
- package/embedded-knowledge/domains/jordan-bridge/samples/task-scheduler-pattern.md +615 -0
- package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +144 -0
- package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +96 -0
- package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +124 -0
- package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +84 -0
- package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +75 -0
- package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +96 -0
- package/embedded-knowledge/domains/maya-mentor/samples/case-statement-multiple-conditions.md +385 -0
- package/embedded-knowledge/domains/maya-mentor/samples/case-statement-syntax-structure.md +72 -0
- package/embedded-knowledge/domains/maya-mentor/samples/fielderror-syntax-usage.md +48 -0
- package/embedded-knowledge/domains/maya-mentor/samples/testfield-basic-syntax.md +49 -0
- package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +67 -0
- package/embedded-knowledge/domains/morgan-market/partner-readiness-analysis.md +201 -0
- package/embedded-knowledge/domains/morgan-market/samples/partner-readiness-checklist.md +288 -0
- package/embedded-knowledge/domains/parker-pragmatic/README.md +39 -0
- package/embedded-knowledge/domains/parker-pragmatic/proposal-workflows/creating-effective-proposals.md +583 -0
- package/embedded-knowledge/domains/parker-pragmatic/trust-building/working-with-ai-skeptics.md +587 -0
- package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +119 -0
- package/embedded-knowledge/domains/quinn-tester/isolation-testing-patterns.md +82 -0
- package/embedded-knowledge/domains/quinn-tester/rule-execution.md +123 -0
- package/embedded-knowledge/domains/quinn-tester/samples/case-error-handling.md +64 -0
- package/embedded-knowledge/domains/quinn-tester/samples/fielderror-message-construction.md +60 -0
- package/embedded-knowledge/domains/quinn-tester/samples/fielderror-validation-patterns.md +83 -0
- package/embedded-knowledge/domains/quinn-tester/samples/isolation-testing-patterns.md +424 -0
- package/embedded-knowledge/domains/quinn-tester/samples/rule-execution.md +716 -0
- package/embedded-knowledge/domains/quinn-tester/samples/table-safety-validation-patterns.md +101 -0
- package/embedded-knowledge/domains/quinn-tester/samples/temporary-table-operation-validation.md +91 -0
- package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +79 -0
- package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +79 -0
- package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +89 -0
- package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +81 -0
- package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +75 -0
- package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +96 -0
- package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +86 -0
- package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +90 -0
- package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +82 -0
- package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +78 -0
- package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +78 -0
- package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +100 -0
- package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +115 -0
- package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +124 -0
- package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +110 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-begin-end-blocks.md +438 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-binary-operator-spacing.md +255 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-comment-spacing-standards.md +209 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-keyword-indentation-rules.md +218 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-line-start-keyword-positioning.md +218 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-separate-if-else-formatting.md +280 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-statement-per-line-rule.md +188 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-unnecessary-else-elimination.md +245 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-variable-declaration-order.md +244 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/begin-end-positioning.md +278 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/boolean-simplification-examples.md +484 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/case-error-handling.md +64 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/compound-statement-readability.md +107 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/lonely-repeat-examples.md +280 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/testability-code-smells.md +256 -0
- package/embedded-knowledge/domains/roger-reviewer/testability-code-smells.md +67 -0
- package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +75 -0
- package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +67 -0
- package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +76 -0
- package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +98 -0
- package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +128 -0
- package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +75 -0
- package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +95 -0
- package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +141 -0
- package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +91 -0
- package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +118 -0
- package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +111 -0
- package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +113 -0
- package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +127 -0
- package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +141 -0
- package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +66 -0
- package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +96 -0
- package/embedded-knowledge/domains/sam-coder/samples/al-blank-line-organization.md +161 -0
- package/embedded-knowledge/domains/sam-coder/samples/al-case-action-formatting.md +177 -0
- package/embedded-knowledge/domains/sam-coder/samples/al-lonely-repeat-pattern.md +239 -0
- package/embedded-knowledge/domains/sam-coder/samples/al-named-parameter-pattern.md +346 -0
- package/embedded-knowledge/domains/sam-coder/samples/al-record-find-early-exit.md +298 -0
- package/embedded-knowledge/domains/sam-coder/samples/command-queue-pattern.md +677 -0
- package/embedded-knowledge/domains/sam-coder/samples/deleteall-alternative-implementation.md +117 -0
- package/embedded-knowledge/domains/sam-coder/samples/deleteall-triggers.md +75 -0
- package/embedded-knowledge/domains/sam-coder/samples/deleteall-usage.md +169 -0
- package/embedded-knowledge/domains/sam-coder/samples/event-bridge-pattern.md +399 -0
- package/embedded-knowledge/domains/sam-coder/samples/event-payload-design.md +356 -0
- package/embedded-knowledge/domains/sam-coder/samples/generic-method-patterns.md +889 -0
- package/embedded-knowledge/domains/sam-coder/samples/manual-binding.md +84 -0
- package/embedded-knowledge/domains/sam-coder/samples/nested-compound-best-practices.md +127 -0
- package/embedded-knowledge/domains/sam-coder/samples/single-to-compound-conversion.md +89 -0
- package/embedded-knowledge/domains/sam-coder/samples/template-method-pattern.md +516 -0
- package/embedded-knowledge/domains/sam-coder/samples/testfield-patterns.md +61 -0
- package/embedded-knowledge/domains/sam-coder/samples/type-safe-operations.md +427 -0
- package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +122 -0
- package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +96 -0
- package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +101 -0
- package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +149 -0
- package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +107 -0
- package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +95 -0
- package/embedded-knowledge/domains/seth-security/api-permission-model.md +115 -0
- package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +78 -0
- package/embedded-knowledge/domains/seth-security/samples/al-temporary-table-safety.md +373 -0
- package/embedded-knowledge/domains/seth-security/samples/api-permission-model.md +308 -0
- package/embedded-knowledge/domains/shared/al-file-naming-conventions.md +146 -0
- package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +79 -0
- package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +78 -0
- package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +81 -0
- package/embedded-knowledge/indexes/bc-version-matrix.json +188 -0
- package/embedded-knowledge/indexes/domain-catalog.json +106 -0
- package/embedded-knowledge/indexes/tags/abbreviations.json +1 -0
- package/embedded-knowledge/indexes/tags/abstraction.json +1 -0
- package/embedded-knowledge/indexes/tags/access-control.json +1 -0
- package/embedded-knowledge/indexes/tags/accessibility.json +1 -0
- package/embedded-knowledge/indexes/tags/actions.json +1 -0
- package/embedded-knowledge/indexes/tags/advanced-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/advanced.json +1 -0
- package/embedded-knowledge/indexes/tags/al-extension.json +1 -0
- package/embedded-knowledge/indexes/tags/al-generics.json +1 -0
- package/embedded-knowledge/indexes/tags/al-objects.json +1 -0
- package/embedded-knowledge/indexes/tags/al-syntax.json +1 -0
- package/embedded-knowledge/indexes/tags/algorithm-structure.json +1 -0
- package/embedded-knowledge/indexes/tags/alternatives.json +1 -0
- package/embedded-knowledge/indexes/tags/analytics.json +1 -0
- package/embedded-knowledge/indexes/tags/api-delegates.json +1 -0
- package/embedded-knowledge/indexes/tags/api-design.json +1 -0
- package/embedded-knowledge/indexes/tags/api-documentation.json +1 -0
- package/embedded-knowledge/indexes/tags/api-endpoints.json +1 -0
- package/embedded-knowledge/indexes/tags/api-extensibility.json +1 -0
- package/embedded-knowledge/indexes/tags/api-fieldsets.json +1 -0
- package/embedded-knowledge/indexes/tags/api-integration.json +1 -0
- package/embedded-knowledge/indexes/tags/api-interfaces.json +1 -0
- package/embedded-knowledge/indexes/tags/api-optimization.json +1 -0
- package/embedded-knowledge/indexes/tags/api-pages.json +1 -0
- package/embedded-knowledge/indexes/tags/api-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/api-permissions.json +1 -0
- package/embedded-knowledge/indexes/tags/api-responses.json +1 -0
- package/embedded-knowledge/indexes/tags/api-simplification.json +1 -0
- package/embedded-knowledge/indexes/tags/api.json +1 -0
- package/embedded-knowledge/indexes/tags/architecture.json +1 -0
- package/embedded-knowledge/indexes/tags/async-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/async-processing.json +1 -0
- package/embedded-knowledge/indexes/tags/automatic-registration.json +1 -0
- package/embedded-knowledge/indexes/tags/batch-operations.json +1 -0
- package/embedded-knowledge/indexes/tags/bc24-migration.json +1 -0
- package/embedded-knowledge/indexes/tags/begin-blocks.json +1 -0
- package/embedded-knowledge/indexes/tags/begin-end.json +1 -0
- package/embedded-knowledge/indexes/tags/behavioral-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/best-practices.json +1 -0
- package/embedded-knowledge/indexes/tags/binding.json +1 -0
- package/embedded-knowledge/indexes/tags/block-structure.json +1 -0
- package/embedded-knowledge/indexes/tags/blocks.json +1 -0
- package/embedded-knowledge/indexes/tags/boolean-expressions.json +1 -0
- package/embedded-knowledge/indexes/tags/branching.json +1 -0
- package/embedded-knowledge/indexes/tags/breaking-changes.json +1 -0
- package/embedded-knowledge/indexes/tags/breakpoints.json +1 -0
- package/embedded-knowledge/indexes/tags/business-foundation.json +1 -0
- package/embedded-knowledge/indexes/tags/business-infrastructure.json +1 -0
- package/embedded-knowledge/indexes/tags/business-process.json +1 -0
- package/embedded-knowledge/indexes/tags/business-rules.json +1 -0
- package/embedded-knowledge/indexes/tags/caching.json +1 -0
- package/embedded-knowledge/indexes/tags/case-statements.json +1 -0
- package/embedded-knowledge/indexes/tags/case.json +1 -0
- package/embedded-knowledge/indexes/tags/code-analysis.json +1 -0
- package/embedded-knowledge/indexes/tags/code-clarity.json +1 -0
- package/embedded-knowledge/indexes/tags/code-comprehension.json +1 -0
- package/embedded-knowledge/indexes/tags/code-conversion.json +1 -0
- package/embedded-knowledge/indexes/tags/code-formatting.json +1 -0
- package/embedded-knowledge/indexes/tags/code-organization.json +1 -0
- package/embedded-knowledge/indexes/tags/code-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/code-quality.json +1 -0
- package/embedded-knowledge/indexes/tags/code-reuse.json +1 -0
- package/embedded-knowledge/indexes/tags/code-simplification.json +1 -0
- package/embedded-knowledge/indexes/tags/code-standards.json +1 -0
- package/embedded-knowledge/indexes/tags/code-structure.json +1 -0
- package/embedded-knowledge/indexes/tags/code-style.json +1 -0
- package/embedded-knowledge/indexes/tags/codeunit-design.json +1 -0
- package/embedded-knowledge/indexes/tags/command-queue.json +1 -0
- package/embedded-knowledge/indexes/tags/comments.json +1 -0
- package/embedded-knowledge/indexes/tags/compile-time-validation.json +1 -0
- package/embedded-knowledge/indexes/tags/complex-facade.json +1 -0
- package/embedded-knowledge/indexes/tags/complexity-hiding.json +1 -0
- package/embedded-knowledge/indexes/tags/complexity-management.json +1 -0
- package/embedded-knowledge/indexes/tags/compound-statements.json +1 -0
- package/embedded-knowledge/indexes/tags/concurrency.json +1 -0
- package/embedded-knowledge/indexes/tags/conditional-logic.json +1 -0
- package/embedded-knowledge/indexes/tags/conditional.json +1 -0
- package/embedded-knowledge/indexes/tags/conflict-resolution.json +1 -0
- package/embedded-knowledge/indexes/tags/consistency.json +1 -0
- package/embedded-knowledge/indexes/tags/contract-design.json +1 -0
- package/embedded-knowledge/indexes/tags/control-flow.json +1 -0
- package/embedded-knowledge/indexes/tags/conversion-guide.json +1 -0
- package/embedded-knowledge/indexes/tags/correlation.json +1 -0
- package/embedded-knowledge/indexes/tags/custom-messages.json +1 -0
- package/embedded-knowledge/indexes/tags/data-access.json +1 -0
- package/embedded-knowledge/indexes/tags/data-exposure.json +1 -0
- package/embedded-knowledge/indexes/tags/data-integrity.json +1 -0
- package/embedded-knowledge/indexes/tags/data-loading.json +1 -0
- package/embedded-knowledge/indexes/tags/data-manipulation.json +1 -0
- package/embedded-knowledge/indexes/tags/data-modeling.json +1 -0
- package/embedded-knowledge/indexes/tags/data-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/data-protection.json +1 -0
- package/embedded-knowledge/indexes/tags/data-validation.json +1 -0
- package/embedded-knowledge/indexes/tags/database.json +1 -0
- package/embedded-knowledge/indexes/tags/debugging.json +1 -0
- package/embedded-knowledge/indexes/tags/decision-making.json +1 -0
- package/embedded-knowledge/indexes/tags/declaration.json +1 -0
- package/embedded-knowledge/indexes/tags/default-messages.json +1 -0
- package/embedded-knowledge/indexes/tags/defensive-programming.json +1 -0
- package/embedded-knowledge/indexes/tags/deleteall.json +1 -0
- package/embedded-knowledge/indexes/tags/dependencies.json +1 -0
- package/embedded-knowledge/indexes/tags/deployment.json +1 -0
- package/embedded-knowledge/indexes/tags/developer-productivity.json +1 -0
- package/embedded-knowledge/indexes/tags/development-workflow.json +1 -0
- package/embedded-knowledge/indexes/tags/diagnostics.json +1 -0
- package/embedded-knowledge/indexes/tags/dimensions.json +1 -0
- package/embedded-knowledge/indexes/tags/documentation.json +1 -0
- package/embedded-knowledge/indexes/tags/early-exit.json +1 -0
- package/embedded-knowledge/indexes/tags/else-clauses.json +1 -0
- package/embedded-knowledge/indexes/tags/end-statements.json +1 -0
- package/embedded-knowledge/indexes/tags/enterprise-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/entity-relationships.json +1 -0
- package/embedded-knowledge/indexes/tags/error-handling.json +1 -0
- package/embedded-knowledge/indexes/tags/error-messages.json +1 -0
- package/embedded-knowledge/indexes/tags/error-prevention.json +1 -0
- package/embedded-knowledge/indexes/tags/error-text.json +1 -0
- package/embedded-knowledge/indexes/tags/etag.json +1 -0
- package/embedded-knowledge/indexes/tags/event-bridge.json +1 -0
- package/embedded-knowledge/indexes/tags/event-payload.json +1 -0
- package/embedded-knowledge/indexes/tags/event-routing.json +1 -0
- package/embedded-knowledge/indexes/tags/events.json +1 -0
- package/embedded-knowledge/indexes/tags/execution-flow.json +1 -0
- package/embedded-knowledge/indexes/tags/expressions.json +1 -0
- package/embedded-knowledge/indexes/tags/extensibility.json +1 -0
- package/embedded-knowledge/indexes/tags/extensions.json +1 -0
- package/embedded-knowledge/indexes/tags/facade-composition.json +1 -0
- package/embedded-knowledge/indexes/tags/facade-pattern.json +1 -0
- package/embedded-knowledge/indexes/tags/field-control.json +1 -0
- package/embedded-knowledge/indexes/tags/field-exclusion.json +1 -0
- package/embedded-knowledge/indexes/tags/field-registration.json +1 -0
- package/embedded-knowledge/indexes/tags/field-state.json +1 -0
- package/embedded-knowledge/indexes/tags/field-validation.json +1 -0
- package/embedded-knowledge/indexes/tags/fielderror.json +1 -0
- package/embedded-knowledge/indexes/tags/fields.json +1 -0
- package/embedded-knowledge/indexes/tags/filtering.json +1 -0
- package/embedded-knowledge/indexes/tags/filters.json +1 -0
- package/embedded-knowledge/indexes/tags/formatting.json +1 -0
- package/embedded-knowledge/indexes/tags/generic-methods.json +1 -0
- package/embedded-knowledge/indexes/tags/http-status.json +1 -0
- package/embedded-knowledge/indexes/tags/if-statements.json +1 -0
- package/embedded-knowledge/indexes/tags/implementation.json +1 -0
- package/embedded-knowledge/indexes/tags/indentation.json +1 -0
- package/embedded-knowledge/indexes/tags/index-summary.json +277 -0
- package/embedded-knowledge/indexes/tags/indexing.json +1 -0
- package/embedded-knowledge/indexes/tags/inheritance.json +1 -0
- package/embedded-knowledge/indexes/tags/integration.json +1 -0
- package/embedded-knowledge/indexes/tags/integrity-checking.json +1 -0
- package/embedded-knowledge/indexes/tags/intellisense.json +1 -0
- package/embedded-knowledge/indexes/tags/interface-design.json +1 -0
- package/embedded-knowledge/indexes/tags/interface-segregation.json +1 -0
- package/embedded-knowledge/indexes/tags/isolation.json +1 -0
- package/embedded-knowledge/indexes/tags/job-processing.json +1 -0
- package/embedded-knowledge/indexes/tags/keyboard-navigation.json +1 -0
- package/embedded-knowledge/indexes/tags/keywords.json +1 -0
- package/embedded-knowledge/indexes/tags/legacy-modernization.json +1 -0
- package/embedded-knowledge/indexes/tags/line-breaks.json +1 -0
- package/embedded-knowledge/indexes/tags/line-organization.json +1 -0
- package/embedded-knowledge/indexes/tags/line-positioning.json +1 -0
- package/embedded-knowledge/indexes/tags/localization.json +1 -0
- package/embedded-knowledge/indexes/tags/logging.json +1 -0
- package/embedded-knowledge/indexes/tags/loose-coupling.json +1 -0
- package/embedded-knowledge/indexes/tags/maintainability.json +1 -0
- package/embedded-knowledge/indexes/tags/memory-management.json +1 -0
- package/embedded-knowledge/indexes/tags/memory-optimization.json +1 -0
- package/embedded-knowledge/indexes/tags/memory.json +1 -0
- package/embedded-knowledge/indexes/tags/message-design.json +1 -0
- package/embedded-knowledge/indexes/tags/message-formatting.json +1 -0
- package/embedded-knowledge/indexes/tags/message-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/metadata-driven.json +1 -0
- package/embedded-knowledge/indexes/tags/method-comparison.json +1 -0
- package/embedded-knowledge/indexes/tags/module-architecture.json +1 -0
- package/embedded-knowledge/indexes/tags/module-validation.json +1 -0
- package/embedded-knowledge/indexes/tags/monitoring.json +1 -0
- package/embedded-knowledge/indexes/tags/multi-layer-facade.json +1 -0
- package/embedded-knowledge/indexes/tags/multi-tenancy.json +1 -0
- package/embedded-knowledge/indexes/tags/multiple-values.json +1 -0
- package/embedded-knowledge/indexes/tags/naming-conventions.json +1 -0
- package/embedded-knowledge/indexes/tags/naming.json +1 -0
- package/embedded-knowledge/indexes/tags/navigation.json +1 -0
- package/embedded-knowledge/indexes/tags/nested-statements.json +1 -0
- package/embedded-knowledge/indexes/tags/no-series-conversion.json +1 -0
- package/embedded-knowledge/indexes/tags/no-series-validation.json +1 -0
- package/embedded-knowledge/indexes/tags/no-series.json +1 -0
- package/embedded-knowledge/indexes/tags/number-generation.json +1 -0
- package/embedded-knowledge/indexes/tags/object-documentation.json +1 -0
- package/embedded-knowledge/indexes/tags/odata.json +1 -0
- package/embedded-knowledge/indexes/tags/ondelete.json +1 -0
- package/embedded-knowledge/indexes/tags/onvalidate.json +1 -0
- package/embedded-knowledge/indexes/tags/operation-delegation.json +1 -0
- package/embedded-knowledge/indexes/tags/operation-safety.json +1 -0
- package/embedded-knowledge/indexes/tags/operators.json +1 -0
- package/embedded-knowledge/indexes/tags/optimization.json +1 -0
- package/embedded-knowledge/indexes/tags/order.json +1 -0
- package/embedded-knowledge/indexes/tags/organization.json +1 -0
- package/embedded-knowledge/indexes/tags/pages.json +1 -0
- package/embedded-knowledge/indexes/tags/parameters.json +1 -0
- package/embedded-knowledge/indexes/tags/patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/performance-optimization.json +1 -0
- package/embedded-knowledge/indexes/tags/performance.json +1 -0
- package/embedded-knowledge/indexes/tags/placement.json +1 -0
- package/embedded-knowledge/indexes/tags/posting-codeunits.json +1 -0
- package/embedded-knowledge/indexes/tags/posting.json +1 -0
- package/embedded-knowledge/indexes/tags/preconditions.json +1 -0
- package/embedded-knowledge/indexes/tags/primary-key.json +1 -0
- package/embedded-knowledge/indexes/tags/privacy.json +1 -0
- package/embedded-knowledge/indexes/tags/process-automation.json +1 -0
- package/embedded-knowledge/indexes/tags/production.json +1 -0
- package/embedded-knowledge/indexes/tags/productivity.json +1 -0
- package/embedded-knowledge/indexes/tags/query-performance.json +1 -0
- package/embedded-knowledge/indexes/tags/queue-management.json +1 -0
- package/embedded-knowledge/indexes/tags/ranges.json +1 -0
- package/embedded-knowledge/indexes/tags/readability.json +1 -0
- package/embedded-knowledge/indexes/tags/record-access.json +1 -0
- package/embedded-knowledge/indexes/tags/record-methods.json +1 -0
- package/embedded-knowledge/indexes/tags/refactoring.json +1 -0
- package/embedded-knowledge/indexes/tags/reference.json +1 -0
- package/embedded-knowledge/indexes/tags/repeat-loops.json +1 -0
- package/embedded-knowledge/indexes/tags/repeat-statement.json +1 -0
- package/embedded-knowledge/indexes/tags/runtime-errors.json +1 -0
- package/embedded-knowledge/indexes/tags/runtime.json +1 -0
- package/embedded-knowledge/indexes/tags/safeguards.json +1 -0
- package/embedded-knowledge/indexes/tags/security.json +1 -0
- package/embedded-knowledge/indexes/tags/sequence-management.json +1 -0
- package/embedded-knowledge/indexes/tags/serialization.json +1 -0
- package/embedded-knowledge/indexes/tags/session-logmessage.json +1 -0
- package/embedded-knowledge/indexes/tags/session.json +1 -0
- package/embedded-knowledge/indexes/tags/setloadfields.json +1 -0
- package/embedded-knowledge/indexes/tags/shortcuts.json +1 -0
- package/embedded-knowledge/indexes/tags/sift.json +1 -0
- package/embedded-knowledge/indexes/tags/singleinstance.json +1 -0
- package/embedded-knowledge/indexes/tags/spacing.json +1 -0
- package/embedded-knowledge/indexes/tags/sql-translation.json +1 -0
- package/embedded-knowledge/indexes/tags/standards.json +1 -0
- package/embedded-knowledge/indexes/tags/statements.json +1 -0
- package/embedded-knowledge/indexes/tags/streaming.json +1 -0
- package/embedded-knowledge/indexes/tags/strong-typing.json +1 -0
- package/embedded-knowledge/indexes/tags/structural-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/structure.json +1 -0
- package/embedded-knowledge/indexes/tags/subscribers.json +1 -0
- package/embedded-knowledge/indexes/tags/switch.json +1 -0
- package/embedded-knowledge/indexes/tags/symbol-search.json +1 -0
- package/embedded-knowledge/indexes/tags/syntax.json +1 -0
- package/embedded-knowledge/indexes/tags/systemid.json +1 -0
- package/embedded-knowledge/indexes/tags/table-configuration.json +1 -0
- package/embedded-knowledge/indexes/tags/table-events.json +1 -0
- package/embedded-knowledge/indexes/tags/table-keys.json +1 -0
- package/embedded-knowledge/indexes/tags/table-safety.json +1 -0
- package/embedded-knowledge/indexes/tags/task-scheduler.json +1 -0
- package/embedded-knowledge/indexes/tags/telemetry.json +1 -0
- package/embedded-knowledge/indexes/tags/template-method.json +1 -0
- package/embedded-knowledge/indexes/tags/temporary-tables.json +1 -0
- package/embedded-knowledge/indexes/tags/testfield.json +1 -0
- package/embedded-knowledge/indexes/tags/tradeoffs.json +1 -0
- package/embedded-knowledge/indexes/tags/triggers.json +1 -0
- package/embedded-knowledge/indexes/tags/troubleshooting.json +1 -0
- package/embedded-knowledge/indexes/tags/type-safety.json +1 -0
- package/embedded-knowledge/indexes/tags/url-structure.json +1 -0
- package/embedded-knowledge/indexes/tags/user-experience.json +1 -0
- package/embedded-knowledge/indexes/tags/user-feedback.json +1 -0
- package/embedded-knowledge/indexes/tags/user-interface.json +1 -0
- package/embedded-knowledge/indexes/tags/validation-feedback.json +1 -0
- package/embedded-knowledge/indexes/tags/validation.json +1 -0
- package/embedded-knowledge/indexes/tags/variables.json +1 -0
- package/embedded-knowledge/indexes/tags/verbosity.json +1 -0
- package/embedded-knowledge/indexes/tags/vs-code.json +1 -0
- package/embedded-knowledge/indexes/tags/web-services.json +1 -0
- package/embedded-knowledge/indexes/tags/workflow-management.json +1 -0
- package/embedded-knowledge/indexes/tags/workflow-optimization.json +1 -0
- package/embedded-knowledge/indexes/tags/workflow-templates.json +1 -0
- package/embedded-knowledge/indexes/tags/workspace.json +1 -0
- package/embedded-knowledge/indexes/tags/xml-documentation.json +1 -0
- package/embedded-knowledge/indexes/topic-relationships.json +128 -0
- package/embedded-knowledge/methodologies/index.json +81 -0
- package/embedded-knowledge/methodologies/phases/analysis-full.md +208 -0
- package/embedded-knowledge/methodologies/phases/analysis-quick.md +44 -0
- package/embedded-knowledge/methodologies/phases/analysis.md +182 -0
- package/embedded-knowledge/methodologies/phases/execution-validation-full.md +174 -0
- package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +31 -0
- package/embedded-knowledge/methodologies/phases/execution-validation.md +174 -0
- package/embedded-knowledge/methodologies/phases/performance-full.md +211 -0
- package/embedded-knowledge/methodologies/phases/performance-quick.md +32 -0
- package/embedded-knowledge/methodologies/phases/performance.md +211 -0
- package/embedded-knowledge/methodologies/phases/verification-full.md +162 -0
- package/embedded-knowledge/methodologies/phases/verification-quick.md +48 -0
- package/embedded-knowledge/methodologies/phases/verification.md +146 -0
- package/embedded-knowledge/methodologies/workflow-enforcement.md +142 -0
- package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +99 -0
- package/embedded-knowledge/methodologies/workflows/proposal-review-workflow.md +535 -0
- package/embedded-knowledge/specialists/alex-architect.md +305 -0
- package/embedded-knowledge/specialists/casey-copilot.md +314 -0
- package/embedded-knowledge/specialists/chris-config.md +226 -0
- package/embedded-knowledge/specialists/dean-debug.md +365 -0
- package/embedded-knowledge/specialists/eva-errors.md +291 -0
- package/embedded-knowledge/specialists/jordan-bridge.md +291 -0
- package/embedded-knowledge/specialists/logan-legacy.md +265 -0
- package/embedded-knowledge/specialists/maya-mentor.md +299 -0
- package/embedded-knowledge/specialists/morgan-market.md +281 -0
- package/embedded-knowledge/specialists/parker-pragmatic.md +564 -0
- package/embedded-knowledge/specialists/quinn-tester.md +323 -0
- package/embedded-knowledge/specialists/roger-reviewer.md +317 -0
- package/embedded-knowledge/specialists/sam-coder.md +342 -0
- package/embedded-knowledge/specialists/seth-security.md +290 -0
- package/embedded-knowledge/specialists/taylor-docs.md +312 -0
- package/embedded-knowledge/specialists/uma-ux.md +291 -0
- 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.
|