bcquality/community/knowledge/security/guard-bulk-operations-with-istemporary.md
Jesper Schulz-Wedde 0540c7bf6e Reframe seed-article banners as community contribution invitations
The 35 articles still in their seed form previously carried a banner
reading "Seed article. ... Domain stewards should expand, restructure,
and refine as needed." For a community preview, that phrasing reads as
"TODO left in production" to first-time visitors.

Replace all three banner variants (performance-seeded, security-seeded,
community-ported) with a single positive invitation:

> Contributions welcome — open a PR to refine or extend this article.

Content and structure of the articles are unchanged; only the leading
quote block differs. Articles that had their banner fully stripped in
the earlier triage pass (the showcase-grade ten) are unaffected.
2026-04-23 17:31:36 +02:00

1.5 KiB

bc-version domain keywords technologies countries application-area
all
security
istemporary
deleteall
modifyall
safeguard
precondition
al
w1
all

Guard bulk operations with IsTemporary

Contributions welcome — open a PR to refine or extend this article.

Description

An AL helper that accepts a var Rec: Record X parameter and performs a bulk operation (DeleteAll, ModifyAll, or an unfiltered loop that mutates every record) cannot tell from the signature alone whether the caller passed a temporary buffer or the real table. A misuse that passes the real table wipes or rewrites live data at production scale with no earlier warning. A single IsTemporary check at the procedure entry turns a silent-corruption risk into an early, actionable failure.

Best Practice

Any helper designed to operate on a temporary record, and that performs DeleteAll, ModifyAll, or similar bulk writes on its parameter, should call Rec.IsTemporary() at the top and raise a descriptive error when the assumption is violated. The error message should name the parameter so the misuse is easy to locate.

See sample: guard-bulk-operations-with-istemporary.good.al.

Anti Pattern

Trusting documentation or naming conventions alone to signal that a var Rec parameter is expected to be temporary. A future refactor or a copy-paste caller can pass the real table; the bulk operation then executes against production rows silently.

See sample: guard-bulk-operations-with-istemporary.bad.al.