# sailpoint-oss/rule-development-kit architecture

> Architecture diagram of the GitHub repository sailpoint-oss/rule-development-kit, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sailpoint-oss/rule-development-kit
- Repository: https://github.com/sailpoint-oss/rule-development-kit

## Overview

The Rule Development Kit is a SailPoint rules development and testing project. Its repository provides six XML rule examples, a Java username-generation implementation, and a Java XML source-reading utility. A developer works with the rule examples; the sampled username generator checks account-name availability through SailPoint’s rule API. The README documents the vendored SailPoint API stubs used for compilation. XML contents and most rule wiring were not sampled, so the graph does not infer calls among those rules or connect them to the Java helpers.

Main entry points: [`src/main/java/UsernameGenerator.java`](https://github.com/sailpoint-oss/rule-development-kit/blob/main/src/main/java/UsernameGenerator.java) (Username generator), [`lib/sailpoint/rule-java-docs/2.0/rule-java-docs-2.0.jar`](https://github.com/sailpoint-oss/rule-development-kit/blob/main/lib/sailpoint/rule-java-docs/2.0/rule-java-docs-2.0.jar) (Vendored API stubs), [`src/main/resources/rules/Rule - AttributeGenerator - UsernameGenerator.xml`](https://github.com/sailpoint-oss/rule-development-kit/blob/main/src/main/resources/rules/Rule%20-%20AttributeGenerator%20-%20UsernameGenerator.xml) (Username rule), [`src/main/resources/rules/Rule - BeforeProvisioningRule - Example Rule.xml`](https://github.com/sailpoint-oss/rule-development-kit/blob/main/src/main/resources/rules/Rule%20-%20BeforeProvisioningRule%20-%20Example%20Rule.xml) (Provisioning rule)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_rules["Rule examples"]
  node_username_rule["Username rule"]
  node_provisioning_rule["Provisioning rule"]
  node_join_rule["Join attributes"]
  node_flatten_rule["Flatten attributes"]
  node_normalize_rule["Name normalizer"]
  node_identity_rule["Identity rule"]
  node_manager_rule["Manager correlation"]
end

subgraph group_java["Java helpers"]
  node_username_generator["Username generator"]
  node_xml_reader["Rule XML reader<br/>[RuleXmlUtils.java]"]
end

subgraph group_api["SailPoint API"]
  node_sailpoint_api["SailPoint rule API"]
  node_api_stubs["Vendored API stubs"]
end

node_developer(("Rule developer"))

node_developer -->|"develops"| node_username_rule
node_developer -->|"develops"| node_provisioning_rule
node_developer -->|"develops"| node_join_rule
node_developer -->|"develops"| node_flatten_rule
node_developer -->|"develops"| node_normalize_rule
node_developer -->|"develops"| node_identity_rule
node_developer -->|"develops"| node_manager_rule
node_username_generator -->|"checks uniqueness"| node_sailpoint_api
node_api_stubs -->|"provides compile stubs"| node_sailpoint_api

click node_username_rule "https://github.com/sailpoint-oss/rule-development-kit/blob/main/src/main/resources/rules/Rule%20-%20AttributeGenerator%20-%20UsernameGenerator.xml"
click node_provisioning_rule "https://github.com/sailpoint-oss/rule-development-kit/blob/main/src/main/resources/rules/Rule%20-%20BeforeProvisioningRule%20-%20Example%20Rule.xml"
click node_join_rule "https://github.com/sailpoint-oss/rule-development-kit/blob/main/src/main/resources/rules/Rule%20-%20BuildMap%20-%20JoinAttributes.xml"
click node_flatten_rule "https://github.com/sailpoint-oss/rule-development-kit/blob/main/src/main/resources/rules/Rule%20-%20Generic%20-%20FlattenMultiValuedAttribute.xml"
click node_normalize_rule "https://github.com/sailpoint-oss/rule-development-kit/blob/main/src/main/resources/rules/Rule%20-%20Generic%20-%20NameNormalizer.xml"
click node_identity_rule "https://github.com/sailpoint-oss/rule-development-kit/blob/main/src/main/resources/rules/Rule%20-%20IdentityAttribute%20-%20Example%20Rule.xml"
click node_manager_rule "https://github.com/sailpoint-oss/rule-development-kit/blob/main/src/main/resources/rules/Rule%20-%20ManagerCorrelation%20-%20Manager%20Email%20Correlation.xml"
click node_username_generator "https://github.com/sailpoint-oss/rule-development-kit/blob/main/src/main/java/UsernameGenerator.java"
click node_xml_reader "https://github.com/sailpoint-oss/rule-development-kit/blob/main/src/main/java/sailpoint/rdk/utils/RuleXmlUtils.java"
click node_api_stubs "https://github.com/sailpoint-oss/rule-development-kit/blob/main/lib/sailpoint/rule-java-docs/2.0/rule-java-docs-2.0.jar"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_username_rule,node_provisioning_rule,node_join_rule,node_flatten_rule,node_normalize_rule,node_identity_rule,node_manager_rule toneBlue
class node_username_generator,node_xml_reader toneAmber
class node_sailpoint_api,node_api_stubs toneMint
class node_developer toneIndigo
```

## Components

### Rule examples

- [Username rule](https://github.com/sailpoint-oss/rule-development-kit/blob/main/src/main/resources/rules/Rule%20-%20AttributeGenerator%20-%20UsernameGenerator.xml): `src/main/resources/rules/Rule - AttributeGenerator - UsernameGenerator.xml`
- [Provisioning rule](https://github.com/sailpoint-oss/rule-development-kit/blob/main/src/main/resources/rules/Rule%20-%20BeforeProvisioningRule%20-%20Example%20Rule.xml): `src/main/resources/rules/Rule - BeforeProvisioningRule - Example Rule.xml`
- [Join attributes](https://github.com/sailpoint-oss/rule-development-kit/blob/main/src/main/resources/rules/Rule%20-%20BuildMap%20-%20JoinAttributes.xml): `src/main/resources/rules/Rule - BuildMap - JoinAttributes.xml`
- [Flatten attributes](https://github.com/sailpoint-oss/rule-development-kit/blob/main/src/main/resources/rules/Rule%20-%20Generic%20-%20FlattenMultiValuedAttribute.xml): `src/main/resources/rules/Rule - Generic - FlattenMultiValuedAttribute.xml`
- [Name normalizer](https://github.com/sailpoint-oss/rule-development-kit/blob/main/src/main/resources/rules/Rule%20-%20Generic%20-%20NameNormalizer.xml): `src/main/resources/rules/Rule - Generic - NameNormalizer.xml`
- [Identity rule](https://github.com/sailpoint-oss/rule-development-kit/blob/main/src/main/resources/rules/Rule%20-%20IdentityAttribute%20-%20Example%20Rule.xml): `src/main/resources/rules/Rule - IdentityAttribute - Example Rule.xml`
- [Manager correlation](https://github.com/sailpoint-oss/rule-development-kit/blob/main/src/main/resources/rules/Rule%20-%20ManagerCorrelation%20-%20Manager%20Email%20Correlation.xml): `src/main/resources/rules/Rule - ManagerCorrelation - Manager Email Correlation.xml`

### Java helpers

- [Username generator](https://github.com/sailpoint-oss/rule-development-kit/blob/main/src/main/java/UsernameGenerator.java): `src/main/java/UsernameGenerator.java`
- [Rule XML reader](https://github.com/sailpoint-oss/rule-development-kit/blob/main/src/main/java/sailpoint/rdk/utils/RuleXmlUtils.java): `src/main/java/sailpoint/rdk/utils/RuleXmlUtils.java`

### SailPoint API

- **SailPoint rule API**
- [Vendored API stubs](https://github.com/sailpoint-oss/rule-development-kit/blob/main/lib/sailpoint/rule-java-docs/2.0/rule-java-docs-2.0.jar): `lib/sailpoint/rule-java-docs/2.0/rule-java-docs-2.0.jar`

### Other components

- **Rule developer**

## Connections

- Rule developer → Username rule: develops (evidence: `README.md`)
- Rule developer → Provisioning rule: develops (evidence: `README.md`)
- Rule developer → Join attributes: develops (evidence: `README.md`)
- Rule developer → Flatten attributes: develops (evidence: `README.md`)
- Rule developer → Name normalizer: develops (evidence: `README.md`)
- Rule developer → Identity rule: develops (evidence: `README.md`)
- Rule developer → Manager correlation: develops (evidence: `README.md`)
- Username generator → SailPoint rule API: checks uniqueness (evidence: `src/main/java/UsernameGenerator.java`)
- Vendored API stubs → SailPoint rule API: provides compile stubs (evidence: `README.md`)
