From dynamics-xpp
Use when authoring a DetailsTransaction-pattern form in D365 F&O — the canonical "header + lines" transactional document form (sales order, purchase order, journal). In modern F&O the form carries THREE views — Header view, Line view, Grid view — switched via the panel-tab structure. Header view is compulsory even if initially redundant.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dynamics-xpp:xpp-pattern-details-transactionThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A `DetailsTransaction` form is **a details form with lines**:
DetailsTransaction formA DetailsTransaction form is a details form with lines:
header + lines document, with two details views the user can switch
between — a Header view (all header-related fields) and a Line view
(lines grid + line details + a section of the most important header
fields). In modern F&O the same form also carries the grid view of
all records (the merged-ListPage model).
Canonical examples: sales orders, purchase orders, ledger journals.
Load dynamics-xpp:xpp-form first if you haven't, and read
dynamics-xpp:xpp-pattern-details-master since DetailsTransaction shares the
merged-ListPage structure.
| Use DetailsTransaction when... | Use ... instead |
|---|---|
| Document with header + lines (1-to-many) | — |
| Single record, no lines | dynamics-xpp:xpp-pattern-details-master |
| List + side panel for browsing | dynamics-xpp:xpp-pattern-simple-list-details |
| Multiple peer grids (no obvious header) | dynamics-xpp:xpp-pattern-task-parent-child |
| Read-mostly list entry point | dynamics-xpp:xpp-pattern-list-page |
Design
├── ActionPane (ActionPane)
├── SidePanel (Group) ← navigation list
│ ├── QuickFilter
│ ├── CustomFilters (Group) [Optional]
│ └── NavigationList (Grid, Style=List)
└── PanelTab (Tab ShowTabs=No) ← carries THREE views
├── DetailsPanel (TabPage)
│ ├── TitleGroup (Group)
│ │ ├── HeaderTitle (String)
│ │ └── EntityStatus (Group) [Optional]
│ │ └── StatusFields (1..N)
│ └── HeaderLinePanels (Tab ShowTabs=No) ← switch Header/Line view
│ ├── LinePanel (TabPage PanelStyle=Line)
│ │ └── LineViewTab (Tab Style=FastTabs)
│ │ ├── LineViewHeader (TabPage)
│ │ ├── LineViewLines (TabPage)
│ │ └── LineViewLineDetails (TabPage)
│ │ └── LineDetailsTab (Tab Style=Standard)
│ │ └── LineDetailsTabPages (TabPages 1..N)
│ └── HeaderPanel (TabPage PanelStyle=Header)
│ └── HeaderViewTab (Tab Style=FastTabs)
│ └── HeaderViewTabPages (TabPages 1..N)
└── GridPanel (TabPage PanelStyle=Grid) ← list view (merged ListPage)
├── CustomFilterGroup (Group)
│ ├── QuickFilter
│ └── OtherFilters ($Field) [0..N]
├── MainGrid (Grid)
└── MainGridDefaultAction (CommandButton)
The Header view is compulsory even if initially it carries no more than the Line view's header summary — per MS, it gets extended over time by app teams, internationalization teams, partners, and customers; the consistent structure is required for upgradeability.
Design.Caption not empty.TabPage.Caption not empty.TabPage.DataSource not empty.Key Design properties:
Pattern — DetailsTransactionPatternVersion — typically 1.1Style — DetailsFormTransaction (note: differs from pattern name,
same as DetailsMaster)Caption, DataSource, TitleDataSource — set normally.Same as DetailsMaster — the form carries a DetailTitleContainer group
with TitleField-styled controls showing the header record's identity.
FieldsFieldGroups — per-section content group.Strip — toolbar strip styling above a fields section.List — inner list style for the lines grid.[Form]
public class MyForm extends FormRun
{
}
Standard FormRun. Some shipped transaction forms use
FormDetailsTransactionExtended; not required for new forms.
Two datasources at minimum:
JoinSource=Header
and LinkType=Delayed (or Active if the lines grid must update
instantly when the user navigates the header — for most documents
Delayed is fine).<AxFormDataSource xmlns="">
<Name>SalesTable</Name>
<Table>SalesTable</Table>
<!-- header datasource -->
</AxFormDataSource>
<AxFormDataSource xmlns="">
<Name>SalesLine</Name>
<Table>SalesLine</Table>
<JoinSource>SalesTable</JoinSource>
<LinkType>Delayed</LinkType>
<!-- lines datasource -->
</AxFormDataSource>
The relation between header and lines must exist on the lines table
(e.g. SalesLine has a relation back to SalesTable.SalesId).
DetailsTransaction action panes typically have button groups for:
Use AxFormButtonGroupControl to group them, and
AxFormMenuItemButtonControl or AxFormButtonControl for the actions
themselves.
<ID> : <Description>. Plural in the menu.See dynamics-xpp:xpp-form-subpatterns for the full reference.
Pre-10.0.23: Header/Lines proxy buttons appeared in the title area as radio buttons styled as tabs.
10.0.23+: The "Removal of header/lines proxy buttons" feature removes those radio buttons and exposes the native tab controls underneath. Better accessibility; same functionality. When migrating or auditing, expect to see the native tab control as the switch mechanism, not the legacy radio-buttons-as-tabs.
Style=DetailsFormTransaction, not DetailsTransaction. Same
pattern/style name divergence as DetailsMaster.AxFormMenuItemButtonControl
with MenuItemName).dynamics-xpp:xpp-form apply.examples/example-domain.json -- start here. Typed CreateFormRequest for a minimal DetailsTransaction. Substitute the backing table and field set, then pass to xpp_create_form.examples/example.xml -- structural reference for reading existing forms. Don't hand-author from it; use the typed example above.dynamics-xpp:xpp-form — envelope, namespace rules, datasources.dynamics-xpp:xpp-pattern-details-master — header-only variant; the title-strip
and tab structure is similar.dynamics-xpp:xpp-pattern-list-page — the entry-point list usually leading into
a DetailsTransaction form.dynamics-xpp:xpp-pattern-task-parent-child — multiple peer grids without a
dominant header/lines hierarchy.xpp://schema/AxForm — authoritative XSD.Provides CDSS development patterns for drug interaction checking, dose validation, clinical scoring (NEWS2, qSOFA), and alert classification integrated into EMR workflows.
npx claudepluginhub yobryon/dynamics-tools --plugin xpp