bcquality/microsoft/knowledge/privacy/table-level-data-classification-cascades.good.al
wenjiefan f8acb6cbdd Scope DataClassification inheritance to fields declared in the table
Table-level DataClassification is the effective default only for Normal
fields declared inside that table object. A tableextension cannot set the
property (AL0246) and its added fields do not inherit the base table value,
so AS0016 still requires each of them to classify itself. State this in both
privacy articles so the guidance cannot suppress genuine findings on the
tableextension pattern, which is how most partner code adds fields.

Also narrow the inheritance claim to verified AppSourceCop behaviour rather
than asserting platform-level resolution, and make the sample's table-level
default semantically representative of its fields while keeping a legitimate
field-level override and demonstrating the tableextension boundary.

Verified with alc.exe 18.0.37.11445 + Microsoft.Dynamics.Nav.AppSourceCop.dll:
the revised sample produces no AS0016, and removing the explicit
classification from the tableextension field makes AS0016 fire.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-08-17 15:14:53 +02:00

40 lines
963 B
AL

table 50202 "System Configuration Log"
{
DataClassification = SystemMetadata;
fields
{
field(1; "Entry No."; Integer)
{
}
field(2; "Setting Name"; Text[100])
{
}
field(3; "Changed At"; DateTime)
{
}
field(4; "Changed By"; Code[50])
{
DataClassification = EndUserIdentifiableInformation;
}
}
keys
{
key(PK; "Entry No.") { Clustered = true; }
}
}
tableextension 50203 "System Config Log Correlation" extends "System Configuration Log"
{
fields
{
// A table extension cannot set the table-level property and does not inherit
// the base table's default, so this field must classify itself even though
// SystemMetadata is the value the base table already declares.
field(50203; "Correlation Id"; Guid)
{
DataClassification = SystemMetadata;
}
}
}