Skip to content

Correct table-level data classification guidance - #131

Merged
Wenjie Fan (gggdttt) merged 3 commits into
mainfrom
gggdttt-fix-privacy-classification-guidance
Aug 18, 2026
Merged

Correct table-level data classification guidance#131
Wenjie Fan (gggdttt) merged 3 commits into
mainfrom
gggdttt-fix-privacy-classification-guidance

Conversation

@gggdttt

Copy link
Copy Markdown
Collaborator

Summary

  • correct the privacy guidance to state that a valid table-level DataClassification is inherited by fields unless they override it
  • update the companion fixture and related PII guidance to distinguish inherited defaults from genuinely unclassified fields

Precision impact

BCApps #9663 received 19 thumbs-down privacy comments caused by the previous guidance requiring redundant field-level declarations. The corrected article should suppress that false-positive pattern while preserving findings for fields whose inherited classification is missing or does not match their data.

The behavior was independently verified with the AL 18 AppSourceCop: AS0016 accepted Normal fields inheriting a valid table classification and reported the equivalent field when no table or field classification existed.

Validation

  • frontmatter and structure validation
  • AL review fixture validation
  • deterministic knowledge-index validation

Document that valid table-level classifications are inherited by fields and update the privacy fixture and related guidance accordingly.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
wenjiefan and others added 2 commits August 17, 2026 15:14
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>
…ation

The requirement to declare DataClassification explicitly in a tableextension
applies to the Normal fields it adds; FlowFields and FlowFilters are
SystemMetadata automatically and are covered by their own article. Being
added by a table extension is also not itself a finding - the finding is a
Normal field added by a table extension that has no valid explicit
DataClassification.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@gggdttt
Wenjie Fan (gggdttt) merged commit 841b4e7 into main Aug 18, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants