bcquality/community/knowledge/agents/agent-setup-source-table-is-temporary.md
Stefano Demiliani 53e2cf2fa4
Add community guidance and review support for Business Central agents (#137)
* feat(community/agents): add AL agent quality guidance

- add 20 agent knowledge rules with good and bad AL samples
- clarify setup dialog shape, temporary persistence, permissions, profiles, instructions, capability registration, and interface wiring
- add the community-owned AL agents review skill
- make review fixture discovery layer-aware with custom, community, and Microsoft precedence
- document layer-aware evaluation behavior

* fix(community/agents): align setup and permission samples

- mark agent setup pages as non-extensible where required
- narrow the agent profile by hiding an unrelated sales-order field
- define a dedicated read-only permission set for the sales review agent
- assign AL-defined permission sets with system scope and the owning app ID
- clarify the permission scope guidance for default access controls

* Address agent review feedback
2026-09-02 16:06:25 +02:00

1.3 KiB

bc-version domain keywords technologies countries application-area
27..
agents
sourcetabletemporary
configurationdialog
savechanges
cancel
draft
al
w1
all

Keep the agent setup page source temporary until Update

Description

ConfigurationDialog setup is a draft: the user can Cancel without writing. That only works if SourceTableTemporary = true and custom fields stay in memory until Update. Writing the real table in OnValidate or OnOpenPage commits a partial agent when the dialog errors or is cancelled.

Best Practice

Mark the page SourceTableTemporary = true. Copy into the temp record on open. Persist the Agent Setup buffer and custom fields only from the close path when the action is not Cancel, using Agent Setup.GetChangesMade / SaveChanges.

See sample: agent-setup-source-table-is-temporary.good.al.

Anti Pattern

A non-temporary source table, or Insert/Modify on the persisted setup row from field OnValidate. Detection signal: agent ConfigurationDialog without SourceTableTemporary = true, or database writes before Update.

See sample: agent-setup-source-table-is-temporary.bad.al.

See also

agent-setup-page-is-configuration-dialog.md defines the setup page shape that uses this draft lifecycle.