bcquality/microsoft/knowledge/upgrade/minimize-onvalidate-upgrade-triggers.md
Jesper Schulz-Wedde 2b5550c346
Some checks failed
Validate knowledge index / validate-index (push) Has been cancelled
Validate AL review fixtures / validate-review-fixtures (push) Has been cancelled
Validate frontmatter and structure / validate (push) Has been cancelled
Improve partner onboarding and documentation navigation (#174)
Lead with a complete plugin quick start and add task-oriented usage, troubleshooting, customization, and contribution guides. Preserve the broader plugin framing, correct conflicting contract guidance, support Agents folder reviews, and align repository validation. Convert existing sample references to clickable links without changing knowledge rules.

Co-authored-by: Jesper Schulz-Wedde <jesper.schulzwedde@microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-09-09 17:31:03 +02:00

1.1 KiB

bc-version domain keywords technologies countries application-area
all
upgrade
on-validate-upgrade-per-company
performance-impact
bounded-query
justification
read-only-check
al
w1
all

Keep upgrade validation checks bounded

Description

Triggers such as OnValidateUpgradePerCompany run on every upgrade pass. A full-table scan or cross-table validation therefore adds cost to every upgrade of every tenant. Validation is a read-only lifecycle check, so it cannot make itself one-time by writing an upgrade tag.

Best Practice

Filter directly to invalid rows and use IsEmpty or another bounded existence check where possible. If a broad validation is unavoidable, document the invariant that requires it and keep all data changes in OnUpgrade....

See sample: minimize-onvalidate-upgrade-triggers.good.al.

Anti Pattern

Reading every record in OnValidateUpgradePerCompany when a filtered existence check can prove the same invariant. The scan repeats on every upgrade.

See sample: minimize-onvalidate-upgrade-triggers.bad.al.