Generic data storage principles

This article provides guidelines for choosing optimal metadata object types for storing data in your configuration.  

1. At the solution design stage, the proper selection of metadata object types that will store business data is very important. Incorrect choices might impact the applied solution efficiency and future development options, and hinder adaptation to possible changes in business tasks covered by the applied solution.

2. We recommend that you choose metadata object types based on the following diagram:

* The arrows represent data dependencies (cross-references).

The diagram contains the following blocks:

1. Conventionally static data. This includes data that is normally entered once, rarely changed, and regularly accessed. Examples: classifiers, settings, lists, registers, and regulations.

2. Business process-related events, which have time stamps and can generate or modify data when registered. Examples: enterprise document flow, accounting, registering orders or calls.

3. Collected data and commercial indicators, which describe the current state of the application area and the current processes. Unlike data described in paragraphs 1 and 2, this data does not have object nature and it does not describe independent entities belonging to the application area. Examples: item sales history, warehouse balances, current account balances, currency exchange rate history. 

The last block represents data analysis, processing, and reporting tools. They utilize data from the other blocks but do not store data themselves.

2.1. Therefore, you have to assign each business area entity to one of these blocks based on the following algorithm:

  • If you need to store data that is rarely changed and does not have time stamps, use the conventionally static data block (1).
  • If you need to register documented events that have time stamps, use the busines process-related events block (2).
  • Otherwise use the collected data and commercial indicators block (3).

Detailed block selection criteria:

Criterion / block

Conventionally static data

Business process-related events

Collected data and commercial indicators

Main purpose

Store registers and regulations


Register events that are part of business processes, provide documentary proof for various data

Store data that describes current processes and current state of the application area

Monitoring state changes

Not required

Post and unpost documents, record start and end times, modify task states, and generate records

Not required

Hierarchy and grouping

Use hierarchy and groupings, possibly involving entities of different types

Not required Not required

Key properties

Code and description

Event date and number.

Not required

Storing additional entity attributes 

Store rarely changed attributes of custom data

Store references to other objects and parameters that describe the event

Store only attribute values of other database objects


Generate code series for items of a given type or within a hierarchy

Generate number series for all items of a given type or for items within a given period, continuous numbering for objects of different types.

Not required

2.2. Then select a specific metadata object type inside the selected block:

2.2.1. For conventionally static data:

1. To store a chart of accounts for double-entry bookkeeping, use the Chart of accounts metadata object.
2. To store a chart of calculation types for calculating accruals and retentions, use the Chart of calculation types metadata object.
3. To store a single value that can be edited by users (usually by the administrator who performs the system setup) and does not require references from other data, use the Constant metadata object.
4. To define a fixed list of values that cannot be edited by users and does not have additional attributes, use the Enumeration metadata object.
5. To store the list of characteristics (properties) where both the characteristic types and their content are defined by users, use the Chart of characteristic types metadata object.
6. In most other cases, you can use the Catalog metadata object.

Detailed criteria for metadata object selection:

Критерий /
тип объекта Criterion / object type
Constant Enumeration Chart of characteristic types Catalog
Main purpose

Store a single predefined value

Store a list of aliases that are never changed and do not have additional attributes

Store a list of entities and values of characteristics of each entity

Store a list of objects and their attribute values

Users can add and edit items

Edit the value only

Not required

Add, edit, or delete items, edit the content and values of entity characteristics

Add, edit, or delete items

Hierarchy and grouping

Not required

Not required

Required within a single entity


Required within a single entity or between different entities

Storing values of additional entity attributes

Not required

Not required

Store custom data in entity attributes

Store custom data in entity attributes

Storing lists of additional attribute values


Not required

Not required

Store lists of entity attribute value sets

Store lists of entity attribute value sets

Generation based on other objects

Not required

Not required

Enter new items based on other objects

Enter new items based on other objects


Not required

Not required

Code series for items of a given type or within a grouping

Code series for items of a given type, or within a grouping, or for a set of subordinate items

2.2.2. For business process-related events:

1. To register one-time events that have performers (users, employees, groups, or roles) and do not require posting once they are completed, use the Task metadata object.
2. To register the creation and progress of a repeated process that can be divided into a set of actions (events), use the Business process metadata object. To register actions (events) that form a process, use the Task metadata object.
3. In most other cases, you can use the Document metadata object.

Detailed criteria for metadata object selection:

Criterion / object type Task Business process (with tasks)  Document
Main purpose Register one-time events that have performers

Register a sequence of events that have performers

Register events with time stamps and generate data based on these events

Subordinate items

Not required

Register nested processes (task hierarchy)

Not required

Combining items into journals

Not required

Not required

Combine documents of different types in a single journal 

Object state

Required states: new, completed

Required states: new, in progress, completed

Required states: posted, unposted

Numbering Number series for all tasks of a specific type or within a specific period

Number series for all processes of a specific type or within a specific period; numbering events within a process

Number series for various document types, continuous or within a specific period

2.2.3. For collected data and commercial indicators:

1. To store accounting data for double-entry bookkeeping, use the Accounting register metadata object.
2. To store calculated accruals and retentions, use the Calculation register metadata object.
3. To store the history of indicator changes (incomes and expenses, turnovers and balances for a specific period), use the Accumulation register metadata object.
4. In most other cases, you can use the Information register metadata object.

Detailed criteria for metadata object selection: 

Criterion / object type Accumulation register Information register
Main purpose Store data changes (incomes and expenses, indicator changes) Store data as record sets; register some values.
Retrieving data

Retrieve balances and turnovers

Retrieve data slice for a specific moment, or retrieve current indicator values.

Referencing data sources 

Reference to the recorder document

Referencing is not mandatory

3. Example of metadata object type selection:

A company provides survey services. Each questionnaire includes a date and a set of questions, a filled questionnaire also includes a set of answers. The "questionnaire" entity has a time stamp and generates statistical data (the answers).

Let us use the algorithm described in this article:

  • Filling a questionnaire is an event that has a time stamp and generates parameter values. It belongs to the second block: business process-related events.
  • According to the table describing this block, a questionnaire that generates data (the answers) is represented by a Document object.
Next page: Handling inactive objects

Be the first to know tips & tricks on business application development!

A confirmation e-mail has been sent to the e-mail address you provided .

Click the link in the e-mail to confirm and activate the subscription.