@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,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Performance Analysis Without Telemetry Data"
|
|
3
|
+
domain: "dean-debug"
|
|
4
|
+
difficulty: "intermediate"
|
|
5
|
+
bc_versions: "14+"
|
|
6
|
+
tags: ["telemetry", "performance", "tooling", "recommendations"]
|
|
7
|
+
conditional_mcp_missing: "bc-telemetry-buddy"
|
|
8
|
+
estimated_time: "5 minutes"
|
|
9
|
+
last_updated: "2025-10-27"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Performance Analysis Without Telemetry Data
|
|
13
|
+
|
|
14
|
+
## ⚠️ Current Limitation
|
|
15
|
+
|
|
16
|
+
I notice you don't have **BC Telemetry Buddy** configured in your MCP environment. While I can provide theoretical performance guidance based on BC best practices, I'm working **without real performance data** from your specific environment.
|
|
17
|
+
|
|
18
|
+
## What You're Missing
|
|
19
|
+
|
|
20
|
+
### Data-Driven Performance Insights
|
|
21
|
+
Without telemetry access, I cannot provide:
|
|
22
|
+
|
|
23
|
+
- ✅ **Real query execution times** from your production or test environments
|
|
24
|
+
- ✅ **Actual database performance metrics** showing bottlenecks
|
|
25
|
+
- ✅ **Customer-specific telemetry analysis** for multi-tenant scenarios
|
|
26
|
+
- ✅ **Production event tracking** to identify real-world issues
|
|
27
|
+
- ✅ **SQL execution patterns** from actual AL code execution
|
|
28
|
+
- ✅ **Page rendering performance** with real timing data
|
|
29
|
+
- ✅ **Report generation metrics** showing actual processing times
|
|
30
|
+
|
|
31
|
+
### Example: What Telemetry Data Shows
|
|
32
|
+
|
|
33
|
+
**Instead of saying:**
|
|
34
|
+
> "Database queries might be slow - consider adding SIFT keys"
|
|
35
|
+
|
|
36
|
+
**I could say:**
|
|
37
|
+
> "I found 47 database calls in your Sales Order page taking over 2 seconds each. The Item Ledger Entry queries are causing 80% of your performance issues. Here are the specific SIFT keys that will eliminate this bottleneck: FlowField X needs [Field1, Field2, Field3]"
|
|
38
|
+
|
|
39
|
+
## Why BC Telemetry Buddy is Valuable
|
|
40
|
+
|
|
41
|
+
### Real-Time Performance Analysis
|
|
42
|
+
- **Discovery-First Workflow**: Find what events are actually being logged
|
|
43
|
+
- **Field Sampling**: See actual data values before querying
|
|
44
|
+
- **Targeted KQL Queries**: Query exactly what you need
|
|
45
|
+
- **Query Library**: Save and reuse performance queries
|
|
46
|
+
- **External Context**: Access BCTech sample queries
|
|
47
|
+
|
|
48
|
+
### 11 Powerful MCP Tools
|
|
49
|
+
1. **Discovery Tools**
|
|
50
|
+
- `bctb_get_event_catalog` - Browse available telemetry events
|
|
51
|
+
- `bctb_get_event_field_samples` - Sample field values before querying
|
|
52
|
+
- `bctb_get_event_schema` - Understand event structure
|
|
53
|
+
- `bctb_get_categories` - Event categorization
|
|
54
|
+
|
|
55
|
+
2. **Query Tools**
|
|
56
|
+
- `bctb_query_telemetry` - Execute KQL queries against real data
|
|
57
|
+
- `bctb_get_tenant_mapping` - Multi-customer analysis
|
|
58
|
+
|
|
59
|
+
3. **Library Tools**
|
|
60
|
+
- `bctb_get_saved_queries` - Access saved query patterns
|
|
61
|
+
- `bctb_search_queries` - Find relevant queries
|
|
62
|
+
- `bctb_save_query` - Save useful patterns
|
|
63
|
+
- `bctb_get_external_queries` - BCTech community queries
|
|
64
|
+
|
|
65
|
+
4. **Analysis Tools**
|
|
66
|
+
- `bctb_get_recommendations` - AI-driven performance recommendations
|
|
67
|
+
|
|
68
|
+
## Installation Instructions
|
|
69
|
+
|
|
70
|
+
### 1. Install BC Telemetry Buddy MCP Server
|
|
71
|
+
|
|
72
|
+
Add to your MCP settings (VS Code: `.vscode/settings.json`):
|
|
73
|
+
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"mcp.servers": {
|
|
77
|
+
"bc-telemetry-buddy": {
|
|
78
|
+
"command": "npx",
|
|
79
|
+
"args": ["bc-telemetry-buddy"]
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Or for Claude Desktop (`claude_desktop_config.json`):
|
|
86
|
+
|
|
87
|
+
```json
|
|
88
|
+
{
|
|
89
|
+
"mcpServers": {
|
|
90
|
+
"bc-telemetry-buddy": {
|
|
91
|
+
"command": "npx",
|
|
92
|
+
"args": ["bc-telemetry-buddy"]
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 2. Configure Telemetry Access
|
|
99
|
+
|
|
100
|
+
BC Telemetry Buddy needs access to your Application Insights or Kusto query environment. Follow the setup guide at:
|
|
101
|
+
https://github.com/waldo1001/waldo.BCTelemetryBuddy
|
|
102
|
+
|
|
103
|
+
### 3. Update Workspace Configuration
|
|
104
|
+
|
|
105
|
+
Once installed, let me know it's available:
|
|
106
|
+
|
|
107
|
+
```json
|
|
108
|
+
{
|
|
109
|
+
"tool": "set_workspace_info",
|
|
110
|
+
"arguments": {
|
|
111
|
+
"path": "C:\\Your\\Workspace\\Path",
|
|
112
|
+
"available_mcps": ["bc-telemetry-buddy"]
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**Dynamic Knowledge Loading**: Once you report BC Telemetry Buddy as available, I'll automatically gain access to data-driven analysis capabilities without requiring an MCP server restart!
|
|
118
|
+
|
|
119
|
+
## Fallback: Theoretical Guidance
|
|
120
|
+
|
|
121
|
+
Until you have telemetry access, I can still help with:
|
|
122
|
+
|
|
123
|
+
### Performance Best Practices
|
|
124
|
+
- SIFT key design principles
|
|
125
|
+
- Query optimization patterns
|
|
126
|
+
- Caching strategies
|
|
127
|
+
- Background processing approaches
|
|
128
|
+
|
|
129
|
+
### Code Review Guidance
|
|
130
|
+
- Anti-patterns that typically cause performance issues
|
|
131
|
+
- FlowField design recommendations
|
|
132
|
+
- Table relationship optimization
|
|
133
|
+
- Report design best practices
|
|
134
|
+
|
|
135
|
+
### Proactive Recommendations
|
|
136
|
+
- "Based on your code, this pattern *typically* causes issues..."
|
|
137
|
+
- "Industry standard is to add SIFT keys for these fields..."
|
|
138
|
+
- "Consider testing with large datasets to verify performance..."
|
|
139
|
+
|
|
140
|
+
## The Difference
|
|
141
|
+
|
|
142
|
+
### Theoretical (Current)
|
|
143
|
+
> "FlowFields can be slow. Consider adding SIFT keys for commonly filtered fields."
|
|
144
|
+
|
|
145
|
+
### Data-Driven (With Telemetry)
|
|
146
|
+
> "Your Customer.Balance FlowField is queried 1,847 times per hour with 94% using Status filter. Adding SIFT key [Status,Posting Date] will reduce execution time from 2.4s to 120ms - a 20x improvement."
|
|
147
|
+
|
|
148
|
+
## Next Steps
|
|
149
|
+
|
|
150
|
+
1. **Install BC Telemetry Buddy** following instructions above
|
|
151
|
+
2. **Configure telemetry access** to your BC environment
|
|
152
|
+
3. **Update workspace info** to report MCP availability
|
|
153
|
+
4. **Ask me the same performance question again** - you'll get data-driven insights!
|
|
154
|
+
|
|
155
|
+
## See Also
|
|
156
|
+
|
|
157
|
+
- [BC Telemetry Buddy GitHub](https://github.com/waldo1001/waldo.BCTelemetryBuddy)
|
|
158
|
+
- [Performance Profiling](./performance-profiling.md) - Theoretical guidance
|
|
159
|
+
- [Database Optimization](./database-optimization.md) - Best practices
|
|
160
|
+
- [Caching Strategies](./caching-strategies.md) - BC caching patterns
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# BC24 No. Series Conversion Examples
|
|
2
|
+
|
|
3
|
+
## Complete Conversion Examples
|
|
4
|
+
|
|
5
|
+
### Sales Document Conversion
|
|
6
|
+
```al
|
|
7
|
+
// BEFORE (BC14-23): Legacy NoSeriesManagement approach
|
|
8
|
+
table 50100 "Sales Document"
|
|
9
|
+
{
|
|
10
|
+
trigger OnInsert()
|
|
11
|
+
var
|
|
12
|
+
NoSeriesMgt: Codeunit NoSeriesManagement;
|
|
13
|
+
begin
|
|
14
|
+
if "No." = '' then
|
|
15
|
+
NoSeriesMgt.InitSeries(GetNoSeriesCode(), xRec."No. Series", 0D, "No.", "No. Series");
|
|
16
|
+
end;
|
|
17
|
+
|
|
18
|
+
procedure GetNoSeriesCode(): Code[20]
|
|
19
|
+
begin
|
|
20
|
+
exit('SALES-DOC');
|
|
21
|
+
end;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// AFTER (BC24+): New No. Series module approach
|
|
25
|
+
table 50100 "Sales Document"
|
|
26
|
+
{
|
|
27
|
+
trigger OnInsert()
|
|
28
|
+
var
|
|
29
|
+
NoSeries: Codeunit "No. Series";
|
|
30
|
+
begin
|
|
31
|
+
if "No." = '' then
|
|
32
|
+
"No." := NoSeries.GetNextNo("No. Series", WorkDate());
|
|
33
|
+
end;
|
|
34
|
+
|
|
35
|
+
procedure GetNoSeriesCode(): Code[20]
|
|
36
|
+
begin
|
|
37
|
+
exit('SALES-DOC');
|
|
38
|
+
end;
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Manual Number Testing Conversion
|
|
43
|
+
```al
|
|
44
|
+
// BEFORE (BC14-23): Multiple method calls for manual testing
|
|
45
|
+
procedure ValidateManualEntry()
|
|
46
|
+
var
|
|
47
|
+
NoSeriesMgt: Codeunit NoSeriesManagement;
|
|
48
|
+
begin
|
|
49
|
+
NoSeriesMgt.TestManual("No. Series");
|
|
50
|
+
if not NoSeriesMgt.ManualNoAllowed("No. Series") then
|
|
51
|
+
Error('Manual numbers not allowed for series %1', "No. Series");
|
|
52
|
+
end;
|
|
53
|
+
|
|
54
|
+
// AFTER (BC24+): Single method with built-in logic
|
|
55
|
+
procedure ValidateManualEntry()
|
|
56
|
+
var
|
|
57
|
+
NoSeries: Codeunit "No. Series";
|
|
58
|
+
begin
|
|
59
|
+
NoSeries.TestManual("No. Series");
|
|
60
|
+
// Built-in error handling provides comprehensive validation
|
|
61
|
+
end;
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Number Peek vs Allocation Conversion
|
|
65
|
+
```al
|
|
66
|
+
// BEFORE (BC14-23): Boolean parameter controls behavior
|
|
67
|
+
procedure GetNumberPreview(): Code[20]
|
|
68
|
+
var
|
|
69
|
+
NoSeriesMgt: Codeunit NoSeriesManagement;
|
|
70
|
+
begin
|
|
71
|
+
exit(NoSeriesMgt.GetNextNo("No. Series", WorkDate(), false)); // Peek only
|
|
72
|
+
end;
|
|
73
|
+
|
|
74
|
+
procedure AllocateNumber(): Code[20]
|
|
75
|
+
var
|
|
76
|
+
NoSeriesMgt: Codeunit NoSeriesManagement;
|
|
77
|
+
begin
|
|
78
|
+
exit(NoSeriesMgt.GetNextNo("No. Series", WorkDate(), true)); // Allocate
|
|
79
|
+
end;
|
|
80
|
+
|
|
81
|
+
// AFTER (BC24+): Explicit method names for clear intent
|
|
82
|
+
procedure GetNumberPreview(): Code[20]
|
|
83
|
+
var
|
|
84
|
+
NoSeries: Codeunit "No. Series";
|
|
85
|
+
begin
|
|
86
|
+
exit(NoSeries.PeekNextNo("No. Series", WorkDate())); // Explicit peek
|
|
87
|
+
end;
|
|
88
|
+
|
|
89
|
+
procedure AllocateNumber(): Code[20]
|
|
90
|
+
var
|
|
91
|
+
NoSeries: Codeunit "No. Series";
|
|
92
|
+
begin
|
|
93
|
+
exit(NoSeries.GetNextNo("No. Series", WorkDate())); // Explicit allocation
|
|
94
|
+
end;
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Event Migration Examples
|
|
98
|
+
|
|
99
|
+
### Replacing Obsolete Events
|
|
100
|
+
```al
|
|
101
|
+
// BEFORE (BC14-23): Event subscriber approach
|
|
102
|
+
[EventSubscriber(ObjectType::Codeunit, Codeunit::NoSeriesManagement, 'OnBeforeGetNextNo', '', true, true)]
|
|
103
|
+
local procedure OnBeforeGetNextNo(NoSeriesCode: Code[20]; var NoSeriesLine: Record "No. Series Line"; var IsHandled: Boolean)
|
|
104
|
+
begin
|
|
105
|
+
// Custom logic before number generation
|
|
106
|
+
if NoSeriesCode = 'SPECIAL-SERIES' then begin
|
|
107
|
+
PerformCustomValidation(NoSeriesCode);
|
|
108
|
+
IsHandled := true;
|
|
109
|
+
end;
|
|
110
|
+
end;
|
|
111
|
+
|
|
112
|
+
// AFTER (BC24+): Direct method call with wrapper
|
|
113
|
+
procedure GetNextNoWithCustomLogic(SeriesCode: Code[20]): Code[20]
|
|
114
|
+
var
|
|
115
|
+
NoSeries: Codeunit "No. Series";
|
|
116
|
+
begin
|
|
117
|
+
// Pre-processing logic (replaces OnBeforeGetNextNo)
|
|
118
|
+
if SeriesCode = 'SPECIAL-SERIES' then
|
|
119
|
+
PerformCustomValidation(SeriesCode);
|
|
120
|
+
|
|
121
|
+
// Get number using new module
|
|
122
|
+
exit(NoSeries.GetNextNo(SeriesCode, WorkDate()));
|
|
123
|
+
end;
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Complex Event Replacement
|
|
127
|
+
```al
|
|
128
|
+
// BEFORE (BC14-23): Multiple event subscriptions
|
|
129
|
+
[EventSubscriber(ObjectType::Codeunit, Codeunit::NoSeriesManagement, 'OnAfterGetNextNo', '', true, true)]
|
|
130
|
+
local procedure OnAfterGetNextNo(NoSeriesCode: Code[20]; NextNo: Code[20])
|
|
131
|
+
begin
|
|
132
|
+
LogNumberAllocation(NoSeriesCode, NextNo);
|
|
133
|
+
UpdateRelatedSeries(NoSeriesCode, NextNo);
|
|
134
|
+
end;
|
|
135
|
+
|
|
136
|
+
// AFTER (BC24+): Integrated procedure with post-processing
|
|
137
|
+
procedure AllocateNumberWithLogging(SeriesCode: Code[20]): Code[20]
|
|
138
|
+
var
|
|
139
|
+
NoSeries: Codeunit "No. Series";
|
|
140
|
+
AllocatedNumber: Code[20];
|
|
141
|
+
begin
|
|
142
|
+
// Allocate number
|
|
143
|
+
AllocatedNumber := NoSeries.GetNextNo(SeriesCode, WorkDate());
|
|
144
|
+
|
|
145
|
+
// Post-processing logic (replaces OnAfterGetNextNo)
|
|
146
|
+
LogNumberAllocation(SeriesCode, AllocatedNumber);
|
|
147
|
+
UpdateRelatedSeries(SeriesCode, AllocatedNumber);
|
|
148
|
+
|
|
149
|
+
exit(AllocatedNumber);
|
|
150
|
+
end;
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Complete Migration Checklist
|
|
154
|
+
|
|
155
|
+
### Step 1: Variable Declaration Updates
|
|
156
|
+
```al
|
|
157
|
+
// Remove these legacy declarations
|
|
158
|
+
var
|
|
159
|
+
NoSeriesMgt: Codeunit NoSeriesManagement;
|
|
160
|
+
|
|
161
|
+
// Replace with new module references
|
|
162
|
+
var
|
|
163
|
+
NoSeries: Codeunit "No. Series";
|
|
164
|
+
NoSeriesBatch: Codeunit "No. Series - Batch";
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Step 2: Method Call Replacements
|
|
168
|
+
```al
|
|
169
|
+
// Replace all instances of these patterns:
|
|
170
|
+
NoSeriesMgt.InitSeries(...) → NoSeries.GetNextNo(...)
|
|
171
|
+
NoSeriesMgt.TestManual(...) → NoSeries.TestManual(...)
|
|
172
|
+
NoSeriesMgt.SelectSeries(...) → NoSeries.LookupRelatedNoSeries(...)
|
|
173
|
+
NoSeriesMgt.GetNextNo(..., false) → NoSeries.PeekNextNo(...)
|
|
174
|
+
NoSeriesMgt.GetNextNo(..., true) → NoSeries.GetNextNo(...)
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Step 3: Error Handling Migration
|
|
178
|
+
```al
|
|
179
|
+
// BEFORE: Custom error handling required
|
|
180
|
+
if not NoSeriesMgt.TryFunction(...) then
|
|
181
|
+
Error('Custom error message');
|
|
182
|
+
|
|
183
|
+
// AFTER: Built-in error handling with try methods
|
|
184
|
+
if not NoSeries.TryGetNextNo(ResultNo, SeriesCode, WorkDate()) then
|
|
185
|
+
HandleSpecificFailureScenario();
|
|
186
|
+
```
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Case Statement Performance Optimization - AL Code Samples
|
|
2
|
+
|
|
3
|
+
## Frequency-Based Ordering
|
|
4
|
+
|
|
5
|
+
```al
|
|
6
|
+
procedure ProcessTransactionOptimized(TransactionType: Text[20]; Amount: Decimal): Boolean
|
|
7
|
+
begin
|
|
8
|
+
// Order by frequency - most common first
|
|
9
|
+
case TransactionType of
|
|
10
|
+
'SALE': // 60% of transactions
|
|
11
|
+
exit(ProcessSaleTransaction(Amount));
|
|
12
|
+
'PAYMENT': // 25% of transactions
|
|
13
|
+
exit(ProcessPaymentTransaction(Amount));
|
|
14
|
+
'REFUND': // 10% of transactions
|
|
15
|
+
exit(ProcessRefundTransaction(Amount));
|
|
16
|
+
else
|
|
17
|
+
exit(ProcessUnknownTransaction(TransactionType, Amount));
|
|
18
|
+
end;
|
|
19
|
+
end;
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Enum vs Text Performance
|
|
23
|
+
|
|
24
|
+
```al
|
|
25
|
+
// Faster enum-based approach
|
|
26
|
+
procedure ProcessTransactionEnum(TransactionType: Enum "Transaction Type"; Amount: Decimal): Boolean
|
|
27
|
+
begin
|
|
28
|
+
case TransactionType of
|
|
29
|
+
TransactionType::Sale:
|
|
30
|
+
exit(ProcessSaleTransaction(Amount));
|
|
31
|
+
TransactionType::Payment:
|
|
32
|
+
exit(ProcessPaymentTransaction(Amount));
|
|
33
|
+
else
|
|
34
|
+
exit(false);
|
|
35
|
+
end;
|
|
36
|
+
end;
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Dictionary Alternative for Large Case Sets
|
|
40
|
+
|
|
41
|
+
```al
|
|
42
|
+
procedure ProcessWithDictionary(ProcessingType: Text[20]; Data: Text): Text
|
|
43
|
+
var
|
|
44
|
+
ProcessingFunctions: Dictionary of [Text, Integer];
|
|
45
|
+
FunctionId: Integer;
|
|
46
|
+
begin
|
|
47
|
+
ProcessingFunctions.Add('FORMAT', 1);
|
|
48
|
+
ProcessingFunctions.Add('VALIDATE', 2);
|
|
49
|
+
ProcessingFunctions.Add('TRANSFORM', 3);
|
|
50
|
+
|
|
51
|
+
if ProcessingFunctions.Get(ProcessingType, FunctionId) then
|
|
52
|
+
case FunctionId of
|
|
53
|
+
1: exit(FormatData(Data));
|
|
54
|
+
2: exit(ValidateData(Data));
|
|
55
|
+
3: exit(TransformData(Data));
|
|
56
|
+
end;
|
|
57
|
+
|
|
58
|
+
exit('Unknown processing type');
|
|
59
|
+
end;
|
|
60
|
+
```
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# AL Compound Statements for Enhanced Debugging Examples
|
|
2
|
+
|
|
3
|
+
## Strategic Breakpoint Placement
|
|
4
|
+
|
|
5
|
+
### Clear Breakpoint Locations with Compound Statements
|
|
6
|
+
```al
|
|
7
|
+
local procedure ProcessCustomerOrder(var SalesHeader: Record "Sales Header"): Boolean
|
|
8
|
+
var
|
|
9
|
+
Customer: Record Customer;
|
|
10
|
+
ValidationResult: Boolean;
|
|
11
|
+
begin
|
|
12
|
+
// Breakpoint here provides clear entry context
|
|
13
|
+
if Customer.Get(SalesHeader."Sell-to Customer No.") then begin
|
|
14
|
+
// Breakpoint here confirms customer retrieval success
|
|
15
|
+
ValidationResult := ValidateCustomerData(Customer);
|
|
16
|
+
|
|
17
|
+
if ValidationResult then begin
|
|
18
|
+
// Breakpoint here enters successful validation path
|
|
19
|
+
if ProcessOrderValidation(SalesHeader) then begin
|
|
20
|
+
// Breakpoint here confirms order validation success
|
|
21
|
+
ProcessApprovedOrder(SalesHeader);
|
|
22
|
+
exit(true);
|
|
23
|
+
end else begin
|
|
24
|
+
// Breakpoint here enters order validation failure path
|
|
25
|
+
LogOrderValidationFailure(SalesHeader."No.");
|
|
26
|
+
exit(false);
|
|
27
|
+
end;
|
|
28
|
+
end else begin
|
|
29
|
+
// Breakpoint here enters customer validation failure path
|
|
30
|
+
LogCustomerValidationFailure(Customer."No.");
|
|
31
|
+
exit(false);
|
|
32
|
+
end;
|
|
33
|
+
end else begin
|
|
34
|
+
// Breakpoint here captures customer not found scenario
|
|
35
|
+
LogCustomerNotFound(SalesHeader."Sell-to Customer No.");
|
|
36
|
+
exit(false);
|
|
37
|
+
end;
|
|
38
|
+
end;
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Exception Context Enhancement
|
|
42
|
+
|
|
43
|
+
### Clear Exception Boundaries with Compound Statements
|
|
44
|
+
```al
|
|
45
|
+
local procedure ProcessDocumentPosting(var GenJournalLine: Record "Gen. Journal Line")
|
|
46
|
+
var
|
|
47
|
+
PostingResult: Boolean;
|
|
48
|
+
begin
|
|
49
|
+
try
|
|
50
|
+
// Compound block provides clear exception scope
|
|
51
|
+
if ValidateJournalLine(GenJournalLine) then begin
|
|
52
|
+
if CheckAccountingPeriod(GenJournalLine."Posting Date") then begin
|
|
53
|
+
PostingResult := PostJournalLine(GenJournalLine);
|
|
54
|
+
|
|
55
|
+
if PostingResult then begin
|
|
56
|
+
// Breakpoint here confirms successful posting
|
|
57
|
+
LogSuccessfulPosting(GenJournalLine."Document No.");
|
|
58
|
+
end else begin
|
|
59
|
+
// Breakpoint here captures posting failure
|
|
60
|
+
LogPostingFailure(GenJournalLine."Document No.");
|
|
61
|
+
end;
|
|
62
|
+
end else begin
|
|
63
|
+
// Breakpoint here captures period validation failure
|
|
64
|
+
Error('Accounting period is closed for date %1', GenJournalLine."Posting Date");
|
|
65
|
+
end;
|
|
66
|
+
end else begin
|
|
67
|
+
// Breakpoint here captures journal line validation failure
|
|
68
|
+
Error('Journal line validation failed');
|
|
69
|
+
end;
|
|
70
|
+
except
|
|
71
|
+
on E: Exception do begin
|
|
72
|
+
// Breakpoint here provides clear exception context
|
|
73
|
+
LogPostingException(GenJournalLine."Document No.", E.Message);
|
|
74
|
+
|
|
75
|
+
if E.Message.Contains('period') then begin
|
|
76
|
+
// Breakpoint here handles period-specific exceptions
|
|
77
|
+
HandlePeriodException(GenJournalLine);
|
|
78
|
+
end else begin
|
|
79
|
+
// Breakpoint here handles general posting exceptions
|
|
80
|
+
HandleGeneralPostingException(GenJournalLine, E);
|
|
81
|
+
end;
|
|
82
|
+
end;
|
|
83
|
+
end;
|
|
84
|
+
end;
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Loop Debugging with Compound Statements
|
|
88
|
+
|
|
89
|
+
### Clear Loop Iteration Boundaries
|
|
90
|
+
```al
|
|
91
|
+
local procedure ProcessItemBatch(var ItemBuffer: Record "Item Buffer")
|
|
92
|
+
var
|
|
93
|
+
ProcessedCount: Integer;
|
|
94
|
+
ErrorCount: Integer;
|
|
95
|
+
CurrentItem: Code[20];
|
|
96
|
+
begin
|
|
97
|
+
ProcessedCount := 0;
|
|
98
|
+
ErrorCount := 0;
|
|
99
|
+
|
|
100
|
+
if ItemBuffer.FindSet() then begin
|
|
101
|
+
// Breakpoint here confirms record set found
|
|
102
|
+
repeat
|
|
103
|
+
CurrentItem := ItemBuffer."No.";
|
|
104
|
+
|
|
105
|
+
// Breakpoint here shows current item being processed
|
|
106
|
+
if ValidateItemData(ItemBuffer) then begin
|
|
107
|
+
// Breakpoint here enters successful validation path
|
|
108
|
+
try
|
|
109
|
+
if UpdateItemCosts(ItemBuffer) then begin
|
|
110
|
+
// Breakpoint here confirms successful cost update
|
|
111
|
+
ProcessedCount += 1;
|
|
112
|
+
LogItemProcessed(CurrentItem);
|
|
113
|
+
end else begin
|
|
114
|
+
// Breakpoint here captures cost update failure
|
|
115
|
+
ErrorCount += 1;
|
|
116
|
+
LogItemError(CurrentItem, 'Cost update failed');
|
|
117
|
+
end;
|
|
118
|
+
except
|
|
119
|
+
on E: Exception do begin
|
|
120
|
+
// Breakpoint here captures processing exceptions
|
|
121
|
+
ErrorCount += 1;
|
|
122
|
+
LogItemException(CurrentItem, E.Message);
|
|
123
|
+
end;
|
|
124
|
+
end;
|
|
125
|
+
end else begin
|
|
126
|
+
// Breakpoint here captures validation failures
|
|
127
|
+
ErrorCount += 1;
|
|
128
|
+
LogItemValidationError(CurrentItem);
|
|
129
|
+
end;
|
|
130
|
+
until ItemBuffer.Next() = 0;
|
|
131
|
+
|
|
132
|
+
// Breakpoint here provides final processing summary
|
|
133
|
+
LogBatchSummary(ProcessedCount, ErrorCount);
|
|
134
|
+
end else begin
|
|
135
|
+
// Breakpoint here captures empty batch scenario
|
|
136
|
+
LogEmptyBatch();
|
|
137
|
+
end;
|
|
138
|
+
end;
|
|
139
|
+
```
|