> ## Documentation Index
> Fetch the complete documentation index at: https://docs.activeviam.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Customizing schemas using the configurator

The datastore configurator object contains methods for the following actions:

<table><thead><tr><th>Action</th><th>Details</th></tr></thead><tbody><tr><td>Field customizations</td><td><a href="./customising-schema-with-configurator/examples/insert-field">Inserting</a>, <a href="./customising-schema-with-configurator/examples/append-field">appending</a>, <a href="./customising-schema-with-configurator/examples/change-field">updating</a> and <a href="./customising-schema-with-configurator/examples/remove-field">removing</a> fields from a datastore</td></tr><tr><td>Reference mapping customizations</td><td><a href="./customising-schema-with-configurator/examples/add-mapping">Adding</a> or <a href="./customising-schema-with-configurator/examples/remove-mapping">removing</a> pairs of fields</td></tr><tr><td><a href="./customising-schema-with-configurator/examples/modify-store-config">Store configuration customisations</a></td><td>Partitioning, chunk sizes, duplicate key within transaction behaviour, NUMA selector, etc.</td></tr><tr><td><a href="./customising-schema-with-configurator/examples/add-store">Adding new stores</a></td><td>As implementations of <code>IStoreDescription</code>, whether mutable or created through the core API</td></tr><tr><td><a href="./customising-schema-with-configurator/examples/add-reference">Adding new references</a></td><td>As implementations of <code>IReferenceDescription</code></td></tr><tr><td>Creating instances</td><td>Instances of <code>MutableStoreDescriptionBuilder</code> , <code>MutableReferenceDescriptionBuilder</code>, and <code>DatastoreSchemaDescription</code></td></tr></tbody></table>

Configuration options can be split into the following categories, depending on the parameters used on the `configurator.addConfiguration()` methods:

<table><thead><tr><th>Configuration category</th><th>When defined</th></tr></thead><tbody><tr><td>Default store</td><td>When instantiating the <code>MutableStoreDescriptionBuilder</code> object.</td></tr><tr><td>Custom global</td><td>When using the <code>ConfigurationConstants.ALL\_STORES</code> constant as the store name. These options will apply to all customizable stores for the given schema. The <code>IConfigurableSchema.GLOBAL</code> constant allows for a configuration to be applied for multiple schemas at once.</td></tr><tr><td>Multi-store custom configuration</td><td>When passing in a list of store names. These options will apply to all the stores in the list.</td></tr><tr><td>Individual custom configuration</td><td>When using a unique schema and store name.</td></tr></tbody></table>

Most store configuration options will follow a standard order of precedence (custom configuration for the store, custom global configuration, default store configuration), except for:

* Custom indexes: as multiple secondary indexes can be created for a store, the indexing calls are keyed by the input fields.
* Partitioning: all partitioning calls that accept one or more fields as inputs are keyed by those fields.
* Individual properties: the calls are keyed by the property name, so for any given property name, the order of preference will be respected. However properties defined by default will be used unless overridden.

The order of precedence does not differentiate between configuration options defined as part of multi-store or individual custom configurations. If configuration options are defined multiple times for the same stores, the ordering will be chronological.
