Version 20.12.0

New and Noteworthy in Version 20.12

Faktor-IPS 20.12 includes performance improvements, especially through improved validation code.

Table content as CSV

Table contents may now be saved in CSV format to minimize file size. A new project-setting tableContentFormat has been added that accepts the values XML and CSV.
If you wish to convert all tables to the new CSV format simultaneously, make sure to add the setting tableContentFormat to the .ipsproject file in the section AdditionalSettings before running a migration on the project:

<Setting name="tableContentFormat" value="CSV"/>

If you do, the migration will convert all table content files into the CSV format. If you decide to change the format after migrating, every table will need to be saved individually instead.

The runtime needs an additional dependency, which faktorips-runtime declares as optional:

<!-- Needed only when table contents are saved as CSV -->

Multi-Column-Filters in Table Editors

In the table editor’s search field, search terms for multiple columns can now be separated by the “|” character. You can for example search for a column matching “200?” followed by a column matching “25*” as shown in the screenshot.

Separate Validator Classes

To reduce the size of generated classes and better separate handwritten validation code, you can now set the “Create separate validator class” on the “Behavior” page of a PolicyCmptType. In the AdditionalSettings part of the configuration file .ipsproject you can select a preset for newly created policy classes:

<Setting name="generateValidatorClassDefault" value="true"/>

If the setting is active for a policy component class, for example “HomeContract”, a separate validator class (“HomeContractValidator”) is generated, which includes all validation and createMessage~ methods. In the policy component class, new methods for the creation and access of that validator are created and used in the validateSelf method.
There is no migration of handwritten code upon changes to the setting on existing classes, so handwritten code has to be manually copied to the validator and adapted to use “get().” to access the attributes and associations of the policy class.

Generating less Javadoc

Some users thought the Javadoc generated by Faktor-IPS was a little too much. That’s why the code generator can now be set to generate only minimal amounts of Javadoc. Only @generated&Co as well as descriptions added to the model will remain.

<Setting name="minimalJavadoc" value="true"/>

The default setting remains unchanged. To further reduce Javadoc, it is possible to activate the setting “remove blank lines” an deactivate “/** and */ on separate lines” in the Eclipse Java formatter settings for comments.


  • Add IPS Nature: Missing German translation for Persistence Support (FIPS-1388)
  • Marker selection without validation rule creates NPE (FIPS-5625)
  • Target Role Name = Component Type Name leads to duplicate method in generation (FIPS-6551)
  • ValueSets should always allow overwriting with Derived (FIPS-6978)
  • ValueSet “String Length” deactivates configuration of value set and default in product configuration (FIPS-6980)
  • Product configuration of relevance does not work with String Length Constraint (FIPS-6981)
  • Warning after a product component was renamed including change its runtime ID (FIPS-6985)
  • NPE when a data type is not found in the attribute dialog (FIPS-7107)
  • MessageInvalidObjectMatcher does not match correctly (FIPS-7181)
  • Derived attributes not generated again after change of data type (FIPS-7186)
  • Migration 20.12 should also build PolicyCmptTypes (FIPS-7210)
  • Enums from DetachedContentRuntimeRepositories don’t have any values (FIPS-7227)
  • ValueSet of a policy attribute calculated by a product method is null (FIPS-7251)
  • ExtensionPoint-Schemata of ui and stdbuilder are missing in Source Build (FIPS-7271)

New Features

  • Generate validation code in a separate class (FIPS-6659)
  • Syntax highlighting in formula editor (FIPS-6662)
  • Produktinfo-DB Finetuning (FIPS-7135)


  • AddIpsNature: default settings for generated XML files for model projects (FIPS-774)
  • Multi-column filter in the table editor (FIPS-5524)
  • Typo: Edit Table Usage -> Rolename (FIPS-6548)
  • Tables as CSV instead of XML (FIPS-6656)
  • Generate less comments (FIPS-6657)
  • FIPS-Compare-Editor for template components (FIPS-6754)
  • Improve error message for existing parent (FIPS-6755)
  • avoid file.exists() where possible (FIPS-6825)
  • cache map of all links in ProductCmptLinkCollection (FIPS-6827)
  • Validation of the sum of all cardinalities runs too frequently (FIPS-6829)
  • Inefficient reflection for IpsSrcFileContent#getPropertyFromIpsObject(String) (FIPS-6830)
  • Validierung of duplicate runtime IDs is inefficient (FIPS-6831)
  • Target for Eclipse 2020-09 (FIPS-6944)
  • Unneccesarily hard validiation of cardinalities of overwritten associations (FIPS-6974)
  • Validation of duplicate runtime IDs is inefficient (FIPS-6831)
  • Target for Eclipse 2020-12 (FIPS-7074)