Explicitly set Extensible property on public objects
When you define a table, page, or report without setting the Extensible
property, the platform defaults it to true. Any dependent app can then create a tableextension, pageextension, or reportextension against the object — whether or not you intended it to be extended.
Once another app extends the object, you can no longer rename or remove its fields without first obsoleting them and waiting through a deprecation cycle. A single missing property turns a quick refactor into a multi-release migration.
Set Extensible explicitly — false when extensions are not part of the design, true when they are.
Example
table 50100 MyTable // Explicitly set Extensible property on public objects [PC0005]
{
fields
{
field(1; MyField; Integer) { }
}
}To prevent dependent apps from extending the object, set Extensible = false:
table 50100 MyTable
{
Extensible = false;
fields
{
field(1; MyField; Integer) { }
}
}When the object is designed for extension, set Extensible = true instead. The code fix applies Extensible = true by default.
When the diagnostic is reported
- The object is a table, page, or report.
- The
Extensibleproperty is not set. - For tables: the object has public access (the default). Tables with
Access = Internalare skipped — see PC0006 .
Code fix
The code fix adds Extensible = true to the object, making the platform default explicit.
Exception
API pages (PageType = API) are excluded because they cannot be extended.