Magnolia 5.7 reached extended end of life on May 31, 2022. Support for this branch is limited, see End-of-life policy. Please note that to cover the extra maintenance effort, this EEoL period is a paid extension in the life of the branch. Customers who opt for the extended maintenance will need a new license key to run future versions of Magnolia 5.7. If you have any questions or to subscribe to the extended maintenance, please get in touch with your local contact at Magnolia.

A model definition, a subitem of the Magnolia Content type definition, defines the model of a content type.

The model describes the properties of a content item such as name, description, asset, birthday, and so on. In the default JCR-based implementation. The type of the properties can be String, Boolean, Decimal, Double, Long, Date, another content type or a submodel. The model can define a list of submodel definitions.

Model definition properties

Example configuration:

  workspace: tourguides
  autoCreate: true
  nodeType: mt:tourGuide
    - name: birthday
      type: Date
    - name: gender
    - name: shortBio
    - name: contact
      type: contactData
    - name: contactData
        - name: email
        - name: phoneNumber
        - name: addresses
          type: address
          multiple: true
    - name: address
        - name: street
        - name: city
        - name: postalCode
        - name: country
The model properties:



A list of property definition objects.


A subdefinition item defining one property of the model. Its definition interface is PropertyDefinition.

Read the property definition properties section for all the details of a PropertyDefinition object.



A list of submodel definition objects.


A subdefinition item configuring a complete submodel. Its definition interface is SubModelDefinition.

A submodel has the same properties as a model, but a submodel cannot have additional submodels.

If nodeType is not provided, the mgnl:contentNode is used by default.



The name of the JCR node type for storing an item of the given content type.

If the given node type has not been registered yet, the system automatically registers a new node type by the given name. The type generated inherits from the Magnolia mgnl:content node type.

If nodeType is not provided, mgnl:content is used by default.

Property definition properties

This section describes the PropertyDefinition item. Property definition items can be defined in the  properties property, which is a property of the model definition of a content type definition.




The name of the property. The name is used for storing values in the underlying data source.


optional, default is String

Possible values:

  • JCR property types
    • String
    • Boolean
    • Decimal
    • Double
    • Long
    • Date
  • asset - creates Link field to choose an asset.
    The name of a Submodel.
    (warning) You can only reference submodels defined in the same content type.
  • The name of Content type making a reference to another content item.
    If a submodel and a content type have the same name, the submodel takes precedence over the content type.


optional, default is false

Makes the property mandatory.


optional, default is false

Enables i18n support for the property.


optional, default is false

The true setting allows storing multiple values of the property.

Not yet implemented:




A label which is used in the UIs, fo example in a content app. The property is annotated with I18nText, and therefore it can be localized.



Defines the default value for the property. It is applied when creating instances.


optional, default is false

Determines whether the property can be changed.


Use submodels to define complex  content types . Submodels are useful whenever you need a group of fields more than once. A content type model definition can contain a list of submodel definitions within the  subModels property. Submodels can be used only within the content type where they have been defined.

A submodel definition has the same properties as a model, but a submodel cannot have additional submodels.

The default nodeType  for a submodels is mgnl:contentNode .

Interfaces and classes


The base interface is ModelDefinition.

Magnolia provides the JcrDataSourceDefinition interface and the ConfiguredJcrModelDefinition implementation class to specify the model to be mapped to a JCR node.

For ModelDefinition, the ConfiguredJcrModelDefinition is set as the default implementation class via type mapping on the XML-based module descriptor of the magnolia-content-types module. 

By default, Magnolia expects you to configure properties for JcrModelDefinition to define a model.


The submodel item is defined by the SubModelDefinition interface, which extends ModelDefinition. The default implementation is ConfiguredJcrSubModelDefinition.

By default, Magnolia expects you to configure properties for ConfiguredJcrSubModelDefinition to define a submodel.