Simple Object Designer Documentation
Index

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

  1. Open Tasks > Create new features
  2. Select your feature in the list
  3. Click to open the Feature Card
  4. Navigate to configuration sections

Feature Fields

Accessing Feature Fields

From the Feature Card:

  1. Click Fields or navigate to Feature Fields
  2. The field list for this feature opens

Adding a Field

  1. Click New in the field list
  2. 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 0 in the Type column of the Feature Fields list, and publishing fails with An 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:

  1. Reordering in the field list
  2. Or specifying sequence numbers

Field Groups

Groups organize fields into sections on pages.

Accessing Field Groups

From Feature Card:

  1. Click Field Groups
  2. The group list opens

Creating a Group

  1. Click New
  2. Enter group properties

Group Properties

Property Description
Group Name Internal identifier
Caption Display header
Sequence Order on page

Assigning Fields to Groups

  1. In Feature Fields
  2. Select the group for each field
  3. 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

  1. Create Feature - Use wizard with template
  2. Add Fields - Define data fields
  3. Create Groups - Organize into sections via the Groups action
  4. Verify - Click Verify and confirm validation passes
  5. Publish - Deploy the feature

Iterative Development

You can modify features after initial creation:

  1. Make changes
  2. Publish to apply
  3. Test in Business Central
  4. 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.

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

  1. Add field in configuration
  2. Republish
  3. New column appears (empty for existing records)

Removing Fields

  1. Set Publish Update Mode to Force
  2. Remove field
  3. Republish
  4. Warning: Data in that field is lost

Changing Field Types

Generally requires:

  1. Remove old field (with Force mode)
  2. Add new field with correct type
  3. 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, and Unexpected Compiler Output 502 from Modern 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.