| bc-version |
domain |
keywords |
technologies |
countries |
application-area |
|
|
privacy |
| strsubstno |
| error |
| telemetry |
| pii |
| prebuild |
| text-variable |
|
|
|
|
Pass a Label directly as the first Error argument
Description
Error method trace telemetry includes the AL error string only when the first Error argument is a Label or TextConst. Wrapping a label in StrSubstNo, or concatenating labels or text, produces a dynamic Text first argument. In that case the actual string is not emitted as the telemetry message; the platform emits its generic guidance instead. CodeCop AA0231 flags both shapes because the label identity and data-classification context are lost.
Best Practice
Declare the complete message as a Label or TextConst and pass it directly to Error, followed by substitution values. The client receives the formatted message while telemetry retains the static message template without using the dynamic values as its message. Independently review whether each substitution value is appropriate to show to the current user.
See sample: avoid-strsubstno-prebuild-before-error.good.al.
Anti Pattern
Error(StrSubstNo(CustomerInvalidErr, Customer."No.")) and Error(HeaderErr + DetailErr) both make the first argument dynamic. They reduce error telemetry quality; they do not cause that composed string to be logged verbatim as the telemetry message.
See sample: avoid-strsubstno-prebuild-before-error.bad.al.