bcquality/microsoft/knowledge/upgrade/appversion-meaning-depends-on-execution-context.md
Jesper Schulz-Wedde 56b80e6dcf Add knowledge-backed AL development
Add read-only planning and repository-changing development skills so BCQuality
knowledge can guide features, bug fixes, refactors, upgrades, and maintenance
before the existing AL review gate runs. Track Microsoft Learn ingestion and
add development and BCApps-shaped guidance evaluation fixtures.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 638b66d2-9f06-4f60-8781-808709e1485c
2026-09-04 12:53:54 +02:00

1.4 KiB

bc-version domain keywords technologies countries application-area
all
upgrade
appversion
dataversion
moduleinfo
install-codeunit
upgrade-codeunit
version-context
al
w1
all

ModuleInfo.AppVersion changes meaning with execution context

Description

ModuleInfo.AppVersion() is the installed version during normal operation, the version being installed inside install code, and the target version inside upgrade code. It is therefore not the source data version during an upgrade. In upgrade code, DataVersion() describes the version of the existing data, whether from the currently installed app or the version most recently uninstalled.

Best Practice

Interpret AppVersion() as the code package entering the context and DataVersion() as the existing data state. Prefer upgrade tags for controlling individual migration steps; when version information is needed for diagnostics or preconditions, name variables so target app version and source data version cannot be confused.

Anti Pattern

Reading AppVersion() from an upgrade codeunit and treating it as the version being upgraded from. The comparison actually observes the target package and can skip or misroute migration logic.

Reference

Create proper installation and upgrade codeunits