# apache/syncope architecture

> Architecture diagram of the GitHub repository apache/syncope, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/apache/syncope
- Repository: https://github.com/apache/syncope

## Overview

Apache Syncope is an enterprise digital-identity management platform. Its broad product workflow is administration of identity and access-management configuration through client consoles and REST APIs, with core services and persistence supporting identity operations and provisioning. The repository also documents federation, SCIM, workflow, and search capabilities. The map preserves these product areas, but sampled source is sparse; edges are limited to relationships visible in the source index or excerpts, and do not imply a complete runtime call graph.

Main entry points: [`client/idm/console/src/main/java/org/apache/syncope/client/console/pages/Resources.java`](https://github.com/apache/syncope/blob/master/client/idm/console/src/main/java/org/apache/syncope/client/console/pages/Resources.java) (IDM Console), [`core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/FIQLQueryServiceImpl.java`](https://github.com/apache/syncope/blob/master/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/FIQLQueryServiceImpl.java) (FIQL API Handler), [`common/am/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/wa/MfaTrustStorageService.java`](https://github.com/apache/syncope/blob/master/common/am/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/wa/MfaTrustStorageService.java) (MFA Trust API), [`core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractSearchService.java`](https://github.com/apache/syncope/blob/master/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractSearchService.java) (Search Parsing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["Admin Clients"]
  node_console["IDM Console<br/>[Resources.java]"]
  node_amconsole["AM Console<br/>[ClientApps.java]"]
  node_remediationui["Remediation Console<br/>[Remediations.java]"]
  node_resourceui["Resource Console<br/>[Resources.java]"]
  node_fiqlclient["FIQL Client"]
end

subgraph group_identity["Identity Management"]
  node_anydao["Identity DAO<br/>[AnyDAO.java]"]
  node_userdao["User DAO<br/>[UserDAO.java]"]
  node_groupdao["Group DAO<br/>[GroupDAO.java]"]
  node_anymodel["Identity Models<br/>[AnyTO.java]"]
  node_remediation["Remediation API"]
end

subgraph group_access["Access Management"]
  node_authprofile["Auth Profiles"]
  node_mfalogic["MFA Trust Logic"]
  node_mfaservice["MFA Trust API"]
  node_wamfa["WA MFA Adapter"]
end

subgraph group_api["REST Interfaces"]
  node_paged["Paged Results<br/>[PagedResult.java]"]
  node_restheaders["REST Conventions<br/>[RESTHeaders.java]"]
  node_fiqlapi["FIQL Query API"]
  node_fiqlimpl["FIQL API Handler"]
  node_search["Search Parsing"]
end

subgraph group_integrations["Federation &amp; Integrations"]
  node_scim["SCIM Services"]
  node_oidc["OIDC Provider API"]
  node_saml["SAML Services"]
  node_bpmn["BPMN Services"]
end

node_admin(("Administrators"))

node_fiqlclient -->|"calls"| node_fiqlapi
node_fiqlimpl -->|"implements"| node_fiqlapi
node_fiqlimpl -->|"extends"| node_search
node_search -.->|"uses search model"| node_anydao
node_mfalogic -->|"uses profile data"| node_authprofile
node_wamfa -->|"calls"| node_mfaservice
node_mfaservice -->|"returns pages"| node_paged
node_admin -.->|"administers"| node_console
node_admin -.->|"administers"| node_amconsole
node_console -.->|"manages remediation"| node_remediationui
node_console -.->|"manages resources"| node_resourceui

click node_console "https://github.com/apache/syncope/blob/master/client/idm/console/src/main/java/org/apache/syncope/client/console/pages/Resources.java"
click node_amconsole "https://github.com/apache/syncope/blob/master/client/am/console/src/main/java/org/apache/syncope/client/console/clientapps/ClientApps.java"
click node_anydao "https://github.com/apache/syncope/blob/master/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyDAO.java"
click node_userdao "https://github.com/apache/syncope/blob/master/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/UserDAO.java"
click node_groupdao "https://github.com/apache/syncope/blob/master/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/GroupDAO.java"
click node_anymodel "https://github.com/apache/syncope/blob/master/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTO.java"
click node_remediation "https://github.com/apache/syncope/blob/master/common/idm/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RemediationService.java"
click node_remediationui "https://github.com/apache/syncope/blob/master/client/idm/console/src/main/java/org/apache/syncope/client/console/pages/Remediations.java"
click node_resourceui "https://github.com/apache/syncope/blob/master/client/idm/console/src/main/java/org/apache/syncope/client/console/pages/Resources.java"
click node_authprofile "https://github.com/apache/syncope/blob/master/common/am/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AuthProfileService.java"
click node_mfalogic "https://github.com/apache/syncope/blob/master/core/am/logic/src/main/java/org/apache/syncope/core/logic/wa/MfaTrusStorageLogic.java"
click node_mfaservice "https://github.com/apache/syncope/blob/master/common/am/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/wa/MfaTrustStorageService.java"
click node_wamfa "https://github.com/apache/syncope/blob/master/wa/starter/src/main/java/org/apache/syncope/wa/starter/mfa/WAMultifactorAuthenticationTrustStorage.java"
click node_paged "https://github.com/apache/syncope/blob/master/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/to/PagedResult.java"
click node_restheaders "https://github.com/apache/syncope/blob/master/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/RESTHeaders.java"
click node_fiqlclient "https://github.com/apache/syncope/blob/master/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/FIQLQueryRestClient.java"
click node_fiqlapi "https://github.com/apache/syncope/blob/master/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/FIQLQueryService.java"
click node_fiqlimpl "https://github.com/apache/syncope/blob/master/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/FIQLQueryServiceImpl.java"
click node_search "https://github.com/apache/syncope/blob/master/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractSearchService.java"
click node_scim "https://github.com/apache/syncope/blob/master/ext/scimv2/scim-rest-cxf/src/main/java/org/apache/syncope/ext/scimv2/cxf/service/AbstractSCIMService.java"
click node_oidc "https://github.com/apache/syncope/blob/master/ext/oidcc4ui/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/OIDCC4UIProviderService.java"
click node_saml "https://github.com/apache/syncope/blob/master/ext/saml2sp4ui/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SAML2SP4UIService.java"
click node_bpmn "https://github.com/apache/syncope/blob/master/ext/flowable/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/BpmnProcessService.java"

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_console,node_amconsole,node_remediationui,node_resourceui,node_fiqlclient toneBlue
class node_anydao,node_userdao,node_groupdao,node_anymodel,node_remediation toneAmber
class node_authprofile,node_mfalogic,node_mfaservice,node_wamfa toneMint
class node_paged,node_restheaders,node_fiqlapi,node_fiqlimpl,node_search toneRose
class node_scim,node_oidc,node_saml,node_bpmn,node_admin toneIndigo
```

## Components

### Admin Clients

- [IDM Console](https://github.com/apache/syncope/blob/master/client/idm/console/src/main/java/org/apache/syncope/client/console/pages/Resources.java): `client/idm/console/src/main/java/org/apache/syncope/client/console/pages/Resources.java`
- [AM Console](https://github.com/apache/syncope/blob/master/client/am/console/src/main/java/org/apache/syncope/client/console/clientapps/ClientApps.java): `client/am/console/src/main/java/org/apache/syncope/client/console/clientapps/ClientApps.java`
- [Remediation Console](https://github.com/apache/syncope/blob/master/client/idm/console/src/main/java/org/apache/syncope/client/console/pages/Remediations.java): `client/idm/console/src/main/java/org/apache/syncope/client/console/pages/Remediations.java`
- [Resource Console](https://github.com/apache/syncope/blob/master/client/idm/console/src/main/java/org/apache/syncope/client/console/pages/Resources.java): `client/idm/console/src/main/java/org/apache/syncope/client/console/pages/Resources.java`
- [FIQL Client](https://github.com/apache/syncope/blob/master/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/FIQLQueryRestClient.java): `client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/FIQLQueryRestClient.java`

### Identity Management

- [Identity DAO](https://github.com/apache/syncope/blob/master/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyDAO.java): `core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyDAO.java`
- [User DAO](https://github.com/apache/syncope/blob/master/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/UserDAO.java): `core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/UserDAO.java`
- [Group DAO](https://github.com/apache/syncope/blob/master/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/GroupDAO.java): `core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/GroupDAO.java`
- [Identity Models](https://github.com/apache/syncope/blob/master/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTO.java): `common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTO.java`
- [Remediation API](https://github.com/apache/syncope/blob/master/common/idm/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RemediationService.java): `common/idm/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RemediationService.java`

### Access Management

- [Auth Profiles](https://github.com/apache/syncope/blob/master/common/am/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AuthProfileService.java): `common/am/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AuthProfileService.java`
- [MFA Trust Logic](https://github.com/apache/syncope/blob/master/core/am/logic/src/main/java/org/apache/syncope/core/logic/wa/MfaTrusStorageLogic.java): `core/am/logic/src/main/java/org/apache/syncope/core/logic/wa/MfaTrusStorageLogic.java`
- [MFA Trust API](https://github.com/apache/syncope/blob/master/common/am/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/wa/MfaTrustStorageService.java): `common/am/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/wa/MfaTrustStorageService.java`
- [WA MFA Adapter](https://github.com/apache/syncope/blob/master/wa/starter/src/main/java/org/apache/syncope/wa/starter/mfa/WAMultifactorAuthenticationTrustStorage.java): `wa/starter/src/main/java/org/apache/syncope/wa/starter/mfa/WAMultifactorAuthenticationTrustStorage.java`

### REST Interfaces

- [Paged Results](https://github.com/apache/syncope/blob/master/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/to/PagedResult.java): `common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/to/PagedResult.java`
- [REST Conventions](https://github.com/apache/syncope/blob/master/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/RESTHeaders.java): `common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/RESTHeaders.java`
- [FIQL Query API](https://github.com/apache/syncope/blob/master/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/FIQLQueryService.java): `common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/FIQLQueryService.java`
- [FIQL API Handler](https://github.com/apache/syncope/blob/master/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/FIQLQueryServiceImpl.java): `core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/FIQLQueryServiceImpl.java`
- [Search Parsing](https://github.com/apache/syncope/blob/master/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractSearchService.java): `core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractSearchService.java`

### Federation & Integrations

- [SCIM Services](https://github.com/apache/syncope/blob/master/ext/scimv2/scim-rest-cxf/src/main/java/org/apache/syncope/ext/scimv2/cxf/service/AbstractSCIMService.java): `ext/scimv2/scim-rest-cxf/src/main/java/org/apache/syncope/ext/scimv2/cxf/service/AbstractSCIMService.java`
- [OIDC Provider API](https://github.com/apache/syncope/blob/master/ext/oidcc4ui/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/OIDCC4UIProviderService.java): `ext/oidcc4ui/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/OIDCC4UIProviderService.java`
- [SAML Services](https://github.com/apache/syncope/blob/master/ext/saml2sp4ui/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SAML2SP4UIService.java): `ext/saml2sp4ui/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SAML2SP4UIService.java`
- [BPMN Services](https://github.com/apache/syncope/blob/master/ext/flowable/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/BpmnProcessService.java): `ext/flowable/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/BpmnProcessService.java`

### Other components

- **Administrators**

## Connections

- FIQL Client → FIQL Query API: calls (evidence: `client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/FIQLQueryRestClient.java`)
- FIQL API Handler → FIQL Query API: implements (evidence: `core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/FIQLQueryServiceImpl.java`)
- FIQL API Handler → Search Parsing: extends (evidence: `core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/FIQLQueryServiceImpl.java`)
- Search Parsing → Identity DAO: uses search model
- MFA Trust Logic → Auth Profiles: uses profile data (evidence: `core/am/logic/src/main/java/org/apache/syncope/core/logic/wa/MfaTrusStorageLogic.java`)
- WA MFA Adapter → MFA Trust API: calls (evidence: `wa/starter/src/main/java/org/apache/syncope/wa/starter/mfa/WAMultifactorAuthenticationTrustStorage.java`)
- MFA Trust API → Paged Results: returns pages (evidence: `common/am/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/wa/MfaTrustStorageService.java`)
- Administrators → IDM Console: administers
- Administrators → AM Console: administers
- IDM Console → Remediation Console: manages remediation
- IDM Console → Resource Console: manages resources
