bcquality/microsoft/knowledge/privacy/getlasterrortext-customer-content-in-errors.md
Jesper Schulz-Wedde aca3986fd0
Correct security and privacy knowledge guidance (#92)
* Correct security and privacy guidance

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

Copilot-Session: 9c2eebc4-dcd5-4b85-8113-90772d818900

* Address security privacy review findings

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

Copilot-Session: 9c2eebc4-dcd5-4b85-8113-90772d818900

---------

Co-authored-by: Jesper Schulz-Wedde <jesper.schulzwedde@microsoft.com>
2026-07-14 11:25:03 +02:00

1.4 KiB

bc-version domain keywords technologies countries application-area
20..
privacy
getlasterrortext
error
strsubstno
telemetry
customer-data
attachment
al
w1
all

Treat GetLastErrorText() as potential customer content

Description

Parameterless GetLastErrorText() can contain customer content such as field values, record keys, and file names. The Boolean overload names its parameter ExcludeCustomerContent; passing true requests scrubbed text and is not the customer-content scenario covered here. When unsanitized error text is passed as a substitution value to an Error whose first argument is a Label or TextConst, the label supplies the Error method trace telemetry message.

Best Practice

Use a generic label when the user does not need the underlying detail. If showing unsanitized detail is appropriate, put %1 in a label and pass parameterless GetLastErrorText() as a separate argument. This preserves a useful static telemetry message while keeping the dynamic value out of the telemetry message field.

See sample: getlasterrortext-customer-content-in-errors.good.al.

Anti Pattern

Error(StrSubstNo(AttachmentFailedErr, GetLastErrorText())) or Error(AttachmentPrefixErr + GetLastErrorText()). Both lose the static first argument and trigger AA0231; neither causes the composed text to be logged verbatim as the Error telemetry message.

See sample: getlasterrortext-customer-content-in-errors.bad.al.