System Attributes

Computed properties for advanced workflow triggering and conditional transformations in Lifecycle Management

Overview

System attributes are computed properties that Lifecycle Management automatically generates during identity processing. These attributes enable advanced automation scenarios by providing runtime information about identity changes and transformation results.

All system attributes follow the sys_attr__ prefix convention and cannot be manually set or modified.

Available System Attributes

sys_attr__is_mover

A persistent boolean attribute that indicates whether an identity has undergone changes to monitored properties.

Type: Boolean Persistence: Stored with identity record Available in: Workflow triggers, conditions, and transformers

Configuration: Define monitored properties in the policy configuration:

{
  "mover_properties": ["department", "manager_id", "title", "location"]
}

Workflow Trigger Example:

sys_attr__is_mover eq true

Combined Condition Example:

sys_attr__is_mover eq true and department eq "Engineering" and active eq true

The attribute is automatically set to true when any property in mover_properties changes during identity update. It is cleared when the identity is unchanged in an extraction cycle, and excluded from change detection to prevent recursive updates.

System attribute names are case-sensitive and must be lowercase in all expressions.

sys_attr__would_be_value

A transient attribute that provides a preview of the transformation result during conditional evaluation.

Type: String Persistence: Transient (exists only during IF statement evaluation) Available in: Conditional transformers only

Usage Example - Conditional Domain Addition:

IF sys_attr__would_be_value co "@"
  {email | LOWER}
ELSE
  {email | LOWER}@company.com

The above transformer will check if the transformed email already contains "@", preserve existing email addresses, and add domain only when needed.

sys_attr__would_be_value_len

A transient attribute that provides the character length of the transformation result during conditional evaluation.

Type: Number Persistence: Transient (exists only during IF statement evaluation) Available in: Conditional transformers only

Usage Example - Progressive Username Truncation:

IF sys_attr__would_be_value_len le 30
  {first_name | LOWER}.{last_name | LOWER | NEXT_NUMBER, 2, 3}
ELSE IF sys_attr__would_be_value_len le 20
  {first_name | LOWER | FIRST_N, 10}.{last_name | LOWER | NEXT_NUMBER, 2, 3}
ELSE
  {first_name | LOWER | FIRST_N, 1}.{last_name | LOWER | FIRST_N, 1 | NEXT_NUMBER, 2, 3}

For "Leonevenkataramanathan Foster":

  • First check (≤30 chars): leonevenkataramanathan.foster (30 chars - passes first condition)

  • If >30 chars, second check (≤20 chars): leonevenkataramana.foster (25 chars - fails second condition)

  • If >20 chars, fallback: l.f (3 chars - always succeeds)

  • Alternatives with NEXT_NUMBER: l.f2, l.f3, l.f4

Integration with NEXT_NUMBER

Preview attributes work with the NEXT_NUMBER transformer for generating unique alternatives:

IF sys_attr__would_be_value_len le 15
  {username | NEXT_NUMBER, 2, 5}
ELSE IF sys_attr__would_be_value_len le 15
  {username | FIRST_N, 13 | NEXT_NUMBER, 2, 5}

This evaluates the base value length before applying numbering, ensuring the final result (including numbers) meets constraints.

Only one NEXT_NUMBER transformer is allowed per conditional branch.

Workflow Trigger Properties

The sys_attr__is_mover attribute supports additional trigger properties for fine-grained control:

{
  "trigger_properties": ["department", "location"],
  "trigger_string": "sys_attr__is_mover eq true and active eq true"
}

This workflow triggers only when:

  • The identity is marked as a mover (department or location changed)

  • The identity is active

  • At least one of the trigger_properties has changed since last extraction

Performance Notes

  • Mover Detection: Comparison occurs for all properties in mover_properties during each extraction

  • Preview Evaluation: Each IF branch with preview attributes requires transformation execution

  • Optimization: Place most common conditions first to minimize preview evaluations

  • Caching: Preview values are calculated once per condition branch and reused

See Also

Last updated

Was this helpful?