Simple Object Designer Documentation
Index

Features Overview

Features allow you to create entirely new tables with associated pages and business logic. This page introduces the feature concept and its capabilities.

What Is a Feature

In Simple Object Designer, a "Feature" is a complete bundle that includes:

  • Table - A new database table to store your data
  • List Page - A page to browse multiple records
  • Card Page - A page to view/edit individual records
  • API - Optional OData endpoint for external access
  • Business Logic - Functions and actions for the feature

When to Use Features

Use features when you need to:

  • Track entirely new types of data
  • Store information that doesn't fit in existing tables
  • Create mini-applications within Business Central
  • Build custom master data lists
  • Implement document-style workflows

Examples of Features

Feature Purpose
Training Records Track employee certifications
Equipment Registry Manage company equipment
Project Tasks Simple task management
Custom Documents Business-specific document types
Lookup Tables Custom reference data

Feature Templates

SOD provides templates that generate pre-configured structures:

Data Table Template

For standalone master data tables:

  • Primary key (manual or number series)
  • List and card pages
  • Optional API endpoint

Use for: Customer-like masters, lookup tables, reference data

For tables that link to existing tables:

  • Foreign key relationship
  • Navigation between related records
  • Inherited filtering

Use for: Detail tables, child records, extensions of existing masters

Document Table Template

For header/line document structures:

  • Header table with document fields
  • Lines table as subpage
  • Number series integration
  • Document patterns

Use for: Order-like documents, invoices, custom transactions

Role Center Template

For dashboard pages:

  • Cue groups
  • Activity parts
  • Page actions (Embedding, Creation, Processing, Reporting)
  • Embedded page parts (ListParts and CardParts)

Use for: Custom home pages, department dashboards

Feature Components

Table

The database table that stores feature data:

  • Primary key definition
  • Field definitions
  • Table relations
  • Captions and properties

List Page

A page showing multiple records in a grid:

  • Columns for key fields
  • Filters and sorting
  • Actions for common operations
  • Links to card page

Card Page

A page for viewing/editing one record:

  • Grouped fields
  • Detail sections
  • Actions
  • Related information

API Page (Optional)

An OData endpoint for external access:

  • REST API for CRUD operations
  • Entity name and set name
  • Field mapping

Accessing Features

From Main Menu

  1. Open Tasks > Create new features
  2. The Feature List opens

Creating a New Feature

  1. From Feature List, click New Feature action
  2. The New Feature Wizard opens
  3. Follow the wizard steps

The Feature Workflow

Step 1: Choose Template

Select the template that matches your needs:

  • Data Table for simple lists
  • Related Table for linked data
  • Document Table for header/line structures

Step 2: Configure Basics

Define the feature identity:

  • Feature name
  • Table caption
  • Primary key configuration

Step 3: Add Fields

Add fields to your feature table:

  • Field names and types
  • Captions
  • Properties

Step 4: Configure Pages

Select which pages to generate:

  • List page
  • Card page
  • Subpages (for documents)

Step 5: Enable API (Optional)

Choose whether to expose as API:

  • Entity name
  • Exposed fields

Step 6: Publish

Publish to create all feature components.

Feature Fields

Features support the same field types as table extensions:

  • Text, Code
  • Integer, Decimal
  • Boolean, Date, DateTime
  • Option, Enum
  • Lookup to other tables

Special Field Types

Type Description
Primary Key Identifies records uniquely
Foreign Key Links to parent table
Number Series Auto-generated codes (primary key only)
Lookup References other tables

Combined (composite) primary keys are not supported

SOD does not handle combined primary keys. A table whose key is made of more than one field — Item No. and Work Center Code, say — "turns not Simple really fast" and generally falls outside what SOD can do.

The templates are designed around a single-field primary key, or a foreign key plus a line number:

  • For a one-to-many pattern where each parent has several records distinguished by a second business value, use the DataRelated pattern of foreign key + Line No. See Related Table Template ("Secondary Keys").
  • If a genuine multi-field primary key is truly required, it may not be achievable in SOD — this is a case for graduating to AL. A table extension against the created SOD table is the other route.

The "Setup" Feature

The Feature List (Tasks > Create new features) contains a system feature called "Setup". This is where setup and configuration fields for your app live — including the number series configuration for every feature that uses one.

A field that should appear on a setup page must be present in the "Setup" feature and marked to show on its card page. Placing the field in a group inside its own feature is not enough.

This explains a confusing symptom: a field placed in a group, with the feature verifying cleanly ("no issues found", Verified = Yes) and published repeatedly, that still never appears on the setup page in Business Central. The cause is usually that it is missing or not correctly shown within the Setup feature. See Common Issues.

Feature Actions

Features can include page actions:

  • Custom processes
  • Navigation links
  • External integrations

Actions are configured separately from the basic feature structure.

Roadmap and current limitations

  • InitValue — giving a newly created SOD field an initial or default value is not currently available. It is in scope for a planned major update.
  • Custom trigger functions for tables and pages are not supported for user-defined logic; only a limited set of standard triggers is offered. Custom triggers are in scope for a planned major update.
  • Calculated fields on features are not available — see Calculated Fields Overview.

These are roadmap statements, not current capabilities.

A note on misinformation. SOD supports creating new Features — tables, pages, cards, FactBoxes and features. There is no "Field & Page Customization Mode" versus "Object Creation Mode" distinction, and object creation has not been removed or split into a separate product. If a tool or AI assistant claims SOD "no longer includes the ability to create new Pages/Features/Reports", or that your installation is running in a restricted customization-only mode, that is incorrect.

Feature Verification

SOD validates features:

  • Unique names
  • Valid field configurations
  • Required components present

The "Verified" indicator shows if the feature passes validation.

After Creating Features

Once published, your feature appears in Business Central:

  • Tables visible in Table Information
  • Pages accessible via search
  • APIs available via OData

Modifying Features

Adding Fields

Add new fields through the Feature Fields page.

Changing Pages

Modify page properties through Feature Card.

Extending Logic

Add actions through Feature Actions.

Where features can be modified

A feature table and its fields can only be modified in the environment where the feature was created — the environment where SOD holds the feature definition, that is, your development sandbox.

After adding fields or changing the feature there, publish a new app version to apply the change and to redistribute it to your other environments. See Environments.

Deleting Features

To remove a feature:

  1. Remove all associated data (or accept data loss)
  2. Delete the feature definition
  3. Set Publish Update Mode to Force
  4. Republish

Warning: Deleting features with data requires Force mode and results in data loss.

If deletion errors with a dependency message — "Table <name> is depended on this table, cannot be deleted" — another table has a link to the one you are removing. Resolve the dependency from the dependent table first. See Common Issues.