Runbooks / Composer

MeshComposer

MeshComposer is a rule-based engine for dynamically composing groups from mesh objects. Rules define criteria that match source objects and either create a new group or populate an existing one with matching members.

Concepts

How-To: Create a Composed Group

Step 1 — Define Object Types and Schemas

Before creating composer rules, ensure you have registered the relevant object types and attribute schemas. The source object type determines which mesh objects the criteria query against. For Create mode, you also need a target object type for the new group (e.g., group).

Step 2 — Create a Composer Rule

  1. Navigate to MeshComposer in the Admin UI sidebar.
  2. Click New Rule.
  3. Fill in the rule details:
    • Name — descriptive name (e.g., “Sales Department Members”).
    • Description — optional notes.
    • Mode — choose Create new group or Populate existing group.

Create Mode

Choose this when the composer should create and own the group object.

The mesh object is created automatically on first evaluation. You do not need to create it manually.

Populate Mode

Choose this when the group already exists as a mesh object (e.g., imported from a connector).

Step 3 — Configure Criteria

  1. Select the Source Object Type (e.g., user) — this determines which attributes are available in the condition dropdowns.
  2. Build the criteria tree:
    • Click Condition to add an attribute filter.
    • Select an Attribute, an Operator, and a Value.
    • Click Group to add a nested AND/OR group for complex logic.
    • Toggle the group operator button (AND/OR) to switch logic.

Example: match all users in the Sales department:

AND
  ├── department  equals  "Sales"
  └── objectType  equals  "user"

Example: match users in Sales OR Marketing who are active:

AND
  ├── accountEnabled  is true
  └── OR
        ├── department  equals  "Sales"
        └── department  equals  "Marketing"

Step 4 — Preview

Before saving, use the inline Preview button to see which mesh objects match the current criteria. The preview shows anchor value, object type, and key attributes. Results can be exported to CSV.

Step 5 — Save the Rule

Click Save. The rule and its criteria tree are persisted together. The rule is saved in the disabled state by default — toggle the Enabled switch to activate it.

Step 6 — Configure Publish Targets (Optional)

After saving, click the Targets button (share icon) on the rule row. Add connectors that should receive the composed group on export. If no publish targets are configured, the group follows standard projection and export rules.

Step 7 — Evaluate

Click the Evaluate button (play icon) on the rule row. The engine:

  1. Finds or creates the target group mesh object (Create mode only).
  2. Queries all mesh objects matching the source type and criteria.
  3. Adds new member relationships and removes stale ones.
  4. Queues the group for export (if membership changed).

A banner displays the result: members added, removed, and total count.

Step 8 — Verify

How-To: Edit or Delete a Rule

Edit

Click the Edit button (pencil icon) on the rule row. The modal opens with all fields and the criteria tree pre-populated. Modify as needed and click Save.

Delete

Click the Delete button (X icon) on the rule row and confirm. Deletion removes:

Populate-mode rules do not delete the target mesh object since it was not created by the composer.

API Endpoints

Rules

MethodPathDescription
GET/api/composer/rulesList all rules with member counts
POST/api/composer/rulesCreate a new rule
GET/api/composer/rules/{id}Get rule by ID
PUT/api/composer/rules/{id}Update rule
DELETE/api/composer/rules/{id}Delete rule and associated mesh object
POST/api/composer/rules/{id}/enableEnable rule
POST/api/composer/rules/{id}/disableDisable rule

Criteria

MethodPathDescription
GET/api/composer/rules/{id}/criteriaGet criteria tree
PUT/api/composer/rules/{id}/criteriaSave criteria tree

Publish Targets

MethodPathDescription
GET/api/composer/rules/{id}/targetsList publish targets
POST/api/composer/rules/{id}/targetsAdd publish target
DELETE/api/composer/targets/{targetId}Remove publish target

Preview & Evaluate

MethodPathDescription
POST/api/composer/rules/{id}/previewPreview matching members (paginated)
POST/api/composer/preview-criteriaAd-hoc criteria preview (no saved rule needed)
POST/api/composer/rules/{id}/evaluateEvaluate rule and update memberships

Permissions

PermissionRequired For
composer.readViewing rules, criteria, targets, previews
composer.writeCreating, editing, deleting rules, criteria, targets
composer.executeEvaluating rules

Storage

Composer rule definitions, criteria, and publish-target overrides are persisted in the IdentityMesh database. Composer-created relationships are tagged with the source label MeshComposer:{ruleId} so they’re easy to identify and (if a rule is removed) clean up.