Custom fields

Every organization is different and has different data to store. That’s why most entities in Group-Office can be extended with custom fields.

Custom fields show in the:

  • Edit dialogs
  • Detail views
  • Grid columns
  • Advanced search and filters

You can create custom fields via System settings at:

  • Notes
  • Address book
  • Billing
  • Projects
  • Tickets
  • Calendar
  • Tasks
  • Files
  • … and many more!


The above list depends on the modules installed. You may have less or more options.

Creating and editing fields

Navigate to System settings -> Custom fields. You’ll see a list of customizable entities and their corresponding modules.


Custom fields overview window

Click on the pencil icon in the right column to manage custom fields for a certain object. For an non-customized object, the resulting window wll look like below:


Custom fields for a non-customized object

Click the + icon to add a field set first. A field set is a group of fields that has a title and an optional description that will be shown on the form. You can also hide field set in some cases. This depends on the module. In the address book you can only show it on certain address books for example.

When you’ve created a field set you can add a field via the ‘+’ button on the field set row:


Add custom field set

The image below shows the custom field types you can add.


Custom field types


The types of custom fields that you can add depend on the modules you have installed.

Depending on the type of custom field, you have a plethora of options for your customization. For instance, you can conditionally require and/or hide a field:


Example text fields with extra conditions

The custom field will show in the:


Example edit dialog. Please note the separate tab


Detail view


Toggle custom fields in grid columns


Aside from displaying and storing data, it is a breeze to filter items by custom field values. In the left column, near the Filters header, click on the + and select Filter:


An example filter

Conditionally required fields

It’s possible to make fields required based on one or more simple conditions. You can also hide the field if the condition does not match.

For example you could create a checkbox called “provideDetails” and create a text field “details” with a condition ‘provideDetails = true’. The result will be that when you check the box the provideDetails field will be shown and made required.

The condition syntax is very simple:

<fieldName> <operator> <value>


  • fieldName can be any property or custom field
  • operator can be: =, !=, >, >=, <, <=
  • value is a string without quotes. For checkboxes you can use 0,1 or true or false.
  • empty or non-empty values are checked by using myField is empty and myOtherField is not empty respectively
  • multiple conditions can be combined with either AND or OR.
  • Grouping is also possible since 6.4.219. eg. <fieldName1> is true AND (<fieldName2> = test OR <fieldName2> = 1234)


The fieldName, operator and value must be separated by spaces.


If the Answer is supposed to be larger than 41, but smaller than 43, use the following:

theAnswer = 42

or if you are into Vogon poetry:

theAnswer > 41 AND theAnswer < 43

If you want to require or hide a field based on the following conditions:

  • The answer is 42;
  • Either of the conditions below:
    • There is a home planet destruction date but the owner has no towel;
    • The home planet still exists and the owner has a towel;

then the condition should read something like this:

(theAnswer = 42 AND ((homePlanetDestructionDate IS NOT NULL AND hasTowel = 0) OR (homePlanetDestructionDate IS NULL AND hasTowel = 1)))

Template field

The template field can render data using Templates.

The template holds the “entity” model as variable. Which is the entity the custom field belongs too.

You can for example take the first linked contact and store it’s name:

[assign firstContactLink = entity | links:Contact | first]

Or store the postal code of the first linked contact:

[assign firstContactLink = entity | links:Contact | first]
[assign address = firstContactLink.addresses | first]{{address.zipCode}}

Or if you want addresses of the contact in the grid you could create a field with this template:

{{entity.addresses | column:formatted| implode}}

Or fetching a contact from a custom field:

[assign contact = entity.customFields.<CONTACT_CUSTOM_FIELD_DATABASE_NAME> | entity:Contact]

Custom fields often hold ID numbers. You can convert them to text like this: