Field Types
Simple Object Designer supports all standard Business Central field types. This page provides a complete reference for each type and guidance on when to use them.
Text Types
Text
Variable-length text for storing general text data.
| Property | Details |
|---|---|
| Maximum Size | 2000 characters |
| Default Size | 100 characters |
| Case Sensitive | Yes |
| Use For | Descriptions, notes, addresses |
When to use:
- Free-form text input
- Descriptions and comments
- Names that need mixed case
- Multi-word entries
Example uses:
- Customer notes
- Product descriptions
- Address lines
Code
Uppercase text for identifiers and codes.
| Property | Details |
|---|---|
| Maximum Size | 2000 characters |
| Default Size | 20 characters |
| Case Sensitive | No (converts to uppercase) |
| Use For | Identifiers, codes, references |
When to use:
- System identifiers
- Cross-reference codes
- Values that should be uppercase
- Primary key values
Example uses:
- External system IDs
- Part numbers
- Country codes
Numeric Types
Integer
Whole numbers without decimal places.
| Property | Details |
|---|---|
| Range | -2,147,483,648 to 2,147,483,647 |
| Storage | 4 bytes |
| Use For | Counts, quantities, sequence numbers |
When to use:
- Counting things
- Sequence numbers
- Non-fractional quantities
- Year numbers
Example uses:
- Number of employees
- Priority ranking
- Retry count
Decimal
Numbers with decimal places for precision values.
| Property | Details |
|---|---|
| Precision | Up to 18 digits total |
| Decimal Places | Configurable (typically 2-5) |
| Use For | Amounts, percentages, measurements |
When to use:
- Monetary amounts
- Percentages
- Weights and measurements
- Calculated values requiring precision
Example uses:
- Price adjustments
- Discount percentages
- Weight in kilograms
BigInteger
Very large integer values.
| Property | Details |
|---|---|
| Range | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 |
| Storage | 8 bytes |
| Use For | Very large numbers, system sequences |
When to use:
- Values that may exceed Integer range
- System-generated sequence numbers
- Large counters
Date and Time Types
Date
Calendar date without time component.
| Property | Details |
|---|---|
| Format | Based on user locale |
| Range | January 1, 1753 to December 31, 9999 |
| Use For | Dates without time |
When to use:
- Birth dates
- Due dates
- Effective dates
- Any date without time relevance
Time
Time of day without date component.
| Property | Details |
|---|---|
| Format | Based on user locale |
| Precision | To milliseconds |
| Use For | Time without date |
When to use:
- Operating hours
- Scheduled times
- Duration tracking (start/end times)
DateTime
Combined date and time.
| Property | Details |
|---|---|
| Format | Based on user locale |
| Precision | To milliseconds |
| Timezone | UTC storage, local display |
| Use For | Timestamps, exact moments |
When to use:
- Created/modified timestamps
- Event timestamps
- Exact moment in time needed
- Integration timestamps
Boolean Type
Boolean
True/False values.
| Property | Details |
|---|---|
| Values | Yes/No, True/False |
| Storage | 1 byte |
| Use For | Flags, toggles, yes/no answers |
When to use:
- On/off settings
- Flags (Is Active, Is Blocked)
- Yes/no questions
- Feature toggles
Example uses:
- Preferred vendor flag
- Blocked indicator
- Auto-process flag
Option Types
Option
Predefined list of text options.
| Property | Details |
|---|---|
| Values | Comma-separated list |
| Storage | Integer index |
| Use For | Fixed choice lists |
Configuration: When creating an Option field, specify the values in a comma-separated list.
Example: "Pending,Approved,Rejected"
When to use:
- Status fields
- Type classifications
- Fixed categories
- Simple choice fields
Example uses:
- Approval status
- Priority level
- Document type
Limitation — one value at a time. Option (and Enum) fields allow selecting only a single value. SOD does not provide a multi-select or tagging field where several options can be chosen at once, because Business Central has no good built-in mechanism for multi-select fields.
Warning — do not 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. Symptoms include
Field type Text is not convertible to field type OptionandUnexpected Compiler Output 502fromModern Build Extension(codeunit 70310262). Once this happens the field often cannot be deleted (errors such as "the field 50000 is not there anymore") and cannot reliably be changed back. Setting the type to Code or renaming the field may clear the immediate error, but the field usually stays unusable.Prevention: always add a non-Option field first, then add Option fields afterwards.
Enum
Reference to an existing enumeration.
| Property | Details |
|---|---|
| Source | Existing Enum object |
| Extensible | Depends on enum definition |
| Use For | Shared option lists |
Configuration: Select an existing enum from the system.
When to use:
- When an enum already exists with your values
- When you need to match existing field behavior
- When the same options are used in multiple places
Example uses:
- Sales document types
- General posting types
- Existing status enumerations
Limitation — SOD cannot create enums. The Enum type can only reference enumerations that already exist in the environment. There is no way to define a new enumeration in SOD; this is a deliberate decision to keep the tool simple. To define your own reusable list of fixed choices, use the Option type and enter the values as a comma-separated list.
Reference Types
Lookup
Field that references another table.
| Property | Details |
|---|---|
| Table Relation | Links to another table |
| Validation | Validates value exists |
| Returns | The last field of the related table's primary key |
| Use For | Foreign key relationships |
Configuration: Specify the related table when creating the field.
When to use:
- Linking to master data (customers, vendors)
- Creating relationships between tables
- When users should select from existing values
Example uses:
- Salesperson code on orders
- Reason code selection
- Category references
The field type is fixed when the field is created and cannot be changed afterwards, and a lookup always returns the primary key — never a description or name. See Lookup Fields for the full behaviour, Lookup Field Transfers, and troubleshooting.
FlowField
Calculated field based on other table data.
| Property | Details |
|---|---|
| Calculation | Count, Sum, Average, Lookup, etc. |
| Storage | Calculated on demand — nothing is stored |
| Use For | Aggregations, related counts, related values |
Configuration: Define the calculation method, source table, and filters. Always create the FlowField on the table where the value should be displayed, not on the table holding the source data.
When to use:
- Showing totals from related records
- Counting child records
- Displaying aggregated information
- Displaying a value that lives in a related table
Example uses:
- Total order amount on customer
- Number of open tasks
- Sum of line quantities
Lookup calculation type
A FlowField with calculation type Lookup retrieves a single value from a related record — for example the Customer's Credit Limit (LCY) shown on a Sales Order, keyed on the Sales Header's Sell-to Customer No.
A Lookup FlowField can also be made clickable, navigating to the related record's card page, by setting a Drilldown page — see Field Settings.
Same-document total pattern
A FlowField placed on a line table can sum a field across all lines that share the same document, producing a document-wide total on every line. On Sales Line, the two filter fields required are Document Type and Document No.
Counting related records
Counting requires the correct junction table. Counting Contacts for a Customer, for example, must go through Contact Business Relation (5054) filtered on field 4 — counting the Contact table directly returns a misleading result.
For worked examples, limitations (sorting, "latest date", aggregating calculated fields) and troubleshooting, see FlowFields.
Special Types
GUID
Globally unique identifier.
| Property | Details |
|---|---|
| Format | 32 hexadecimal characters |
| Generation | System-generated |
| Use For | Unique identifiers |
When to use:
- Integration identifiers
- Correlation IDs
- Unique references across systems
Media
A single image or media reference.
| Property | Details |
|---|---|
| Content | One image / media item |
| Storage | BLOB storage |
| Use For | Images shown in FactBoxes |
Important — there is a difference between saving an image and showing one. A Media field stores image data, but the image does not render on a Card page. Business Central only displays images in FactBoxes; this is Microsoft's behaviour, not an SOD restriction.
If you want users to upload (or photograph) and see a picture on a card, use a Blob field instead. Media and MediaSet do not provide the on-card upload/camera experience.
Limitation in APIs: when exposed through a SOD API endpoint, Media fields are represented as GUID references, not Base64 content. SOD cannot convert them to Base64; that requires AL development.
MediaSet
A collection of media references (multiple images/files per record).
| Property | Details |
|---|---|
| Content | Multiple image / media items |
| Storage | BLOB storage (set of references) |
| Use For | Galleries, photo sets, multi-image attachments |
The same limitations as Media apply: no rendering on card pages, and GUID references rather than Base64 through an API. MediaSet is more complex than Media, and Base64 export of either requires AL development.
Blob
Binary large object.
| Property | Details |
|---|---|
| Content | Any binary data |
| Storage | BLOB storage |
| Use For | Files, binary content, pictures shown on a card |
When to use:
- File attachments
- Binary data storage
- Large content that doesn't fit other types
- Pictures that must be visible and uploadable on a card page
Storing and showing a picture:
- Create a Blob field on the table
- Place it on a card page
- Publish
Placing a Blob field on a card page automatically provides the image-loading experience, including the button to upload or take a picture. This is the correct choice for photos taken on a phone.
Blob limitations:
- BLOB fields cannot be used in field transfers, as source or target — including lookup-driven transfers. See Field Transfers.
- Blob is for binary data, not multi-line text. To show a long text across several lines, use a Text field (up to 2000 characters) and enable the Multiline property on its page placement — see Place Fields on Pages.
- Blob fields in an exposed API often break external consumers. Power BI, in particular, errors on blob fields such as Work Description. Review your field selection for blob types before exposing an API, and remove them if a consumer reports errors — reinstalling the app without changing the fields will not help. See Consuming APIs.
Duration
Time span values.
| Property | Details |
|---|---|
| Format | Days, hours, minutes, seconds |
| Use For | Time durations |
When to use:
- Task durations
- Service time
- Elapsed time tracking
Type Selection Guidelines
| Need | Recommended Type |
|---|---|
| User-entered ID | Code |
| Description text | Text |
| Money amount | Decimal |
| Count of things | Integer |
| Yes/No flag | Boolean |
| Date only | Date |
| Exact timestamp | DateTime |
| Fixed choices | Option or Enum |
| Related record | Lookup |
| Calculated total | FlowField |
| Value from a related table | FlowField (Lookup) |
| Picture shown on a card page | Blob |
| Image shown in a FactBox only | Media |
| Long text over several lines | Text with Multiline placement |