.. _create-a-configuration-template:

Create a Configuration Template
-------------------------------

.. _20.1.1|VOSS-670|EKB-3539:

#. Choose the hierarchy level at which you want to create a Configuration Template.
#. From the **Configuration Templates** list view, clone the required template.
#. Enter the **Name** (mandatory field) and **Description**, and verify the
   **Target Model Type**.
#. Use the **Custom feature usage identifier** array list input to add one or more values that can
   then for example be used in GUI Rules macros to filter choices in drop lists, for example
   by ``QAS`` and ``SAP`` below:
   
   ::

     {# data.ConfigurationTemplate.name | 
        target_model_type:device/cucm/User,feature_usage:QAS #}

     {# data.ConfigurationTemplate.name | 
        target_model_type:device/cucm/User,feature_usage:SAP #}

   .. note::

      Only add or modify the feature usage details for *custom features* which you add to the system.
      Changing the feature usage on Configuration Templates which are shipped with the product may
      have unintended behaviour changes for the standard set of features included with the product.

#. If the Configuration Template will be used along with other Configuration
   Templates that apply to the same **Target Model Type** in a Provisioning Workflow, 
   select the **Merge Strategy** to be applied when these Configuration Templates 
   are merged in the workflow:

   * **Additive** - if the Data Type of the Target Model is an array, the
     Configuration Template will add an array item to any existing array.
   * **Replace** - if the Data Type of the Target Model is an array, the
     Configuration Template will replace the array item of any existing array.

#. If required for model attributes that are arrays, add **Foreach Elements**
   by clicking **+** (Add) for each:

   a. Enter a **Property** that is the model array attribute to which the entry
      applies.
   #. Enter a **Macro List** to loop over. A macro list opens with 
      {# and closes with #}.
   #. Enter a **Context Variable** name to store the current loop value of the
      macro list.

   The **Context Variable** is referenced as a macro with the *cft* prefix in the 
   Configuration Template value for the array attribute, so that for each instance
   in the list loop, an array entry is created when the template is applied. For
   example: ``{{cft.MyContextVar.name}}`` Configuration Templates that are part
   of Provisioning Workflows can reference spreadsheet column values using the
   ``input`` syntax: ``{{input.[entity attribute]}}``, for example ``{{input.username}}``.

#. In the **Target Model Type** section, enter (default) values for those 
   displayed attributes that these should be applied to when the template is
   used in conjunction with the target model. If the user has access to macros,
   the values can be macros to determine values.
#. Click **Save** on the button bar to create and save the Configuration
   Template.

The created Configuration Template is available to be applied to the model 
by for example using it in a Menu Layout or Provisioning Workflow.

.. |VOSS-4-UC| replace:: VOSS-4-UC
.. |Unified CM| replace:: Unified CM