bcquality/microsoft/knowledge/breaking-changes/namespace-is-part-of-published-object-identity.md
Jesper Schulz-Wedde e81632b4be Complete AL review knowledge readiness
Fill telemetry and Query coverage, strengthen thin review domains, correct audited content defects, and add deterministic cheap-model evaluation and reference-integrity safeguards.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 9825b012-e653-496a-9310-c1f4b6f8ac27
2026-07-15 07:19:15 +02:00

1.4 KiB

bc-version domain keywords technologies countries application-area
23..
breaking-changes
namespace
published-object
dependency
breaking-change
as0007
compile-time-identity
al
w1
all

Treat a published namespace as part of object identity

Description

AL resolves an object by namespace and name. Once an app ships and dependent extensions compile against that identity, changing the namespace breaks their references even when the object name and ID stay unchanged. AppSourceCop AS0007 rejects changing the namespace of published objects; namespaces are therefore not a cosmetic folder-like label that can be reorganized after release.

Best Practice

Choose a globally meaningful namespace before first publication and keep it stable. Add new functional areas beneath that structure without moving existing published objects. If an identity must move, use the platform's supported move/obsoletion lifecycle rather than a source-only namespace rename.

See sample: namespace-is-part-of-published-object-identity.good.al.

Anti Pattern

Changing namespace Contoso.Rentals; to namespace Contoso.RentalManagement; as a cleanup while leaving the object name and ID untouched. Every dependent using directive and qualified reference targets the old identity and stops compiling.

See sample: namespace-is-part-of-published-object-identity.bad.al.