Explicitly set Extensible property on public objects

Properties
PC0005 Hidden Design Code Fix Ignore Obsolete

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 Extensible property is not set.
  • For tables: the object has public access (the default). Tables with Access = Internal are 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.