[Index]

Model: data/ModelInstanceFilter

Model Instance Filter

Full HTML Help

Overview

Model instance filters (MIF) allow the administrator to provide criteria to define a subset of model instances to sync in. This causes the sync to only sync in those instances matching the criteria instead of all the instances.

A data sync can be set up with reference to:

Note

When using a model instance filter with a data sync, the ability of the sync to remove (purge) records is disabled by default to prevent the unintentional removal of records that are excluded by the model instance filter. You'll need to enable Remove if you intend for the sync to purge cache records that are excluded by the model instance filter. See Data Sync

If you're upgrading to 21.4-PB4 from an earlier version of Automate, a migration script disables Remove for any syncs that have a model instance filter applied. This is to prevent the sync from unexpectedly removing a large number of records after the upgrade.

Add a Model Instance Filter

  1. Log in as a Provider level administrator, then go to (default menus) Administration Tools > Model Instance Filter) to open the list view of existing model instance filters at the corresponding administrator hierarchy.

  2. Click the Plus icon (+) to add a new model instance filter.

  3. Fill out a name for the new model instance filter.

  4. From the Model Parent drop-down, choose the device or model type. The filter will be applied to it.

    Note

    A data sync will fail if the Model Parent of the Model Instance filter does not match the Device Type of the Data Sync.

  5. Choose the type of filter - the inclusion or exclusion of attributes: Include Matching Instances or Exclude Matching Instances.

  6. Add one or more filters in the Model Filters group:

    1. Choose the Model Type that belongs to the Model Parent.

    2. Add one or more attribute filters in the Attribute Filters group:

      • The Attribute Name should be selected after inspecting list request responses in the Transaction log - refer to the note below.

      • Choose its Condition.

        For In and Not In, if the field specified turns out to be an array, then "in" means there is an overlap between the field value and the value it is being checked against. For example, "lines in <an array of lines>" is comparing an array to an array.

        The Like condition is a regular expression match, so in any regex should work here, but a very basic usage of regex is a "contains" type functionality, for example, "username like fred".

      • Provide a Value to filter on.

        It is often better (frequently faster) to try and use a built-in Condition rather than resorting to macros in the Value that needs to be matched on.

    Filter criteria can be set up according to your purposes:

  7. Click Save. The filter can be selected from the Model Instance Filter drop-down when creating or modifying a Data Sync.

Note

</ns0:listUserProfileProvision>
</soapenv:Body>
</soapenv:Envelope>

RESPONSE:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
    <ns:listUserProfileProvisionResponse xmlns:ns="http://www.cisco.com/AXL/API/11.5">
      <return>
        <userProfileProvision uuid="{96FA39CD-8A29-4B26-A3F5-0FF683326134}">
          <name>Standard (Factory Default) User Profile</name>
          <description>Standard (Factory Default) User Profile</description>
          <allowProvision>false</allowProvision>
          <limitProvision>10</limitProvision>
        </userProfileProvision>

Common Use of Model Instance Filters

While model instance filters can be used on any sync type, their common uses are:

Note

Model Instance filters do not work with CUCM Change Notification sync types. If a model instance filter is needed for a CUCM element, this model type should be excluded from the change notification sync and a separate sync should be se up for this.

Macro Functions in Model Instance Filters

Macro functions can be used in the Value field to define matching criteria. This is particularly useful for "contains" matching, for example, using fn.contains or fn.containsIgnoreCase.

The value read in from the device API call can be referenced using the input context and the field name from the API call (for example, input.telephoneNumber).

For example, the Value field can have:

You can also use a named macro (e.g. macro.ZA-number), that has the macro above in the Value field instead, so that:

This condition will sync every user with a telephone number that includes +27.

Macros cannot be used in the Value field in conjunction with the "in" Condition.

Model Instance Filter Examples

This section describes a few examples for using model instance filters.

Model instance filter with multiple model filter entries to match criteria on different model types:

This model instance filter will result in: looking at device/cucm/User records it will match users that have a department of Marketing, Finance, or IT (due to the IN condition). When looking at device/cucm/Phones it will match phones of the type "Cisco 7940".

Model instance filter with multiple model filter criteria entries with the same model type and macros to create a list of records to match

For this example, when looking at the device/cucm/User records it will match users that have a telephone number containing +1 OR +27. The macro in the value field is cut short but it's using the macro in the notes above for reference. Due to the macros in use in the value, this had to be done as multiple model filter entries instead of a attribute filter using the IN condition.

Model instance filter with multiple attribute filters applied to the same model type

When looking at the device/cucm/User records it will match users that have a department matching Marketing, Finance, or IT, AND has the home cluster flag set to true.

Data model containing rules for filtering of model instances.

Model Details: data/ModelInstanceFilter

Title Description Details
Name * The name that is given to the Model Instance Filter instance.
  • Field Name: name
  • Type: String
Model Parent The parent type of the model types to be filtered.
  • Field Name: model_parent
  • Type: String
  • Choices: [""]
Filter Type * The nature of filtering of model instances - either by inclusion or by exclusion.
  • Field Name: filter_type
  • Type: String
  • Choices: ["Include Matching Instances", "Exclude Matching Instances"]
Model Filters A list of filters that are applicable to instances of particular model types.
  • Field Name: model_filters.[n]
  • Type: Array
Model Type * The type of the model that this filter applies to.
  • Field Name: model_filters.[n].model_type
  • Type: String
  • Choices: [""]
Attribute Filters A list of attributes and the conditions that must be applied to the attributes. The conditions will be applied in a logical AND manner
  • Field Name: attr_filters.[n]
  • Type: Array
Attribute Name * The model attribute name for which the filter applies.
  • Field Name: model_filters.[n].attr_filters.[n].attr_name
  • Type: String
  • Choices: [""]
Condition * The nature of comparison to be made for the filter. Condition can be 'Equals', 'Not Equals', 'Greater Than', 'Less Than', 'In', 'Not In' or 'Like'
  • Field Name: model_filters.[n].attr_filters.[n].condition
  • Type: String
  • Choices: ["Equals", "Not Equals", "Greater Than", "Less Than", "In", "Not In", "Like"]
Value A single value to which the condition is applied. Value is used when the condition is one of 'Equals', 'Not Equals', 'Greater Than', or 'Less Than'
  • Field Name: model_filters.[n].attr_filters.[n].value
  • Type: String
Values A list of multiple values to which the condition is applied. Values are used when the condition is either 'In' or 'Not In'
  • Field Name: value_list.[n]
  • Type: Array