Feature Fields and Actions
After creating a feature with a template, you customize it by adding fields, groups, and actions. This page explains how to configure feature components.
Accessing Feature Configuration
- Open Tasks > Create new features
- Select your feature in the list
- Click to open the Feature Card
- Navigate to configuration sections
Feature Fields
Accessing Feature Fields
From the Feature Card:
- Click Fields or navigate to Feature Fields
- The field list for this feature opens
Adding a Field
- Click New in the field list
- Configure field properties
Field Properties
| Property | Description |
|---|---|
| Field Name | Internal name |
| Type | Data type (Text, Integer, etc.) — mandatory |
| Size | Length for Text/Code |
| Caption | Display label |
| ToolTip | Help text |
Every field must have a Type before the feature can be published. A field with no type shows
0in the Type column of the Feature Fields list, and publishing fails withAn invalid argument was passed to a 'List' data type method.
Extended Data Type works on feature fields exactly as it does on regular fields — setting it to URL on a feature or Document template field makes the value render as a clickable link. As elsewhere, the link only appears when the record is not in edit mode (toggle editing off with the page's pencil icon), or when the field is set to non-editable. See Field Settings.
There is no default-value or auto-populate property. Feature Fields cannot set an initial value on insert — a Date field defaulting to Today(), for instance — and calculated fields are not available on features either. To get auto-population at record creation, graduate the generated source and implement it in AL. See Graduating from SOD.
A TableRelation on a Text field can produce a type error. A table relation on a Text field pointing at a field of another type — an Option, say — surfaces as Field type Text is not convertible to field type Option. When that error appears, inspect the fields carrying a TableRelation and confirm the referenced field's type is compatible.
Supported Field Types
Same types as regular field creation:
- Text, Code
- Integer, Decimal
- Boolean, Date, DateTime
- Option, Enum
- Lookup
- FlowField
Field Ordering
Fields display in the order defined. Adjust order by:
- Reordering in the field list
- Or specifying sequence numbers
Field Groups
Groups organize fields into sections on pages.
Accessing Field Groups
From Feature Card:
- Click Field Groups
- The group list opens
Creating a Group
- Click New
- Enter group properties
Group Properties
| Property | Description |
|---|---|
| Group Name | Internal identifier |
| Caption | Display header |
| Sequence | Order on page |
Assigning Fields to Groups
- In Feature Fields
- Select the group for each field
- Fields appear in their assigned group
Feature Card Actions
The Feature Card surfaces two main actions:
| Action | Purpose |
|---|---|
| Verify | Re-runs feature validation and updates the Verified status |
| Groups | Opens the Page Groups list so you can organize fields into UI groups on the generated pages |
For role-center templates an additional Page Actions section is shown that lists actions configured on the role center; this is template-specific and not present on regular Data / DataRelated / Document templates.
There is no separate "Lookup Transfers", "Functions", or generic "Actions" action on the Feature Card — those are not user-facing configuration surfaces in SOD. If your scenario needs custom behavior beyond what the template generates (custom validations, complex business logic, automated value transfer from a lookup), graduate the generated source and add it in AL.
Configuration Workflow
Typical Configuration Steps
- Create Feature - Use wizard with template
- Add Fields - Define data fields
- Create Groups - Organize into sections via the Groups action
- Verify - Click Verify and confirm validation passes
- Publish - Deploy the feature
Iterative Development
You can modify features after initial creation:
- Make changes
- Publish to apply
- Test in Business Central
- Repeat as needed
Feature Verification
Verified Status
The feature card shows "Verified" status:
- Yes = Feature passes validation
- No = Issues need resolution
Common Verification Issues
| Issue | Cause | Fix |
|---|---|---|
| Duplicate field name | Two fields with same name | Rename one field |
| Invalid type | Unsupported field type | Change field type |
Field Type shows 0 |
Type never selected | Select a Type — publishing fails otherwise |
| Missing primary key | No key field defined | Define primary key |
| FactBox does not display on generated pages | Primary key is not a Code field of size ≤ 20 | Change the primary key to a Code field of size 20 or less |
Advanced Configuration
Page Part Settings
Configure how the feature appears as a page part:
- FactBox display
- Subpage embedding
- Related page linking
API Configuration
If API is enabled:
- Entity name
- Entity set name
- Exposed fields
- API grouping
Number Series
For features using number series:
- Configure series code
- Set starting number
- Define format
Number series apply to the primary key only. An auto-generated number can be assigned to a feature table's primary key field and nowhere else. If you want a field to auto-generate a unique value to prevent duplicates, that field has to be the primary key, configured with a number series.
The series must also be assigned on your app's Setup page — see Data Table Template for the full procedure and troubleshooting.
File Attachments and Links
Attachment support on features comes through the standard "Attachments and links" FactBox — not through the Media or MediaSet field types.
It is controlled by two toggles in the Document settings section of a data table or document feature:
- Add standard FactBox to list pages
- Add standard FactBox to card pages
Each can be enabled independently, and changes take effect after deployment.
Version requirement: before 12.0.0.568, switching the list-page toggle off did not actually remove the FactBox on deployment — it kept displaying. That was a bug, fixed in 12.0.0.568. Be on that version or later for reliable add and remove behaviour.
Remember that the FactBox only renders when the feature's primary key is a Code field of size 20 or less.
Feature Functions on fields
A field can reference a custom Function through a FunctionID, but only inside a Document Template Feature. Feature Functions do not work in Data Table features, Related Tables, Data Queries or API publishing — publishing a Data Table feature that references a FunctionID fails with an error that the FunctionID does not exist.
The FunctionID must match an existing Function on the Simple Object, and the match is case-sensitive. See Field Settings.
Best Practices
Field Design
- Use clear, descriptive names
- Provide helpful tooltips
- Choose appropriate types
- Consider reporting needs
Group Organization
- Group related fields together
- Use logical section names
- Match BC patterns
- Keep groups manageable in size
Action Design
- Provide clear action labels
- Group related actions
- Consider workflow sequence
- Promote frequently used actions
Modifying Published Features
Adding Fields
- Add field in configuration
- Republish
- New column appears (empty for existing records)
Removing Fields
- Set Publish Update Mode to Force
- Remove field
- Republish
- Warning: Data in that field is lost
Changing Field Types
Generally requires:
- Remove old field (with Force mode)
- Add new field with correct type
- Warning: Data migration needed
Never make an Option field the first field on a table. If an Option field is the first field added to a table, the table is published, and that field is later changed or deleted, SOD can end up in a corrupted state —
Field type Text is not convertible to field type Option, andUnexpected Compiler Output 502fromModern Build Extension(codeunit 70310262). The field then often cannot be deleted ("the field 50000 is not there anymore") or reliably changed. Setting its type to Code or renaming it may clear the immediate error, but the field usually stays unusable.Prevention: always add a non-Option field first, then Option fields afterwards. See Field Types.
Lookup filters on feature fields
When configuring Feature Lookup Filters, the Filter Field dropdown lists fields from your feature table's own definition, not from the lookup target table. To filter the target table by one of its fields so it matches a value on your record, use Filter Type = Field and point at the field on your feature table holding that value.
A defect that prevented hidden fields from being selectable as filter fields has been fixed and released to AppSource — update SOD via Apps in the Admin Center. Placeholder field numbers such as 99999 do not work as a workaround. Full detail in Lookup Fields.