.. _concepts_config_templates: Configuration Templates ----------------------- Overview .......... Configuration templates (CFTs) are used to define values for the attributes of any model. Values can be fixed values, or existing macros visible from the hierarchy (for example, customer or site) where the CFT is applied. CFTs allow you to define default values for items exposed in the Admin Portal (visible, hidden, or read-only). And they provide a mechanism to map data from data input via the Admin Portal or device model events to other models or provisioning workflows in the system. You may want to hide the attributes of a model while setting them to a specific fixed value (for example a hard-coded setting); or you may wish to derive the value based on a macro (for example, look up the value based on data in the system). Consider these examples: 1) A model with an attribute defined as a date string; a CFT for the attribute can be defined as a macro ``{{fn.now \"%Y-%m-%d\"}}`` in order to set the current date stamp as the value, such as ``2013-04-18``. Designers can access reference material for details on macros. 2) A model such as Quick Add Subscriber (QAS), which limits user input to a few fields while deriving the value of other hidden attributes from various CFTs that are each applied to different underlying models that make up a Subscriber (for example, Voicemail account settings, conference account settings, phone, line, device profile settings, and so on). When adding or updating an instance of the model, the CFT enabled on the model is applied. For array elements of data models, a list and a variable can be specified to be looped through so that a value is applied to each element in the model array. You can create one or more CFTs for a model, and these can be used as needed. CFTs can also be applied to models in the design of, for example, provisioning workflows. A menu layout that can be associated with a user role can also apply a CFT to a model that is selected as a menu item. Provider administrators (and higher level admins) can quickly add a new CFT by opening a similar CFT (via, say, the Configuration Templates menu), then making a copy (clone) of it, and customizing the clone to create a new CFT. Administrators at levels above the Site Administrator can also customize these templates, including Field Display Policies. .. note:: * When modifying CFTs in the Admin Portal, numerical values need to be entered using the ``fn.as_int`` function, for example: ``{{ fn.as_int 14 }}`` * In a multi-cluster environment, CFTs that result in device model drop-down lists in the Admin Portal may contain duplicates. Any duplicated item can be selected by the user. .. _workflow_for_creating_configuration_templates: Add a Configuration Template .............................. This procedure clones and edits an existing configuration template (CFT) to create a new CFT. **Perform these steps**: 1. Log in as Provider Administrator or higher. 2. Go to **Customizations > Configuration Templates** to view the list of existing CFTs. 3. Click on a CFT you wish to clone, and view its details. 4. Click **Action > Clone**. 5. Edit the required generic fields, such as **Name**, **Description**, **Target Model Type**, and the fields specific to the selected model type. See :ref:`cft-field-reference` .. note:: Some fields are populated based on specific conditions. For example, when creating a device instance CFT in a multi device or clustered environment, drop-down values in the CFT that originate from a device will be the values from *all* the devices in the cluster. For this reason, the list may include duplicates; in this case, you can choose any duplicate, if required. 6. Click **Save**. The new, cloned CFT appears at the selected hierarchy level. .. _cft-field-reference: Configuration Template Field Reference ....................................... The table describes general fields on the Configuration Template editing screen: .. note:: Fields specific to the CFT for the selected target model type are excluded. .. tabularcolumns:: |p{4cm}|p{4cm}|p{7cm}| +------------------------+-------------------------+----------------------------------------------------------------------------------------------------------+ | Title | Field Name | Description | +========================+=========================+==========================================================================================================+ | Name * | name | The name that is given to the Configuration Template. | +------------------------+-------------------------+----------------------------------------------------------------------------------------------------------+ | Description | description | A description for the Configuration Template. | +------------------------+-------------------------+----------------------------------------------------------------------------------------------------------+ | Foreach Elements | foreach.[n] | Iterates over the list returned by the macro and appends array elements to the specified field. | +------------------------+-------------------------+----------------------------------------------------------------------------------------------------------+ | Property * | property | The field property to iterate over. | +------------------------+-------------------------+----------------------------------------------------------------------------------------------------------+ | Macro List * | macro_list | The macro that produces the list to iterate over. | +------------------------+-------------------------+----------------------------------------------------------------------------------------------------------+ | Context Variable * | context_var | The context variable that will contain the data from the iteration. | +------------------------+-------------------------+----------------------------------------------------------------------------------------------------------+ | Schema Defaults | schema_defaults.[n] | Applicable only when the configuration template is used directly in API requests. This attribute | | | | contains a list of paths to the properties of the template section that must be used to enrich the | | | | default values of the schema. All paths specified must refer to array attributes. | +------------------------+-------------------------+----------------------------------------------------------------------------------------------------------+ | Target Model Type * | target_model_type | The target model type and name that the Configuration Template applies to. | +------------------------+-------------------------+----------------------------------------------------------------------------------------------------------+ | Merge Strategy | merge_strategy | Determines how this CFT will be merged into another CFT when it is being processed in a PWF. | | | | Default: additive. | +------------------------+-------------------------+----------------------------------------------------------------------------------------------------------+ | Template * | template | The contents of the template, such as defaults and macros. The names shown in the template are | | | | determined by the attribute names of the Target Model Type. | +------------------------+-------------------------+----------------------------------------------------------------------------------------------------------+ Example: Add a CFT for a Cisco 6941 SCCP Phone .................................................... 1. Choose the hierarchy where the CUCM you want to use exists. .. note:: This step is required if the fields are to populate values because some of the values are derived from the actual device model through the API. 2. Click the **Default CUCM Phone Template**, and then click **Action > Clone**. .. note:: Don't save your changes yet. 3. Change the template **Name** and **Description**. 4. Edit the template fields: * From the **Device Protocol** drop-down, choose **SCCP**. * From the **BAT Phone Template** drop-down, choose **Standard 6941 SCCP**. * From the **Device Security Profile** drop-down, choose **Cisco 6941 - Standard SCCP Non-Secure Profile**. * From the **Product** drop-down, choose **Cisco 6941**. * From the **BLF Presence Group** drop-down, choose **Standard Presence Group**. * In the remaining fields, use the cloned default values. .. Tip:: You can type in the values if you know them; else, choose values from the list. 5. Click **Save**.